📄 manage.cpp
字号:
cout<<"|0、返回主菜单。 |"<<endl;
cout<<"|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|"<<endl;
cout<<"请输入所需选择:";
int flag;
cin>>flag;
if(flag==1)
{NumStat();
StatStudent();
}
if(flag==2)
{AverageStat();
}
if(flag==3)
{FailStat();
StatStudent();
}
if(flag==0)
{main();
}
if(flag!=0&&flag!=1&&flag!=2&&flag!=3)
{cout<<"输入错误,请重新选择:"<<endl;
StatStudent();
}
}
/////////////////////////////////////按学号升序显示全部学生的信息//////////////////////////////
void NumStat()
{
Student stu[100];
ifstream infile("d:\\data.txt",ios::in);
if(! infile)
{cerr<<"open error!"<<endl;
exit(1);
}
int i=0;
while(!infile.eof())
{infile>>stu[i].num;
infile>>stu[i].name;
infile>>stu[i].sex;
infile>>stu[i].age;
infile>>stu[i].Chinese;
infile>>stu[i].English;
infile>>stu[i].Match;
infile>>stu[i].C;
infile>>stu[i].Physics;
infile>>stu[i].average;
i++;
}
for(int k=i-2;k>0;k--) //共进行i-2次比较。
{for(int j=0;j<k;j++) //在每趟中要进行k次两两比较。
if(stu[j+1].num<stu[j].num) //如果前面的数小于后面的数,进行下列交换。
{int num,a,ch,e,m,c,p,ag;
num=stu[j].num;
stu[j].num=stu[j+1].num;
stu[j+1].num=num;
a=stu[j].age;
stu[j].age=stu[j+1].age;
stu[j+1].age=a;
ch=stu[j].Chinese;
stu[j].Chinese=stu[j+1].Chinese;
stu[j+1].Chinese=ch;
e=stu[j].English;
stu[j].English=stu[j+1].English;
stu[j+1].English=e;
m=stu[j].Match;
stu[j].Match=stu[j+1].Match;
stu[j+1].Match=m;
c=stu[j].C;
stu[j].C=stu[j+1].C;
stu[j+1].C=c;
p=stu[j].Physics;
stu[j].Physics=stu[j+1].Physics;
stu[j+1].Physics=p;
ag=stu[j].average;
stu[j].average=stu[j+1].average;
stu[j+1].average=ag;
char na[10],s[3];
strcpy(na,stu[j].name);
strcpy(stu[j].name,stu[j+1].name);
strcpy(stu[j+1].name,na);
strcpy(s,stu[j].sex);
strcpy(stu[j].sex,stu[j+1].sex);
strcpy(stu[j+1].sex,s);
}
}
cout<<"|学号 |姓名 |性别 |年龄 |语文 |英语 |数学 |C语言 |物理 |平均分"<<endl;
for(int b=0;b<i-1;b++)
{cout<<setiosflags(ios::left);
cout<<"|"<<setw(7)<<stu[b].num<<"|"<<setw(7)<<stu[b].name<<"|"<<setw(7)<<stu[b].sex
<<"|"<<setw(7)<<stu[b].age<<"|"<<setw(7)<<stu[b].Chinese<<"|"<<setw(7)
<<stu[b].English<<"|"<<setw(7)<<stu[b].Match<<"|"<<setw(8)<<stu[b].C<<"|"<<setw(7)
<<stu[b].Physics<<"|"<<stu[b].average;
cout<<endl;
}
}
//////////////////////按平均分降序显示全部学生的信息,并保存到磁盘文件".txt"//////////////////
void AverageStat()
{
Student stu[100];
ifstream infile("d:\\data.txt",ios::in);
if(! infile)
{cerr<<"open error!"<<endl;
exit(1);
}
int i=0;
while(!infile.eof())
{infile>>stu[i].num;
infile>>stu[i].name;
infile>>stu[i].sex;
infile>>stu[i].age;
infile>>stu[i].Chinese;
infile>>stu[i].English;
infile>>stu[i].Match;
infile>>stu[i].C;
infile>>stu[i].Physics;
infile>>stu[i].average;
i++;
}
for(int k=i-2;k>0;k--) //共进行i-2次比较。
{for(int j=k-1;j>=0;j--) //在每趟中要进行k次两两比较。
if(stu[j+1].average>stu[j].average) //如果前面的数大于后面的数,进行下列交换。
{int num,a,ch,e,m,c,p,ag;
ag=stu[j].average;
stu[j].average=stu[j+1].average;
stu[j+1].average=ag;
num=stu[j].num;
stu[j].num=stu[j+1].num;
stu[j+1].num=num;
a=stu[j].age;
stu[j].age=stu[j+1].age;
stu[j+1].age=a;
ch=stu[j].Chinese;
stu[j].Chinese=stu[j+1].Chinese;
stu[j+1].Chinese=ch;
e=stu[j].English;
stu[j].English=stu[j+1].English;
stu[j+1].English=e;
m=stu[j].Match;
stu[j].Match=stu[j+1].Match;
stu[j+1].Match=m;
c=stu[j].C;
stu[j].C=stu[j+1].C;
stu[j+1].C=c;
p=stu[j].Physics;
stu[j].Physics=stu[j+1].Physics;
stu[j+1].Physics=p;
char na[10],s[3];
strcpy(na,stu[j].name);
strcpy(stu[j].name,stu[j+1].name);
strcpy(stu[j+1].name,na);
strcpy(s,stu[j].sex);
strcpy(stu[j].sex,stu[j+1].sex);
strcpy(stu[j+1].sex,s);
}
}
cout<<"|学号 |姓名 |性别 |年龄 |语文 |英语 |数学 |C语言 |物理 |平均分"<<endl;
for(int b=0;b<i-1;b++)
{cout<<setiosflags(ios::left);
cout<<"|"<<setw(7)<<stu[b].num<<"|"<<setw(7)<<stu[b].name<<"|"<<setw(7)<<stu[b].sex
<<"|"<<setw(7)<<stu[b].age<<"|"<<setw(7)<<stu[b].Chinese<<"|"<<setw(7)
<<stu[b].English<<"|"<<setw(7)<<stu[b].Match<<"|"<<setw(8)<<stu[b].C<<"|"<<setw(7)
<<stu[b].Physics<<"|"<<stu[b].average;
cout<<endl;
}
cout<<"是否保存这些学生信息?Y/N"<<endl;
getchar();
if(getchar()==78) StatStudent();
else
{ofstream outfile("d:\\AverageStat.txt",ios::out); //把平均分降序后的信息,保存文件"d:\\AverageStat.txt"。
if(! outfile)
{cout<<"open error!"<<endl;
exit(1);
}
for(int a=0;a<i-1;a++)
{outfile<<setw(7)<<stu[a].num<<setw(7)<<stu[a].name<<setw(7)<<stu[a].sex<<setw(7)
<<stu[a].age<<setw(7)<<stu[a].Chinese<<setw(7)<<stu[a].English<<setw(7)
<<stu[a].Match<<setw(7)<<stu[a].C<<setw(7)<<stu[a].Physics<<setw(4)
<<stu[a].average;
outfile<<endl;
}
cout<<"已保存在\"d:\\AverageStat.txt\"文件当中!"<<endl;
StatStudent();
}
}
///////////////////////////////////统计不及格课程学生的信息////////////////////////////////
void FailStat()
{
Student stu[100];
ifstream infile("d:\\data.txt",ios::in);
if(! infile)
{cerr<<"open error!"<<endl;
exit(1);
}
int i=0;
while(!infile.eof())
{infile>>stu[i].num;
infile>>stu[i].name;
infile>>stu[i].sex;
infile>>stu[i].age;
infile>>stu[i].Chinese;
infile>>stu[i].English;
infile>>stu[i].Match;
infile>>stu[i].C;
infile>>stu[i].Physics;
infile>>stu[i].average;
i++;
}
int b;
cout<<"请选择所要统计的科目:1、语文 2、英语 3、数学 4、C语言 5、物理"<<endl;
int flag;
cin>>flag;
if(flag==1)
{cout<<"|学号 |姓名 |性别 |年龄 |语文 |英语 |数学 |C语言 |物理 |平均分"<<endl;
int r=0;
for(b=0;b<i-1;b++)
if(stu[b].Chinese<60) //筛选不及格信息。
{cout<<setiosflags(ios::left);
cout<<"|"<<setw(7)<<stu[b].num<<"|"<<setw(7)<<stu[b].name<<"|"<<setw(7)<<stu[b].sex
<<"|"<<setw(7)<<stu[b].age<<"|"<<setw(7)<<stu[b].Chinese<<"|"<<setw(7)
<<stu[b].English<<"|"<<setw(7)<<stu[b].Match<<"|"<<setw(8)<<stu[b].C<<"|"<<setw(7)
<<stu[b].Physics<<"|"<<stu[b].average;
cout<<endl;
r++;
}
cout<<"共有"<<r<<"人语文不及格。"<<endl;
}
if(flag==2)
{cout<<"|学号 |姓名 |性别 |年龄 |语文 |英语 |数学 |C语言 |物理 |平均分"<<endl;
int r=0;
for(b=0;b<i-1;b++)
if(stu[b].English<60)
{cout<<setiosflags(ios::left);
cout<<"|"<<setw(7)<<stu[b].num<<"|"<<setw(7)<<stu[b].name<<"|"<<setw(7)<<stu[b].sex
<<"|"<<setw(7)<<stu[b].age<<"|"<<setw(7)<<stu[b].Chinese<<"|"<<setw(7)
<<stu[b].English<<"|"<<setw(7)<<stu[b].Match<<"|"<<setw(8)<<stu[b].C<<"|"<<setw(7)
<<stu[b].Physics<<"|"<<stu[b].average;
cout<<endl;
r++;
}
cout<<"共有"<<r<<"人英语不及格。"<<endl;
}
if(flag==3)
{cout<<"|学号 |姓名 |性别 |年龄 |语文 |英语 |数学 |C语言 |物理 |平均分"<<endl;
int r=0;
for(b=0;b<i-1;b++)
if(stu[b].Match<60)
{cout<<setiosflags(ios::left);
cout<<"|"<<setw(7)<<stu[b].num<<"|"<<setw(7)<<stu[b].name<<"|"<<setw(7)<<stu[b].sex
<<"|"<<setw(7)<<stu[b].age<<"|"<<setw(7)<<stu[b].Chinese<<"|"<<setw(7)
<<stu[b].English<<"|"<<setw(7)<<stu[b].Match<<"|"<<setw(8)<<stu[b].C<<"|"<<setw(7)
<<stu[b].Physics<<"|"<<stu[b].average;
cout<<endl;
r++;
}
cout<<"共有"<<r<<"人数学不及格。"<<endl;
}
if(flag==4)
{cout<<"|学号 |姓名 |性别 |年龄 |语文 |英语 |数学 |C语言 |物理 |平均分"<<endl;
int r=0;
for(b=0;b<i-1;b++)
if(stu[b].C<60)
{cout<<setiosflags(ios::left);
cout<<"|"<<setw(7)<<stu[b].num<<"|"<<setw(7)<<stu[b].name<<"|"<<setw(7)<<stu[b].sex
<<"|"<<setw(7)<<stu[b].age<<"|"<<setw(7)<<stu[b].Chinese<<"|"<<setw(7)
<<stu[b].English<<"|"<<setw(7)<<stu[b].Match<<"|"<<setw(8)<<stu[b].C<<"|"<<setw(7)
<<stu[b].Physics<<"|"<<stu[b].average;
cout<<endl;
r++;
}
cout<<"共有"<<r<<"人C语言不及格。"<<endl;
}
if(flag==5)
{cout<<"|学号 |姓名 |性别 |年龄 |语文 |英语 |数学 |C语言 |物理 |平均分"<<endl;
int r=0;
for(b=0;b<i-1;b++)
if(stu[b].Physics<60)
{cout<<setiosflags(ios::left);
cout<<"|"<<setw(7)<<stu[b].num<<"|"<<setw(7)<<stu[b].name<<"|"<<setw(7)<<stu[b].sex
<<"|"<<setw(7)<<stu[b].age<<"|"<<setw(7)<<stu[b].Chinese<<"|"<<setw(7)
<<stu[b].English<<"|"<<setw(7)<<stu[b].Match<<"|"<<setw(8)<<stu[b].C<<"|"<<setw(7)
<<stu[b].Physics<<"|"<<stu[b].average;
cout<<endl;
r++;
}
cout<<"共有"<<r<<"人物理不及格。"<<endl;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -