数据结构课程设计报告-学生成绩管理系统[].docx

上传人:h**** 文档编号:25790273 上传时间:2022-07-14 格式:DOCX 页数:11 大小:15.81KB
返回 下载 相关 举报
数据结构课程设计报告-学生成绩管理系统[].docx_第1页
第1页 / 共11页
数据结构课程设计报告-学生成绩管理系统[].docx_第2页
第2页 / 共11页
点击查看更多>>
资源描述

《数据结构课程设计报告-学生成绩管理系统[].docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告-学生成绩管理系统[].docx(11页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、数据结构课程设计报告-学生成绩管理系统 武汉理工大学华夏学院课程设计报告书 课程名称:数据结构课程设计 题目:用C语言实现成绩统计程序的设计系名:信息工程系 专业班级:计算机1121 姓名:吴涛 学号:10210412104 指导教师:司晓梅 2022年3 月20日 武汉理工大学华夏学院信息工程系 课程设计任务书 课程名称:数据结构课程设计指导教师:司晓梅班级名称:计算机1121 开课系、教研室:信息系计算机 一、课程设计目的与任务 数据结构课程设计是为训练学生的数据组织能力和提高程序设计能力而设置的增强实践能力的课程。目的:学习数据结构课程,旨在使学生学会分析研究数据对象的特性,学会数据的组

2、织方法,以便选择合适的数据的逻辑结构和存储结构以及相应操作,把现实世界中的问题转换为计算机内部的表示和处理,这就是一个良好的程序设计技能训练的过程。提高学生的程序设计能力、掌握基本知识、基本技能,提高算法设计质量与程序设计素质的培养就是本门课程的课程设计的目的。 任务:根据题目要求,完成算法设计与程序实现,并按规定写出课程设计报告。 二、课程设计的内容与基本要求 设计题目:用C语言实现成绩统计程序的设计 问题描述给出n个学生的m门课程的考试成绩信息,每条信息由姓名、课程代号与分数组成,要求设计算法: (1)输入每个人的各门课程的成绩,计算每人的平均成绩; (2)按平均成绩的高低次序,打印出个人

3、的名次,平均成绩相同的为同一名次; (3)按名次列出每个学生的姓名和各科成绩; 基本要求学生的考试成绩必须通过键盘输入,且需对输出进行格式控制; 算法提示可以用选择排序、冒泡排序等多种排序算法求解; 具体要完成的任务是: A. 编制完成上述问题的C语言程序、进行程序调试并能得出正确的运行结果。 B. 写出规范的课程设计报告书; 三、课程设计步骤及时间进度和场地安排 时间:1周地点:现代教育中心 具体时间安排如下: 第一天:布置题目,确定任务、查找相关资料 第二天第四天:功能分析,编写程序,调试程序、运行系统; 第五天上午:撰写设计报告; 第五天下午:程序验收、答辩。 四、课程设计考核及评分标准

4、 课程设计考核将综合考虑学生的系统设计方案、运行结果、课程设计报告书的质量、态度、考勤、答辩情况等各因素。具体评分标准如下: (1)设计方案正确,具有可行性、创新性; 30分 (2)系统开发效果较好; 20分 (3)设计报告规范、课程设计报告质量高; 20分 (4)课程设计答辩时,问题回答正确; 20分 (5)态度认真、刻苦钻研、遵守纪律; 10分 按上述五项分别记分后求和,总分按五级制记载最后成绩。 优秀(10090分),良好(8089分),中等(7079分),及格(6069分),不及格(059分) 目录 一、问题描述 (5) 二、基本要求 (5) 三、数据结构设计 (6) 四、软件模块结构

5、图 (7) 五、程序设计思想 (9) 六、程序流程图 (13) 七、源程序 (18) 八、调试分析 (32) 九、测试数据 (33) 十、用户使用手册 (35) 一、问题描述 问题描述给出n个学生的m门课程的考试成绩信息,每条信息由姓名、课程代号与分数组成,要求设计算法: (1)输入每个人的各门课程的成绩,计算每人的平均成绩; (2)按平均成绩的高低次序,打印出个人的名次,平均成绩相同的为同一名次; (3)按名次列出每个学生的姓名和各科成绩; 基本要求学生的考试成绩必须通过键盘输入,且需对输出进行格式控制;算法提示可以用选择排序、冒泡排序等多种排序算法求解; 二、基本要求 基本要求学生的考试成

6、绩必须通过键盘输入,且需对输出进行格式控制;算法提示可以用选择排序、冒泡排序等多种排序算法求解; 三、数据结构的设计 为了对学生信息进行统一操作,使用了结构体这一数据结构,学生的各项数据信息都能用结构体来表示,具体如下: struct stu int num;/*学号,整型变量*/ char name50;/*姓名,长度为50的字符串数组*/ char classes50/*班级名称,长度为50的字符串数组*/; double gsps_score;/*高等数学平时成绩,双精度实型变量*/ double gsks_score;/*高等数学考试成绩,双精度实型变量*/ double gszh_s

7、core;/*高等数学综合成绩,双精度实型变量*/ double dlps_score;/*电路理论平时成绩,双精度实型变量*/ double dlks_score;/*电路理论考试成绩,双精度实型变量*/ double dlzh_score;/*电路理论综合成绩,双精度实型变量*/ double yyps_score;/*英语平时成绩,双精度实型变量*/ double yyks_score;/*英语考试成绩,双精度实型变量*/ double yyzh_score;/*英语综合成绩,双精度实型变量*/ double wlps_score;/*物理平时成绩,双精度实型变量*/ double wl

8、ks_score;/*物理考试成绩,双精度实型变量*/ double wlzh_score;/*物理综合成绩,双精度实型变量*/ double pj_score;/*平均成绩,双精度实型变量*/ student1000;/*最多存储1000个学生数据*/ 该结构体数据定义为全局变量。 四、软件模块结构图 模块功能描述: a.主菜单控制模块:主菜单直接控制七个模块(学生信息输出模块的两个子模块直接归主菜单控制),在各模块间起到纽带的作用。在主菜单,可以通过选择进入其他模块,其他模块运行结束后也可回到主菜单继续选择。 b.学生信息录入模块:循环输入学生信息,建立临时的学生信息数据库。 c.学生信息

9、查询模块:可选择按学号或者按姓名查询学生信息,如学生信息不存在则给出提示。 d.学生信息修改模块:查找到要修改的学生信息后,可对该学生的信 主菜单控制模块 学生信息录入模块 学生信息查询模块 学生信息修改模块 学生信息删除模块 学生信息插入模块 学生信息输出模块 按学号查询学生信息 按姓名查询学生信息 输出优秀学生相关信息 输出不及格学生信息 课程成绩统计模块 每门课程的平均成绩 按单科成绩排名次 息进行逐项修改。 e.学生信息删除模块:查找到要删除的学生信息后,可对其进行删除操作。 f.学生信息插入模块:在数据库末尾插入学生信息,逐项输入要插入的学生信息即可。 g.学生信息输出模块:输出优秀

10、学生信息模块能够输出优秀学生(平均成绩大于等90分)的学号和姓名;输出不及格学生信息模块能够输出不及格学生的相关信息。 h.课程成绩统计模块:可以得到每门课程的平均成绩,还可以任意抽取一门课按单科成绩排定学生名次。 五、程序设计思想 结构化的程序设计主要靠设计和调用各模块的函数来实现。本程序设计了多个函数,每个函数自身能完成一个任务,有的函数和别的函数结合能完成更大的任务。每一个模块功能的实现其实就是对函数的调用,本说明首先介绍本程序所涉及的子函数,再介绍主函数,最后介绍程序整体的实现过程。 1.void Inputfun()此函数较特别,它只进行输入操作,但由于此函数所包含的语句较长且需要被

11、其他三个函数使用,为方便调用单写了一个函数。此函数在源程序中放在最前,所以在此先作说明。此函数可细分为11个小块,用来输入学生的基本数据。每小块的结构基本相同即for(;)基本语句 +一个continue语句+基本语句+一个break语句之所以用这个结构为了使输入的数据更加正规。比如在分数的输入中就限定了只能输入0至100之间的数值,这也符合分数录入规则。需要特别注意的是,这个函数完成了本程序中要做的两个计算。其一是在每门课的考试试成绩输入后完成了对这门课的综合成绩的加权计算(考试成绩*0.7+平时成绩*0.3);其二是在最后一门课程的综合成绩算出后,计算了该学生四门课的平均成绩。 2.voi

12、d Getinformation() 此函数用来录入学生信息。它调用了void Inputfun()函数,其实它的主体部分就是void Inputfun()函数。这函数还用了一个for循环以达到循环输入的目的。 3.int Searchbynum (int no)int Searchbyname (char na50) 这是两个“兄弟函数”,是按学号查找和按姓名查询模块中的两个重要函数。主要功能是根据用户输入的学号姓名返回改学生所在的的数 组下标。利用for循环嵌套一个if语句实现,若找到学生该学生信息就返回数组下标,若找不到就返回-1。 4.void Seekinformation()voi

13、d Printinformation(int x) 这两个函数关系紧密,所以一起介绍。void Seekinformation()函数利用for循环和if语句使查找中能够使用学号和姓名两种方式。如源程序所示,在用if语句确定了查找方式后先后调用了int Searchbynum (int no)int Searchbyname (char na50)和void Printinformation(int x)两个函数,根据int Searchbynum (int no)int Searchbyname (char na50)返回的数组下标,运用void Printinformation(int x

14、)输出所查询的内容。所以 int Searchbynum (int no)int Searchbyname (char na50)void Seekinformation()void Printinformation(int x)这四个函数是查询模块的四个联系紧密的重要函数,在它们的共同作用下查询模块的功能得以实现。 5.void Modifyinformation()此函数用于修改学生信息。基本原理就是用输入的新数据覆盖原来的老数据,达到修改的目的。本函数还调用了查找模块的函数,使修改前能按学号或姓名找到要修改的学生信息。修改过程中调用了Inputfun()函数 6.void Deletei

15、nformation() 此函数用于删除学生信息。同样调用了查找模块的函数。删除模块的关键语句是for (i=x;i999;i+) studenti=studenti+1;从要删除的那一个数据开始,用后一个数据覆盖它,一直循环到最后,相当于把开始的第一个数据删除了。 7.void Insertinformaton() 此函数用于插入学生数据。由于没有用链表,所以选择插入在最后一个有效数据之后。本函数运用if(studentj.num=0)这个语句找到了最后一个有效数据之后的数组下标j,然后将数据输入到studentj中,便完成的了插入。插入过程中,调用了Inputfun()函数。 8.void

16、 Showthefail() 此函数用于显示不及格学生的信息。能够按要求输出不及格学生的学号、姓名、各科成绩以及平均成绩。首先用这条if语句搜索该学生是否有成绩不及格,当四门课中至少有一门不及格时会输出该学生的相关信息。 9.void Stu_p()此函数用于输出优秀学生(平均成绩大于90分)的信息,利用for循环和条件判断句输出找出相应的学生输出相关信息。 10.void Chengjitongji()此函数用于按要求统计成绩。有分别统计每门课的平均成绩的功能;还能够按每门课程的成绩对学生进行排序,使学生在该门课的表现一目了然。排序中用到了冒泡排序的方法。 9.void main() 下面对主函数作简要说明。Switch语句是函数的主体: switch(c)/*利用switch语句集成各个功能函数*/ case 1 : Getinformation();break;/*获得学生信息*/ case 2 : Seekinformation();break;/*查找学生信息*/ case 3 : Modifyinformation();break;/*修改学生信息*/

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

当前位置:首页 > 应用文书 > 策划方案

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com