?? 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 + -