《2022年c语言程序设计学生成绩管理系统 .pdf》由会员分享,可在线阅读,更多相关《2022年c语言程序设计学生成绩管理系统 .pdf(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验题目:学生成绩管理系统一、 课程设计目的1、进一步掌握和利用C 语言进行程设计的能力;2、进一步理解和运用结构化程设计的思想和方法;3、初步掌握开发一个小型实用系统的基本方法;4、学会调试一个较长程序的基本方法;5、学会利用流程图或N-S 图表示算法;6、掌握书写程设计开发文档的能力(书写课程设计报告);二、课程设计内容1、每一条记录包括一个学生的学号、姓名、性别、4 门课成绩、平均成绩。2、输入功能:可以一次完成若干条记录的输入。3、输出功能:完成全部学生记录的显示。4、查找功能:完成按姓名查找学生记录,并显示。5、新增功能:完成对任意学生信息的增加。6、删除功能:完成对任意学生信息的删
2、除。7、统计功能:完成对学生四门成绩最高分、最低分、平均成绩的统计。8、排序功能:完成学生四门成绩由高到低的排序,并显示。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 20 页 - - - - - - - - - 9、将学生记录存在文件student中。10、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观! 三、需求分析1、用 C 语言实现系统;2、利用结构体数组实现学生成绩的数据结构设计;3、系统具有增加,查询,插入,排序等基本功能;4、系
3、统的各个功能模块要求用函数的形式实现;5、完成设计任务并书写课程设计报告。6、将学生成绩信息存在文件中。四、概要设计1、方案设计对系统进行分析,给出结构图分析:系统要求实现许多的功能,因此遵循结构化程序设计思想来进行本系统的设计自顶向下、逐步细化, 将系统设计任务分解出许多子功能模块进行设计结构图如下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 20 页 - - - - - - - - - 2、模块功能说明对各个模块进行功能的描述(1)、输入模块: 录入需要管理的学生
4、信息并将信息保存于文件中,以方便日后进行打印、读取、修改等操作。(2)、输出模块:将所有学生信息或想要查询的学生信息显示于屏幕,用于打印学生信息或查找某些学生信息。录入模块输出模块查询模块新增模块修改模块删除模块统计模块排序模块退出系统统计数学最高分、最低分、平均成绩统计英语最高分、最低分、平均成绩统计计算机最高分、最低分、平均成绩排序语文成绩排序数学成绩排序英语成绩排序计算机成绩统计语文最高分、最低分、平均成绩名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 20 页 -
5、 - - - - - - - - (3)、查询模块:可对已建立的学生信息进行查询,并且可根据需要选择按姓名查询。(4)、新增模块:根据需要随时增加学生信息。(5)、修改模块:可根据需要对多个学生信息进行修改,也可随时对个别项进行修改。(6)、删除模块:可对退学或休学的学生信息做删除处理。(7)、统计模块:对学生四门成绩最高分、最低分、平均成绩的统计。(8)、排序模块:对学生四门成绩由高到低的排序。(9)、退出系统:选择该项,自动退出该系统。五、详细设计及运行结果流程图,函数之间相互调用的图示,程序设计及编码, 运行结果。名师资料总结 - - -精品资料欢迎下载 - - - - - - - -
6、- - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 20 页 - - - - - - - - - 六调试情况及运行结果1、对自己设计进行评价,指出合理和不足之处,提出改进的方案。此次实践课编写的是一个应用程序,相对于以前我们见的程序,它要大得多,运行的结果也没有预想中的好,数据结束开始输入 i 的值判断 i 的值新增模块查询模块删除模块修改模块输出模块录入模块统计语文最高分、最低分、平均成绩统计数学最高分、最低分、平均成绩统计计算机最高分、最低分、平均成绩排序语文成绩排序数学成绩统计英语最高分、最低分、平均成绩排序语文成绩排序语文成绩退出系统名师资
7、料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 20 页 - - - - - - - - - 的输出格式不太规范,而且各模块也出现了一些小问题,在同学们的帮助下,我很有耐心的一次又一次的进行修改,最后运行的结果基本上达到了预期的目的。可是毕竟是第一次独立完成这样的大程序,结果还不是太理想。由于时间很短,在选题报告中设想到的好多功能都没有实现。已有的那些功能虽已能基本上满足用户的需要,但如果还有更多的功能程序就会更加完美。如:再录入数据时,没有设计数据输入出错的提示,如果成绩输的
8、是负值程序也继续执行,这就给运用上带来一些不便;没有设计按各科成绩排序的功能。2、在设计过程中的感受。本次 C 语言的实习课让我对C 语言的学习又有了更深入的了解,也让我更深刻地领悟到了“实践出真理”这个道理,在上机实践过程中学到的知识远远超过了在课堂上十几周学到的,学校组织的这次实习让我们这些实践知识匮乏的大学生增添了许多社会经验,为我们将来走上工作岗位其了不小的铺垫作用。本次实习中遇到了很多以前没有遇到过的问题,也曾想要放弃,但看到那些同学都在那认真的写程序,给了我继续的信心。在同学的帮助下,我顺利的结束了本次实习,让我知道原来凭借自己努力取得的成功会让自己这么欣慰,也让我知道了友谊和团结
9、的重要性。3、 程序中出现的问题及解决方法问题一、学生初始信息模块:其中包括学生的姓名、学号和性别以及学生的语文数学、英语和计算机等相关信息;可用函数input() 来实现此操作。当正确输入存在的学生学号,系统进行判断时,提示不存在此学生。解决办法及步骤: (1)一个个输出所有的学生的学号,检查文件中是否有此学生,发现有。(2)既然有此学生, 那么检查循环判断是否有此学生的语句发现没有错。(3)仔细分析原因后,最后发现是变量的类型错误,错将学生名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - -
10、- 第 6 页,共 20 页 - - - - - - - - - 类型的结构体指针变量定义为了其他类型的变量。问题二、查询模块:可用 inquire() 函数 来实现。找到就输出此学生全部信息,包括学生的语文、数学、英语和计算机等的成绩。当正确输入查找信息时,系统却不能够得到所要查找的学生信息以及学生的语文、 数学、英语和计算机的成绩。解决办法及步骤:(1)检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入查找信息看能否得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。(2)检查当我们在输入查找信息时,看是否我们输入的信息有误,若是这样的话,我们应当仔细输入查找
11、信息。问题三、插入模块:可用 insert( )函数来实现。当我们输入插入信息时,系统却提示插入不进数据。解决办法及步骤:(1)检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入插入信息看能否插入进去得到所要插入的学生信息以及学生的语文、数学、英语和计算机的成绩。( 2)检查当我们在输入插入信息时,看是否我们输入的插入信息有。七参考文献 C 语言程序设计王曙燕曹锰科学出版社2005 年 2 月八. 附录:# include # include # define N 5 int sum; /* 用来记录学生人数*/ /* 学生信息结构体类型*/ struct student i
12、nt num; char name12; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 20 页 - - - - - - - - - char sex; int score4; int ave; stuN; /* 全新保存函数 */ save_message(int sum) /*保存函数,保存sum 个记录 */ FILE *fp; int i; if(fp=fopen(student.txt,wb)=NULL) /* 以输出打开方式,在此前的记录被覆盖*/ prin
13、tf(nCannot open filen); return NULL; for(i=0;isum;i+) if(stui.ave!=0) /*stui.ave=0 表此记录已删除*/ if(fwrite(&stui,sizeof(struct student),1,fp)!=1) printf(file write errorn); fclose(fp); /* 学号输入函数 */ void no_input(int i) /* 表示第 i 个的学生信息*/ int j,k; printf(NO.:); scanf(%d,&stui.num); if(stui.num9) /* 判断学号是否
14、为数字*/ printf(Input errror!Only bemade up of (0-9).Please reinput!n); /* 对分数输入 */ void score_input(int i) int j; for(j=0;j4;j+) printf(score %d:,j+1); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 20 页 - - - - - - - - - scanf(%d,&stui.scorej); void average(int
15、i) /* 对第 i 个记录的分数求平均值*/ int j,sum=0; for(j=0;j4;j+) sum+=stui.scorej; stui.ave=sum/4; /* 输入模块 */ void input_message(int i) printf(nn 录入学生信息 (最多 %d 种)n,N); for(i=0;iN;i+) printf(please input name:n); fflush(stdin); scanf(%3s,stui.name); no_input(i); fflush(stdin); printf(please input sex:n); scanf(%c
16、,&stui.sex); fflush(stdin); score_input(i); fflush(stdin); average(i); fflush(stdin); printf(n -%d 名学生信息输入完毕!-n,i); sum=i; printf(n 按任意键返回主菜单!); /* 读取信息 */ int read_message() FILE *fp; int i=0; if(fp=fopen(student.txt,rb)=NULL) printf(nn*暂时还没有任何库存信息,按任意键进入名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -
17、 - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 20 页 - - - - - - - - - 主菜单选择基本信息的录入!*n); return; while(feof(fp)!=1) fread(&stui,sizeof(struct student),1,fp); if(stui.num=0) break; else i+; fclose(fp); return(i); /* 输出模块 */ void output_message() int i=0,j; do printf(%d %3s %ctt,stui.num,stui.name,stui.sex)
18、; for(j=0;j4;j+) printf(%dtt,stui.scorej); average(i); printf(%dn,stui.ave); i+; while(isum); printf( 按任意键返回主菜单!); getch(); /* 查询模块 */ 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;i8
19、|c1) printf(nChoice error!Please again!); /* 判断选择是否错误,若是则重新选择*/ getchar(); /* 当输入是字符时,可以防止死循环*/ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 20 页 - - - - - - - - - switch(c) /* 选择要修改的项目*/ case 1:printf(n 输入修改后的学号:); scanf(%d,&stui.num); break; case 2:printf(
20、n 输入修改后的姓名:); scanf(%3s,stui.name); break; case 3:printf(n 输入修改后的性别:); getchar(); scanf(%c,&stui.sex); 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:
21、printf(n 输入修改后的计算机成绩:); scanf(%d,&stui.score3); break; case 8: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 按任意键返回主菜单!); getch(); /* 删除学生信息 */ void del_message() int
22、 i,k,del_num,flag=1; char choice; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 20 页 - - - - - - - - - printf(please input the deleted student num:); scanf(%d,&del_num); for(i=0;isum;i+) if(stui.num=del_num) for(k=i;ksum;k+) stuk=stuk+1; break; if(i=sum) prin
23、tf(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 按任意键返回主菜单!); getch(); /* 求学生语文最高分,最低分,平均成绩*/ void Chinese_average() int i,max,min,SUM=0,ave; max=min=stu0.score0; for(i=0;imax) max=stui.score0; if (stui
24、.score0min) 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 按任意键返回主菜单!); getch(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 20 页 - - - - - - - - - /* 求学
25、生数学最高分,最低分,平均成绩*/ void Math_average() int i,max,min,SUM=0,ave; max=min=stu0.score1; for(i=0;imax) max=stui.score1; if (stui.score1min) min=stui.score1; SUM+=stui.score1; ave=SUM/sum; printf(n Math average:%d,ave); printf(n Math max:%d,max); printf(n Math min:%d,min); printf(n 按任意键返回主菜单!); getch(); /
26、* 求学生英语最高分,最低分,平均成绩*/ void English_average() int i,max,min,SUM=0,ave; max=min=stu0.score2; for(i=0;imax) max=stui.score2; if (stui.score2min) min=stui.score2; SUM+=stui.score2; ave=SUM/sum; printf(n English average:%d,ave); printf(n English max:%d,max); printf(n English min:%d,min); printf(n 按任意键返回主
27、菜单!); getch(); /* 求学生计算机最高分,最低分,平均成绩*/ void Computer_average() int i,max,min,SUM=0,ave; max=min=stu0.score3; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 20 页 - - - - - - - - - for(i=0;imax) max=stui.score3; if (stui.score3min) min=stui.score3; SUM+=stui.sco
28、re3; ave=SUM/sum; printf(n Computer average:%d,ave); printf(n Computer max:%d,max); printf(n Computer min:%d,min); printf(n 按任意键返回主菜单!); getch(); /* 学生语文成绩排序*/ void sort_Chinese() int i,j,t; printf(Input %d scores:n,sum); for(i=0;isum;i+) printf(%d,stui.score0); printf(n); for(i=0;isum-1;i+) for(j=i
29、+1;jsum;j+) if(stui.score0stuj.score0) t=stui.score0; stui.score0=stuj.score0; stuj.score0=t; printf(The sorted scores:n); for(i=0;isum;i+) printf(%4dt,stui.score0); printf(n); printf(n 按任意键返回主菜单!); getch(); /* 学生数学成绩排序*/ void sort_Math() int i,j,t; printf(Input %d scores:n,sum); 名师资料总结 - - -精品资料欢迎下
30、载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 20 页 - - - - - - - - - for(i=0;isum;i+) printf(%d,stui.score1); printf(n); for(i=0;isum-1;i+) for(j=i+1;jsum;j+) if(stui.score1stuj.score1) t=stui.score1; stui.score1=stuj.score1; stuj.score1=t; printf(The sorted scores:n); for(i=0;
31、isum;i+) printf(%4dt,stui.score1); printf(n); printf(n 按任意键返回主菜单!); getch(); /* 学生英语成绩排序*/ void sort_English() int i,j,t; printf(Input %d scores:n,sum); for(i=0;isum;i+) printf(%d,stui.score2); printf(n); for(i=0;isum-1;i+) for(j=i+1;jsum;j+) if(stui.score2stuj.score2) t=stui.score2; stui.score2=stu
32、j.score2; stuj.score2=t; printf(The sorted scores:n); for(i=0;isum;i+) printf(%4dt,stui.score2); printf(n); printf(n 按任意键返回主菜单!); getch(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 20 页 - - - - - - - - - /* 学生计算机成绩排序*/ void sort_Computer() int i,j,t; prin
33、tf(Input %d scores:n,sum); for(i=0;isum;i+) printf(%d,stui.score3); printf(n); for(i=0;isum-1;i+) for(j=i+1;jsum;j+) if(stui.score3stuj.score3) t=stui.score3; stui.score3=stuj.score3; stuj.score3=t; printf(The sorted scores:n); for(i=0;isum;i+) printf(%4t,stui.score3); printf(n); printf(n 按任意键返回主菜单!
34、); getch(); /* 主程序 */ main() int i; sum=read_message(); printf(tttn); /* 操 作界面*/ printf(ttW elcime to the systemn); printf(Author:-tClass:-tNum:-n); /* 作者,班级和学号 */ printf(%n); printf(nnn); printf(=tt=n); printf(=tt=n); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1
35、8 页,共 20 页 - - - - - - - - - do printf(nnn *学 生 成 绩 管 理 系 统*nn); printf( 1.录入学生信息 nn); printf( 2.输出学生信息 nn); printf( 3.查询学生信息 nn); printf( 4.新增学生信息 nn); printf( 5.修改学生信息 nn); printf( 6.删除学生信息 nn); printf( 7.统计学生语文最高分、最低分、平均成绩 nn); printf( 8.统计学生数学最高分、最低分、平均成绩 nn); printf( 9.统计学生英语最高分、最低分、平均成绩 nn); p
36、rintf( 10.统计学生计算机最高分、最低分、平均成绩 nn); printf( 11.学生语文成绩排序nn); printf( 12.学生数学成绩排序nn); printf( 13.学生英语成绩排序nn); printf( 14.学生计算机成绩排序nn); printf( 0.退出系统 nn); printf( 请选择 (0-14) :); scanf(%d,&i); switch(i) case 1: input_message(i);break; case 2: output_message();break; case 3: inquire_message(i);break; cas
37、e 4: insert_message();break; case 5: revise_message();break; case 6: del_message();break; case 7: Chinese_average();break; case 8: Math_average();break; case 9: English_average();break; case 10: Computer_average();break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第
38、 19 页,共 20 页 - - - - - - - - - case 11: sort_Chinese();break; case 12: sort_Math();break; case 13: sort_English();break; case 14: sort_Computer;break; case 0: break; while(i!=0); save_message(sum); printf(n-The messages have been saved! - (filename:student.txt)n); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 20 页 - - - - - - - - -