2022年数据结构与算法毕业设计_学生成绩管理系统 .pdf

上传人:H****o 文档编号:39900102 上传时间:2022-09-08 格式:PDF 页数:31 大小:549.84KB
返回 下载 相关 举报
2022年数据结构与算法毕业设计_学生成绩管理系统 .pdf_第1页
第1页 / 共31页
2022年数据结构与算法毕业设计_学生成绩管理系统 .pdf_第2页
第2页 / 共31页
点击查看更多>>
资源描述

《2022年数据结构与算法毕业设计_学生成绩管理系统 .pdf》由会员分享,可在线阅读,更多相关《2022年数据结构与算法毕业设计_学生成绩管理系统 .pdf(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、0 目录引言1 系统概述1.1 系统功能1.2 系统作用和特点2 需求分析2.1 功能要求2.2 性能要求2.3 数据需求2.4 开发环境3 详细设计3.1 登陆界面与主界面的实现3.2 详细设计思想3.3 系统结构体的设计3.3 各种模块的实现4 所遇到的问题和分析4.1 系统存在的不足4.2 制作过程中遇到的问题4.4 问题分析5 系统特色及关键技术6 结论及心得体会参考文献附录名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 31 页 -1 摘要随着计算机的普及,人们的生活和学习都离不开电脑,计算机是提高生产效率的主要工具及途径,所以教育也不例外。现在基本每个大学都有自己的学

2、生管理系统。学生成绩管理系统不仅把广大教师从繁重的成绩管理工作中解脱出来、把学校从传统的成绩管理模式中解放出来,而且对学生成绩的判断和整理更合理、更公正,同时也给教师提供了一个准确、清晰、轻松的成绩管理环境。本系统依据开发要求主要应用于教育系统,学生成绩管理系统借助于计算机强大的处理能力,大大减轻了管理人员的工作量,并提高了处理的准确性。学生成绩管理系统的开发运用,实现了学生成绩管理的自动化。主要完成对学生成绩的管理,包括添加、修改、删除,查询,查看信息以及保存入档等六个方面。每一个表的修改都将联动的影响其它的表,当完成添加或删除操作时系统会自动地完成学生成绩的修改。查询功能也是系统的核心之一

3、,在系统中主要根据学生姓名和学号进行查询,其目的都是为了方便用户使用。系统有完整的添加、删除和修改功能,并具备成绩表查询功能。论文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。本文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。重点说明了系统的设计思路、总体设计、各个功能模块的设计与实现。关键词:学生成绩;成绩管理信息系统;C 语言名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 31 页 -2 引言几年前,许多学校对于学生成绩的管理还是停留在运用手工操作,随着计算机的飞快发展以及各个学校的规模不断壮大,学生人数逐年增加。关于学生成绩管理工作所涉及的数据量越来越大

4、,有的学校不得不靠增加人力、物力来进行学生成绩管理。但人工管理又有着许多缺陷,比如:效率底、易出错、检索信息慢、对学校的管理提供决策信息较为困难等。学校不能完全掌握每一个学生的学习情况,这样对学校的教学工作及其不利,使学校的教学质量一直停滞不前,所以我想借本次课程设计之际,开发一个适用于各校的通用高校学生成绩管理系统,使学校能够充分掌握学生的学习情况,便于学校教学工作的进行和改革。开发的目标建立学生成绩管理系统,采用计算机对学生成绩进行管理,进一步提高办学效率和现代化水平。使学校对学生的成绩能够快速并准确的录入、修改和查询,更好地掌握每个学生的各科成绩,便于教师的管理。使学生对个人的学习成绩进

5、行快速的查询。让老师能够更好、更快的了解学生的学习情况,使学校的教学质量进一步的提高。本系统改变以往靠手工管理学生成绩的状况,可以树立良好的办学先锋,提高工作效率,节省人力和物力,在些高校建立了校园网,实现了办公自动化。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 31 页 -3 1 系统概述1.1 系统功能学生成绩管理系统主要以管理学生成绩信息为目的,。主要功能包括登录用户、成绩录入管理、查询管理、修改管理、删除管理、统计管理、成绩排名等。登录用户:老师可以进行各种操作,学生只能进行查询操作。成绩录入管理:每次考试结束,都可录入学生成绩信息。查询管理:包括查询成绩和基本信息。

6、可以显示单独一条记录,也可以显示所有信息。修改管理:包括修改成绩和基本信息。删除管理:包括删除成绩和基本信息。统计管理:统计学生人数,优生率,不及格人数和平均成绩。成绩排名:按成绩的高低顺序排列。1.2 系统作用和特点系统可以更快的使学生的成绩相加并且排名以及各种统计,这对老师来说是很好可以减少很多工作量,在多人多课考试时很有用,只要成绩出来,输入电脑就可以在几秒内是成绩相加,并知道了某学生在学校排名,对老师来说,考完试自由的时间就增加了许多。功能强大,实用性很强,并且有较好的交互界面,方便用户使用,具有易操作性,覆盖面广。2 需求分析2.1 功能要求使用中文菜单,界面设计和用户输入输出要人性

7、化些;将学生信息保存在文本文档中,具有数据删除功能,能最终从文件中删除;排序功能,根据自己设计的数据结构,设计排序算法具有多种查询(如按学号查询、按姓名查询、按成绩查询等)及输出功能;其它功能(如各种统计,统计每个学生所有课程的平均分,统计某门课程所有学生的平均分等)学生信息的修改(修改学生姓名,修改学生某门课程的成绩)2.2 性能需求系统的高速性、稳定性、安全性。系统的体系结构能够方便使用功能,适应业务、办公的发展。系统人机界面友好,易学易用。名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 31 页 -4 系统维护成本较低。2.3 数据需求基本数据维护功能添加学生的信息。修改学

8、生的信息。删除学生的信息。查询学生的信息。统计学生的信息。存读的成绩信息。学生数据结构用户结构学生C 语言算法数据库性别学号姓名登录用户账号权限密码名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 31 页 -5 主菜单2.4 开发环境开发环境是用 Visual C+6.0,简称 VC或者 VC6.0,是微软推出的一款C+编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。Visual C+是一个功能强大的可视化软件开发工具。它是一种可视化的编程工具,它基于 windows操作系统。它有两种方式来建立应用程序,一种是通过 VC6.0的可视化编程工具,另一种是通过 visua

9、l c+6.0的代码编辑器,手工编写代码。本系统所用的语言是C语言,C语言是目前世界上流行、使用最广泛的高级程序设计语言。C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用 C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言学生成绩管理系统用户登录学生用户老师用户统计记录成绩统计添加记录查询记录查询记录修改记录删除记录来退出统计记录成绩统计存读记录名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 31 页 -6 3详细设计3.1 登陆界

10、面与主界面的实现系统登录界面用了C 选择控制语言。用于对进入系统的用户进行安全检查,阻止非法用户的进入。验证账号及密码,通过判断账号及密码是否符合申请的账号和密码,如果符合则允许登录,否则提示用户账号或密码不正确。本系统的登录界面:主界面:在主界面中包括“班级成绩添加 班级成绩显示班级成绩统计班级成绩查询班级成绩修改班级成绩表班级成绩存档班级成绩读入退出”等全部的功能,之所以设计这麽一个主界面,一是因为能使用户对程序操作的流程更加清晰简明,二是保证了用户同时只能对一个文件进行操作系统的要求,保证了系统的正确性和易用性。名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 31 页 -7

11、 3.2 详细设计思想3.2.1 确定程序主要功能模块这个就比较简单了,主要是根据系统设计的说明及要求来设计,从而设计了九大功能模块,有文件操作,有系统维护功能,排序和统计功能,有输入输出等基本功能,比较人性化,添加了较多的提示语。这个程序的主要功能时输入学生的学号,姓名,学期和三科成绩来对其进行存储,在存储后可以对学生的成绩按学号及学期或姓名及学期来进行查询,同时输出此同学的平均分及总分,之后可以对某个同学的成绩进行各种操作,例如修改,删除等,同时还可以对学生们的成绩按照总分或单科成绩排序,在整个过程中所做的操作都会保存到student.txt文件中并显示。3.2.2 确定语言算法由于之前都

12、没有做过类似的设计,所以一时间不能够确定到底使用何种语言来设计本系统,所以在网上看了一些其他人设计的程序,链表的、数组的,各种各样的,也不知如何选择,但是仔细地看了其中的设计思想,最终还是用C 和数组的来做,一是觉得本人对链表掌握的不是很熟练,那么在设计过程中容易产生不能理解的错误,耽误时间,二是想运用C,可以巩固一下所学的数据结构的知识,之前做实验的时候都没怎么用所学的知识,这时候想练练。就这样确定了整体的结构算法名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 31 页 -8 3.3 系统结构体的设计struct Student/结构体 int term;/学期int num;

13、/学号char name12;/姓名float mark1;/成绩float mark2;float mark3;float sum;/总分float average;/平均分 3.3 各种模块的实现Main()函数的设计用 Mvoid main()来实现,主要是来显示主菜单,使用户选择操作。在 main()函数中主要运用do-while 循环语句和 switch()-case选择判断语句来调用相关,选择各种功能模块。系统的运行是在一个永真的循环里进行的,只有在主界面并选择“退出”时,才会跳出永真循环,并退出程序。3.3.1 录入学生记录模块用函数 int add_text(struct St

14、udent stud,int n)来实现主要功能用来对学生的记录进行添加。选择8,进入模块录入所需学生个数的学生信息,比如学号,姓名,成绩等。然后进入主菜单,根据主菜单来在此基础上进行操作。期间会有一些提示语,按此操作即可。本函数用到了文件操作的指针FILE*fp。3.3.2 显示学生记录模块用函数 void output_stu(struct Student stud,int n,int i)来实现主要功能是用来显示学生的信息进行输出。在系统已经录入了学生资料的前提下,只用该功能可以显示学生的信息资料等等。同时也会自动跳出主菜单进行后续操Student 姓名学号性别数据库算法C语言平均分总分

15、名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 31 页 -9 作。主要的程序代码就是从文件的读操作和界面显示操作。3.3.3 添加学生资料模块用函数 void input_num(struct Student stud,int n,int i)来实现。主要功能是用来添加学生资料,成绩。若有重号则提示重新输入,就可以使用本模块来进行添加利用for 循环进行输入新学生记录,输入完后,最后会有一个提示语句:是否继续输入 (yn),y是继续输入,n 是返回主菜单否则将返回主菜单,本模块功能到此结束。在此期间会根据语句算出总分和平均分,并默认按学号排序保存到文件中去3.3.4 查询,删除

16、,修改模块分别用三个函数来实现,删除箅修改模块是基于查询模块上的,要先查询你要进行操作的内容,然后再进行其它操作。查询是用用函数int find_stu(struct Student stud,int n)来实现,它有两种方式,主菜单先5 进入查询,会出现提示:请选择您要查询的方式:(1:按学号2:按名字;),用 for 和 if语句,if(strcmp(studi.name,you_choice)!=0)如果第 i 项与查找信息不匹配则查询失败,否则查询成功,调用显示函数,输出该学生信息,之后会出现提示:是否进行1:修改 2:删除 3:退出选项。修改是用函数 void updata_stu(

17、struct Student stud,int n,int y)来实现的,修改也可以进行任选一门课进行修改,会有提示:请输入您要对哪一门成绩进行修改?(0:数据库;1:算法;2:C语言)之后输入该课程的成绩就可以了。删除是用 void delete_stu(struct Student stud,int n,int y)来实现的,选择了以后,还会有判断提示:确认您要进行删除吗?(y/n),y 是确定,之后就会回到主菜单,n 是不删除。退出是如果不进行任何操作后,返回到主菜单。名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 31 页 -10 3.3.5 统计模块谇功能是用 voi

18、d TJ_stu(struct Student stud,int n,int o)来实现的。选 3进入统计界面,首先有提示要统计的学科,有123 供你选择,选择了以后,就可以显示出该课程的成绩表,按从高到低的顺序排列,算法是用冒泡排序方法。以及各种统计,包括:平均成绩、及格率、优生率、不及格人数、优生人数。排序代码如下:for(i=0;i n-1;i+)for(j=i+1;j studi.scoreo)temp=studi;studi=studj;studj=temp;名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 31 页 -11 3.3.6 班级成绩表模块该模块是用void

19、 chenji_stu(struct Student stud,int n,int o)/函数实现,用到的算法是直接选择排序,是按总成绩从高到低排序的,显示是调用了显示模块的函数,使得函数的结构大的简化了。主要程序如下:for(i=0;i n-1;i+)k=i;for(j=i+1;j studi.score3)k=j;/score3)表示总成绩if(k!=i)temp=studi;studi=studk;studk=temp;名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 31 页 -12 4 所遇到的问题和分析解决4.1 系统存在的不足本学生成绩管理系统由九大模块组成,每个模

