#include<iostream>
#include<cstdio>
#include<iomanip>
#include<cstring>
#include<fstream>
#include<cmath>
using namespace std;
void welcome()//菜单函数
{
cout<<"*******************************************************"<<endl;
cout<<"* 欢迎使用学生成绩管理系统 *"<<endl;
cout<<"* 组长:张三 *"<<endl;
cout<<"* 组员:李四 王五 *"<<endl;
cout<<"* 计算机2207班2022.12.1 *"<<endl;
cout<<"* 1、添加学生信息 *"<<endl;
cout<<"* 2、计算并录入每名学生的平均成绩 *"<<endl;
cout<<"* 3、显示所有学生的所有信息 *"<<endl;
cout<<"* 4、按姓名查找学生成绩 *"<<endl;
cout<<"* 5、按学号查找学生成绩 *"<<endl;
cout<<"* 6、查找单科最高分和最高平均分 *"<<endl;
cout<<"* 7、按平均分分数对学生排序 *"<<endl;
cout<<"* 8、显示一门课程的所有学生成绩 *"<<endl;
cout<<"* 9、修改学生信息 *"<<endl;
cout<<"* 10、成绩水平分析 *"<<endl;
cout<<"* 0、退出 *"<<endl;
cout<<"*******************************************************"<<endl;
}
struct student//学生成绩结构体
{
string num;
char name[50];
float math;
float English;
float c;
float physics;
float average;
};
student input()//学生成绩输入函数
{
student stud;
cin>>stud.num>>stud.name>>stud.math>>stud.English>>stud.c>>stud.physics;
return stud;
}
void output(student stud)//学生成绩输出函数
{
cout<<setw(11)<<stud.num<<setw(20)<<stud.name<<setw(10)<<stud.math<<setw(10)<<stud.English<<setw(10)<<stud.c<<setw(10)<<stud.physics<<setw(10)<<stud.average<<endl;
}
int main()//主函数
{
int num1, num2, n, i, choise, determine, add_num=0, m, k=0, maxi, search_max_num, search_subject, search_analyzeint, math[4]={0}, English[4]={0}, c[4]={0}, physics[4]={0}, average[4]={0}, shuxue, yingyu, chengxu, wuli;
char namex[20], name1[50];
string numx, num3, string1;
float max=0, a[50], t;
student studs[50];
ifstream infile;
ofstream outfile;
infile.open("cj11.txt");
infile>>n;
for(i=0; i<n; i++)
{
infile>>studs[i].num;
infile>>studs[i].name;
infile>>studs[i].math;
infile>>studs[i].c;
infile>>studs[i].English;
infile>>studs[i].physics;
}
loop:system("cls");
welcome();
cout<<"请输入0-10选择功能:";
cin>>choise;
switch(choise)
{
case 0:cout<<"确定要退出吗?确定请扣1,继续查询请扣0"<<endl;//退出
cin>>determine;
if(determine==1) return 0;
else goto loop;
break;
case 1:cout<<"请输入要添加的学生人数:";//添加学生信息
cin>>add_num;
cout<<"请依次输入每个学生的学号、姓名(拼音或英文形式、无空格)、数学成绩、英语成绩、程序设计成绩和物理成绩:"<<endl;
cout<<"(例:20221002222 Tom 100 100 100 100)"<<endl;
for(i=0;i<add_num;i++) studs[n+i]=input();
cout<<"添加成功!";
system("pause");
goto loop;
break;
case 2:for(i=n+add_num-1;i>=0;i--) studs[i].average=(studs[i].math+studs[i].English+studs[i].c+studs[i].physics)/4;//计算并录入每名学生的平均成绩
cout<<"已成功录入现有学生的平均成绩"<<endl;
system("pause");
goto loop;
break;
case 3:cout<<setw(11)<<"学号"<<setw(20)<<"姓名"<<setw(10)<<"数学"<<setw(10)<<"英语"<<setw(10)<<"程序"<<setw(10)<<"物理"<<setw(10)<<"平均"<<endl;//显示所有学生的信息
for(i=n+add_num-1;i>=0;i--) studs[i].average=(studs[i].math+studs[i].English+studs[i].c+studs[i].physics)/4;
for(i=0;i<n+add_num;i++) output(studs[i]);
system("pause");
goto loop;
break;
case 4:cout<<"请输入要查询的学生姓名:";//按姓名查找学生成绩
cin>>namex;
for(i=0;i<n+add_num;i++)
{
m=strcmp(studs[i].name,namex);
if(m==0)
{
cout<<setw(11)<<"学号"<<setw(20)<<"姓名"<<setw(10)<<"数学"<<setw(10)<<"程序"<<setw(10)<<"英语"<<setw(10)<<"物理"<<setw(10)<<"平均"<<endl;
cout<<setw(11)<<studs[i].num<<setw(20)<<studs[i].name<<setw(10)<<studs[i].math<<setw(10)<<studs[i].English<<setw(10)<<studs[i].c<<setw(10)<<studs[i].physics<<setw(10)<<studs[i].average<<endl;
k++;
}
}
if(m!=0&&k==0) cout<<"查无此人!"<<endl;
k=0;
system("pause");
goto loop;
break;
case 5:cout<<"请输入要查询的学生学号:";//按学号查找学生成绩
cin>>numx;
k=0;
for(i=0;i<n+add_num;i++)
if(numx==studs[i].num){
cout<<setw(11)<<"学号"<<setw(20)<<"姓名"<<setw(10)<<"数学"<<setw(10)<<"程序"<<setw(10)<<"英语"<<setw(10)<<"物理"<<setw(10)<<"平均"<<endl;
cout<<setw(11)<<studs[i].num<<setw(20)<<studs[i].name<<setw(10)<<studs[i].math<<setw(10)<<studs[i].English<<setw(10)<<studs[i].c<<setw(10)<<studs[i].physics<<setw(10)<<studs[i].average<<endl;
k++;
}
if(k==0) cout<<"查无此人!"<<endl;
k=0;
system("pause");
goto loop;
break;
case 6:cout<<"查询数学最高分请扣1"<<endl<<"查询英语最高分请扣2"<<endl<<"程序设计最高分请扣3"<<endl<<"查询物理最高分请扣4"<<endl<<"平均成绩最高分请扣5"<<endl; //查找单科最高分和最高平均分
cin>>search_max_num;
switch(search_max_num)
{
case 1:for(i=0;i<n+add_num;i++)
{
if(studs[i].math>max)
{
max=studs[i].math;
maxi=i;
}
}
cout<<studs[maxi].name<<"的数学成绩最高:"<<max<<"分"<<endl;
max=0;
break;
case 2:for(i=0;i<n+add_num;i++)
{
if(studs[i].English>max)
{
max=studs[i].English;
maxi=i;
}
}
cout<<studs[maxi].name<<"的英语成绩最高:"<<max<<"分"<<endl;
max=0;
break;
case 3:for(i=0;i<n+add_num;i++)
{
if(studs[i].c>max)
{
max=studs[i].c;
maxi=i;
}
}
cout<<studs[maxi].name<<"的程序设计成绩最高:"<<max<<"分"<<endl;
max=0;
break;
case 4:for(i=0;i<n+add_num;i++)
{
if(studs[i].physics>max)
{
max=studs[i].physics;
maxi=i;
}
}
cout<<studs[maxi].name<<"的物理成绩最高:"<<max<<"分"<<endl;
max=0;
break;
case 5:for(i=n+add_num-1;i>=0;i--) studs[i].average=(studs[i].math+studs[i].English+studs[i].c+studs[i].physics)/4;
for(i=0;i<n+add_num;i++)
{
if(studs[i].average>max)
{
max=studs[i].average;
maxi=i;
}
}
cout<<studs[maxi].name<<"的平均分最高:"<<max<<"分"<<endl;
}
system("pause");
goto loop;
break;
case 7:for(i=n+add_num-1;i>=0;i--) studs[i].average=(studs[i].math+studs[i].English+studs[i].c+studs[i].physics)/4;//按平均分分数对学生进行排序
for(i=0;i<n+add_num;i++)
{
a[i]=studs[i].average;
}
for(i=0;i<n+add_num-1;i++)
for(int j=0;j<n+add_num-i-1;j++)
if(a[j]<a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
cout<<setw(11)<<"学号"<<setw(20)<<"姓名"<<setw(10)<<"数学"<<setw(10)<<"英语"<<setw(10)<<"程序"<<setw(10)<<"物理"<<setw(10)<<"平均"<<endl;
for(i=0;i<n+add_num;i++)
{
for(int m=0;m<n+add_num;m++)
{
if(fabs(a[i]-studs[m].average)<1e-9){
cout<<setw(11)<<studs[m].num<<setw(20)<<studs[m].name<<setw(10)<<studs[m].math<<setw(10)<<studs[m].English<<setw(10)<<studs[m].c<<setw(10)<<studs[m].physics<<setw(10)<<studs[m].average<<endl;
}
}
}
system("pause");
goto loop;
break;
case 8:cout<<"查询数学成绩请扣1"<<endl<<"查询英语成绩请扣2"<<endl<<"查询程序设计成绩请扣3"<<endl<<"查询物理成绩请扣4"<<endl<<"查询平均成绩请扣5"<<endl; //显示一门课程的所有学生成绩
cin>>search_subject;
switch(search_subject)
{
case 1:cout<<setw(11)<<"学号"<<setw(20)<<"姓名"<<setw(10)<<"数学"<<setw(10)<<endl;
for(i=0;i<n+add_num;i++) cout<<setw(11)<<studs[i].num<<setw(20)<<studs[i].name<<setw(10)<<studs[i].math<<endl;
system("pause");
break;
case 2:cout<<setw(11)<<"学号"<<setw(20)<<"姓名"<<setw(10)<<"英语"<<setw(10)<<endl;
for(i=0;i<n+add_num;i++) cout<<setw(11)<<studs[i].num<<setw(20)<<studs[i].name<<setw(10)<<studs[i].English<<endl;
system("pause");
break;
case 3:cout<<setw(11)<<"学号"<<setw(20)<<"姓名"<<setw(10)<<"程序设计"<<setw(10)<<endl;
for(i=0;i<n+add_num;i++) cout<<setw(11)<<studs[i].num<<setw(20)<<studs[i].name<<setw(10)<<studs[i].c<<endl;
system("pause");
break;
case 4:cout<<setw(11)<<"学号"<<setw(20)<<"姓名"<<setw(10)<<"物理"<<setw(10)<<endl;
for(i=0;i<n+add_num;i++) cout<<setw(11)<<studs[i].num<<setw(20)<<studs[i].name<<setw(10)<<studs[i].physics<<endl;
system("pause");
break;
case 5:for(i=n+add_num-1;i>=0;i--) studs[i].average=(studs[i].math+studs[i].English+studs[i].c+studs[i].physics)/4;
cout<<setw(11)<<"学号"<<setw(20)<<"姓名"<<setw(10)<<"平均成绩"<<setw(10)<<endl;
for(i=0;i<n+add_num;i++) cout<<setw(11)<<studs[i].num<<setw(20)<<studs[i].name<<setw(10)<<studs[i].average<<endl;
break;
}
system("pause");
goto loop;
break;
case 9:cout<<"若想查询学号修改请扣1"<<endl<<"若想查询姓名修改请扣2"<<endl;//修改学生信息
cin>>num1;
switch(num1)
{
case 1:cout<<"请输入想修改信息的学生的学号:";
cin>>string1;
for(i=0;i<n+add_num;i++)
{
if(string1==studs[i].num)
{
cout<<"修改姓名扣1"<<endl<<"修改数学成绩扣2"<<endl<<"修改英语成绩扣3"<<endl<<"修改程序设计成绩扣4"<<endl<<"修改物理成绩扣5"<<endl;
cin>>num2;
switch(num2)
{
case 1:cout<<"请输入修改后的姓名:";
cin>>name1;
strcpy(studs[i].name,name1);
cout<<"修改完毕";
system("pause");
goto loop;break;
case 2:cout<<"请输入修改后的数学成绩:";
cin>>shuxue;
studs[i].math=shuxue;
cout<<"修改完毕";
system("pause");
goto loop;break;
case 3:cout<<"请输入修改后的英语成绩:";
cin>>yingyu;
studs[i].English=yingyu;
cout<<"修改完毕";
system("pause");
goto loop;break;
case 4:cout<<"请输入修改后的程序设计成绩:";
cin>>chengxu;
studs[i].c=chengxu;
cout<<"修改完毕";
system("pause");
goto loop;break;
case 5:cout<<"请输入修改后的物理成绩:";
cin>>wuli;
studs[i].physics=wuli;
cout<<"修改完毕";
system("pause");
goto loop;break;
default:cout<<"请输入正确的数字。";
}
}
}
cout<<"查无此人!!!";
system("pause");
goto loop;
break;
case 2:cout<<"请输入想修改信息的学生的姓名:";
cin>>string1;
for(i=0;i<n+add_num;i++)
{
if(string1==studs[i].name)
{
cout<<"修改学号扣1"<<endl<<"修改数学成绩扣2"<<endl<<"修改英语成绩扣3"<<endl<<"修改程序设计成绩扣4"<<endl<<"修改物理成绩扣5"<<endl;
cin>>num2;
switch(num2)
{
case 1:cout<<"请输入修改后的学号:";
cin>>num3;
studs[i].num=num3;
cout<<"修改完毕";
system("pause");
goto loop;break;
case 2:cout<<"请输入修改后的数学成绩:";
cin>>shuxue;
studs[i].math=shuxue;
cout<<"修改完毕";
system("pause");
goto loop;break;
case 3:cout<<"请输入修改后的英语成绩:";
cin>>yingyu;
studs[i].English=yingyu;
cout<<"修改完毕";
system("pause");
goto loop;break;
case 4:cout<<"请输入修改后的程序设计成绩:";
cin>>chengxu;
studs[i].c=chengxu;
cout<<"修改完毕";
system("pause");
goto loop;break;
case 5:cout<<"请输入修改后的物理成绩:";
cin>>wuli;
studs[i].physics=wuli;
cout<<"修改完毕";
system("pause");
goto loop;break;
default:cout<<"请输入正确的数字进行操作。";
}
}
}
cout<<"查无此人!!!";
system("pause");
goto loop;
break;
default:cout<<"请输入正确数字进行查找。";break;
}
break;
case 10:for(i=n+add_num-1;i>=0;i--) studs[i].average=(studs[i].math+studs[i].English+studs[i].c+studs[i].physics)/4;//成绩水平分析
for(i=n+add_num-1;i>=0;i--)
{
if(studs[i].math>=90) math[0]++;
else if(studs[i].math>=80) math[1]++;
else if(studs[i].math>=60) math[2]++;
else math[3]++;
if(studs[i].English>=90) English[0]++;
else if(studs[i].English>=80) English[1]++;
else if(studs[i].English>=60) English[2]++;
else English[3]++;
if(studs[i].c>=90) c[0]++;
else if(studs[i].c>=80) c[1]++;
else if(studs[i].c>=60) c[2]++;
else c[3]++;
if(studs[i].physics>=90) physics[0]++;
else if(studs[i].physics>=80) physics[1]++;
else if(studs[i].physics>=60) physics[2]++;
else physics[3]++;
if(studs[i].average>=90) average[0]++;
else if(studs[i].average>=80) average[1]++;
else if(studs[i].average>=60) average[2]++;
else average[3]++;
}
cout<<"人数分布:"<<endl<<endl;
cout<<setw(20)<<"优秀人数"<<setw(12)<<"良好人数"<<setw(12)<<"及格人数"<<setw(13)<<"不及格人数"<<endl;
cout<<"数学"<<setw(14)<<math[0]<<setw(10)<<math[1]<<setw(12)<<math[2]<<setw(12)<<math[3]<<endl;
cout<<"英语"<<setw(14)<<English[0]<<setw(10)<<English[1]<<setw(12)<<English[2]<<setw(12)<<English[3]<<endl;
cout<<"程序设计"<<setw(10)<<c[0]<<setw(10)<<c[1]<<setw(12)<<c[2]<<setw(12)<<c[3]<<endl;
cout<<"物理"<<setw(14)<<physics[0]<<setw(10)<<physics[1]<<setw(12)<<physics[2]<<setw(12)<<physics[3]<<endl;
cout<<"平均成绩"<<setw(10)<<average[0]<<setw(10)<<average[1]<<setw(12)<<average[2]<<setw(12)<<average[3]<<endl<<endl;
cout<<"人数占比:"<<endl<<endl;
cout<<setw(20)<<"优秀人数占比"<<setw(16)<<"良好人数占比"<<setw(16)<<"及格人数占比"<<setw(17)<<"不及格人数占比"<<endl;
cout<<"数学"<<setw(10)<<(math[0]*100)/(n+add_num)<<"%"<<setw(15)<<(math[1]*100)/(n+add_num)<<"%"<<setw(16)<<(math[2]*100)/(n+add_num)<<"%"<<setw(14)<<(math[3]*100)/(n+add_num)<<"%"<<endl;
cout<<"英语"<<setw(10)<<(English[0]*100)/(n+add_num)<<"%"<<setw(15)<<(English[1]*100)/(n+add_num)<<"%"<<setw(16)<<(English[2]*100)/(n+add_num)<<"%"<<setw(14)<<(English[3]*100)/(n+add_num)<<"%"<<endl;
cout<<"程序设计"<<setw(6)<<(c[0]*100)/(n+add_num)<<"%"<<setw(15)<<(c[1]*100)/(n+add_num)<<"%"<<setw(16)<<(c[2]*100)/(n+add_num)<<"%"<<setw(14)<<(c[3]*100)/(n+add_num)<<"%"<<endl;
cout<<"物理"<<setw(10)<<(physics[0]*100)/(n+add_num)<<"%"<<setw(15)<<(physics[1]*100)/(n+add_num)<<"%"<<setw(16)<<(physics[2]*100)/(n+add_num)<<"%"<<setw(14)<<(physics[3]*100)/(n+add_num)<<"%"<<endl;
cout<<"平均成绩"<<setw(6)<<(average[0]*100)/(n+add_num)<<"%"<<setw(15)<<(average[1]*100)/(n+add_num)<<"%"<<setw(16)<<(average[2]*100)/(n+add_num)<<"%"<<setw(14)<<(average[3]*100)/(n+add_num)<<"%"<<endl;
for (i=0; i<4; i++)
{
math[i]=0;
English[i]=0;
c[i]=0;
physics[i]=0;
average[i]=0;
}
system("pause");
goto loop;
break;
default:cout<<"请输入正确的数字。"<<endl;
system("pause");
goto loop;
break;
}
infile.close();
return 0;
}
【CPP】C++程序设计大作业 学生成绩管理系统
于 2022-12-09 21:16:20 首次发布