uva12412
依旧大模拟,要注意好多好多细节,看的眼睛涨
#include <stdio.h> #include <cstring> #include <string> #include <iostream> #include <algorithm> #include <cmath> using namespace std; // int emm[200000]; int len; struct student{int cid,sco1,sco2,sco3,sco4;string name,sid;}; int main() {int choice;student stu[200];while(true){printf("Welcome to Student Performance Management System (SPMS).\n\n1 - Add\n2 - Remove\n3 - Query\n4 - Show ranking\n5 - Show Statistics\n0 - Exit\n\n");cin>>choice;if(choice==0)break;if(choice==1){while(true){printf("Please enter the SID, CID, name and four scores. Enter 0 to finish.\n");int b,c,d,e,f,flag=0;string s,a;cin>>a;if(a=="0")break;cin>>b>>s>>c>>d>>e>>f;for(int i=1;i<=len;i++)if(stu[i].sid==a){flag=1;break;}if(flag==1){printf("Duplicated SID.\n");continue;}len++;stu[len].cid=b;stu[len].sid=a;stu[len].name=s;stu[len].sco1=c;stu[len].sco2=d;stu[len].sco3=e;stu[len].sco4=f;}}if(choice==2){while(true){int cnt=0;printf("Please enter SID or name. Enter 0 to finish.\n");string s;cin>>s;if(s=="0")break;for(int i=1;i<=len;i++)if(stu[i].name==s||stu[i].sid==s){cnt++;len--;for(int j=i;j<=len;j++){stu[j].cid=stu[j+1].cid;stu[j].sid=stu[j+1].sid;stu[j].name=stu[j+1].name;stu[j].sco1=stu[j+1].sco1;stu[j].sco2=stu[j+1].sco2;stu[j].sco3=stu[j+1].sco3;stu[j].sco4=stu[j+1].sco4;}i--;}printf("%d student(s) removed.\n",cnt);}}if(choice==3){while(true){printf("Please enter SID or name. Enter 0 to finish.\n");string s;cin>>s;if(s=="0")break;for(int i=1;i<=len;i++)if(stu[i].name==s||stu[i].sid==s){int sum=0;for(int j=1;j<=len;j++){if(stu[j].sco1+stu[j].sco2+stu[j].sco3+stu[j].sco4>stu[i].sco1+stu[i].sco2+stu[i].sco3+stu[i].sco4)sum++;}printf("%d ",sum+1);cout<<stu[i].sid<<" "<<stu[i].cid<<" "<<stu[i].name;printf(" %d %d %d %d %d %.2f\n",stu[i].sco1,stu[i].sco2,stu[i].sco3,stu[i].sco4,stu[i].sco1+stu[i].sco2+stu[i].sco3+stu[i].sco4,double(stu[i].sco1+stu[i].sco2+stu[i].sco3+stu[i].sco4)/4+1e-5);}}}if(choice==4)printf("Showing the ranklist hurts students' self-esteem. Don't do that.\n");if(choice==5){printf("Please enter class ID, 0 for the whole statistics.\n");int cla,sum1=0,sum2=0,sum3=0,sum4=0,jg1=0,jg2=0,jg3=0,jg4=0;int jg11=0,jg22=0,jg33=0,jg44=0,jg00=0;cin>>cla;if(cla==0){for(int i=1;i<=len;i++){int jg=0;sum1+=stu[i].sco1;sum2+=stu[i].sco2;sum3+=stu[i].sco3;sum4+=stu[i].sco4;if(stu[i].sco1>=60)jg1++,jg++;if(stu[i].sco2>=60)jg2++,jg++;if(stu[i].sco3>=60)jg3++,jg++;if(stu[i].sco4>=60)jg4++,jg++;if(jg==0)jg00++;if(jg==1)jg11++;if(jg==2)jg22++;if(jg==3)jg33++;if(jg==4)jg44++;}printf("Chinese\n");printf("Average Score: %.2f\n",double(sum1)/len+1e-5);printf("Number of passed students: %d\n",jg1);printf("Number of failed students: %d\n\n",len-jg1);printf("Mathematics\n");printf("Average Score: %.2f\n",double(sum2)/len+1e-5);printf("Number of passed students: %d\n",jg2);printf("Number of failed students: %d\n\n",len-jg2);printf("English\n");printf("Average Score: %.2f\n",double(sum3)/len+1e-5);printf("Number of passed students: %d\n",jg3);printf("Number of failed students: %d\n\n",len-jg3);printf("Programming\n");printf("Average Score: %.2f\n",double(sum4)/len+1e-5);printf("Number of passed students: %d\n",jg4);printf("Number of failed students: %d\n\n",len-jg4);printf("Overall:\n");printf("Number of students who passed all subjects: %d\n",jg44);printf("Number of students who passed 3 or more subjects: %d\n",jg33+jg44);printf("Number of students who passed 2 or more subjects: %d\n",jg33+jg44+jg22);printf("Number of students who passed 1 or more subjects: %d\n",jg33+jg44+jg22+jg11);printf("Number of students who failed all subjects: %d\n\n",jg00);}else{int len1=0;for(int i=1;i<=len;i++){int jg=0;if(stu[i].cid==cla){len1++;sum1+=stu[i].sco1;sum2+=stu[i].sco2;sum3+=stu[i].sco3;sum4+=stu[i].sco4;if(stu[i].sco1>=60)jg1++,jg++;if(stu[i].sco2>=60)jg2++,jg++;if(stu[i].sco3>=60)jg3++,jg++;if(stu[i].sco4>=60)jg4++,jg++;if(jg==0)jg00++;if(jg==1)jg11++;if(jg==2)jg22++;if(jg==3)jg33++;if(jg==4)jg44++;}}printf("Chinese\n");printf("Average Score: %.2f\n",double(sum1)/len1+1e-5);printf("Number of passed students: %d\n",jg1);printf("Number of failed students: %d\n\n",len1-jg1);printf("Mathematics\n");printf("Average Score: %.2f\n",double(sum2)/len1+1e-5);printf("Number of passed students: %d\n",jg2);printf("Number of failed students: %d\n\n",len1-jg2);printf("English\n");printf("Average Score: %.2f\n",double(sum3)/len1+1e-5);printf("Number of passed students: %d\n",jg3);printf("Number of failed students: %d\n\n",len1-jg3);printf("Programming\n");printf("Average Score: %.2f\n",double(sum4)/len1+1e-5);printf("Number of passed students: %d\n",jg4);printf("Number of failed students: %d\n\n",len1-jg4);printf("Overall:\n");printf("Number of students who passed all subjects: %d\n",jg44);printf("Number of students who passed 3 or more subjects: %d\n",jg33+jg44);printf("Number of students who passed 2 or more subjects: %d\n",jg33+jg44+jg22);printf("Number of students who passed 1 or more subjects: %d\n",jg33+jg44+jg22+jg11);printf("Number of students who failed all subjects: %d\n\n",jg00);}}}return 0; }