数据结构课程设计学生成绩管理系统(共31页).doc
《数据结构课程设计学生成绩管理系统(共31页).doc》由会员分享,可在线阅读,更多相关《数据结构课程设计学生成绩管理系统(共31页).doc(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上辽 宁 科 技 大 学课程设计报告 设计题目: 学生成绩管理 学院、系: 电子与信息工程学院 专业班级: 计算机 11-2 班 学生姓名: 赵月 指导教师: 龙艳彬 成 绩: 2013年 1 月 8 日目 录一、需求分析-3二、概要设计-3三、详细设计-53.1系统流程图-53.2界面设计-63.3各功能模块的设计-7四、测试与分析-9五、总结-15六、附录(源代码)-161. 需求分析11问题描述本系统实现了学生成绩管理的功能,具有学生成绩的输入、读取、查询、修改、插入、删除、排序,统计等功能。12基本要求 (1)输入的形式和输入值的范围; 首先输入学生个数,按回车
2、键。按照提示选择,将学生信息保存在文本文档中,具体对学生信息进行插入删除查询操作时,将保存在文本文档中的学生信息提取出来,保存在自己定义的数据结构中,然后再对该数据结构进行操作,所有操作完成,或者在相应的命令后,再将学生信息保存到文本文档中。输入数据类型主要是char、int、float等数据类型,输入内容包括:学期、学号、姓名、高等数学成绩,数据机构成绩,大学英语成绩总分,平均分等数据。 (2)输出的形式;学期、学号、姓名、高等数学成绩,数据结构成绩,大学英语成绩,总分,平均分等数据。 (3)程序所能达到的功能;1. 数据输入功能,输入的数据能最终保存在文件中;2.数据删除功能,能最终从文件
3、中删除;3. 排序功能,根据自己设计的数据结构,设计排序算法4.多种查询(如按学号查询、按姓名查询、按成绩查询等)及输出功能;6. 学生信息的修改(比如修改学生姓名,修改学生某门课程的成绩) 7. 其它功能(如各种统计,统计每个学生所有课程的平均分,统计某门课程所有学生的平均分等等)2、 概要设计1. 数据结构:数组(顺序存储结构)2. 程序模块:(1)先编入系统所需的库函数,使程序可运行#include #include #include /主要是对cin,cout之类的一些操纵运算,是I/O流控制头文件。 #include /文件和标准控制台的输入输出#include (2) 主界面的设计
4、在主界面中包括“输入学生信息并保存到文件 读取文件并输出学生信息 按学号及学期查询 按姓名及学期查询 按学号及学期修改信息 插入信息 按学号及学期删除信息 按数据结构降序(冒泡)排序 按总分降序(选择)排序 统计各科成绩的总分和平均分 11退出”等全部的功能。每个函数体如下:void input(Student *r); /输入void output(Student *r); /输出void searchnum(Student *r); /按 学号及学期 查找void searchname(Student *r); /按 姓名及学期 查找void change(Student *r); /按
5、学号及学期 修改信息Student *insert(Student *r); /插入信息void shanchu(Student *r); /按 学号及学期 删除信息void maopao(Student *r); /按数据结构降序(冒泡)排序void xuanze(Student *r); /按总分降序(选择)排序void tongji(Student *r); /统计各科总分和平均分信息(3) Main()函数的设计 在main()函数中主要运用do-while循环语句和switch()-case选择判断语句来调用相关功能模块。系统的运行是在一个循环里进行的,只有在主界面并选择“退出”时,
6、才会跳出循环,并退出程序。void main()coutnum; /全局变量Student *p=(Student *)new Studentnum;/定义指针数组,存放学生个数int m;docoutendl;coutendl;cout菜单栏-*nendl;coutt* 输入学生信息并保存到文件 读取文件并输出学生信息 *endl;coutt* 按学号及学期查询 按姓名及学期查询 *endl;coutt* 按学号及学期修改信息 插入信息 *endl;coutt* 按学号及学期删除信息 按数据结构降序(冒泡)排序 *endl;coutt* 按总分降序(选择)排序 统计各科成绩的总分和平均分*e
7、ndl;coutt* 退出 *endl;coutt*-*nendl;coutm;switch(m)case 1: input(p); /输入break;case 2:output(p);break;case 3: searchnum(p);break;case 4: searchname(p);break;case 5: change(p);break;case 6: p=insert(p);break;case 7: shanchu(p);break;case 8: maopao(p);break;case 9:xuanze(p);break;case 10: tongji(p);break
8、;case 11: /退出break;while(m!=11); 3、详细设计1、系统流程图输入学生个数主界面输入学生成绩输出学生成绩查询学生成绩修改学生成绩插入学生成绩删除学生信息按总分排序按单科排序统计分数退出退出2、界面设计在此界面用户可以选择要操作的选项,回车之后即可进入相关的页面进行操作(例如:选择1,即可进入输入学生信息页面)3、各功能模块的设计主函数模块: 用函数void main()来实现 主要是来显示主菜单,使用户选择操作。首先定义一个指针数组(全局使用)Student *p=(Student *)new Studentnum;在此处num是指学生个数,并不是学号,在这里应用
9、了do-while和switch-case语句来进行选择。最后若选择“11”则是保存记录并退出循环。输入学生记录模块:用函数void input(Student *r);来实现 主要功能用来对学生的成绩进行输入。首先会有个提示“输入学生的个数”,之后跳出主菜单,选择1,进入输入模块输入所需学生个数的学生信息,比如学期,学号,姓名,成绩等。输完之后会自动跳出主菜单。期间会有一些提示语,按照提示操作。根据if和for语句来判定是否有重复学号输入,在本操作中,允许有重复学生姓名出现。t=1表示找到了与之重复的学号,t=0表示未出现重复学号。在此期间会根据语句算出总分和平均分,并默认按学号排序保存到文
10、件中去。之后返回主菜单。输出学生记录模块: 用函数void output(Student *r);来实现 主要功能是用来输出学生的信息。在系统已经录入了学生资料的前提下,用该功能可以显示学生的信息资料。同时也会自动跳出主菜单进行后续操作。其中stew()指的是两字节之间的间隔,在括号中填入数字就会有相应的间隔。按学号及学期来查找学生记录模块: 用函数void searchnum(Student *r);来实现 主要功能时用来查找学生记录。首先会有提示输入学号及学期,再用for循环语句和if判断语句来进行查找,if(rm.num=n&rm.term=k)若找到则显示学生记录并跳出循环;if(rm
11、.num!=n&rm.term!=k)若没有则提示“该学号不存在,或没有这个学期的成绩!”。按姓名及学期来查找学生记录模块: 用函数void searchname(Student *r)来实现 主要功能也是用来查找学生记录的。首先会有提示输入姓名及学期,再用for循环语句和if判断语句来进行查找,if(rm.name0 = n0) & (rm.term = k)若找到则显示学生记录并跳出循环;if(rm.name0!=n0&rm.term!=k)若没有则提示该姓名不存在,或没有这个学期的成绩!按学号及学期修改信息: 用函数void change(Student *r)来实现 主要功能是用来修改
12、学生记录。首先也要有个判断语句,判断学生是否存在,这个是通过学号及学期来判断的,这里会有提示输入学号及学期,之后是for和if语句,if(rm.num=n & rm.term=k)若存在则先输出修改之前的信息,查看是否正确。若正确,则修改此学生记录,这里有个while循环语句,和switch-case选择语句,用来选择修改哪科成绩,和是否进行再修改记录(通过选择Y或y来实现)。最后将修改过后的记录保存到文件中去,并输出提示文件已修改并写入。插入学生资料模块: 用函数Student *insert(Student *r);实现 主要功能是用来添加学生资料,成绩。若显示没有此学生的信息,就可以使用
13、本模块来进行添加。在此模块代码中定义了另一个指针数组:Student *y = (Student *)new Studentnum+1;用来存放新添加的学生记录。再利用for循环进行输入新学生记录,for(m=0;mnum;m+)最后会有一个提示语句cout是否继续输入?(继续,输入y,否则输入其他)endl;若输入y则继续输入,否则将返回主菜单。按学号及学期删除学生记录模块 用函数void shanchu(Student *r)来实现 主要功能是用来删除学生记录。首先有个读文件的操作,之后会有判断语句,根据所输入的学号及学期,来显示删除前的信息记录,添加for循环语句,循环把后一位的信息提前
14、一位,整体数量减一,来进行全局变量的修改,之后再把修改过后的信息记录保存到文件中去。按数据结构成绩(冒泡)降序排序模块用函数void maopao(Student *r) 来实现 主要功能时是用来对学生的记录来按单科成绩(这里以数据结构成绩为例)进行排序。这样方便对某科成绩有个大致的了解。首先会有一个读文件操作,为排序做基础。本排序使用冒泡排序。它有两个优点:一是很容易写出代码;二是具有稳定性,这里的稳定性是指原序列中相同两元素的相对顺序仍然保持到排序后的序列。冒泡排序时进过n-1趟子排序完成的,第i趟子排序从第1个数至第n+1个数,若第i个数比后一个数大(则升序,小则降序。本程序一律采用降序
15、)则交换两数。排序之后,将排序之后的结果写入文件,再打开文件的时候,里面显示的就是按单科成绩排序后的结果。按总分(选择)降序排序: 用函数void xuanze(Student *r)来实现 主要功能时是用来对学生的记录来按总分成绩进行排序。这样方便对学生总体有个大致的了解。首先会有一个读文件操作,为排序做基础。本排序使用选择排序。其基本思想是:n个记录的文件的直接选择排序可进过n-1趟直接选择排序得到有序结果:初始状态,无序区为R1.n,有序区为空。第一趟排序 在无序区R1.n中选出关键字最小的记录Rk,将它与无序区的第一个记录R1交换,使R1.n和R2.n分别变为记录个数增加1个的新有序区
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 学生 成绩管理系统 31
限制150内