学生管理系统

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

信息科学与技术学院《数据结构》课程设计报告题目名称:学生管理系统专业班级:11级计科2班学生姓名:陶鑫学生学号:2011508035指导教师:郭理完成日期:2013-01-091课程设计的目的.......................................................11.1课程设计的目的...............................................11.2课程设计的题目...............................................11.3题目要求..........................................................12概要设计.................................................................22.1存储结构..........................................................22.2基本操作..........................................................33详细设计.................................................................33.1流程图.............................................................33.2源程序...........................................................104测试.......................................................................215课程设计总结........................................................296参考书目:...............................................................2911课程设计的目的1.1课程设计的目的更好的掌握数据结构这门课程,会用数据结构的基本思想及算法解决实际问题。更好的掌握链表,能进行各种基本的操作,提高编程能力。1.2课程设计的题目《学生管理系统》1.3题目要求使用下面的数据,用C/C++设计一个简单的学籍管理系统,实现出最基本的功能。学生基本信息文件(A.TXT)及其内容:A.TXT文件不需要编程录入数据,可用文本编辑工具直接生成学号姓名性别宿舍号码电话号码01张成成男5018773211102李成华女1018772311203王成凤女1018772311204张明明男5028773433305陈东男5018773211106李果男5028773433307张园园女10287756122……...…………..学生成绩基本信息文件(B.TXT)及其内容:学号课程编号课程名称学分平时成绩实验成绩卷面成绩综合成绩实得学分01A01大学物理366788202B03高等数学478-19001B03高等数学445-18802C01VF3657666…….……….....…(一)功能要求及说明:(1)数据录入功能:对B.TXT进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据.综合成绩、学分由程序根据条件自动运算。综合成绩的计算:如果本课程的实验成绩为-1,则表示无实验,综合成绩=平时成绩*30%+卷面成绩*70%;如果实验成绩不为-1,表示本课程有实验,综合成绩=平时成绩*15%+实验成绩*.15%+卷面成绩*70%.2实得学分的计算:采用等级学分制.综合成绩在90-100之间,应得学分=学分*100%综合成绩在80-90之间,应得学分=学分*80%综合成绩在70-80之间,应得学分=学分*75%综合成绩在60-70之间,应得学分=学分*60%综合成绩在60以下,应得学分=学分*0%(2)查询功能:分为学生基本情况查询和成绩查询两种A:学生基本情况查询:A1----输入一个学号或姓名(可实现选择),查出此生的基本信息并显示输出。A2---输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。B:成绩查询:B1:输入一个学号时,查询出此生的所有课程情况,格式如下:学号:xx姓名:xxxxx课程编号:xxx课程名称:xxxxx综合成绩:xxxx实得学分:xx课程编号:xxx课程名称:xxxxx综合成绩:xxxx实得学分:xx课程编号:xxx课程名称:xxxxx综合成绩:xxxx实得学分:xx………………………共修:xx科,实得总学分为:xxx(3)删除功能:当在A.TXT中删除一个学生时,自动地在B.TXT中删除此人所有信息。(4)排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。(二)其它要求:(1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)(3)学生可自动增加新功能模块(视情况可另外加分)(4)写出课程设计报告,具体要求见相关说明文档2概要设计2.1存储结构首先,为了能使自己得到锻炼,存储结构我使用了顺序存储与链式存储,学生基本信息用的数组来存储,对学生成绩基本信息使用链表进行存储。结构体定义如下://学生基本信息的结构体定义typedefstructstudent{stringxuehao;//学号stringname;//姓名stringgender;//性别stringsushe;//宿舍号stringtel;//电话}student;3//学生成绩信息的结构体定义typedefstructgrade{stringxuehao;//学号stringcourseno;//课程号stringcoursename;//课程名称intxuefen;//学分intpingshi;//平时成绩intshiyan;//实验成绩intjuanmian;//卷面成绩floatzonghe;//综合成绩floatshide;//实得学分grade*next;}grade;2.2基本操作(1)数据录入功能(2)查询功能(3)删除功能(4)排序功能(5)显示所有学生信息(6)保存(7)退出3详细设计3.1流程图各个算法的设计如下:1.主函数:intmain();从A.txt中读取存储的学生基本信息到内存,以便进行处理,过程如图14图12.菜单函数:voidmenu(student*stu,grade*head,grade*gra);stu是指向学生基本信息数组的指针,head是指向学生成绩信息链表头结点的指针,gra是指向学生成绩信息链表最后一个结点的指针。用于进行指示进行各种操作,是与每个函数都相联系的一个函数,功能操作见图2开始创建存储学生信息的单链表的头结点将学生信息读取到内存调用菜单函数结束6保存0退出开始输入i菜单4排序3删除5显示学生信息2查询1数据录入其他有误误6保存0退出开始输入i菜单4排序3删除5显示学生信息2查询1数据录入其他有误误结束5图23.数据录入函数:voidluru(grade*gra);其中gra是指向单链表最后一个结点的指针,用于后插法中进行插入。将学生成绩信息依次输入单链表中,其中单链表边输入边创建,综合成绩和实得学分可由计算机自己计算。流程图见图3YN90-10080-9070-8060-7060以下输入学生平时成绩输入学生实验成绩输入学生卷面成绩输入学生课程编号输入学生的学号输入学生学分开始gra-shiyan=-1综合成绩=平时成绩*30%+卷面成绩*70%判断成绩范围应得学分=学分*100%应得学分=学分*80%应得学分=学分*75%应得学分=学分*60%应得学分=0结束综合成绩=平时成绩*15%+实验成绩*.15%+卷面成绩*70%输入学生平时成绩输入学生实验成绩输入学生卷面成绩输入学生课程编号输入学生的学号输入学生学分开始gra-shiyan=-1综合成绩=平时成绩*30%+卷面成绩*70%6图34.查询功能:voidlookfor(student*p,grade*head);P为指向学生基本信息数组的指针,head为指向学生成绩链表的头结点的指针。有学生基本情况查询和成绩查询两种大功能,基本情况查询又分为按学号或姓名查找单个学生基本信息,也可输入宿舍号查询整个宿舍学生的基本信息。成绩查询只要输入学号便可查询相应学生的成绩信息。见图4图45.删除功能:voiddel(student*stu,grade*head);stu为指向学生基本信息数组的指针,head为指向学生成绩链表的头结点的指针。执行删除功能时在存储学生基本信息的数组中与存储学生成绩信息的链表中同时删除该学生信息,以便进行下面操作与向文件中存储信息。功能见图51.输入一个学号或姓名2.输入一个宿舍号码a按学号查找b按姓名查找输出一个宿舍学生信息输出相应学生信息输出相应学生所有成绩结束开始输入iA:学生基本情况查询B:成绩查询输入j输入学号7图56.排序功能:voidsort(grade*head);head为指向学生成绩链表的头结点的指针。下面流程图实现的是按综合成绩升序排序,使用的选择排序法,虽说使用的存储结构为链式存储结构,但排序时并非改变的指针指向,而是只修改存储的信息,指针指向不用改变。如图6开始输入要删除学生的学号在学生基本信息中删除在学生成绩基本信息中删除结束8NYNYNY图67.显示所有学生信息:voidshow(student*stud);stud为指向学生基本信息数组的指针用于显示内存中学生基本情况信息,以便更好了解学生的一些情况.P!=NULLhead-zonghep-zonghe交换相邻节点中数据p=p-nexthead=head-next开始head=head-nexthead-next!=NULLp=head-nextP!=NULLhead-zonghep-zonghe交换相邻节点中数据p=p-next结束9NY图78.保存功能:voidsave1(student*stud);voidsave2(grade*head);stud为指向学生基本信息数组的指针,head为指向学生成绩链表的头结点的指针。函数用于将内存中数据存储到文件中以便更好保存信息。NYNYi++开始i=1stud[i].xuehao!=0输出学号,姓名,性别,宿舍,电话号结束开始输入ii==1I==2保存学生基本信息到A.TXT保存学生成绩信息到B.TXT输入有误,重新操作!结束10图83.2源程序#definenum10#includeiostream.#includestring#includefstream//定义文件输入输出流usingnamespacestd;//学生基本信息的结构体定义typedefstructstudent{stringxuehao;//学号stringname;//姓名stringgender;//性别stringsushe;//宿舍号stringtel;//电话}student;//学生成绩信息的结构体定义typedefstructgrade{stringxuehao;//学号stringcourseno;//课程号stringcoursename;//课程名称intxuefen;//学分intpingshi;//平时成绩intshiyan;//实验成绩intjuanmian;//卷面成绩floatzonghe;//综合成绩floatshide;//实得学分grade*next;}grade;voidluru(grade*gra);voidmenu(student*stu,grade*head,g

1 / 31
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功