20、块相互联系又相互独立。这个学生成绩管理系统存在着很多不足之处,由于自己本身编程能力的问题,这个系统可以实现的功能非常有限。只能实现学生管理系统最基本的功能,可以进行简单的输入、输出学生资料,查询和修改学生信息,能直接从文件中读入数据,能对系统所作的修改、操作进行保存等。而且在每个模块也有不足的地方,比如在输入学生资料时,对每个信息项没有严格的规定,可以输入任何的字符。感觉应用范围还是不容乐观。这有待以后努力,更详尽的实现模块的功能。4.2 制作过程中遇到的问题4.2.1 do-while语句的位置问题在查询学生记录此模块中,只能查询一次,若要进行多次查询的话就不行了,只能先到主菜单,再先查询选

21、项,很是麻烦。不能实现原有的功能。所以要想清楚到底是哪里循环出问题,按照逻辑思路找到相应的语句正确添加就行了。4.2.2 system(cls)的使用问题刚开始时对菜单的切换不是很了解,编写的程序运行的时候是一竖行向下的,很影响使用者的视觉范围,通过查询一些资料得知了system(cls)的作用,能够把一些暂时不用或不相关的信息通过清屏来处理。4.2.3 内存的分配问题名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 31 页 -13 对于初学者的话对内存的分配和释放问题是比较抽象的和模糊的问题,在排序是之前就出现了交换数据困难的问题,以及内存分配空间繁琐释放空间不及时的问题,造

22、成空间的浪费,使得程序运行时效率较低,因此最后采用了顺序存储记录的方式,这就能改变前面所出现的问题。4.4 问题分析在自己动手写的时候才会发现有太多的问题,这些都是只有自已亲自去实践才会有的收获,例如在有些细节方面还是要特别注意啊,像分号的添加,是或还是与的的方向问题,函数的返回值等问题,虽然容易改掉,但是很容易养成不好的习惯,而且还会浪费时间,所以在一开始写的时候就要很仔细,这样才能保证程序编的精细,同时若出现很多这样的错误的话,在编写程序的时候也会心里烦的,所以在编程的时候要认真仔细。就你在刚开始时对文件的操作不是很明白,一直不能很好的操作文件,直到快验收的时候,仍旧出现问题,就是对已经存

23、在的文件读取问题,将数据从文件中读取,但是不能够正常的读出,最后把读文件的操作语句进行仔细检查后,发现语句的顺序有点问题,重新把 fscanf()语句进行再修改后就发现能够正常的读取文件了。其余的就没什么比较大的问题了,基本上只要细心一点的话就可以正确调试成功了。5 系统特色及关键技术其实在本程序的设计过程当中,没有很吸引人的关键技术,因为我的C 语言学的很好,所以当初设计的时候就只是想把功能都实现就好了,尽可能的把所要求的功能都编进程序,这样就觉得很满足了。所以都是设计的比较简单易懂的语言,这样自己能够更明白一些,所以就没有时间去细细地去设计自己的程序。本程序要说有什么值得说的,那就只有人性

24、化这点了,在设计成学的时候,因为自己怕弄混了,所以添加了很详尽的提示,这样在编程的过程中或调试的时候都能够比较快的运行。还有就是尽可能的应用了do-while 语句和 switch-case语句,这两个语句在之前不是很常用,所以在这个程序中试炼了一下,虽然在编写的过程中总是出错,但还是成功的用好了,也是程序有条理一些。我也知道这些东西别人可能比我弄得还要好,但是我在我所学的知识中成功的应用了这些,我觉得就是好事,就是进步。6 结论及心得体会学生成绩管理系统终于成功的验收了,从这最后的测试结果来看,基本上实现了成绩管理系统的几大功能:成绩信息录入、成绩信息的管理。并达到操作过程中的直观、方便、实

25、用、安全等要求。系统采用模块化程序设计的方法,既便于系统功能的组合和修改。本系统经过测试,证明其运行是稳定、可靠的。但在系统设计中也也遇到很多的问题,并且本系统的功能还需要不断的完善和改进,在以后空闲时间里逐一进行完善,使系统功能更加完善,一周多的数据结构与算法课程设计虽然有些疲惫,但还是有很多的收获的,像名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 31 页 -14 数据库的课设一样,我又一次巩固了所学到的知识,之前的学习只是停留在理论基础上,现在自己动手操作试验后,才是真正的理解及体会。编程也学了一年多了,有很多知识都是似懂非懂,通过平时上机操作,自己也了解了一些,但让我

26、有了更深的理解和更好的认识,则是在这次的课设上,之前的困惑也通过这次的课设解决了一些,虽然还是不能够全面的理解,但是有进步就很高兴。在课程设计之前,因为有以前实验的经验与教训,明白了写代码这一步是非常重要的,因为当你把代码输进去之后,并编译让其运行,发现通过不了,再来检查出问题,是很费费力的事情,因此分析和规划代码是很重要的,最重要的是要把逻辑结构写好,这样就不会出现大问题,写代码就要先找出核心的内容,用多种方法来实现核心部分,这样可以尽可能的避免发现逻辑或编译不支持的错误。通过本次论文设计,我学会了怎样去借鉴别人的方法和经验,知道了如何整合资料和处理这些资料的能力,这位以后做毕设的论文打下了

27、基础,使我感觉比较好的是有一种成功的喜悦,虽然在编译的时候会经常因为一些小的错误而心烦意乱,但是也不失为一件好事,失败的越多积累的经验越丰富,对人的考验也比较多,那么在最后编译成功时的喜悦就越浓烈,也是自己的能力有了进一步的提高。参考文献1 谭浩强.C 程序设计 M.北京:清华大学出版社,2005 2 陈雁.数据结构 M.北京:高等教育出版社,2004.3 黄梯云.管理信息系统.北京:经济科学出版社,2007 4 甘仞初.信息系统开发.北京:经济科学出版社,2009 5 严蔚敏.数据结构(C语言版)M.北京:清华大学出版社,2008 6 张乃孝.算法与数据结构(C语言描述).北京:高等教育出版

28、社,2005.运行前名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 31 页 -15 需在功程里新建个ni.txt.内容如下7 004 sun 98.0 89.0 97.0 94.7 284.0 005 li 98.0 48.0 78.0 74.7 224.0 002 zhao 98.0 78.0 59.0 78.3 235.0 006 zhou 89.0 97.0 86.0 90.7 272.0 003 qian 78.0 98.0 89.0 88.3 265.0 001 chen 59.0 60.0 98.0 68.3 205.0 007 wu 57.0 76.0 87.0

29、 73.3 220.0 代码#include /使程序包含头文件#include /使程序包含头文件#include /使程序包含头文件#define SIZE 50 /定义常量SIZE 来控制数组的长度void input_num(struct Student stud,int n,int i);/声明学号输入函数void input_name(struct Student stud,int n,int i);/声明姓名输入函数void input_score(struct Student stud,int n,int i);/声明成绩输入函数void output_stu(struct S

30、tudent stud,int n,int i);/声明输出函数void stat_stu(struct Student stud,int n,int o);/声明统计函数float class_avr(struct Student stud,int n,int o);/声明排序函数void chenji_stu(struct Student stud,int n,int o);void desc_stu(struct Student stud,int n,int o);/声明降序函数int find_stu(struct Student stud,int n);/声明查找函数void del

31、ete_stu(struct Student stud,int n,int y);/声明删除函数void amend_stu(struct Student stud,int n,int y);/声明修改函数void write_text(struct Student stud,int n);/声明保存文件函数int add_text(struct Student stud,int n);/声明读取文件函数struct Student /*声明结构体*/char num10;char name20;float score5;void main()/*主函数,是程序的入口*/struct Stud

32、ent stuSIZE;/定义一个结构数组 int count=0;/定义整型变量count 用来存放学生信息的个数,初始化为0 int choice;/定义 choice用于存放用户对主菜单的选择 int a;/用于接收主选单中scanf()函数的返回值 char judge;/用于帮助判断输入的选择是否正确 int flag_main;/用于判断主菜单用户输入的选择是否有误 int stat_choice=0;/定义 stat_choice用于用户对统计项目的选择,初始化为0 int flag_stat;/用于接收 scanf()函数的返回值 int flag_find;/定义 flag_

33、find用于接收查寻函数的返回值 char man_choice;/定义 man_choice 用于接收用户对是否进行修改删除的选择 int con_choice;/定义 con_choice用于接收用户对修改或删除的选择名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 31 页 -16 char sign_main;/定义 sign_main接收用户对是否离开程序的选择 char sign_input;/定义 sign_main接收用户对是否继续输入的选择 int i;/定义 i,j作为控制循环的变量 while(1)/形成一个死循环 system(color 71);/设置输

34、出显示颜色 /*输出主选菜单*/printf(n=欢 迎使 用班 级成 绩管 理系 统=nn);printf(=请选择您要使用的功能=nn);printf(tt-n);printf(tt tt 1:班级成绩录入 nn);printf(tt tt 2:班级成绩显示 nn);printf(tt tt 3:班级成绩统计 nn);printf(tt tt 4:班级成绩查询 nn);printf(tt tt 5:班级成绩修改 nn);printf(tt tt 6:班级成绩表 nn);printf(tt tt 7:班级成绩存档 nn);printf(tt tt 8:班级成绩读入 nn);printf(tt

35、 tt 0:退出 nn);printf(tt-);printf(=);/*输入对菜单的选择*/do flag_main=0;printf(nttt 请您选择需要的操作(0-6):);fflush(stdin);a=scanf(%d%c,&choice,&judge);if(a2|judge!=n)printf(nttt 您的选择有误,请重新输入!n);flag_main-;while(flag_main 0);printf(nttt );system(pause);/令屏幕暂停待输入任意键后恢复运行 system(cls);/清屏 system(color 71);/设置输出显示颜色 swit

