欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    数据结构课程设计学生成绩管理系统.docx

    • 资源ID:6206919       资源大小:714.43KB        全文页数:42页
    • 资源格式: DOCX        下载积分:1金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要1金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构课程设计学生成绩管理系统.docx

    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、主界面中包括“输入学生信息并保存到文件读取文件并输出学生信息按学号及学期查询按姓名及学期查询按学号及学期修改信息插入信息按学号及学期删除信息按数据结构降序(冒泡)排序按总分降序(选择)排序统计各科成绩的总分和平均分退出”等全部的功能。每个函数体如下:void input(Student *r); /输入void output(Student *r); /输出void searchnum(Student *r); /按 学号及学期 查找void searchname(Student *r); /按 姓名及学期 查找void change(Student *r); /按 学号及学期 修改信息Stu

    5、dent *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选择判断语句来调用相关功能模块。系统的运行是在一个循环里进行的,只有在主界面并选择“退出”时,才会跳出循环,并退出程序。v

    6、oid main() coutnum; /全局变量 Student *p=(Student *)new Studentnum; /定义指针数组,存放学生个数 int m; do coutendl; coutendl; cout菜单栏-*nendl; coutt* 输入学生信息并保存到文件 读取文件并输出学生信息 *endl; coutt* 按学号及学期查询 按姓名及学期查询 *endl; coutt* 按学号及学期修改信息 插入信息 *endl; coutt* 按学号及学期删除信息 按数据结构降序(冒泡)排序 *endl; coutt* 按总分降序(选择)排序 统计各科成绩的总分和平均分*en

    7、dl; 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;

    8、case 10: tongji(p); break; case 11: /退出 break; while(m!=11); 3、详细设计1、系统流程图2、界面设计在此界面用户可以选择要操作的选项,回车之后即可进入相关的页面进行操作(例如:选择1,即可进入输入学生信息页面)3、各功能模块的设计主函数模块: 用函数void main()来实现 主要是来显示主菜单,使用户选择操作。首先定义一个指针数组(全局使用)Student *p=(Student *)new Studentnum;在此处num是指学生个数,并不是学号,在这里应用了do-while和switch-case语句来进行选择。最后若选择“

    9、11”则是保存记录并退出循环。输入学生记录模块:用函数void input(Student *r);来实现 主要功能用来对学生的成绩进行输入。首先会有个提示“输入学生的个数”,之后跳出主菜单,选择1,进入输入模块输入所需学生个数的学生信息,比如学期,学号,姓名,成绩等。输完之后会自动跳出主菜单。期间会有一些提示语,按照提示操作。根据if和for语句来判定是否有重复学号输入,在本操作中,允许有重复学生姓名出现。t=1表示找到了与之重复的学号,t=0表示未出现重复学号。在此期间会根据语句算出总分和平均分,并默认按学号排序保存到文件中去。之后返回主菜单。输出学生记录模块: 用函数void outpu

    10、t(Student *r);来实现 主要功能是用来输出学生的信息。在系统已经录入了学生资料的前提下,用该功能可以显示学生的信息资料。同时也会自动跳出主菜单进行后续操作。其中stew()指的是两字节之间的间隔,在括号中填入数字就会有相应的间隔。按学号及学期来查找学生记录模块: 用函数void searchnum(Student *r);来实现 主要功能时用来查找学生记录。首先会有提示输入学号及学期,再用for循环语句和if判断语句来进行查找,if(rm.num=n&rm.term=k)若找到则显示学生记录并跳出循环;if(rm.num!=n&rm.term!=k)若没有则提示“该学号不存在,或没

    11、有这个学期的成绩!”。按姓名及学期来查找学生记录模块: 用函数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);实现 主要功能是用来添加学生资料,成绩。若显示没有此学生的信息,就可以使用本模块来进行添加。在此模块代码中定义了另一个指针数组:Student

    13、*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个的新有序区记录和记录数减少1个的新无序区。 . 第i趟排序 第i趟排序开始时,当

    16、前有序区和无序区分别为R1.i-1和R(1in-1)。该趟排序从当前无序区中选出关键字最小的记录Rk,将它与无序区的第一个记录与R交换,使R1.i和R分别变成为记录个数增加1个的新有序区和记录个数减少1个的新无序区。这样,n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果。统计各科总分及平均分模块: 用函数void tongji(Student *r)来实现 主要功能是计算总分和各科平均分,计算完之后将总分保存到文件中。4、 测试与分析进入主界面选择输入学生信息输入结束后的界面:Student.txt:23 赵月 89.0 92.0 88.0 3 269.0 89.712 李丽

    17、 92.0 85.0 88.0 3 265.0 88.331 王虎 87.0 79.0 45.0 3 211.0 70.3选择,输出了学生信息:选择,按学号及学期查询学生信息:选择,按姓名及学期查询学生信息:选择,按学号及学期修改学生信息:Student.txt:23 赵月 89.0 92.0 88.0 3 269.0 89.712 李丽 92.0 85.0 88.0 3 265.0 88.331 王虎 87.0 79.0 85.0 3 211.0 70.3选择,插入学生信息:Student.txt:23 赵月 89.0 92.0 88.0 3 269.0 89.712 李丽 92.0 85.

    18、0 88.0 3 265.0 88.331 王虎 87.0 79.0 85.0 3 211.0 70.317 王万 78.0 79.0 86.0 3 243.0 81.0选择,按学号及学期删除学生信息:Student.txt:23 赵月 89.0 88.0 88.0 3 269.0 89.712 李丽 92.0 88.0 88.0 3 265.0 88.317 王万 78.0 86.0 86.0 3 243.0 81.0选择,按数据结构降序排序:Student.txt:23 赵月 89.0 88.0 88.0 3 269.0 89.712 李丽 92.0 88.0 88.0 3 265.0 8

    19、8.317 王万 78.0 86.0 86.0 3 243.0 81.0选择,按总分降序排序:Student.txt:23 赵月 89.0 88.0 88.0 3 269.0 89.712 李丽 92.0 88.0 88.0 3 265.0 88.317 王万 78.0 86.0 86.0 3 243.0 81.选择,统计各科成绩的总分和平均分:选择,退出:5、 总结 课程设计终于结束了感觉有很多的收获,通过课程设计我又一次巩固了所学的知识,对学习到的理论知识进行了巩固,真正的理解及体会了。平时有很多知识都是似懂非懂,通过平时上机操作,自己也了解了一些,但在这次的课设上,之前的困惑也通过这次的

    20、课设解决了一些,虽然还是不能够全面的理解,但是有进步就很有成就感。在课程设计中遇到不少困难,通过查阅资料,询问同学,在应用课本的前提下,拓展课外知识,完成了此次课程设计,虽然还有许多不足之处,但是从中我学到了许多东西。我懂得了我们不能拘泥于所学知识,应对其灵活运用。 通过此次课程的设计使我认识到对知识的掌握不全面,而且感觉我们在学习专业知识的同时还需要再加强其他方面知识的学习,因为编程有时候涉及到其他方面的知识,只有了解了其他方面的知识才能收集资料,然后编程。在编程的过程中,又重新复习了课本,从中学到了许多以前未学到的知识,感觉非常有成就感,特别当自己把程序一点点完善时,让我对自己更加有信心,

    21、让我对数据结构这门课程也更感兴趣了,以前我一直感觉枯燥难学的数据结构,在编程的过程中我也愿意去认真研究学习了。 这次数据结构课程设计中,多亏了同学的耐心帮助。如果没有同学的指导改错,我会花更多的时间去找错误。在以后的学习过程中,我一定会认真负责地对待课本中的每一个知识点,进一步充实自己,提高自己。争取在不断的练习中提高自己的层次。也希望可以在以后的专业课当中多增加一些实践的内容,只有多动手,我们才能不断提高。6、附录:源程序清单 #include #include #include /主要是对cin,cout之类的一些操纵运算,是I/O流控制头文件。 #include /文件和标准控制台的输入

    22、输出#include /数组、结构体struct Student /结构体 int term; /学期 int num; /学号 char name12; /姓名 float mark1; /成绩1 float mark2; /成绩2 float mark3; /成绩3 float sum; /总分 float average; /平均分;int num=0;/声明void input(Student *r); /输入void output(Student *r); /输出void searchnum(Student *r); /按 学号及学期 查找void searchname(Studen

    23、t *r); /按 姓名及学期 查找void change(Student *r); /按 学号及学期 修改信息Student *insert(Student *r); /插入信息void shanchu(Student *r); /按 学号及学期 删除信息void maopao(Student *r); /按数据结构降序(冒泡)排序void xuanze(Student *r); /按总分降序(选择)排序void tongji(Student *r); /统计各科总分和平均分信息void main() coutnum; /全局变量 Student *p=(Student *)new Stud

    24、entnum; /定义指针数组,存放学生个数 int m; do coutendl; coutendl; cout菜单栏-*nendl; coutt* 输入学生信息并保存到文件 读取文件并输出学生信息 *endl; coutt* 按学号及学期查询 按姓名及学期查询 *endl; coutt* 按学号及学期修改信息 插入信息 *endl; coutt* 按学号及学期删除信息 按数据结构降序(冒泡)排序 *endl; coutt* 按总分降序(选择)排序 统计各科成绩的总分和平均分*endl; coutt* 退出 *endl; coutt*-*nendl; coutm; switch(m) cas

    25、e 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; case 11: /退出 break; while(m!=11); /输入信息void input(Student *r) FILE *fp; int n=0; int i; int t=0; /t为标志位,1为找到,0为未找到 coutendl 请输入学生信息 -endl; for(i=0;inum;i+) coutri.term; cout请输入第i+1ri.num; if(i=1) for(n=0;ni;n+) if(rn.num=ri.num) cout该学号


    注意事项

    本文(数据结构课程设计学生成绩管理系统.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开