📄 s.cpp
字号:
#include<iostream>
#include<string>
#include<iomanip>
#include <fstream>
#define n 3
using namespace std;
struct student
{
int num;
string name;
int yuwen;
int shuxue;
int yingyu;
int sum;
float ave;
int order;
}student[n],stu[n];
int total(int x,int y,int z)
{
return x+y+z;
}
float aver(int x,int y,int z)
{
return (float)(x+y+z)/3;
}
void sum_ave()
{
int i;
cout<<setw(22)<<"学号"<<setw(10)<<"姓名";;
cout<<setw(10)<<"总分"<<setw(10)<<" 平均分"<<endl;
for(i=0;i<n;i++)
{
cout<<setw(22)<<student[i].num<<setw(10)<<student[i].name;
cout<<setw(10)<<student[i].sum<<setw(10)<<student[i].ave<<endl;
}
}
float total_ave()
{
int i;float total_sum=0.0;
for(i=0;i<n;i++)
total_sum+=student[i].sum;
return total_sum/n;
}
int xh(int x)
{
if(x<1000||x>9999)
return 1;
else
return 0;
}
int jc(int i)
{
int m=0;
for(m=0;m<i;m++)
if(student[m].num==student[i].num)
break;
if(m<i)
return 1;
else
return 0;
}
int fenshu(int x)
{
if(x<0||x>100)
return 1;
else
return 0;
}
void load()
{
int i;float x,y,z,a;
cout<<"********请首先输入学生的各项信息*******"<<endl;
for(i=0;i<n;i++)
{
cout<<"第"<<i+1<<"位学生:"<<endl;
cout<<"学号:";
cin>>a;student[i].num=a;
while(xh(a))
{
cout<<"学号输入错误!请输入一个四位数学号:";
cin>>a;
student[i].num=a;
while(jc(i))
{
cout<<"学号输入重复,请重新输入:";
cin>>a;
student[i].num=a;
}
}
while(jc(i))
{
cout<<"学号输入重复,请重新输入:";
cin>>a;
student[i].num=a;
while(xh(a))
{
cout<<"学号输入错误!请输入一个四位数学号:";
cin>>a;
student[i].num=a;
}
}
student[i].num=a;
cout<<"姓名:";
cin>>student[i].name;
cout<<"语文:";
cin>>x;
while(fenshu(x))
{
cout<<"分数输入错误!请重新输入:";
cin>>x;
}
student[i].yuwen=x;
cout<<"数学:";
cin>>y;
while(fenshu(y))
{
cout<<"分数输入错误!请重新输入:";
cin>>y;
}
student[i].shuxue=y;
cout<<"英语:";
cin>>z;
while(fenshu(z))
{
cout<<"分数输入错误!请重新输入:";
cin>>z;
}
student[i].yingyu=z;
student[i].sum=total(x,y,z);
student[i].ave=aver(x,y,z);
}
cout<<"***********您已经输入完毕!*************"<<endl;
}
void paixu()
{
int i,j;
for(i=0;i<n-1;i++)
{
int max=i;
for(j=i+1;j<n;j++)
if(student[max].sum<=student[j].sum)
max=j;
stu[i]=student[max];
student[max]=student[i];
student[i]=stu[i];
}
}
void set_order()
{
cout<<setw(22)<<"学号"<<setw(10)<<"姓名";
cout<<setw(10)<<"总分"<<setw(10)<<"名次" <<endl;
paixu();
for(int i=0;i<n;i++)
{
student[i].order=i+1;
cout<<setw(22)<<student[i].num<<setw(10)<<student[i].name;
cout<<setw(10)<<student[i].sum<<setw(10)<<student[i].order<<endl;
}
}
void print1()
{
cout<<setw(14)<<"学号"<<setw(7)<<"姓名"<<setw(7)<<"语文";
cout<<setw(7)<<"数学"<<setw(7)<<"英语";
cout<<setw(7)<<"总分"<<setw(9)<<"平均分";
}
void print2(int i)
{
cout<<setw(14)<<student[i].num<<setw(7)<<student[i].name;
cout<<setw(7)<<student[i].yuwen<<setw(7)<<student[i].shuxue;
cout<<setw(7)<<student[i].yingyu<<setw(7)<<student[i].sum;
cout<<setw(9)<<student[i].ave;
}
void display()
{
float a=total_ave();
print1();
cout<<setw(5)<<"名次"<<endl<<endl;
for(int i=0;i<n;i++)
if(student[i].sum>a)
{
print2(i);
cout<<setw(5)<<student[i].order<<endl;
}
}
void modi(int xh)
{
int p=0,d;char a;float x,y,z;
while(1)
{
for(d=0;d<n;d++)
if(student[d].num==xh)
{
p=1;
break;
}
if(p==1)
break;
else
{
cout<<"数据库中没有这个学生!请确认输入是否有误:";
cin>>xh;
}
}
cout<<setw(3)<<" ";
print1();cout<<endl<<endl<<setw(3)<<" ";
print2(d);cout<<endl;
cout<<"确认要修改以上分数信息吗?y/n";
cin>>a;
if(a=='y')
{
cout<<"语文:";
cin>>x;
while(fenshu(x))
{
cout<<"分数输入错误!请重新输入:";
cin>>x;
}
student[d].yuwen=x;
cout<<"数学:";
cin>>y;
while(fenshu(y))
{
cout<<"分数输入错误!请重新输入:";
cin>>y;
}
student[d].shuxue=y;
cout<<"英语:";
cin>>z;
while(fenshu(z))
{
cout<<"分数输入错误!请重新输入:";
cin>>z;
}
student[d].yingyu=z;
student[d].sum=total(x,y,z);
student[d].ave=aver(x,y,z);
cout<<"修改完毕! 修改后的信息为:"<<endl;
cout<<setw(3)<<" ";
print1();cout<<endl<<endl<<setw(3)<<" ";
print2(d);cout<<endl;
paixu();
for(int i=0;i<n;i++)
student[i].order=i+1;
}
else cout<<"您已退出修改!"<<endl;
}
void scan(int m)
{
int k=0;
print1();
cout<<setw(5)<<"名次"<<endl<<endl;
for(int i=0;i<n;i++)
if(student[i].num==m)
{
k=1;
break;
}
if(k)
{
print2(i);
cout<<setw(5)<<student[i].order<<endl;
}
else
cout<<setw(40)<<"数据库中没有这个学生的任何记录!"<<endl;
}
int main()
{
int m,a=0,x,p;char b;
load();
cout<<"进行相关操作?(y/n)";
cin>>b;
while(b=='y')
{ system("cls");
cout<<endl<<endl;
cout<<setw(64)<<"===================学生成绩管理系统======================"<<endl<<endl;
cout<<" * 1.统计显示每个学生的总分和平均分 *"<<endl<<endl;
cout<<" * 2.按照总分由大到小排列名次 *"<<endl<<endl;
cout<<" * 3.打印出成绩在全班平均分以上的学生名单和数据信息 *"<<endl<<endl;
cout<<" * 4.由学号查找某学生的考试成绩 *"<<endl<<endl;
cout<<" * 5.修改学生成绩 *"<<endl<<endl;
cout<<" * 6.退出 *"<<endl<<endl;
cout<<" ========================================================="<<endl;
cout<<" 请输入您要选择的服务(从1~5中的数字中选择):";
cin>>m;
cout<<endl;
if(m==6)
break;
switch(m)
{
case 1:cout<<" ====================学生总分平均分统计==================="<<endl;
sum_ave();
cout<<" ========================================================="<<endl;
cout<<"是否继续(y/n)";
cin>>b;
if(b=='y')
break;
else
a=1;
break;
case 2:cout<<"这个班总分排名是:"<<endl;
cout<<" =======================学生总分排名======================"<<endl;
set_order();
cout<<" ========================================================="<<endl;
cout<<"是否继续(y/n)";
cin>>b;
if(b=='y')
break;
else
a=1;
break;
case 3:cout<<setw(25)<<"这个班的平均分是:"<<total_ave()<<endl;
cout<<setw(53)<<"成绩在全班平均分以上的学生名单和数据信息如下:"<<endl<<endl;
cout<<setw(64)<<"====================平均分以上的同学====================="<<endl;
display();
cout<<setw(64)<<"========================================================="<<endl;
cout<<"是否继续(y/n)";
cin>>b;
if(b=='y')
break;
else
a=1;
break;
case 4:cout<<"请输入一个学号:";
cin>>x;
cout<<"该学生的信息如下:"<<endl<<endl;
cout<<setw(64)<<"========================================================="<<endl;
scan(x);
cout<<setw(64)<<"========================================================="<<endl;
cout<<"是否继续(y/n)";
cin>>b;
if(b=='y')
break;
else
a=1;
break;
case 5:cout<<"请输入要修改成绩的学生学号:";
cin>>p;
modi(p);
cout<<"是否继续(y/n)";
cin>>b;
if(b=='y')
break;
else
a=1;
break;
}
if(a==1)
break;
}
ofstream ofs("打印.txt");
for(int j=0;j<3;j++)
ofs<<student[j].name<<endl;
ofs.close();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -