📄 input_disp.cpp
字号:
#include "cpp9.h"
#include<conio.h>
/********************
* 输入信息函数
********************/
Student * Student::input(Student *top,course *const topc)
{
ifstream in;
in.open("sname",ios::in|ios::nocreate);
if (!in) //判别是否已有文件
{
cout << "\t还没有建立文件, 退出时别忘记存文件。" << endl;
}
else
{
in.close();
if(top->count==0)
{
cout << "\t请稍候,取已有文件..." << endl;
top = load(top);
}
}
Student *old,*star;
ASK(star);
old=top;
while(old->next!=NULL)
{
old=old->next;
}
cout << "\t输入数据,输入0时结束。" << endl;
--top->count;
do
{
++top->count;
cout << "\t学号:" << flush;
gets(star->no);
if(strcmp(star->no,"0") == 0)
break;
cout << "\t名字:" << flush;
gets(star->name);
printf("\t设置密码:");
star->pw.set();
course *pc;
int f=0;
int j=0;
while(1)
{
pc=topc;
cout<<"\t选择课程号(以'0'结束):";
cin>>f;
if(f==0)break;
while(pc!=NULL)
{
if(pc->Getno()==f)
{
star->co[j].SetCourse(pc->Getname(),pc->Getroom(),pc->Getno(),pc->Getpeo(),
pc->GetCredit());
cout<<"你选了“"<<star->co[j].Getname()<< "”课"<<endl;
break;
}
pc=pc->Getnext();
}
j++;
}
if(top->count==0) top=star;
old->next=star;
old=star;
ASK(star);
}while(1);
old->next=NULL;
return(top);
}
/**********************
* 显示数据信息的函数
**********************/
void Student::display(Student *top)
{
char choose[2];
int cn = 0;
cout <<"\t选择要看的文件类别" << endl;
cout <<"\t1. 原文件" << endl;
cout <<"\t2. 简明文件" << endl;
cout <<"\t3. 均不及格文件" << endl;
cout <<"\t4. 输出高于或等于平均成绩的学生名单"<<endl;
cout<<"\t请选择1-4:"<< flush;
gets(choose);
while(1)
{
cn = atoi(choose);
if (cn <1||cn >4)
{
cout <<"\t输入错误,重选1-4:" << flush;
gets(choose);
}
else break;
}
switch(cn)
{
case 1: //显示原始数据
{
if (top->count==0)
{
cout << "\n\t现在没有记录!" << endl;
return;
}
Student *p=top;
cout << "\n\t现在共有如下" << count << "条记录:\n";
while(p!=NULL )
{
{
cout<<'\t'<<"学号:"<<p->no<<'\t'<<"姓名:"<<p->name<<'\t';
cout<<endl;
int j=0;
while(1)
{
if(p->co[j].Getname()[0]=='0')break;
cout<<'\t'<<p->co[j].Getname()<<":"<<p->co[j].Getscore()<<'\t';
cout<<'\t'<<p->co[j].GetCredit()<<":"<<p->co[j].Getno()<<":"<<p->co[j].Getpeo()<<endl;
j++;
}
cout<<"平均分:"<<p->ave<<endl;
}
p=p->next;
}
cout << endl;
break;
}
case 2:
{
ifstream in; //显示简明文件
in.open("stud_mean.dat",ios::in|ios::nocreate);
if (!in)
{
cout << "\t文件不存在!" << endl;
return ;
}
cout << "\n\t取文件..." << endl;
in.read((char*)sm, sizeof sm);
in.close();
cout << "\t名字\t平均成绩\n";
for(int i=0;i<10;i++)//,p=p->next)
{
if(sm[i].ave==0) break;
cout<<'\t'<<sm[i].name<<'\t'<<sm[i].ave<<endl;
}
break;
}
case 3: //显示均不及格文件
{
ifstream in;
in.open("bad.dat",ios::in|ios::nocreate);
if (!in)
{
cout << "\t文件不存在!" << endl;
return ;
}
cout << "\n\t取文件..." << endl;
in.read((char*)bad, sizeof bad);
in.close();
for(int i=0;i<10;i++)
{if(bad[i].ave<=0)break;
cout<<'\t'<<"学号:"<<bad[i].no<<'\t'<<"姓名:"<<bad[i].name<<'\t';
cout<<endl;
int j=0;
while(1)
{
if(bad[i].co[j].Getname()[0]=='0')break;
cout<<bad[i].co[j].Getname()<<":"<<bad[i].co[j].Getscore();
j++;
}
cout<<"平均分:"<<bad[i].ave<<endl;
}
break;
}
case 4: //显示高于或等于平均分的学生信息
{
if (top->count==0)
{
cout << "\n\t现在没有记录!" << endl;
return;
}
Student *p=top;
cout <<"\n\t现在共有如下" << count << "条记录:\n";
//计算平均成绩
int num=0;
double mean=0;
while(p!=NULL )
{
++num; //记载符合条件的学生人数
mean+=p->ave; //计算平均分之和
p=p->next;
}
mean=mean/num; //计算全部学生的平均分
cout<<"\t平均成绩为:"<<mean<<"分"<<endl;
cout<<"\t其中高于或等于平均成绩的学生信息如下:\n";
// cout <<"学号\t\t名字\t\t数学\t语文\t编程\t平均\n";
p=top;
while(p!=NULL )
{
if(p->ave>=mean)
{
cout<<'\t'<<"学号:"<<p->no<<'\t'<<"姓名:"<<p->name<<'\t';
cout<<endl;
int j=0;
while(1)
{
if(p->co[j].Getname()[0]=='0')break;
cout<<p->co[j].Getname()<<":"<<p->co[j].Getscore()<<" ";
j++;
}
cout<<"平均分:"<<p->ave<<endl;
}
p=p->next;
}
cout << endl;
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -