《学生成绩管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统课程设计报告.docx(35页珍藏版)》请在第一文库网上搜索。
1、目录引言1一、系统概述2二、需求分析21、系统需求22、开发环境4三、详细设计6四、所遇到的问题和分析解决15五、系统特色及关键技术16六、结论及心得体会16七、附录(源代码)1735参考文献引言通过本课程设计,使自己更加系统地理解和掌握数据结构的基本概念;能自如地根据实际要求,设计相应的数据结构,并运用C或C+语言实现所设计的算法,编写较大型的程序,分析和解决实际应用问题,进一步加深、巩固所学专业课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。掌握C语言或C+语言独立的编写、调试应用程序和进行其它相关设计的技能。此项目主要是考察我们对结构体、数组、文件等具体操作
2、,以及对C语言语法的掌握,所以做成此项目要求比较高的设计要求,对整体有很熟悉的概括,同时调试过程也是很重要的,对程序界面的要求也比较高,要设计的合理同时也要美观一点,能够人性化的描述清楚你的各个功能,一目了然,对其他用户使用本程序简单易懂,这才能成本程序或本系统是成功的。对于学生成绩管理系统,此项目每年都有学生去做,但是能够在其他项目中脱颖而出,还要有自己的设计特色,用简单的语言详细描述系统的功能,这才是关键。这个设计能够练习我们的理解和运用结构化程序设计的思想和方法,掌握开发一个小型实用系统的基本方法,学会调试一个比较长的程序的基本方法,同时掌握书写程序设计开发文档的能力。一、系统概述1、课
3、程设计应完成的工作(1)编写算法(2)算法测试,并有具体的测试结果和结果分析(3)撰写课程报告,内容包括:封面目录课程设计报告正文使用说明参考文献2、总体设计工作(包含几大功能模块)(1)输入学生信息并保存到文件(2)读取文件并输出学生信息(3)按学号及学期查询(4)按姓名及学期查询(5)按学号及学期修改信息(6)插入信息(7)按学号及学期删除信息(8)按数据结构降序(冒泡)排序(9)按总分降序(选择)排序(10)统计各科成绩的总分和平均分(11)退出二、需求分析1、系统需求(1)问题描述:该系统实现对若干个大学生的学习成绩进行管理。至少包括以下信息:学号、姓名、科目、成绩,学期。学期取值范围
4、可为1-8。(2)功能要求:1 .使用中文菜单,界面设计和用户输入输出要人性化些;2 .将学生信息保存在文本文档中,具体对学生信息进行插入删除查询操作时,将保存在文本文档中的学生信息提取出来,保存在自己定义的数据结构中,然后再对该数据结构进行操作,所有操作完成,或者在相应的命令后,再将学生信息保存到文本文档中。3 .具有数据输入功能,输入的数据能最终保存在文件中;4 .具有数据删除功能,能最终从文件中删除;5 .排序功能,根据自己设计的数据结构,设计排序算法6 .具有多种查询(如按学号查询、按姓名查询、按成绩查询等)及输出功能;7 .其它功能(如各种统计,统计每个学生所有课程的平均分,统计某门
5、课程所有学生的平均分等等)8 .学生信息的修改(比如修改学生姓名,修改学生某门课程的成绩)(3)说明:功能各方面越完善越好自定义的数据结构可以使用数组,链表,树等,然后根据不同的数据结构,设计不同的排序,查找算法。其中,排序算法至少有两种,可以使用多种数据结构来存放数据,然后在其上使用不同的排序算法。若用数组,必须动态分配空间(文本文件中最好有一行表示学生人数)(4)、输入输出的形式本系统是一个学生成绩管理系统,采用VC+6.0编译器作为开发环境,这个环境是我们在学习C+的平台。输入数据类型主要是Char、int、f1oat等数据类型,输入内容包括:学期、学号、姓名、高等数学成绩,数据机构成绩
6、,组成原理成绩,总分,平均分等数据。用户在输入学生数据时要保证输入数据格式的正确性,系统不会自动检测输入的数据是否正确,输出形式与输入形式类似,根据需要可以选择显示输入的各项内容,还可以选择显示计算好平均分后并排序后的记录,显示内容包括:学期、学号、姓名、高等数学成绩,数据机构成绩,组成原理成绩,总分,平均分等数据。2、开发环境Visua1C+不仅仅是是一个C+编译器,而是一个基于Windows操作系统的可视化集成开发环境IDE,这种环境开发出来的软件稳定性好、可移植性强,可以编制各种各样的Windows应用程序。三、详细设计1、系统流程图广、(开始)主界面c:E:数据结构课设学生成绩管理系统
7、Debug源程序.exe退出本系统输入学生成绩、学生的个数式欢迎使用学生成绩管理系统,X菜单栏保询改除沙并查修删勘息期期期掇信w生及及o1m1po1p入常率总135791息息序信信排息F出查并学赣文名信取姓人数航024681主界面:在此界面用户可以选择要操作的选项,回车之后即可进入相关的页面进行操作(例如:选择1,即可进入输入学生数据页面)=请输入学生信息并查修删蝌息期期期应信青自前序售假排出退11246810取姓人数航文名信稳一二ck件及息结环息信生出查I分主R1HH主R1H主门主I111It02学构理110kk数结居.姓高数组续择入入入入入入继成绩:85否则输入其他)所有操作均有提示语,比
8、较人性化的管理,易懂,简单。3、大概设计模块(1)先编入系统所需的库函数,从而使程序可运行。#inc1ude#inc1ude#inc1udeviomanip.h主要是对cin,cout之类的一些操纵运算,是I/O流控制头文件。#inc1udevconio.h文件和标准控制台的输入输出#inc1ude(2)Main()函数的设计在main。函数中主要运用do-whi1e循环语句和SWitCh()-CaSe选择判断语句来调用相关功能模块。系统的运行是在一个永真的循环里进行的,只有在主界面并选择“退出”时,才会跳出永真循环,并退出程序。(3)主界面的设计在主界面中包括“输入学生信息并保存到文件读取文
9、件并输出学生信息按学号及学期查询按姓名及学期查询按学号及学期修改信息插入信息按学号及学期删除信息按数据结构降序(冒泡)排序按总分降序(选择)排序统计各科成绩的总分和平均分11退出”等全部的功能,之所以设计这麽一个主界面,一是因为能使用户对程序操作的流程更加清晰简明,二是保证了用户同时只能对一个文件进行操作系统的要求,保证了系统不会打开文件紊乱或者出现致命的错误。每个函数体如下:Voidmain();主函数voidinput(Student*r);输入学生信息及数据voidoutput(Student*r);输出学生信息及数据voidsearchnum(Student*r);按学号及学期查找学生
10、信息voidsearchname(Student*r);按姓名及学期查找学生信息voidchange(Student*r);按学号及学期修改学生信息Student*insert(Student*r);插入学生信息voidSha1IChU(St1IdeIIt*r);按学号及学期删除循声信息voidmaopao(Student*r);按数据结构降序(冒泡)排序voidxuanze(Student*r);按总分降序(选择)排序voidtongji(Studcnt*r);统计各科总分和平均分信息4、详细设计思想(1)确定语言算法由于之前都没有做过类似的设计,所以一时间不能够确定到底使用何种语言来设计本
11、系统,所以在网上看了一些其他人设计的程序,链表的、数组的,c+的,各种各样的,也不知如何选择,但是仔细地看了其中的设计思想,最终还是用c+和指针数组的来做,一是觉得本人对链表掌握的不是很熟练,那么在设计过程中容易产生不能理解的错误,耽误时间,二是想运用C+,可以巩固一下所学的数据结构的知识,之前做实验的时候一直用C来做,都没怎么用所学的知识,这时候想练练。就这样确定了整体的结构算法。(2)确定程序主要功能模块这个就比较简单了,主要是根据系统设计的说明及要求来设计,从而设计了十大功能模块,有文件操作,有系统维护功能,排序和统计功能,有输入输出等基本功能,比较人性化,添加了较多的提示语。这个程序的
12、主要功能时输入学生的学号,姓名,学期和三科成绩来对其进行存储,在存储后可以对学生的成绩按学号及学期或姓名及学期来进行查询,同时输出此同学的平均分及总分,之后可以对某个同学的成绩进行各种操作,例如修改,删除等,同时还可以对学生们的成绩按照总分或单科成绩排序,在整个过程中所做的操作都会保存到“StUdent.txt”文件中并显示。(3)系统结构体的设计structStudent结构体intterm;/学期intnum;学号charIIame12;姓名f1oatmark1;成绩f1oatmark2;f1oatmark3;f1oatSi1m;总分f1oataverage;平均分);Student结构体
13、说明表名称属性说明term数据成员说明学生学期num数据成员说明学生学号name数据成员说明学生名字mark1数据成员说明学生高等数学成绩mark2数据成员说明学生数据结构成绩mark3数据成员说明学生组成原理成绩sum数据成员说明学生总成绩average数据成员说明学生平均成绩(4)各功能模块的设计*主函数模块用函数VOidmain。来实现主要是来显示主菜单,使用户选择操作。首先定义一个指针数组(全局使用)Student*p=(Student*)newStudentnum;在此处num是指学生个数,并不是学号,之前有定义的(不要弄混了),在这里应用了do-whi1e和SWitCh-case语
14、句来进行选择,是个比较简单实现的模块。最后若选择“11”则是保存记录并退出永真循环。*输入学生记录模块用函数VOidinput(Student*r);来实现主要功能用来对学生的成绩进行收集和输入。首先会有个提示“输入最初要求的学生数”,之后跳出主菜单,选择1,进入输入模块输入所需学生个数的学生信息,比如学期,学号,姓名,成绩等。输完之后会自动跳出主菜单,根据主菜单来在此基础上进行操作。期间会有一些提示语,按此操作即可。根据if和for语句来判定期间是否有重复学号输入,在本操作中,允许有重复学生姓名出现。在此模块中,用到了文件操作的指针FI1E*fp;同时也用到了一个控制变量t,它是用来判定的条件变量,t=1表示找到了与之重复的学号,t=0表示未出现重复学号。在此期间会根据语句算出总分和平均分,并默认按学号排序保存到文件中去。之后返回主菜单。写文件操作代码:if(fp=fopen(z,student.txt,w)=NU11)COUt文件不能打开en