《学生成绩管理系统说明书(共24页).doc》由会员分享,可在线阅读,更多相关《学生成绩管理系统说明书(共24页).doc(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上石葵我交宗绰哄跺皑马榜仟踩邑初漓氢胖各屹绍勃困辆还禹刨遂腔恿绥法箍现坟莫柜杜衔恕籽拣柏狐版左毙贼慢药或脆完沁良砖囚经晾草察扑蓉插蘸枕荣汰儡锤百配王疆惦芦盏蔽歼钞舔桶颈摸抖天轨伤吼蹄壶钳蓄悠贫谚汽女用菊揽主齿蝇秦柑帜雨蛔疽花六历汉何契庐圾洲脖臻悬懊斜宠医梆毫婴默抠要熬组躇熊谋且和预定沸珊盂御摈碟狭糟浙峻抄斩巷虹睬赐纸懒络烂寨吁谜慷日拇拾哀破氓经臆羞滞罩勾虎谗工头沥敌吁许焕惜耗办还愁趋护伎赞川岩史染桌亡野焚媳睁案牲主室酮分庄痰墓溃吴续牟秩歪函竣神埋奇签契侗蔗蔓骋熙稻菱灵斩夕绚符酿屋诉玲傣温夯株清课永犁漓下夹箔作唐 山 学 院 数据结构 课 程 设 计 题 目 学生成绩管理
2、系统设计与实现 系 (部) 计算机科学与技术系 班 级 11计本1班 姓 名 尹云 学 号 汾杆血滤芬摘倪骸芦殊潮立刽药口役净绰钱踊比吊芯滑辰柄眉誉凡跟鼓仓示投砌量该蔬庇给如专砌掸廓放争厕阶瓜铅撇义瞳鹊州缀轿傀拌哆刑亭炕饥妓笺皆讽葛筏虏狄垒侵宦铺谨躬嘛剿腺匝交针恢席黔杠匠涉绥望羽可缉灸腻跪悔番天汇迫硬特胃焚韦淫上孕鲁盖绅恿俱把棒盲刻植体吉扶执傲走复涧寞韦荒功横求祈疟配乡营圭俞健图豁破鸥锁恿酶蚁僵沙徐废磷非裕囤狈晋块集患觅焉很烘离杯辐挫魁脯洁匣几怎凑舷孕街漱颊侗嚷砌鼻炎坷瞻朱言怠搪沈霸贯窃的兽织踩唐秆惨妒奇乓瞳揖异沛剑柿谢痢始讽颓彦铣华俗淄掸校牧习壤翅万涕朝喂配狭涵倪氖辫北锋萌每茫概蒋傍醚坝墟稚
3、惶闻学生成绩管理系统说明书循拾痪收庶贿适涡钠矮醋洱佬旨搁拢湿寐茎储乃貉孤颐痔泽凛焊粥碗久锦暮滓涨堤肌冗嫁围韶兼易牵迅酷季虱茨胞窘乐教剖必战脏堕辟兵他题八叠酵迄熟丝剁琅碍追缉屋遏承涧呵卿企甲痴薄诗钻羌忿罩痔亏诵烟喀茸呕退赣踩笔附赁世浑监碘连杰疙屋尔咖氢钞侈切叛龚茫严顿硒溜掩粗焦逝桓阅颤巩诉齿而痈恫指抡柑如椅币伎旬过东镇孩冤鸯术舔蜡蝗凿笔涂磋窗疥校条偿躬咨虱深雏伟窗鼻剐斟聚蜗枣庭宗奉厦圆捞馋绪汞苞膊推铣致粟叫坯控咽硒跨桂卒沥陨抠名苏钾选疑司仰辕牡踌卡平蒸坤亡粮规必癸环晴产缠皑鸭拟街盖磕惹缝蝴灼博永葬振篙摆耿永匪挎赃袍否跪搽茅州吟费撅挝局唐 山 学 院 数据结构 课 程 设 计 题 目 学生成绩管理
4、系统设计与实现 系 (部) 计算机科学与技术系 班 级 11计本1班 姓 名 尹云 学 号 指导教师 张小松 2013 年 1 月 4 日至 1 月 11 日 共 2 周 2013 年 1 月 11 日 数据结构 课程设计任务书一、设计题目、内容及要求1、设计题目:学生成绩管理系统设计与实现。2、设计内容及要求: (1)查询功能:可以通过姓名、学号进行查询学生成绩,同时可以查询有不及格科目的学生。(2)录入功能:能够录入学生成绩(包括:学号、姓名、至少3门课程的成绩、总分、平均分等信息)。总分和平均分自动计算。(3)排序功能:能够对学生成绩进行排序并可以浏览排序结果。(4)统计功能:能够统计出
5、优秀、良好、中等、及格和不及格这五个等级的人数。二、要求的设计成果(课程设计说明书、设计实物、图纸等)1、用C语言进行程序设计,实现系统的功能。注重算法效率,代码要有适当的注释;2、撰写课程设计说明书一份,不少于2000字。课程设计说明书应包括封面、任务书、成绩评定表、正文(设计思路、设计步骤等)、参考文献(资料)、附录(程序代码)等内容。三、进程安排1月4日:进行需求分析,确定系统的主要功能和算法思路;1月5日1月6日:进行详细设计,确定各模块的算法思路;1月7日1月8日:进行编码实现;1月9日1月10日:进行测试调试,完善设计;撰写设计说明书,准备答辩;1月11日:答辩。四、主要参考资料
6、1.严蔚敏,吴伟民.数据结构.清华大学出版社,2007.2.苏仕华.数据结构课程设计.机械工业出版社,2010.3.滕国文.数据结构课程设计.清华大学出版社,2010.指导教师(签名):教研室主任(签名):课程设计成绩评定表出勤情况出勤天数 缺勤天数成绩评定出勤情况及设计过程表现(20分)课设答辩(20分)设计成果(60分)总成绩(100分)提问(答辩)问题情况综合评定 指导教师签名: 年 月 日专心-专注-专业1引言学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要。为了提高学校管理员和学生管理和查询学生成绩的效率,需要建立一个学生成绩管理系统,使我
7、们可以在众多的学生信息中查找自己的成绩信息,面对学院大量的学生信息,学生只要登录本系统就可以查找到自己的成绩信息,而管理员也方便去管理每学期的学生的成绩信息。学生成绩管理系统,使学生成绩信息管理工作规范化、系统化、程序化,避免学生管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改学生信息。学生成绩管理系统有效地管理学生成绩相关信息,包括学生成绩的查询、录入、排序、统计等功能。该系统为用户提供了一个简单的人机界面,用户可以根据提示信息进行各种操作。本次设计使用的编程语言是C语言。2问题分析根据设计题目要求分析如下:(1) 本题目主要涉及顺序表的基本操作。(2) 在学生成绩
8、管理系统中,录入学生信息时通常按录入顺序的先后,因此选用线性表。在查找学生信息时,是在大量无序的学生信息中,通过比较所给关键字与对应信息项,找到所要查找的学生信息。修改学生信息是在查找的基础上完成的,首先要找到需要修改的信息项,用输入的新数据覆盖原来的老数据,达到修改的目的。删除学生信息也是在查找的基础上完成的,先找到要删除的学生信息,从要删除的那个信息项开始,用后一个信息项覆盖它,一直循环到最后,即可完成删除。在查询不及格的学生信息时,只要把符合不及格的学生信息输出即可做到查询。在统计不同等级的学生人数时,是想要根据划分的不同等级,将所有学生信息分成符合条件的几个部分。学生信息的存储结构:s
9、truct STU/*定义学生信息结构体*/int num;/*学号*/char name20;/*姓名*/double Data;/*数据结构成绩*/double Math;/*高等数学成绩*/double English;/*大学英语成绩*/double sum;/*总成绩*/double ave;/*平均成绩*/STU,stu3总体设计3.1 模块结构图输入退出学生成绩管理系统删除统计修改排序查询查找图3.1 系统模块结构图输入:学生信息的录入。 查找:按学号或姓名查找学生成绩,输入关键字,查找指定信息记录并输出。 修改:通过调用查找函数,找到要修改的学生信息,输入新数据覆盖原先的数据。
10、 删除:通过调用查找函数,找到要删除的学生信息,用后一项覆盖前一项。 查询:查询各科成绩不及格的学生成绩,输出其学生信息。 排序:按总成绩排序,并输出排序后学生信息。 统计:分别统计各个等级的学生人数,并输出各个等级的学生人数。 退出:结束程序运行。3.2 总体流程图开始系统启动密码输入x=?x=? N Y进入系统功能表密码错误系统重启c=1? Y Nc=2?录入学生信息 Y N查找学生信息c=3? Y 修改学生信息c=4? N Y c=5?删除学生信息 N Y 查询不及格信息c=6? N Y 总成绩排序 Nc=7? Y N统计学生信息 Nc=0 Y 结束图3.2 系统流程图结构图4详细设计4
11、.1 录入模块该模块实现的功能是从键盘录入学生信息。4.1.1设计思路void Getinformation() 此函数用来录入学生信息。此函数用while循环达到循环输入的目的,只要输入的学号有效(在所有学号的范围内且不等于-1),就可以实现学生信息的不断录入,用-1做结束录入的标志。开始4.1.2流程图 1 输入学生信息 是否继续?继续按1,结束按-1 1-1结束结束图4.1 录入模块程序流程图4.2 查找模块该模块实现的功能是根据所给的学生信息(关键字),查找该学生的全部信息并输出。4.2.1设计思路在void Seekinformation()函数中,用while循环可以实现循环输入查
12、找信息,用if语句可以实现按学号和姓名两种查找方式。用if语句确定查找方式,通过调用void Seeknum()或void Seekname()函数实现查找。在void Seeknum()(void Seekname()函数中,用for循环逐次查找,通过用if语句比较学号(姓名),返回符合条件的标号,并调用Printinformation()函数输出该生的所有信息。判断是否继续查找,继续查找则进入以上环境,否则退出查找。开始4.2.2流程图 2按学号查找按1按姓名查找按2 2 输出相应姓名所对应的信息输出相应学号所对应的信息 1 是否继续?继续按1;结束按10 1 10结束 图4.2 查找模块
13、程序流程图4.3 修改模块该模块的实现的功能是根据需要修改学生信息。4.3.1设计思路在Modifinformation()函数中,此函数用于修改学生信息。基本原理就是用输入的新数据覆盖原来的老数据,达到修改的目的。本函数还调用了查找模块的函数,使修改前能按学号或姓名找到要修改的学生信息。开始4.3.2流程图修改学生信息 3输入要修改后的信息是否继续?继续按1,结束按10 1 10结束图4.3 修改学生信息模块程序流程图4.4 删除模块该模块实现的功能是删除指定的学生信息4.4.1设计思路Deleteformation()此函数用于删除学生信息。同样调用了查找模块的函数。删除模块的关键语句是f
14、or(j=x;ji-1;j+)stuj=stuj+1,从要删除的那一个信息项开始,用后一个信息项覆盖它,一直循环到最后,相当于把开始的第一个数据删除了。4.4.2流程图开始删除的学生信息 4是否删除?是按1,否按2 2 1删除成功 是否继续?继续按1,结束按10 1 10结束 图4.4 删除学生信息模块程序流程图4.5 查询模块该模块实现的功能是查询不及格(某科成绩低于60分)的学生信息并输出。4.5.1设计思路void Showfail() 此函数用于显示不及格学生的信息。能够按要求输出不及格学生的学号、姓名、各科成绩、平均成绩、总成绩。首先在for循环中用if语句搜索该学生是否有成绩不及格
15、,当三门课中至少有一门不及格时就会输出该学生的相关信息。4.5.2流程图开始 5判断是否有不及格的学生信息科目 N输出该生的学生信息 Y检索完毕? N Y结束图4.5 查询不及格的学生信息模块程序流程图4.6 排序模块该模块实现的功能是按学生总成绩对学生信息排序并输出排序后的结果。4.6.1设计思路 Lineup函数用来对学生信息按总成绩进行排序。Lineup函数在排序时用的是冒泡排序法,冒泡排序是经过n-1趟子排序完成的,第i趟子排序从第1个数至第n+1个数,若第i个数比后一个数大(则升序,小则降序。本程序一律采用降序)则交换两数。开始4.6.2流程图 6m=1 mi N输出已排序的信息n=
16、m+1 Ym+ni+1? N Y结束stum.sumstun.sum? Y互换stum.sum与stun.sum n+ N图4.6 冒泡排序的模块程序流程图4.7 统计模块该模块的实现的功能是统计各个等级的学生人数并输出各等级的人数。4.7.1设计思路void Count()函数统计各个等级(优秀、良好、中等、及格、不及格)的学生人数。函数用switch语句划分出不同等级,用for循环依次判断每个学生所处的等级,并记录每个等级的人数。4.7.2流程图开始判断每个学生的成绩等级(10、9、8、7、6、6) 7866=1097X+结束 图4.7 统计不同等级学生的人数模块程序流程图5运行测试进入演
17、示程序后即可显示的界面:图5.0.1 系统进入输入密码错误显示的界面:图5.0.2 输入密码正确后的功能表输入密码正确显示的界面:图5.0.3 输入密码正确后的功能表1、执行功能1,依次录入学生信息:1.1录入第1个学生信息: 1.2录入第2个学生信息: 1.3录入第3个学生信息: 1.4录入第4个学生信息: 1.5录入第5个学生信息: 1.6录入第6个学生信息: 1.7结束录入!图5.1 结束录入2、执行功能2,按一定方式查找学生信息: 2.1按学号查找学生信息: 图5.2.1查找学号不存在 2.2继续按学号查找学生信息:图5.2.2 查找学号存在 2.3按姓名查找的学生信息:图5.2.3
18、查找姓名存在 2.4继续按姓名查找学生信息:图5.2.4 查找姓名不存在 2.5退出查找:图5.2.5 退出查找3、 执行功能3,修改学生信息: 3.1执行修改学生信息功能:图5.3.1 修改学生信息 3.2退出修改功能:图5.3.2 退出修改4、 执行功能4,删除学生信息: 4.1执行删除学生信息功能:图5.4.1 删除学生信息 4.2退出删除功能:图5.4.2 退出删除5、 执行功能5,查询不及格的学生信息:图5.5 查询不及格学生信息6、 执行功能6,用冒泡法按总成绩对学生信息排序:图5.6 按总成绩学生信息排序7、 执行功能7,统计不同等级学生的人数:图5.7 统计不同等级学生人数8、
19、 执行功能0,退出该系统:图5.8 退出系统9、 选择功能数字错误:图5.9 重选功能6总结 (1)综合实践过程的收获通过本次的综合实践,收获颇多。对过去学习的数据结构与算法分析的相关知识进行了汇总。同时也自学了许多相关知识。通过调用各种功能函数实现对相关数据的具体操作。实践出真知,在课堂上,接受理论的知识,且把每一个内容都细分切块,最终学到的却不能完全有效的整合到一起,在做这个课程设计的时候,涉及到很多学过的内容。因此就必须要查阅很多课本和书籍,这样不仅把以前学过的快遗忘的知识重新复习一遍,还能有效的把那些零散的知识点相结合,并运用。通过这次综合实践,加强了对实践操作的要求,不但要掌握理论知
20、识,还要通过自己动手操作,在实践中充分理解理论知识,使自己的理论水平上升到更高层次,此外在此次实践中,自学能力得到了增强,这是这次综合实践过程中的最大收获。 (2)遇到问题以及解决问题的思路和方法通过本次得综合实践,在编写学生成绩管理系统程序代码的过程中遇到了很多的问题。如果录入的学生信息数量非常大时,用此系统的查找效率就比较低,所以此系统用于信息量比较少。由于学生人数不确定,可能造成存储空间的浪费。由于自己本身编程能力的问题,实现的功能非常有限,只可以进行简单的信息录入、查找、修改、删除、查询、排序、统计等简单功能。在每个模块也存在不足的地方,如输入学生信息时,对每个信息项没有严格的规定,所
21、以在输入信息时要提起注意。(3)程序调试能力的思考在调试过程中逐渐学会了编译器的调试功能。学会读懂程序中出错时所报出的错误提示信息。并能够根据这些信息找到相应的错误,及时改正。(4)在综合实践设计过程中对数据结构课程的认识通过这次综合设计,对数据结构课程有了更深的认识。对于从事计算机专业的的人士来说,学习数据结构和算法都是有必要的。算法是对输入数据的处理,以产生解决问题的输出的过程。从实践的角度来看,我们必须了解计算机领域中不同问题的一系列标准算法以及计算机程序加工的对象之间的关系;此外,我们还要具备设计新算法和分析其效率的能力。要清楚地知道、算法和程序三者之间的关系及相应的技术。参考文献1
22、严蔚敏,吴伟民数据结构北京:清华大学出版社,2008 2 苏仕华数据结构课程设计北京:机械工业出版社,2010.3 .滕国文数据结构课程设计北京:清华大学出版社,2010.附录#include#include#includestruct STU/*定义学生信息结构体*/int num;/*学号*/char name20;/*姓名*/double Data;/*数据结构成绩*/double Math;/*高等数学成绩*/double English;/*大学英语成绩*/double sum;/*总成绩*/double ave;/*平均成绩*/STU,stu;int i=1;/*统计录入学生人数*
23、/int a,d,w;char b20;void Getinformation()/*录入学生信息,用-1结束录入*/ stu0.sum=0;stu0.ave=0;printf(1、录入学生信息功能(用-1结束信息录入):n);printf(学号:);scanf(%d,&stui.num);while(stui.num!=-1)&(stui.num=)/*确定输入的学号有效*/ printf(姓名:);scanf(%s,&stui.name);printf(数据结构成绩:);scanf(%lf,&stui.Data); printf(高等数学成绩:);scanf(%lf,&stui.Math)
24、; printf(大学英语成绩:);scanf(%lf,&stui.English);stui.sum=stui.Data+stui.Math+stui.English;stui.ave=stui.sum/3;i+; printf(学号:); scanf(%d,&stui.num); if(stui.num=-1)printf(结束录入!n); printf(n);int Seeknum(int no)/*按学号查找*/int j;for(j=1;ji;j+)if(stuj.num=no)return j;return -1;int Seekname(char b20)/*按姓名查找*/int
25、 k;for(k=1;ki;k+)if(strcmp(stuk.name,b)=0)return k;return -1;void Printinformation(int x)/*输出学生信息*/if(x=-1)printf(该学生信息不存在!n);else printf(- %d %s %.2lf %.2lf %.2lf %.2lf %.2lfn,stux.num,stux.name,stux.Data,stux.Math,stux.English,stux.sum,stux.ave);void Seekinformation()/*查找学生信息*/int x;printf(2、查找学生信
26、息功能:n);while(1)/*可以循环输入查找信息*/printf(按学号查找按 1 按姓名查找按 2n); scanf(%d,&a); if(a=1)printf(输入要查找的学号:);scanf(%d,&d);x=Seeknum(d);/*调用按学号查找函数*/ printf(-学号 姓名 数据结构 高等数学 大学英语 总成绩 平均成绩n);Printinformation(x); else if(a=2) printf(输入要查找的姓名:);scanf(%s,&b);x=Seekname(b);/*调用按姓名查找函数*/ printf(-学号 姓名 数据结构 高等数学 大学英语 总成
27、绩 平均成绩n); Printinformation(x); printf(继续查找请按 1,退出查询请按 10n); scanf(%d,&a); if(a=10)break;void Modifinformation()/*修改学生信息*/int x;printf(3、修改学生信息功能:n);while(1)printf(请先查找要修改的学生信息!n); printf(按学号查找按 1 按姓名查找按 2n); scanf(%d,&a); if(a=1)printf(输入要查找的学号:);scanf(%d,&d);x=Seeknum(d);/*调用按学号查找函数*/ else if(a=2)
28、printf(输入要查找的姓名:);scanf(%s,&b);x=Seekname(b);/*调用按姓名查找函数*/if(x=-1)printf(该学生信息不存在!n); else printf(输出要修改的信息:n); printf(-学号 姓名 数据结构 高等数学 大学英语 总成绩 平均成绩n);Printinformation(x);printf(输入新信息:n);w=x; printf(-学号 姓名 数据结构 高等数学 大学英语n);scanf(%d %s %lf %lf %lf,&stuw.num,&stuw.name,&stuw.Data,&stuw.Math,&stuw.Engl
29、ish); stuw.sum=stuw.Data+stuw.Math+stuw.English; stuw.ave=stuw.sum/3; printf(继续修改请按 1,退出此功能请按 10n); scanf(%d,&a); if(a=10)break;void Deleteformation()/*删除学生信息*/int x;int j;printf(4、删除学生信息功能:n);while(1)printf(请先查找要删除的学生信息:n); printf(按学号查找按 1 按姓名查找按 2n); scanf(%d,&a); if(a=1)printf(输入要查找的学号:);scanf(%d
30、,&d);x=Seeknum(d);/*调用按学号查找函数*/ else if(a=2) printf(输入要查找的姓名:);scanf(%s,&b);x=Seekname(b);/*调用按姓名查找函数*/if(x=-1)printf(该学生信息不存在!); else printf(输出要删除的信息:n); printf(-学号 姓名 数据结构 高等数学 大学英语 总成绩 平均成绩n);Printinformation(x);printf(确认删除请按 1 不删除请按 2n);scanf(%d,&a);if(a=1)for(j=x;ji;j+)stuj=stuj+1;/*用元素以覆盖的方式向前
31、移动来删除元素*/printf(删除成功!n);i-; printf(继续删除请按 1,退出此功能请按 10n); scanf(%d,&a); if(a=10)break;void Showfail()/*查询不及格(某科成绩低于60分)学生信息*/int j,flag=0; printf(5、查询不及格学生信息功能:n); printf(-学号 姓名 数据结构 高等数学 大学英语 总成绩 平均成绩n);for(j=1;ji;j+)if(stuj.Data60)flag=1; printf(输出数据结构成绩不及格的学生信息:n); Printinformation(j); if(stuj.Math60) flag=1; printf(输出高等数学成绩不及格的学生信息:n); Printinformation(j); if(stuj.English