#include<iostream>
#include<cstring>
#include<iomanip>
using namespace std;
struct //学生信息结构体定义
{
char num[11]; //学号
char name[10]; //学生姓名
float score1; //课程1成绩
float score2; //课程2成绩
float score3; //课程3成绩
float score4; //课程4成绩
float score5; //课程5成绩
float score6; //课程6成绩
float ave; //平均成绩
}student[128];
int n=0;
void input() ; //录入学生信息函数声明
void show(); //显示学生信息函数声明
void sort(); //显示学生成绩排序声明
void sta(); //显示学生成绩分段声明
void change(); //修改学生成绩声明
void search(); //查询学生信息函数声明
int main()
{
int select;
while(1)
{
system("cls");
cout<<"\t **************学生信息管理系统**************\n";
cout<<"\t *------------------------------------------*\n";
cout<<"\t * 1——登记学生信息 *\n";
cout<<"\t * 2——显示学生信息 *\n";
cout<<"\t * 3——显示平均成绩排序 *\n";
cout<<"\t * 4——查询学生信息 *\n";
cout<<"\t * 5——显示成绩分组 *\n";
cout<<"\t * 6——修改学生成绩 *\n";
cout<<"\t * 0——退出 *\n";
cout<<"\t *------------------------------------------*\n";
cout<<"\t 你要输入的编号是(0--6):";
cin>>select;
if(select==0) break;
switch(select){
case 1:
input(); //调用input函数录入数据
system("pause");
break;
case 2:
show(); //调用show函数显示学生信息
system("pause");
break;
case 3:
sort(); //调用sort函数显示成绩排序
system("pause");
break;
case 4:
search(); //调用search函数查询学生信息
system("pause");
break;
case 5:
sta(); //调用sta函数显示成绩分组
system("pause");
break;
case 6:
change(); //调用change函数修改学生信息
system("pause");
break;
default:
cout<<"没有该选项,请重新选择!"<<endl;
}
}
return 0;
}
void input() //录入学生信息的函数
{
char sel;
do
{
n++;
cout<<"\n请输入第"<< n <<"个学生信息:\n";
cout<<"\t学号:";
cin>>student[n].num;
cout<<"\t学生姓名:";
cin>>student[n].name;
cout<<"\t课程1成绩:";
cin>>student[n].score1;
cout<<"\t课程2成绩:";
cin>>student[n].score2;
cout<<"\t课程3成绩:";
cin>>student[n].score3;
cout<<"\t课程4成绩:";
cin>>student[n].score4;
cout<<"\t课程5成绩:";
cin>>student[n].score5;
cout<<"\t课程6成绩:";
cin>>student[n].score6;
cout<<"是否要继续录入学生信息(Y/N):";
cin>>sel;
}while(sel=='Y' || sel=='y' );
}
void show() //显示所有学生信息函数
{
cout<<left; //设置输出左对齐
for(int i=1;i<=n;i++)
{
float sum;
sum=student[i].score1+student[i].score2+student[i].score3+student[i].score4+student[i].score5+student[i].score6;
student[i].ave=sum/6;
cout<<setw(10)<<"学 号"<<setw(10)<<"学生姓名"<<setw(10)<<"课程1成绩"<<setw(10)<<"课程2成绩"<<setw(10)<<"课程3成绩"<<setw(10)<<"课程4成绩"<<setw(10)<<"课程5成绩"<<setw(10)<<"课程6成绩"<<endl;
cout<<setw(10)<<student[i].num<<setw(15)<<student[i].name<<setw(10)<<student[i].score1<<setw(10)<<student[i].score2<<setw(10)<<student[i].score3<<setw(10)<<student[i].score4<<setw(10)<<student[i].score5<<setw(10)<<student[i].score6<<endl;
cout<<"平均成绩"<<endl
<<student[i].ave<<endl;
}
cout<<endl;
}
void sort()
{
float temp;
for(int j=1;j<=n;j++)
for(int i=1;i<=n-1-j;i++)
{if(student[i].ave<student[i+1].ave)
{temp=student[i].ave;
student[i].ave=student[i+1].ave;
student[i+1].ave=temp;
}
}
for(int i=1;i<=n-1-i;i++)
cout<<student[i].ave<<" ";
}
void search()
{
char num[11];
int flag=0;
cout<<"请输入学号:";
cin>>num; //输入学号,如:zidong0224
for(int i=1;i<=n;i++)
if(strcmp(num,student[i].num)==0)
{flag=1;
cout<<"该学生姓名:"<<student[i].name<<endl;
int cla;
cout<<"想要查看课程(1-6)的成绩:";
cin>>cla;
switch(cla)
{
case 1:cout<<student[i].score1<<endl;break;
case 2:cout<<student[i].score2<<endl;break;
case 3:cout<<student[i].score3<<endl;break;
case 4:cout<<student[i].score4<<endl;break;
case 5:cout<<student[i].score5<<endl;break;
case 6:cout<<student[i].score6<<endl;break;
}
}
if(flag=0)
cout<<"无此学生信息"<<endl;
}
void sta()
{
int A1,B1,C1,A2,B2,C2,A3,B3,C3,A4,B4,C4,A5,B5,C5,A6,B6,C6;
A1=B1=C1=A2=B2=C2=A3=B3=C3=A4=B4=C4=A5=B5=C5=A6=B6=C6=0;
for(int i=1;i<=n;i++)
{
if(student[i].score1>=80) A1++;
if(student[i].score1>=60) B1++;
if(student[i].score1<60) C1++;
if(student[i].score2>=80) A2++;
if(student[i].score2>=60) B2++;
if(student[i].score2<60) C2++;
if(student[i].score3>=80) A3++;
if(student[i].score3>=60) B3++;
if(student[i].score3<60) C3++;
if(student[i].score4>=80) A4++;
if(student[i].score4>=60) B4++;
if(student[i].score4<60) C4++;
if(student[i].score5>=80) A5++;
if(student[i].score5>=60) B5++;
if(student[i].score5<60) C5++;
if(student[i].score6>=80) A6++;
if(student[i].score6>=60) B6++;
if(student[i].score6<60) C6++;
}
cout<<"课程1高分人数:"<<A1<<endl;
cout<<"课程1及格人数:"<<B1<<endl;
cout<<"课程1不及格人数:"<<C1<<endl;
cout<<endl;
cout<<"课程2高分人数:"<<A2<<endl;
cout<<"课程2及格人数:"<<B2<<endl;
cout<<"课程2不及格人数:"<<C2<<endl;
cout<<endl;
cout<<"课程3高分人数:"<<A3<<endl;
cout<<"课程3及格人数:"<<B3<<endl;
cout<<"课程3不及格人数:"<<C3<<endl;
cout<<endl;
cout<<"课程4高分人数:"<<A4<<endl;
cout<<"课程4及格人数:"<<B4<<endl;
cout<<"课程4不及格人数:"<<C4<<endl;
cout<<endl;
cout<<"课程5高分人数:"<<A5<<endl;
cout<<"课程5及格人数:"<<B5<<endl;
cout<<"课程5不及格人数:"<<C5<<endl;
cout<<endl;
cout<<"课程6高分人数:"<<A6<<endl;
cout<<"课程6及格人数:"<<B6<<endl;
cout<<"课程6不及格人数:"<<C6<<endl;
}
void change()
{
char num[11];
int flag=0;
cout<<"请输入要修改成绩的学生学号:";
cin>>num;
for(int i=1;i<=n;i++)
if(strcmp(num,student[i].num)==0)
{
flag=1;
cout<<"该学生姓名:"<<student[i].name<<endl;
int cla;
cout<<"想要查看课程(1-6)的成绩:";
cin>>cla;
switch(cla)
{
case 1:cout<<student[i].score1<<endl;cout<<"把成绩修改为:";cin>>student[i].score1;break;
case 2:cout<<student[i].score2<<endl;cout<<"把成绩修改为:";cin>>student[i].score2;break;
case 3:cout<<student[i].score3<<endl;cout<<"把成绩修改为:";cin>>student[i].score3;break;
case 4:cout<<student[i].score4<<endl;cout<<"把成绩修改为:";cin>>student[i].score4;break;
case 5:cout<<student[i].score5<<endl;cout<<"把成绩修改为:";cin>>student[i].score5;break;
case 6:cout<<student[i].score6<<endl;cout<<"把成绩修改为:";cin>>student[i].score6;break;
}
}
if(flag=0)
cout<<"无此学生信息"<<endl;
}