-1-《学生成绩管理系统》—课程设计实验报告院系:吉林大学通信工程学院班级:2012级15班姓名:李凯华学号:52121510指导教师:张海蓉-2-一.设计项目:学生成绩管理系统二.系统功能:1.学生基本情况录入。2.允许对已经录入的数据进行显示。3.允许进行数据的插入。4.删除基本数据的相关信息。5.基于姓名的查询。如:姓张的所有同学。6.基于各种基本数据的统计计算。如:①统计每个学生各门功课的平均成绩,并按平均成绩从高到低的次序排名输出每个学生各门功课的综合成绩和平均成绩(名次、学号、姓名、平均成绩、各门功课的考试成绩)。②列出90分以上(包括90)、80分以上(包括80)、70分以上(包括70)、60分以上(包括60)、不及格学生清单(学号、姓名、不及格的课程和成绩)。③统计并输出各门功课的平均成绩和总平均成绩。三.总体设计:1.程序设计组成框图:学生成绩管理系统输入学生成绩查看学生成绩及成绩排序通过学号查询学生成绩统计成绩信息通过学号修改学生成绩添加学生成绩通过学号删除学生成绩保存学生成绩退出程序2:模块功能说明:1输入功能:输入学生姓名学号及成绩。2查看功能:输出姓名学号及各科成绩。3查询功能:通过学号查询学生姓名及各科成绩。4统计功能:统计班级学生及格率,优秀率,各个学生成绩方差等。5修改功能:通过输入学号修改指定学生的错误信息。6添加功能:添加学生信息。7删除功能:通过输入学号输入指定学生信息。8保存功能:将学生信息保存。9退出系统。-3-3:主要函数之间的调用关系及各自功能:主要函数的函数原型voidinputscore(void);voidsavescore(void);voidavergescore(void);voidmodifyscore(void);voidlookscore(void);voidsearchscore(void);voidstatistic(void);voidadd(void);voidmodify(void);voiddelscore(void);voidmenu(void);i.在菜单界面输入1,调用函数inputscore()实现输入学生成绩信息功能。ii.在菜单界面2,调用函数lookscore()实现学生成绩按平均分高低排序输。出,同时lookscore()函数调用avergescore()函数实现各个学生平均分的计算。iii.在菜单界面输入3,调用searchscore()函数实现通过学号查找学生成绩信息功能。iv.在菜单界面输入4,调用statistic()函数输出班级及格率,优秀率,学生成绩方差,不及格学生名单。v.在菜单界面输入5,调用modify()函数实现通过学号修改学生成绩的功能vi.在菜单界面输入6,调用add()函数实现添加学生成绩。vii.在菜单界面输入7,调用delscore()函数实现删除指定学生成绩。viii.在菜单界面输入8,调用savescore()函数将学生成绩信息保存。ix.在菜单界面输入9,退出成绩管理系统。-4-开始输入指令1~9输入成绩查询成绩成绩统计修改成绩添加成绩删除成绩保存成绩显示成绩123456789退出三程序运行效果截图1主菜单-5-2输入成绩3查看成绩4查询成绩5统计成绩-6-6修改成绩7添加成绩-7-8删除成绩9保存成绩四、源代码#includestdio.h#includestring.h#includeprocess.h#includeconio.h#defineN30#defineM4typedefstructstudent{charnumber[9];/*学号*/charname[20];/*姓名*/charsex[15];/*性别,“0”代表女,“1”代表男*/intage;/*年龄*/floatscore[M];/*成绩*/intorder;/*排名*/-8-floataver;/*平均成绩*/floattotal;/*总分*/}STU;STUstu[N];intn;voidinputscore(void);voidavergescore(void);voidsum(void);voidmodifyscore(void);voidlookscore(void);voidsearchscore(void);voidstatistic(void);voidadd(void);voidmodify(void);voiddelscore(void);voidmenue(void);voidsavescore(void);voidmain(){shortintflag=0;menue();do{flag=1;switch(getch()){case'1':inputscore();break;/*输入成绩*/case'2':lookscore();break;/*查看成绩*/case'3':searchscore();break;/*查找成绩*/case'4':statistic();break;/*成绩统计*/case'5':modify();break;/*修改成绩*/case'6':add();break;/*添加成绩*/case'7':delscore();break;/*删除成绩*/case'8':savescore();break;/*保存成绩*/case'9':exit(0);/*退出成绩*/default:printf(输入有误\n);}printf(按任意键继续\n);getch();menue();}while(flag==1);}voidmenue(void){-9-system(cls);printf(\n);printf(*************欢迎进入学生成绩管理系统³***********\n);printf(菜单\n);printf(---------------------输入成绩--------------------1\n);printf(----------------查看成绩及成绩排序---------------2\n);printf(-------------------查询学生成绩------------------3\n);printf(---------------------成绩统计--------------------4\n);printf(---------------------修改成绩-------------------5\n);printf(---------------------添加成绩--------------------6\n);printf(---------------------删除成绩--------------------7\n);printf(---------------------保存成绩--------------------8\n);printf(---------------------退出系统--------------------9\n);printf(************************************\n);printf(请输入您的选择\n);}/***************输入各个同学的学生信息******************************/voidinputscore(void){inti,j;system(cls);printf(请输入学生总数:\n);scanf(%d,&n);printf(提示:*输入学号时请输入由8位数字组成的学号,如012104000*\n);for(i=0;in;i++){printf(请输入学生%d的学号:\n,i+1);scanf(%s,stu[i].number);printf(请输入学生%d的姓名:\n,i+1);scanf(%s,stu[i].name);printf(请输入学生%d的性别(“0”代表女,“1”代表男):\n,i+1);scanf(%s,&stu[i].sex);printf(请输入学生%d的年龄:\n,i+1);scanf(%d,&stu[i].age);printf(请输入学生%d的成绩:\n);printf(高数\t马哲\t外语\tc语言\n);for(j=0;jM;j++)scanf(%f,&stu[i].score[j]);}printf(成功输入\n);}/*****************计算各个同学的总分*****************************/voidtotal(void)-10-{inti,j;for(i=0;in;i++){stu[i].total=0;for(j=0;jM;j++){stu[i].total+=stu[i].score[j];}}}/*****************计算各个同学的平均分*****************************/voidavergescore(void){inti,j;for(i=0;in;i++){stu[i].aver=0;for(j=0;jM;j++){stu[i].aver+=stu[i].score[j];}stu[i].aver=stu[i].aver/M;}}/************查看学生成绩及根据平均分对学生进行排序*********************/voidlookscore(void){inti,j,k;STUt;total();avergescore();system(cls);for(i=0;in-1;i++){for(k=i,j=i+1;jn;j++)if(stu[j].averstu[k].aver)k=j;if(k!=j){t=stu[k];stu[k]=stu[i];stu[i]=t;}}printf(名次\t学号\t\t姓名\t性别\t年龄\t高数\t马哲\t外语\tc语言\t总分\t平均分\n);-11-for(i=0;in;i++){printf(%d\t%s\t%s\t%s\t%d\t,i+1,stu[i].number,stu[i].name,stu[i].sex,stu[i].age);for(j=0;jM;j++)printf(%4.2f\t,stu[i].score[j]);printf(%4.2f\t,stu[i].total);printf(%4.2f,stu[i].aver);printf(\n);}}/*****************通过输入学号查找学生成绩¨***************************/voidsearchscore(void){chara[10];inti,j;system(cls);printf(请输入需查询的学生学号\n);scanf(%s,a);for(i=0;in;i++){if(strcmp(a,stu[i].number)==0){printf(名次\t学号\t\t姓名\t性别\t年龄\t高数\t马哲\t外语\tc语言\t总分\t平均分\n);printf(%d\t%s\t%s\t%s\t%d\t,i+1,stu[i].number,stu[i].name,stu[i].sex,stu[i].age);for(j=0;jM;j++)printf(%4.2f\t,stu[i].score[j]);printf(%4.2f\t,stu[i].total);printf(%4.2f,stu[i].aver);printf(\n);break;/*找到该学生成绩信息后跳出for循环*/}elseprintf(未找到该学生信息\n);}}/*******统计学生成绩信息,平均分及及格率****************/voidstatistic(void){STU*p=stu;inti;floatcount=0.0,sum=0.0;system(cls);for(i=