C语言学生成绩管理系统文档.doc
二一二一一 学年第 二 学期信息科学与工程学院课程设计报告书课程名称: C语言课程设计 班 级: 电信1001班 学 号: 0 姓 名: 余文栋 指导教师: 陈和平 二一一 年 九 月C语言学生成绩管理系统文档策划人:余文栋 学号:0学生成绩管理系统的结构图如下:统计物理最高分、最低分、平均成绩统计计算机最高分、最低分、平均成绩统计英语最高分、最低分、平均成绩统计数学最高分、最低分、平均成绩统计语文最高分、最低分、平均成绩学号查询性名查询录入模块输出模块查询模块新增模块修改模块删除模块统计模块排序模块退出系统排序语文成绩排序物理成绩排序计算机成绩排序英语成绩排序数学成绩一学生成绩管理系统要求能够提供添加、删除和修改学生信息的功能,能够提供按不同方式查询的功能,能否按照指定需求对学生信息排序。二,结构模块说明(1)、输入模块:录入需要管理的学生信息并将信息保存于文件中,以方便日后进行打印、读取、修改等操作。/*输入模块*/void input_message(int i) printf("nn 录入学生信息(最多%d种)n",N); for(i=0;i<N;i+) printf("please input name:n"); fflush(stdin); scanf("%3s",stui.name); no_input(i); fflush(stdin); printf("please input major:n"); scanf("%3s",&stui.major); fflush(stdin); score_input(i); fflush(stdin); average(i); fflush(stdin); printf("n -%d名学生信息输入完毕!-n",i); sum=i; printf("n 按任意键返回主菜单!");(2)、输出模块:将所有学生信息或想要查询的学生信息显示于屏幕,用于打印学生信息或查找某些学生信息。/*输出模块*/void output_message() int i=0,j; do printf("%d %3s %ctt",stui.num,stui.name,stui.major); for(j=0;j<5;j+) printf("%dtt",stui.scorej); average(i); printf("%dn",stui.ave); i+; while(i<sum); printf("按任意键返回主菜单!"); getchar();(3)、查询模块:可对已建立的学生信息进行查询,并且可根据需要选择按姓名查询。/*查询模块*/void inquire_message() char name4; int j=0,i; printf("please input the name of the student you want to find:"); /*通过姓名查看*/ scanf("%3s",name); fflush(stdin); for(i=0;i<sum;i+) if(strcmp(name,stui.name)=0) printf("n-学生信息-n"); printf("学号-姓名-专业-语文成绩-数学成绩-英语成绩-计算机成绩-物理成绩-平均成绩n"); printf("%d %3s %3s %d %d %d %d %d %dn",stui.num,stui.name,stui.major,stui.score0,stui.score1,stui.score2,stui.score3, stui.score4,stui.ave); else j+; if(j=sum) printf("n 该学生不存在!"); /*判断要查询的学生信息是否存在*/ printf("n 按任意键返回主菜单!"); getchar();(4)、新增模块:根据需要随时增加学生信息。/*新增学生信息*/void insert_message() int i=sum,flag=0; char choice; printf("nn 添加一名学生信息n"); fflush(stdin); do printf("nn student number:"); scanf("%d",&stui.num); fflush(stdin); printf("nn student name:"); scanf("%3s",stui.name); fflush(stdin); printf("nn student major:"); scanf("%3s",&stui.major); fflush(stdin); printf("nn Chinese score:"); scanf("%d",&stui.score0); fflush(stdin); printf("nn Math score:"); scanf("%d",&stui.score1); fflush(stdin); printf("nn English score:"); scanf("%d",&stui.score2); fflush(stdin); printf("nn Computer score:"); scanf("%d",&stui.score3); fflush(stdin); printf("nn Physics score:"); scanf("%d",&stui.score4); fflush(stdin); average(i); printf("nn average:%d",stui.ave); printf("n Go on?(Y/N)"); /*判断是否继续*/ getchar(); printf("%c",choice); if(choice='Y') printf("n Go on!n"); i+; flag=1; else flag=0; while(flag=1); printf("n 按任意键返回主菜单!"); getchar(); (5)、修改模块:可根据需要对多个学生信息进行修改,也可随时对个别项进行修改。/*修改学生信息*/void revise_message() int c,i=0,num,flag=1; char choice; inquire_message(); /*调用查询函数*/ printf("n modify 1.num 2.name 3.sex 4.score1 5.score2 6.score3 7.score4 8.score5 9.average"); /*输入选择做个判断*/ printf("Which do you need?"); scanf("%d",&c); if(c>9|c<1) printf("nChoice error!Please again!"); /*判断选择是否错误,若是则重新选择*/ getchar(); /*当输入是字符时,可以防止死循环*/ switch(c) /*选择要修改的项目*/ case 1:printf("n 输入修改后的学号:"); scanf("%d",&stui.num); break; case 2:printf("n 输入修改后的姓名:"); scanf("%3s",stui.name); break; case 3:printf("n 输入修改后的专业:"); getchar(); scanf("%c",&stui.major); break; case 4:printf("n 输入修改后的语文成绩:"); scanf("%d",&stui.score0); break; case 5:printf("n 输入修改后的数学成绩:"); scanf("%d",&stui.score1); break; case 6:printf("n 输入修改后的英语成绩:"); scanf("%d",&stui.score2); break; case 7:printf("n 输入修改后的计算机成绩:"); scanf("%d",&stui.score3); break; case 8:printf("n 输入修改后的物理成绩:"); scanf("%d",&stui.score4); break; case 9:printf("n 输入修改后的平均成绩:"); scanf("%d",&stui.ave); break; printf("nn Go on? (Y/N)"); /*判断是否继续*/ scanf("%c",&choice); getchar(); if (choice='Y') flag=1; printf("n Go on!n"); else flag=0; printf("n 按任意键返回主菜单!"); getchar();(6)、删除模块:可对退学或休学的学生信息做删除处理。/*删除学生信息*/void del_message() int i,k,del_num,flag=1; char choice; printf("please input the deleted student num:"); scanf("%d",&del_num); for(i=0;i<sum;i+) if(stui.num=del_num) for(k=i;k<sum;k+) stuk=stuk+1; break; if(i=sum) printf("n 学生信息不存在:"); printf("nn Go on? (Y/N)"); fflush(stdin); getchar(); scanf("%c",&choice); if(choice='Y') flag=1; printf("n Go on!n"); else flag=0; printf("n 按任意键返回主菜单!"); getchar();排序英语成绩(7)、统计模块: 对学生五门成绩最高分、最低分、平均成绩的统计(以语文为例)void Chinese_average() int i,max,min,SUM=0,ave; max=min=stu0.score0; for(i=0;i<sum;i+) if (stui.score0>max) max=stui.score0; if (stui.score0<min) min=stui.score0; SUM+=stui.score0; ave=SUM/sum; printf("n Chinese average:%d",ave); printf("n Chinese max:%d",max); printf("n Chinese min:%d",min); printf("n 按任意键返回主菜单!"); getchar();。(8)、排序模块: 对学生五门成绩由高到低的排序。/*学生语文成绩排序*/void sort_Chinese() int i,j,t; printf("Input %d scores:n",sum); for(i=0;i<sum;i+) printf("%d",stui.score0); printf("n"); for(i=0;i<sum-1;i+) for(j=i+1;j<sum;j+) if(stui.score0<stuj.score0) t=stui.score0; stui.score0=stuj.score0; stuj.score0=t; printf("The sorted scores:n"); for(i=0;i<sum;i+) printf("%4dt",stui.score0); printf("n"); printf("n 按任意键返回主菜单!"); getchar();(9)、退出系统:选择该项,自动退出该系统三流程图输入i的值开 始结 束退 出 系 统 排序物理成绩排序计算机成绩排序英语成绩排序数学成绩排序语文成绩统计物理最高分、最低分、平均成绩统计计算机最高分、最低分、平均成绩统计英语最高分、最低分、平均成绩统计数学最高分、最低分、平均成绩统计语文最高分、最低分、平均成绩删除模块修改模块新增模块查 询 模 块输出模块录入模块判断i的值(1)录入模块开始输入stui.numStui.num<o|stui>9结束Error! NY1.对分数输入开始输入stui.numjJ=0J<5?结束NYJ+2.对分数输入开始I=OJ=OJ<5?J+I+I<sum?输出结束NYYN输出模块开始输入name,mun存在?输出stuiYN查询模块开始添加?添加信息继续添加?添加学生结束NYYN添加模块四,调试分析部分调试示例图注释:该图第一项为学号,第二项为姓名,第三项为专业,语文,数学,英语,计算机,物理,最后为平均分该图为添加学生信息模块() 在此过程中,我发现我的程序有着很大的问题,数据的输出格式不太规范,而且各模块也出现了一些小问题,在同学们的帮助下,我很有耐心的一次又一次的进行修改,最后运行的结果基本上达到了预期的目的。可是毕竟是第一次独立完成这样的大程序,结果还不是太理想。() 在此次的编程中,我有好多方面都没设计到位,像有关指针的,都不熟,而且改错也不熟,所以有的并没有完全按照要求做() 本次实习中遇到了很多以前没有遇到过的问题,也曾想要放弃,但看到那些同学都在那认真的写程序,给了我继续的信心。在同学的帮助下,我顺利的结束了本次实习,让我知道原来凭借自己努力取得的成功会让自己这么欣慰,也让我知道了友谊和团结的重要性。()本次C 语言的实习课让我对C 语言的学习又有了更深入的了解,也让我更深刻地领悟到了“实践出真理”这个道理,在上机实践过程中学到的知识远远超过了在课堂上十几周学到的,学校组织的这次实习让我们这些实践知识匮乏的大学生增添了许多社会经验,为我们将来走上工作岗位其了不小的铺垫作用。