36、ch(choice)/把用户对主菜单的选择作为switch结构的判断条件 case(1):printf(ntt请录入学生信息:n);i=0;/循环前对i 清零do 名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 31 页 -17 if(count+i=50)break;input_num(stu,count,i);/输入学号input_name(stu,count,i);/输入姓名input_score(stu,count,i);/录入成绩及总成绩平均成绩i+;/每录入一个学员信息i 加 1 printf(ntt还需要继续录入吗?(Y/N);/*产生是否继续录入的条件*/ffl

37、ush(stdin);sign_input=getchar();while(sign_input=y|sign_input=Y);/判断count=count+i;/计算出本次录入后总的已录入成员个数printf(tt);break;case(2):/*printf(n显示班级成绩信息:n);printf(-);printf(学号 tt姓名 tt数据库 t算法 tC语言 t总成绩 t平均成绩);/*格式化输出提示信息*/printf(学生信息表 n);*/printf(=nn);printf(n);printf(学号姓名数据库算法 C 语言总成绩平均成绩n);printf(n);for(i=0

38、;i 0)/*返回值大于0,用户选择的是姓名查找方式*/printf(n 学号 tt姓名 tt数据库 t算法 tC 语言 t总成绩 t平均成绩n);output_stu(stu,count,flag_find-1);名师资料总结-精品资料欢迎下载-名师精心整理-第 19 页,共 31 页 -19 printf(n-);else if(flag_find=0)/*查找失败返回失败信息*/printf(n对不起没有找到您的成绩!n);else/*返回值大于0,用户选择的是学号查找方式*/printf(n 学号 tt姓名 tt数据库 t算法 tC 语言 t总成绩 t平均成绩n);output_stu

39、(stu,count,-flag_find-1);printf(n-);break;case(5):flag_find=find_stu(stu,count);/实现用户的查找功能/*根据查找函数的返回值为用户显示查找的信息*/if(flag_find 0)/*返回值大于0,用户选择的是姓名查找方式*/printf(n 学号 tt姓名 tt数据库 t算法 tC 语言 t总成绩 t平均成绩n);output_stu(stu,count,flag_find-1);printf(n-);else if(flag_find=0)/*查找失败返回失败信息*/printf(n对不起没有找到您的成绩!n);

40、else/*返回值大于0,用户选择的是学号查找方式*/printf(n 学号 tt姓名 tt数据库 t算法 tC 语言 t总成绩 t平均成绩n);output_stu(stu,count,-flag_find-1);printf(n-);if(flag_find!=0)/*查找成功的情况下用户可选择修改或删除操作*/fflush(stdin);man_choice=getchar();/*接收用户选择是否进行下一步操作*/while(man_choice)/*判断用户的选择*/printf(tt1:修改 n);printf(tt2:删除 n);printf(tt3:退出 n);printf(n

41、请选择您的操作);名师资料总结-精品资料欢迎下载-名师精心整理-第 20 页,共 31 页 -20 fflush(stdin);scanf(%d,&con_choice);/*用于接收用户选择的操作*/*根据用户的选择完成用户选择的操作*/if(con_choice=1)/*进行修改操作*/amend_stu(stu,count,flag_find);else if(con_choice=2)/*进行删除操作,一旦删除则无法再进行修改*/delete_stu(stu,count,flag_find);count-;printf(n删除成功!n);break;else if(con_choice

42、=3)/*选择 4 则 break 循环退出*/break;else/*用户输入错误信息返回用户选择有误*/printf(您的选择有误!n);stat_choice=0;/每 次 循 环 结 束stat_choice归 0 /修改删除操作结束printf(n);break;case(7):printf(ttt将学生成绩信息存盘:nnn);write_text(stu,count);/*循环写入数据*/printf(ttt);break;case(8):printf(ttt从文件载入学生信息:nnn);count=add_text(stu,count);/*读入文件信息*/break;case(

43、6):printf(ttt学生成绩排名信息:n);chenji_stu(stu,count,stat_choice);/*读入文件信息*/printf(ttt);break;case(0):printf(nttt确定您真的要退出吗?(y/n);/*提醒用户是否退出并接收选择*/fflush(stdin);sign_main=getchar();if(sign_main=y|sign_main=Y)/*若用户确定退出则返回退出信息*/printf(nnnnttt谢谢使用本软件!nnnnn);exit(0);/退出主程序 名师资料总结-精品资料欢迎下载-名师精心整理-第 21 页,共 31 页 -

44、21 printf(nttt);break;default:/提示用户输入错误printf(nttt您的输入有误,请重新输入!nnttt);system(pause);/令屏幕暂停待输入任意键后恢复运行 system(cls);/清屏 system(color 71);/设置输出屏幕颜色 /*功能:从键盘输入正确学号依次存放入stun.num中参数:参数struct Student stud 代表结构体数组首地址,n 代表已有成员个数,i 代表本次录入的第i 个学号。返回值:空*/void input_num(struct Student stud,int n,int i)int j;/*j用

45、于对输入字符串的遍历*/int k;/*k用于对是否有重复学号的判断*/int num_flag=0;/其值作为判断录入学号是否正确的标志while(num_flag!=2)/*如果 num_flag=2 则输入学号无误,终止循环*/j=0;/*每次循环后令j 和 num_flag 的值为 0*/num_flag=0;printf(ntt学号:ttt);/*首次录入学号*/fflush(stdin);scanf(%9s,studn+i.num);while(studn+i.numj!=0)/*遍历 studn+i.num*/if(studn+i.numj 57)/*判断输入是否错误并重新输入*

46、/j=0;printf(ntt请您用数字输入!请重新输入!n);printf(ntt学号:ttt);fflush(stdin);scanf(%9s,studn+i.num);/循环结束else/*该位输入正确则令j+*/j+;/循环结束num_flag+;/判断标志加1 if(n+i 0)/*当有 2 个或以上的学号*/for(k=0;k n+i;k+)/*令输入学号与以往录入学号比较*/if(strcmp(studn+i.num,studk.num)=0)/*如果存在重号则提示重新输入*/名师资料总结-精品资料欢迎下载-名师精心整理-第 22 页,共 31 页 -22 num_flag-;/

47、令 num_flag-printf(ntt已存在这个学号!请重新输入:n);num_flag+;else num_flag+;/*只有一个学号存在num_flag+*/*功能:从键盘输入正确姓名依次存放入stun.num中参数:参数struct Student stud 代表结构体数组首地址,n 代表已有成员个数,i 代表本次录入的第i 个学号。返回值:空*/void input_name(struct Student stud,int n,int i)int j=0;/用于遍历输入姓名printf(ntt姓名:ttt);/用户首次输入fflush(stdin);scanf(%15s,stud

48、n+i.name);while(studn+i.namej!=0)/遍历姓名对应的字符串 if(studn+i.namej 90&studn+i.namej 122)/*如果输入格式不正确则重新输入*/j=0;printf(ntt请您用字母输入!请重新输入!n);printf(ntt姓名:ttt);fflush(stdin);scanf(%15s,studn+i.name);else/*正确则令i+*/j+;/*功能:从键盘输入正确成绩依次存放入stun.score中,同时计算出平均成绩和总成绩存放入stun.score中。参数:参数struct Student stud 代表结构体数组首地址

49、,n 代表已有成员个数,i 代表本次录入的第i 个学号。返回值:空*/void input_score(struct Student stud,int n,int i)名师资料总结-精品资料欢迎下载-名师精心整理-第 23 页,共 31 页 -23 int j;/用于控制循环依次录入三门成绩int h;/接收 scanf()函数的返回值int flag_score;/值作为输入有误就重复输入的循环条件char x;/用于判断用户中是否包含不合法输入printf(ntt请输入学生成绩(1:数据库;2:算法;3:C 语言):n);for(j=0;j 3;j+)/*循环输入三门成绩*/do prin

50、tf(ntt第%d门:ttt,j+1);flag_score=0;h=0;fflush(stdin);h=scanf(%f%c,&studn+i.scorej,&x);/*输入成绩并返回正确接收的次数*/if(studn+i.scorej 100)|(h!=2)|(x!=n)/*用户输入不合法则提示重新输入并产生循环条件*/flag_score=-1;printf(ntt输入有误,请重新输入成绩(0-100):n);while(flag_score 0);/*表达式成立则输入有误循环重新输入*/studn+i.score4=0;/*计算总成绩并录入*/for(j=0;j 3;j+)studn+

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