#include <stdio.h> #include <stdlib.h> #define N 100 typedef struct { int n; int c1; int c2; int c3; int ac; int vc; int cn; }STU; int sn=1; STU stu[N]; STU sortstuc[N]; void menu(); void InputStu(int i); void ShowStuAve(); void OutputAll(); void SortC(); void OutputSortC(); int main(void) { char key; printf("课程设计:考试成绩的统计管理"); printf("/n/n------------------------------------WELCOME-------------------------------------"); printf("/n"); printf("系统初始设定对 3 门科目进行统计,并最多可统计100名学生信息。/n/n"); system("pause"); while(1) { system("cls"); printf("课程设计:考试成绩的统计管理"); printf("/n/n------------------------------------WELCOME-------------------------------------"); printf("/n"); menu(); printf("/n"); printf("请输入操作(A.B.C.Q):"); key=getchar(); fflush(stdin); printf("/n"); switch(key) { case 'a': case 'A': { InputStu(sn); }break; case 'b': case 'B': { ShowStuAve(); }break; case 'c': case 'C': { OutputAll(); }break; case 'd': case 'D': { OutputSortC(); }break; case 'q': case 'Q': { printf("/n/t/t/t/t谢谢使用,再见!/n/n"); system("pause"); exit(0); } default: { printf("输入错误!/n"); }break; } system("pause"); } system("pause"); return 0; } void menu() { printf("********************************************************************************"); printf("/t/t/tA.------增添新的学生成绩/n"); printf("/t/t/tB.------查询对应学生总成绩与平均成绩以及总成绩排名/n"); printf("/t/t/tC.------输出所有学生总成绩与平均成绩以及总成绩排名/n"); printf("/t/t/tD.------输出学生总成绩排名/n"); printf("/t/t/tQ.------退出管理系统/n"); printf("********************************************************************************/n"); } void InputStu(int i) { sn++; printf("---------->>请输入第 %d 号学生的各科成绩:/n",i); scanf("%d",&stu[i].c1); scanf("%d",&stu[i].c2); scanf("%d",&stu[i].c3); fflush(stdin); stu[i].n=i; stu[i].ac=stu[i].c1+stu[i].c2+stu[i].c3; stu[i].vc=(stu[i].c1+stu[i].c2+stu[i].c3)/3; stu[i].cn=1; sortstuc[i].n=i; sortstuc[i].ac=stu[i].ac; sortstuc[i].vc=stu[i].vc; sortstuc[i].c1=stu[i].c1; sortstuc[i].c2=stu[i].c2; sortstuc[i].c3=stu[i].c3; sortstuc[i].cn=1; printf("添加学生信息成功!/n"); if(sn>2) { SortC(); } } void ShowStuAve() { int i; printf("---------->>请输入第学生编号:/n"); scanf("%d",&i); fflush(stdin); if(i>=sn||i<=0) { printf("----------<<所查询学生编号不存在!/n"); return; } else { printf("该学生的总成绩为:%d/t平均成绩为:%d/t总成绩排名为:%d/n",stu[i].ac,stu[i].vc,stu[i].cn); } } void OutputAll() { int i; printf("---------->>所有学生考试信息:/n"); printf("学生编号/t总成绩/t/t平均成绩/t总成绩排名/n"); for(i=1; i<sn; i++) { printf("%d/t/t%d/t/t%d/t/t%d/n",i,stu[i].ac,stu[i].vc,stu[i].cn); } } void SortC() { int i,j; STU temp; for(i=sn-1; i>1; i--) { for(j=1; j<i; j++) { if(sortstuc[j].ac<sortstuc[j+1].ac) { temp.n=sortstuc[j].n; temp.c1=sortstuc[j].c1; temp.c2=sortstuc[j].c2; temp.c3=sortstuc[j].c3; temp.ac=sortstuc[j].ac; temp.vc=sortstuc[j].vc; temp.cn=sortstuc[j].cn; sortstuc[j].n=sortstuc[j+1].n; sortstuc[j].c1=sortstuc[j+1].c1; sortstuc[j].c2=sortstuc[j+1].c2; sortstuc[j].c3=sortstuc[j+1].c3; sortstuc[j].ac=sortstuc[j+1].ac; sortstuc[j].vc=sortstuc[j+1].vc; sortstuc[j].cn=sortstuc[j+1].cn; sortstuc[j+1].n=temp.n; sortstuc[j+1].c1=temp.c1; sortstuc[j+1].c2=temp.c2; sortstuc[j+1].c3=temp.c3; sortstuc[j+1].ac=temp.ac; sortstuc[j+1].vc=temp.vc; sortstuc[j+1].cn=temp.cn; } } } for(i=1; i<sn; i++) { j=sortstuc[i].n; stu[j].cn=i; sortstuc[i].cn=i; } } void OutputSortC() { int i; printf("---------->>学生考试总成绩排名情况:/n"); printf("总成绩排名/t学生编号/t总成绩/t/t平均成绩/n"); for(i=1; i<sn; i++) { printf("%d/t/t%d/t/t%d/t/t%d/n",sortstuc[i].cn,sortstuc[i].n,sortstuc[i].ac,sortstuc[i].vc); } }