- 注册时间
- 2007-6-12
- 最后登录
- 1970-1-1
|
大家看看我写的程序哪错了的?我不会改了,谢谢大家- #include<iostream.h>
- #include<iomanip.h>
- #include<stdlib.h>
- #include<string.h>
- #define N 5
- struct student
- {
- char name[9];
- int id,jxj,shs;
- float math,eng,c,ave,jd;
- };
- void message(int a)
- {
- switch(a)
- {
- case 0:cout<<"不合法的操作数(1--8之间)!重新输入:";break;
- case 1:cout<<"数据已录入,无须重新录入!重新输入:";break;
- case 2:cout<<"不合法的姓名(最多8个字符)!重新输入:";break;
- case 3:cout<<"无效的成绩(0--100之间)!重新输入:";break;
- case 4:cout<<cout<<setw(10)<<"特等奖";break;
- case 5:cout<<setw(10)<<"一等奖";break;
- case 6:cout<<setw(10)<<"二等奖";break;
- case 7:cout<<setw(10)<<"三等奖";break;
- }
- }
- float test(float a)
- {
- while(a<0||a>100) {message(3);cin>>a;}
- return a;
- }
- void input(student a[N])
- {
- char test[100];
- for(int i=0;i<N;i++)
- {
- system("cls");
- cout<<"已录入"<<i<<"条记录,剩余"<<N-i<<"条记录!\n";
- cout<<"请输入第'<<i+1<<"位学生的姓名:";cin>>test;
- while(sizeof(test)>8) {message(2);cin>>test;}
- strcpy(a[i].name,test);
- cout<<"请输入"<<a[i].name<<"同学的学号:" ;cin>>a[i].id;
- cout<<"请输入"<<a[i].name<<"同学的高数成绩:" ;cin>>a[i].math;
- a[i].math=test(a[i].math);
- cout<<"请输入"<<a[i].name<<"同学的英语成绩:" ;cin>>a[i].eng;
- a[i].eng=test(a[i].eng);
- cout<<"请输入"<<a[i].name<<"同学的C++成绩:" ;cin>>a[i].c;
- a[i].c=test(a[i].c);
- }
- }
- void output(student a[N],float &a)
- {
- cout<<setw(10)<<"姓名"<<setw(10)<<"学号"<<setw(10)<<"高等数学"<<setw(10)<<"英语"<<setw(10)<<"C++"<<setw(10)<<"平均分"<<setw(10)<<"学分积点"<<'\n';
- for(int i=0;i<N;i++)
- cout<<setw(10)<<a[i].name<<setw(10)<<a[i].id<<setw(10)<<a[i].math<<setw(10)<<a[i].eng<<setw(10)<<a[i].c<<setw(10)<<a[i].ave<<setw(10)<<a[i].jd<<'\n';
- cout<<"班级平均分为:<<a<<'\n';
- }
- void average(student a[N],float &a)
- {
- for(int i=0;i<N;i++)
- {
- a[i].ave=(a[i].math+a[i].eng+a[i].c)/3;
- a=a+a[i].ave;
- }
- a=a/N;
- }
- void xfjd(student a[N])
- {
- float a,b,c;
- for(int i=0;i<N;i++)
- {
- if(a[i].math<60) a=0;
- else a=1+(a[i].math-60)/10;
- if(a[i].eng<60) b=0;
- else b=1+(a[i].eng-60)/10;
- if(a[i].c<60) c=0;
- else c=1+(a[i].c-60)/10;
- a[i].jd=(5.5*a+6*b+4*c)/15.5;
- }
- }
- void award(student a[N])
- {
- for(int i=0;i<N;i++)
- {
- if(a[i].math>=60&&a[i].eng>=60&&a[i].c>=60)
- {
- if(a[i].jd>=4.0) a[i].jxj=3;
- else if(a[i].jd>=3.6) a[i].jxj=2;
- else if(a[i].jd>=3.2) a[i].jxj=1;
- else if(a[i].jd>=2.8) a[i].jxj=0;
- }
- else a[i].jd=4;
- if(a[i].math>=80&&a[i].eng>=80&&a[i].c>=80)
- a[i].shs=1;
- else a[i].shs=0;
- }
- void sortprint(student a[N],int b,int &a,float &c)
- {
- char c[15];student t;int i,j,k=0;
- switch(b)
- {
- case 1:strcpy(c,"高等数学成绩");break;
- case 2:strcpy(c,"英语成绩");break;
- case 3:strcpy(c,"C++成绩");break;
- case 4:strcpy(c,"平均成绩");break;
- case 5:strcpy(c,"学分积点");break;
- }
- if(a!=b)
- {
- for(i=0;i<N-1;i++)
- {
- for(j=i+1;j<N;j++)
- switch(b)
- {
- case 1:if(a[i].math<a[j].math) {t=a[i];a[i]=a[j];a[j]=t;};break;
- case 2:if(a[i].eng<a[j].eng) {t=a[i];a[i]=a[j];a[j]=t;};break;
- case 3:if(a[i].c<a[j].c) {t=a[i];a[i]=a[j];a[j]=t;};break;
- case 4:if(a[i].ave<a[j].ave) {t=a[i];a[i]=a[j];a[j]=t;};break;
- case 5:if(a[i].jd<a[j].jd) {t=a[i];a[i]=a[j];a[j]=t;};break;
- }
- k++;
- if(k==N-1) a=b;
- }
- }
- cout<<"按"<<c<<"降序输出为:\n";
- output(a[n],c);
- }
- void awardprint(student a[N],int a)
- {
- int i,j,k;
- if(a==1)
- {
- cout<<setw(10)<<"奖项"<<setw(10)<<"姓名"<<setw(10)<<"学号"<<setw(10)<<"高等数学"<<setw(10)<<"英语"<<setw(10)<<"C++"<<setw(10)<<"平均分"<<setw(10)<<"学分积点"<<'\n';
- for(i=0;i<4;i++)
- for(j=0,k=0;j<N;j++)
- if(a[j].jxj==i)
- {
- message(i+4);
- cout<<setw(10)<<a[i].name<<setw(10)<<a[i].id<<setw(10)<<a[i].math<<setw(10)<<a[i].eng<<setw(10)<<a[i].c<<setw(10)<<a[i].ave<<setw(10)<<a[i].jd<<'\n';
- }
- else {k++;if(k==N-1) cout<<"\t无学生获得该奖励!\n";}
- }
- else
- {
- cout<<"三好学生名单:\n";
- for(i=0,j=0,k=0;i<N;i++,j++)
- if(a[i].shs==1)
- {
- cout<<setw(20)<<a[i].name;
- if(j&&j%3==0) cout<<'\n';
- }
- else {k++;if(k==N-1) cout<<"很遗憾,本班没有学生符合三好生的要求.\n";}
-
- }
- }
- void main()
- {
- int option=0,data=0,sort=0;
- float ave=0;
- student s[N];
- while(option!=9)
- {
- cout<<"欢迎使用学生成绩管理系统\n";
- cout<<"1.录入并处理数据\n2.按高等数学成绩排序输出\n3.按英语成绩排序输出\n4.按C++成绩排序输出\n5.按平均成绩排序输出\n6.按学分排序输出\n7.查看获奖学金情况\n8.查看获三好生情况\n9.退出管理系统\n请选择相应的操作:";
- cin>>option;
- while(option<1||option>9) {message(0);cin>>option;}
- switch(option)
- {
- case 1:if(data==0) {input(s);system("cls");cout<<数据成功录入!\n";average(s,ave);xfjd(s);award(s);cout<<"数据处理完毕!";}
- else {system("cls");message(1)}
- break;
- case 2:system("cls");sortprint(s,1,ave,sort);break;
- case 3:system("cls");sortprint(s,2,ave,sort);break;
- case 4:system("cls");sortprint(s,3,ave,sort);break;
- case 5:system("cls");sortprint(s,4,ave,sort);break;
- case 6:system("cls");sortprint(s,5,ave,sort);break;
- case 7:system("cls");awardprint(s,1);break;
- case 8:system("cls");awardprint(s,2);break;
- case 9:system("cls");cout<<"欢迎下次使用!\n";
- }
- }
- }
复制代码 |
|