《C++课程设计(学生成绩管理系统·).doc》由会员分享,可在线阅读,更多相关《C++课程设计(学生成绩管理系统·).doc(45页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateC+课程设计(学生成绩管理系统)武汉工程大学武汉工程大学 计算机科学与工程学院综合设计报告设计名称: 软件基础综合设计 设计题目: 小型学生成绩管理系统 学生学号: 1305120107 专业班级: 2013计算机科学与技术01班 学生姓名: 何经纬 学生成绩: 指导教师(职称): 邹君(讲师) 完成时间: 2015.4.72015. 5.15 武汉工程大学计算机科学
2、与工程学院 制-说明:1、报告中的第一、二、三项由指导教师在综合设计开始前填写并发给每个学生;四、五两项(中英文摘要)由学生在完成综合设计后填写。2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩。3、指导教师评语一栏由指导教师就学生在整个综合设计期间的表现、设计完成情况、报告的质量及答辩等方面,给出客观、全面的评价。4、所有学生必须参加综合设计的答辩环节。凡不参加答辩者,其成绩一律按不及格处理。答辩小组成员应由2人及以上教师组成。5、报告正文字数一般应不少于5000字,也可由指导教师根据本门综合设计的情况另行规定。6、平时表现成绩低于6分的学生,其综合设计成绩按不及格处理。7、此
3、表格式为武汉工程大学计算机科学与工程学院提供的基本格式(适用于学院各类综合设计),各教研室可根据本门综合设计的特点及内容做适当的调整,并上报学院批准。答辩记录表学生姓名: 何经纬 学号: 1305120107 班级: 2013计算机科学与技术01 答辩地点: 计算机大楼8号机房 答辩内容记录:答辩成绩合计分值各项分值评分标准实际得分合计得分备注2510在规定时间内能就所设计的内容进行阐述,言简意明,重点突出,论点正确,条理清晰。15在规定时间内能准确、完整、流利地回答教师所提出的问题。答辩小组成员(签字): 年 月 日成绩评定表学生姓名: 何经纬 学号: 1305120107 班级: 2013
4、计算机科学与技术01 类别合计分值各项分值评分标准实际得分合计得分备注平时表现1010遵守学习纪律,表现良好,积极完成综合设计任务,无旷课、迟到、早退等情况。设计完成情况3020按照要求完成设计内容,方案合理,功能完善,设计工作量饱满,能运用专业知识和技能去发现与解决实际问题。10在设计过程中展现出了较强的学习能力、动手实践能力、团队协作能力和创新意识。报告质量3510报告格式规范,表述清晰,章节内容组织恰当。符号统一,图表完备,符合规范要求。参考文献数量在5篇以上,格式及引用符合要求。15报告内容翔实,结构严谨合理。课题背景介绍清楚,综述充分。设计与实现等主要过程完整,论述具体透彻。能运用所
5、学专业知识对问题加以分析和求解。无抄袭现象。10设计报告对整个设计过程进行了全面总结,体现了收获,得出了有价值的结论或结果。答辩情况2510在规定时间内能就所设计的内容进行阐述,言简意明,重点突出,论点正确,条理清晰。15在规定时间内能准确、完整、流利地回答教师所提出的问题。总评成绩指导教师评语指导教师: (签字) 日期: 年 月 日一、综合设计目的、条件、任务和内容要求:软件基础综合设计是计算机科学与技术(计算机工程方向)专业学生进行的第一次纯软件方面的综合设计,本设计主要考察学生能够从实际问题出发设计和选择合适的数据结构;能够熟练运用基本数据结构做工具来解决一些实际问题。综合设计的条件:P
6、IV及以上级别CPU计算机,windows xp及以上版本操作系统,Visual studio2005及以上版本集成开发环境。一个完整的小型学生成绩管理系统应完成以下要求:(1) 有10个小学生,每个学生学习数学和语文2门课程,从键盘输入学生的学号、姓名及成绩,计算每位学生的平均成绩,将数据存入文件stud.dat中。(2) 按如下格式输出链表中大于等于平均成绩的学生信息: 学号 姓名 数学 语文 平均成绩(3) 用类来实现本程序,并且用链表实现(4) 可在已有记录后面追加新的学生记录。(5) 可在原链表中删除指定条件(如学号、姓名等)的学生记录(6) 可以按学号、姓名查找要修改的记录内容。(
7、7)使用多文件编程和菜单操作(8)要求对”运算符进行重载。设计思想:设计一个菜单,通过菜单选择实现相应的操作,使用链表存储输入的原始信息。这样做的好处是可以随时增加内容和删除内容。为学生设计一个结构及使用这个结构作为数据成员的学生类,单独设计完成这个文件读写的成员函数。使用学生的结构,产生一个静态结构数组作为学生信息简表的存储器,由它们和文件建立读写管理。需要显示它们时,先将文件读入内存,然后再显示。需要显示大于等于平均成绩的学生信息时,则直接从内存链表中筛选。二、进度安排:4周 (3月23日3月27日):征题与教师开题;5周:教师审题、学生选题;指导教师任务划分、指导教师讲解解题方法;6,7
8、,8,9,11周(周2晚,周五下午):上机编制程序、调试与教师指导;11周周五(5月15日):答辩。三、应收集资料及主要参考文献:1. 李春葆 数据结构教程(第4版).北京:清华大学出版社,20142. 张俊,张彦铎. C+面向对象程序设计(第二版). 北京:清华大学出版社.20123. 谭火彬.UML 2 面向对象分析与设计. 北京:清华大学出版社.2013.54. 张俊. C+面向对象程序设计习题与实验指导(第二版). 北京:清华大学出版社.20125.周启生 姬涛 .计算机程序设计基础.北京:科学出版社四、摘要: 随着科学技术的发展,计算机在工业方面和日常生活中发挥着越来越重要的作用。在
9、学校的日常工作中,学校要处理大量的学生数据,如果人工处理这些数据将会是一项繁琐的工作。但计算机凭借其强大的计算能力使它能够在很短的时间完成大量的工作,用计算机对学生信息进行管理无疑是一种不错的选择。 学生信息管理系统能方便快捷、准确的处理学生信息,这里简易地介绍了该系统的实现过程,以及功能。该系统的实现过程大概可以分为三个步骤:系统分析、功能模块设计、系统调试和测试,该系统的主要功能有学生信息添加、删除、插入、查询、修改、将学生信息保存到磁盘中等。学生信息管理系统的这些功能主要是由链表以及文件来实现的,所以说该系统的核心即为链表和文件。在实现学生信息管理系统所有的功能的同时还要注意良好的人机交
10、互体验,所以菜单界面的优化是很重要。一个简洁明了的菜单加上完善的功能,才能使学生信息管理系统有更多的实际的作用。关键词:学生信息管理系统;链表;结构体;类;文件五、Abstract:With the development of science and technology, the computer industry continuously made new research achievements, the computer plays a more and more important role in industry and daily life. In the schools d
11、aily work, schools need to handle a large number of student data, if these data are dealt with people, it would be a tedious work. But with the development of computer science and technology more and more mature, by virtue of its powerful computing capacity, the application of computer is more and m
12、ore widely in life, Use the computer to manage student information is a good choice. Student information management system can quickly, accurately handle student information quickly and accurately, it simply introduces the implementation process of the system, and function. The realization process o
13、f the system can be divided into three steps: system analysis, system function module design, and test, the main function of this system are adding, deleting, inserting, querying and saving student information. These features of the student information management system is mainly implemented by the
14、linked list and the file, so the core of the system is the linked list and the file. We achieve all the function of student information management system and at the same time we must pay attention to the good interactive experience, so menu interface optimization is very important. A simple menu wit
15、h perfect function can make the student information management system has more practical effect.Keywords: students information management system; chain; structure; class files目 录摘 要IAbstractII第一章 课题背景11.1 课题概述11.2 主要问题及技术要求11.3 主要工作内容21.4 报告布局3第二章 需求与设计分析42.1 需求分析42.2 功能分析42.3 结构分析5第三章 详细设计83.1 系统详细
16、设计8第四章 结果及分析184.1 设计结果184.2 输入异常测试用例234.3 设计分析24总 结25致 谢26参考文献27摘 要 随着科学技术的发展,计算机在工业方面和日常生活中发挥着越来越重要的作用。在学校的日常工作中,学校要处理大量的学生数据,如果人工处理这些数据将会是一项繁琐的工作。但计算机凭借其强大的计算能力使它能够在很短的时间完成大量的工作,用计算机对学生信息进行管理无疑是一种不错的选择。 学生信息管理系统能方便快捷、准确的处理学生信息,这里简易地介绍了该系统的实现过程,以及功能。该系统的实现过程大概可以分为三个步骤:系统分析、功能模块设计、系统调试和测试,该系统的主要功能有学
17、生信息添加、删除、插入、查询、修改、将学生信息保存到磁盘中等。学生信息管理系统的这些功能主要是由链表以及文件来实现的,所以说该系统的核心即为链表和文件。在实现学生信息管理系统所有的功能的同时还要注意良好的人机交互体验,所以菜单界面的优化是很重要。一个简洁明了的菜单加上完善的功能,才能使学生信息管理系统有更多的实际的作用。关键词:学生信息管理系统;链表;结构体;类;文件AbstractWith the development of science and technology, the computer industry continuously made new research achiev
18、ements, the computer plays a more and more important role in industry and daily life. In the schools daily work, schools need to handle a large number of student data, if these data are dealt with people, it would be a tedious work. But with the development of computer science and technology more an
19、d more mature, by virtue of its powerful computing capacity, the application of computer is more and more widely in life, Use the computer to manage student information is a good choice. Student information management system can quickly, accurately handle student information quickly and accurately,
20、it simply introduces the implementation process of the system, and function. The realization process of the system can be divided into three steps: system analysis, system function module design, and test, the main function of this system are adding, deleting, inserting, querying and saving student
21、information. These features of the student information management system is mainly implemented by the linked list and the file, so the core of the system is the linked list and the file. We achieve all the function of student information management system and at the same time we must pay attention t
22、o the good interactive experience, so menu interface optimization is very important. A simple menu with perfect function can make the student information management system has more practical effect.Keywords: student information management system; chain; structure; class files 第一章 课题背景1.1 课题概述(1)课题背景
23、多年以来,学校对本校学生的信息管理都还沿用传统的方式,在在这种管理模式下,用人工记录学生的信息效率低、保密性差,人力资源也存在着极大的浪费。此外,随着时间的推移,资料库将会产生大量的文件和数据堆积现象,这种现象对于数据的查找、更新以及维护都会带来很大的阻碍。随着现代素质教育的提高以及时代的快速发展,靠人工来管理学生信息已经不再适用于现代的教育管理模式。在科技快速发展,计算机越来越普及的信息化时代的到来,为了使学校传统的管理方法和办学水平都能应付这种极大的挑战,需要对传统的教育方式提出新的建议和要求。而步入了新的世纪,从世界各国教育科学化进程看,各种竞争显得异常的激烈,而且不仅仅是在教育的基础信
24、息建设和相关资源建设上,又或者说是在方法的普及程度上,我们与其发达国家存在较大的差距。步入21世纪的我们,假如还是不能很好地利用网络和科技,又或是不会用较少的成本来推动教育的信息化、科学化发展,那么像这样没有明确的发展方向,一定会偏离信息化、科技化的轨道,从而就可能阻碍社会科技化、信息化的进步,甚至于整个国家的科技化发展。所以刷哦,如何实施教育的信息化管理已经成了一个十分重要且必须立刻解决的问题,而如何有效的管理学生信息,是实现教育信息化管理的关键。与传统的管理方式相比,开发出来的学生信息管理系统的优势就显得比较明心。比如动态管理所有学生的基本信息;通过网络,教师可以在任何时间,任何地点查看学
25、生的基本信息。实现西你想化管理的一个最重要的特点就是迅速准确的查找信息,并且在输入结束后立即给出准确的查询结果。(2)课题目的本设计主要目的是培养我们从实际问题出发设计和选择合适的数据结构能力,使我们能够熟练运用基本数据结构做工具来解决一些实际问题。(3)课题意义学校可以通过程序发挥计算机运算速度快存储容量大的优点对大量的学生信息进行管理,从而提高人员工作效率。1.2 主要问题及技术要求(1)应解决的主要问题文件操作把内存中的数据保存到磁盘文件过程中,数据从内存流出,因而是文件输出操作,应该建立文件输出流类ofstream相关联的文件,同时指定为ios:out打开模式的文件。把磁盘文件的内容读
26、取到内存中,数据向内存流入,因而是文件输入操作,应该建立文件输入流类ifstream相关联的文件,同时指定为ios:in打开模式的文件。若只向文件中写入数据,则应该选用文件输出流类ofstream;若只从文件中读取数据,则应该选用文件输入流类ifstream。ios:in 打开文件,从文件中提取数据。ios:out 打开文件,向文件中写入数据1。文件的打开模式如表1-1所示:表1-1 文件的打开模式打开模式十六进制值含义及功能ios:in0x01打开文件,只从文件中提取数均ios:out0x02打开文件,只为向文件中写入数据ios:ate0x04打开文件,并立即将文件指针定位于文件尾ios:a
27、pp0x08每次打开文件,总是定位于文件尾,然后把文件内容追加到文件尾ios:trunc0x10打开文件,同事清空已有内容ios:binary0x20打开文件,并以二进制模式进行I/O操作ios:nocreat0x40若文件不存在,则返回失败ios:noreplace0x80若文件已存在,则返回失败单链表的建立:bahead 尾插法建立单链表,如图1.1所示:图1.1 尾插法建立单链表示意图(2)应达到的技术要求能完成学生信息的录入、修改、删除、输出、查询等功能2;采用单链表存储结构实现;学生信息以外部文件方式保存。1.3 主要工作内容(1) 分析功能需求,构思程序大概结构。(2) 将程序模块
28、化设计,分部实现所有功能,由易到难。(3) 解决文件操作、链表等难点问题。1.4 报告布局第一章 为课题背景,主要介绍了小型学生信息管理系统课题背景,目的和意义,以及做设计之前必须有的知识储备和大概的工作流程。第二章 为需求分析和设计分析,主要介绍了国内外已经投入使用的基于不同开发方式的学生信息管理系以及本程序的开发方式,以该改程序的大体结构和一些函数的功能。第三章 为详细设计,主要对程序的各个函数进行了细化的设计。第四章 为结果及分析,本章主要对程序的各个功能进行了测试以及一些异常情况的测试。第二章 需求与设计分析2.1 需求分析学校工作总体规划由教务人员完成对运行教务处所需的基本数据的维护
29、,包括这些信息的增加、修改、删除等。由于一般学校的学生数量如果靠人过完成这些操作的话将会是一件繁重的工作,在这个时候如果采用学生信息管理系统来维护这些数据的话,这件工作将会显得尤为轻松。目前国内外有很多种类的学生信息管理系统,有基于ASP.NET的学生信息管理系统,有基于MFC和ACCESS数据库的学生信息管理系统,有基于Visual C+的学生信息管理系统,在这里,我设计的学生管理系统就是基于Visual C+的。2.2 功能分析学生信息管理系统其功能包括:(1)录入函数Add():将学生信息插入到链表中; 学生信息录入功能主要由单链表的构建来实现,将所有学生信息依次存入单链表中,最后将数据
30、保存至磁盘(硬盘)中。 学生信息录入的过程中可能会出现姓名重复的情况,姓名重复还不能判断该学生信息是否重复录入,所以学号是判别学生信息是否重复录入的标准;在学生成绩录入的过程中还可能会出现录入的成绩不符合标准,例如录入的成绩低于0分高于100分等。(2)修改函数Modify():修改指定学生信息;根据设计要求,修改学生信息需事先找到那个要被修改的学生信息,而且是唯一的一个,由于可能会出现重名的情况,所以只有当姓名和学号相对应时该学生信息才能被修改。(3)删除函数Delete():删除指定学生信息; 删除学生信息与修改学生信息有点类似,都需要找到唯一确认的学生信息,删除学生信息的大致原理如图2-
31、1所示:其中q=p-next,p-next=q-next3。图2.1 删除学生信息原理示意图(4)输出函数Show():显示全部学生信息; 显示学生信息徐和谊模块较为简单,简单的走指针,从头节点走到尾节点。(5)查询函数Search():查询指定学生信息; 根据设计要求,查询学生信息需要有两个入口,按照姓名查找或者按照学号查找,该部分的算法与修改学生信息,删除学生信息函数的算法的前半部分相似,都是做匹配工作。(6)读取数据函数Read():从外部文件读取学生信息; 从硬盘中的文件读取学生信息需要应用到ifstream(数据向内存流入,是文件输出操作)相关联的文件,同时还要结合链表以实现读取多个
32、学生信息的功能。(7)保存数据函数Save():将数据保存到外部文件中;将学生信息保存到银盘中的文件里需要用到输出流类ofstream(数据从内存流出,是文件输入操作)相关联的文件,配合链表(尾插法)实现学生信息的保存。(8)平均成绩函数AverageTotle():获得平均成绩高于全班平均成绩学生信息; 要实现该功能首先要将全班所有人的成绩进行累加,并求出全班学生的平均成绩, 然后将已有的学生成绩依次与全班平均值比较,平均成绩大于或等于全班平均值的学生即为满足要求的学生,输出他们的信息。(9) 菜单函数Menu():快捷入口。通过switch-case语句即可实现该部分的功能4。2.3 结构
33、分析通过对学生信息管理系统的功能分析,可以大概的画出系统结构图,如图2.2所示。学生信息管理系统优秀学生信息读取学生信息保存学生信息显示学生信息删除学生信息修改学生信息录入学生信息图2.2 学生信息管理系统总体结构设计学生信息管理系统的所有功能可以由两个类实现,Student类,Function类5。Student类的大致结构如图2.3所示:StudentOfile(ofstream &of)Infile(ifstream &f)Out()Set(char *name, double no, Class score)GetName()GetNo()GetAverage()图2.3 Studen
34、t类大致结构Infile(ifstream &f)函数:把磁盘文件的内容读取到内存中 。Ofile(ofstream &of)函数:把内存中的数据保存到磁盘文件。Out()函数:输出函数。Function类的大致结构如图2.4所示:FunctionAverageTotle()Show()Modify()Delete()Search()Add()Menu()图2.4 Function类的大致结构图第三章 详细设计3.1 系统详细设计(1)学生信息录入模块学生信息包括:姓名、学号、语文成绩、数学成绩、平均成绩,录入模块流程图如图3.1所示:开始录入输入学生信息保存学生信息结束图3.1 录入模块流程
35、图该模块代码如下:Add() char name20;double no;Class score;char choose;Student *f1, *p, *f2;system(cls);f1 = StudentHead;f2 = StudentHead-next;while (f1-next)f1 = f1-next;dop = new Student;cout 请输入您要添加的学生信息: endl;cout name;cout no;f2 = StudentHead;while (f2)if (f2-GetNo()=no)cout 该学生已存在,请确定学号!nn;cout no;break
36、;f2 = f2-next;A:;cout score.Chinese;if(score.Chinese100|score.Chinese0)cout成绩输入有误,请重新输入!endl;goto A;B:;cout score.Math;if(score.Math100|score.Math0)cout成绩输入有误,请重新输入!Set(name, no, score);f1-next = p;p-next = NULL;f1 = f1-next;cout 是否继续输入信息?(YN) choose; while (choose = y | choose = Y);Save();cout 按1返回
37、主菜单 choose;while (choose != 1)cout 按1返回主菜单 choose;Menu();(2) 学生信息删除模块删除学生信息的删除过程已经在第二章做了介绍,在此不再赘述。当选择删除功能时,首先输入要删除的同学的姓名,然后输入要删除的同学的学号,如果该同学存在并且姓名与学号匹配,则进行删除操作,否则返回失败。该模块的核心就是走指针6。其流程图如3.2所示:开始删除输入姓名输入学号姓名学号一致N Y执行删除返回主菜单图3.2 删除学生信息模块流程图(3)学生信息修改模块该模块的实现过程与删除学生信息有很多类似的地方。首先查找与要修改数据相匹配的信息,若没有则返回失败;否则
38、把相应的信息输出,然后重新输入新的数据并保存到单链表7。核心算法就是比较简单的走指针算法,代码如下:Modify() char choose, name20;Student *temp, *p;double no;Class score;system(cls);temp = p = StudentHead;cout name;coutno;while (temp)if (strcmp(temp-GetName(), name) = 0 & temp-GetNo() = no)cout Out();cout请输入新的信息:endl;cout name;cout no;cout score.Chi
39、nese;cout score.Math;temp-Set(name, no, score);break;temp = temp-next;Save();cout 修改成功! endl;cout 1.返回主菜单n2.继续修改 choose;while (choose != 1&choose != 2)cout 1.返回主菜单n2.继续修改 choose;if (choose = 1)Menu();else if (choose = 2)Modify();(4) 学生信息查询模块该模块用的匹配算法在删除学生信息和修改学生信息模块中都用到过,走指针匹配算法8。按姓名和学号查找学生信息的流程图3.3
40、所示:按学号或者姓名查找输入相关信息判断YN该学生不存在输出该学生信息结束图3.3 查询模块流程图(5)学生信息显示模块从单链表表头遍历整个单链表,直到走到尾节点,依次将单链表中每个节点的所有信息输出9,该算法在查询、删除等模块反复用到,较为简单,算法可参考查询、删除、等模块的算法。(6)学生信息读取模块学生信息读取模块需要熟练地应用输入流类ifstream(数据向内存流入)相关联的文件,并配合链表(尾插法)实现学生信息的读取,该模块代码如下:void Student:Infile(ifstream &f)f Name No Score.Chinese Score.Math Average;