数据结构课程设计学生成绩管理系统_第1页
数据结构课程设计学生成绩管理系统_第2页
数据结构课程设计学生成绩管理系统_第3页
数据结构课程设计学生成绩管理系统_第4页
数据结构课程设计学生成绩管理系统_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、任务书题目:学生成绩管理系统设计内容及要求:1 .课程设计任务内容设计一个简易的学生成绩管理系统,能够完成学生成绩的增加、删除、查找、修改、统计等操作,数据信息保存文件保存。要求系统具有菜单和提示,界面友好2 .课程设计要求实现学生成绩的管理和保存。开发环境:vc+6.0实现目标:(1)熟悉的运用c语言程序编写代码。(2)能够理清整个程序的运行过程并绘画流程图(3) 了解如何定义局部变量和整体变量;(4)学会上机调试程序,发现问题,并解决(5)学习使用C+程序来了解程序原理。(6)学习用文档书写程序说明25 / 30摘要管理信息系统正在向着网络化、智能化和集成化等趋势发展。学 生成绩管理系统是

2、为了更好的管理学生考试成绩而开发的数据管理 软件。它对于一个学校是不可缺少的重要部分, 它的内容对于学校的 决策者和管理者来说都至关重要。学生成绩管理管理系统为用户提供 充足的信息和快捷的查询手段,实现学生基本信息、成绩的录入,删 除,查询,维护以及成绩的统计分析等几方面的功能,是现实问题的 迫切要求。本系统开发的总体任务是实现学生成绩管理的系统化、规范化、自动化。达到提高学生成绩管理效率的目的。 与传统管理方法相比有 明显的优点:查找方便,可靠性高,保密性好,成本低。彻底改变了 以前繁杂的管理模式,实现全面的、相对集中的、职能化的信息综合 管理。计算机被用到信息管理系统的环境正是适应了当今时

3、代飞速发展的信息时代。人们深刻的认识到了计算机功能的强大, 对于复杂的 信息管理,计算机充分发挥着它的优越性。检索迅速、查找方便、可 靠性高、存储量大、保密性好、寿命长、成本低,这些优点极大地减 轻了学院教学人员的工作量,缩小开支,提高了学生档案管理的效率 和准确性,能够合理的安排时间,学生能够尽快的知道自己的考试成 绩。同时,学生管理系统的应用也为今天的教育在未来市场的竞争力 有所提高。1 .弓I言.42 .课题分析6.3 .具体设计过程 7.3.1 设计思路7.3.2 程序设计流程图 7.3.3 .函数实现说明9.4 .程序运行结果 .135 .软件使用说明.146 .结论14.参考文献1

4、.6附录:源代码1.61 .引言数据结构在计算机科学界至今没有标准的定义。个人根据各自的理解的不 同而有不同的表述方法:Sartaj Sahni在他的数据结构、算法与应用一书中称:数据结构是数据对象,以及存在于该对象的实例和组成实例的数据元素之间的各种联系。这些联系可以通过定义相关的函数来给出。”他将数据对象(data object)定义为 工 个数据对象是实例或值的集合"。Clifford A.Shaffer 在数据结构与算法分析 一书中的定义是: 数据结构是ADT (抽象数据类型 Abstract Data Type)的物 理实现。”Lobert L.Kruse在数据结构与程序设

5、计一书中,将一个数据结构的设 计过程分成抽象层、数据结构层和实现层。其中,抽象层是指抽象数据类型层, 它讨论数据的逻辑结构及其运算,数据结构层和实现层讨论一个数据结构的表 示和在计算机内的存储细节以及运算的实现。数据结构具体指同一类数据元素 中,各元素之间的相互关系,包括三个组成成分,数据的逻辑结构,数据的存储 结构和数据运算结构。1.1. 重要意义一般认为,一个数据结构是由数据元素依据某种逻辑联系组织起来的。对数据元素间逻辑关系的描述称为数据的逻辑结构;数据必须在计算机内存储,数据的存储结构是数据结构的实现形式,是其在计算机内的表示;此外讨论一个数 据结构必须同时讨论在该类数据上执行的运算才

6、有意义。在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因 素。许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严 重的依赖于是否选择了最优的数据结构。许多时候,确定了数据结构后,算法就容易得到了。有些时候事情也会反过来,我们根据特定算法来选择数据结构与之 适应。不论哪种情况,选择合适的数据结构都是非常重要的。选择了数据结构,算法也随之确定,是数据而不是算法是系统构造的关键因 素。这种洞见导致了许多种软件设计方法和程序设计语言的出现,面向对象的程序设计语言就是其中之一。1.2. 研究内容在计算机科学中,数据结构是一门研究非数值计算的程序设计问题中计算机的 操作对象(

7、数据元素)以及它们之间的关系和运算等的学科,而且确保经过这些 运算后所得到的新结构仍然是原来的结构类型。数据结构”作为一门独立的课程在国外是从1968年才开始设立的。1968 年美国唐 欧克努特教授开创了数据结构的最初体系,他所著的计算机程序 设计技巧第一卷基本算法是第一本较系统地阐述数据的逻辑结构和存储 结构及其操作的著作。 数据结构”在计算机科学中是一门综合性的专业基础课。 数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。数 据结构这一门课的内容不仅是一般程序设计(特别是非数值性程序设计)的基础, 而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序的重要基 础。

8、计算机是一门研究用计算机进行信息表示和处理的科学。这里面涉及到两 个问题:信息的表示,信息的处理 。而信息的表示和组织又直接关系到处理 信息的程序的效率。随着计算机的普及,信息量的增加,信息范围的拓宽,使 许多系统程序和应用程序的规模很大,结构又相当复杂。因此,为了编写出一 个好”的程序,必须分析待处理的对象的特征及各对象之间存在的关系,这就是数据结构这门课所要研究的问题。众所周知,计算机的程序是对信息进行加工处 理。在大多数情况下,这些信息并不是没有组织,信息(数据)之间往往具有重 要的结构关系,这就是数据结构的内容。数据的结构,直接影响算法的选择和效 率。计算机解决一个具体问题时,大致需要

9、经过下列几个步骤:首先要从具体 问题中抽象出一个适当的数学模型,然后设计一个解此数学模型的算法 (Algorithm),最后编出程序、进行测试、调整直至得到最终解答。寻求数学 模型的实质是分析问题,从中提取操作的对象,并找出这些操作对象之间含有的 关系,然后用数学的语言加以描述。计算机算法与数据的结构密切相关,算法 无不依附于具体的数据结构,数据结构直接关系到算法的选择和效率。 运算是由计算机来完成,这就要设计相应的插入、删除和修改的算法。也就是说,数据结构还需要给出每种结构类型所定义的各种运算的算法。数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机 中并由计算机程序处理的符号

10、的总称。数据元素是数据的基本单位,在计算机程序中通常作为一个整体考虑。一个数据元素由若干个数据项组成。数据项是 数据的不可分割的最小单位。有两类数据元素:一类是不可分割的原子型数据元 素,如:整数"5",字符"N”等;另一类是由多个款项构成的数据元素,其中每 个款项被称为一个数据项。例如描述一个学生的信息的数据元素可由下列6个数据项组成。其中的出生日期又可以由三个数据项:"年"、"月"和"日"组成,则称” 出生日期”为组合项,而其它不可分割的数据项为原子项。关键字指的是能识别 一个或多个数据元素的数据项。

11、若能起唯一识别作用,则称之为“主"关键字,否则称之为"次"关键字。数据对象是性质相同的数据元素的集合,是数据的一 个子集。数据对象可以是有限的,也可以是无限的。数据处理是指对数据进行查找、插入、删除、合并、排序、统计以及简单 计算等的操作过程。在早期,计算机主要用于科学和工程计算,进入八十年代 以后,计算机主要用于数据处理。据有关统计资料表明,现在计算机用于数据处 理的时间比例达到80%以上,随着时间的推移和计算机应用的进一步普及,计 算机用于数据处理的时间比例必将进一步增大。2 .课题分析学生成绩管理系统主要提供成绩查询, 方便管理的网上的信息查阅平台,学 生可

12、以通过该系统 查阅与自己相关信息,查看留言、提交留言。教师可以通过 成绩管理系统查阅学生成绩信息,教师信 息,查看教师留言、学生留言、提交 留言、留言的管理等相关操作。系统管理员可以实现以上的所有功能,还有对学生的添加、删除、修改、教师的添加、删除、修改,数据库的备份、数据库的 还原等 相关操作。根据开发要求,学生成绩管理系统主要应用于教育系统, 完 成对日常的教学、教务、教师以及学 生的计算机化的管理。开发学生成绩管理 系统可使学院教职员工减轻工作压力,比较系统地对教务、教学上的各项服务和信息进行管理,同时,可以减少劳动力的使用,加快查询速度、加强管理,以及 国家各部门关于信息化的步伐,使各

13、项管理更加规范化。目前,学校工作繁 杂、资料重多。目前,管 理信息系统已进入高校,但还未普及,而对于学生成 绩管理来说,目前还没有一套完整的、统一的系统。因此,开发一套适和大众的、 兼容性好的系统是很有必要的。3 .具体设计过程3.1. 设计思路要完成学生成绩信息的增删改查及统计,首先设计一下内存中存放数据信息 的格式。在本设计中采用动态内存空间分配的链表方法, 该方法为一个结构分配 内存空间。每一次分配一块空间可用来存放一个学生成绩的数据,可称之为一个 结点。有多少个学生就应该有多少结点。总控模块管理有三种不同的信息的处理模块,即管理员模块、教师模块、学 生模块,各模块的主要功能有:(1)系

14、统管理员进入学生成绩管理的主要功能:实现管理员用户的添加、修 改和删除,以及对教师添加、教师修改、教师删除、教师查询、学生添加、学生 修改、学生删除、学生查询等基本功能,并且参与开设课程、选择课程的管理, 安排教师的任课和学生的选课工作。(2)教师进入学生成绩管理系统的主要功能:各科教师登录系统后查询和修 改个人信息,修改自己的账号密码,查询自己的授课课程,实现对选修了自己课 程的学生的成绩进行查询、录入和修改,各科老师可以对自己学生选修课程结束 后给予分数,同时可以对自己所带课程的成绩优秀人数、及格人数、不及格人数的分布信息进行查询。(3)学生进入学生成绩管理系统的主要功能:每个学生登录后可

15、以查询和修 改个人信息、修改自己的账号密码,以及自己所选任课老师的个人信息, 同时在 课程结束后可以查询在校期间各个时间段选修课程的成绩与学分,以及对单科成绩和总分的排名查询。3.2. 程序设计结构图学生成绩系统中学生的成绩信息按照学号的顺序进行存放。根据任务要求,下面将系统功能进行详细设计划分,功能结构图 1如下:3.3. .函数实现说明在本实验中,使用链表存放学生成绩数据,设计一个功能类record来完成系统的各项功能。具体设计如下:class recordpublic:struct SCORE * InsertRecord(struct SCORE * h);struct SCORE *

16、 DeleteRecord(struct SCORE * h);struct SCORE * UpdateRecord(struct SCORE * h);/增加学生成绩信息/删除学生成绩信/修改学生成绩信void FindRecord(struct SCORE * h,int x,float s1,float s2);/根据某门课程的分数段查询学生成绩信息void FindRecord(struct SCORE * h,string x);成绩信息void FindRecord(struct SCORE * h,int x);成绩信息/根据学生姓名查询/根据学生学号查询void Statis

17、ticRecord(struct SCORE * h,int x);/统计某门课程的及格学生人数、及格率,并显示不及格学生信息void StacRecordFine(struct SCORE * h);绩全为优秀的学生人数,并显示全为优秀的学生信息void StacRecordDisq(struct SCORE * h);/统计三门课程成/统计三门课程成绩全部不及格的学生人数,并显示全部不及格的学生信息void PrintRecord(struct SCORE * h);绩信息/输出所有学生成void SaveRecordFile(struct SCORE * h);/保存学生成绩信息到文件s

18、truct SCORE * LoadRecordFile(struct SCORE * h);/从文件中加载学生成绩信息;4 .程序运行结果图i为初始界面,当我们选择运行程序时,便会出现如下图的界面。根据上面文字 的内容,我们可以了解系统的功能。并开始根据提示操作。如下图所示: 0扎195丫011小口日叱0明新建文件君口出均'14/一 口 K八除又件不存在.加载不成功!=欢迎进入学生成绩管理热充!©鲍 蒯醐鲍鲍鲍 艇鲍鲍腼加顿顾触电魄)胸靛 鲍祖蒯独鲍购蚓曲1、添加学生成绩信息2、删除学生成缔信息不修改学生成绩信息4,查询学生成绩信息K显示所有学生成措信息6、统计学生成绩信息

19、0,强出系统蒯施 蚓蒯醯瓢鲍艇©雕包随醯酶艇0蒯屯鲍屯蒯鲍清根据提示近择嶷作士激软指音半二图2为具体添加学生信息的操作:数用文件不存在.加载不或项1状迎进入学生成绩首逐条统!L陵加学知绩宿县2、出眸学珏清信曳八侪市学如简信号 九查询学士后崎信皂 5,显示所有学生加啧唁恩 品统计学生成缱信息1.退出系统试。触M剑0 &靖j鲸1。,如£白Q由诚心Q加。皿0 &耨i毓 语根据携示北悻提恬:1请布"拳士亨号;1请新入学上空名:讣话轲人学主英漕成绪:理请磁人学生的计身机及祜或睛:13 静扫盲三:魄证进入学生除管理系统图3为修改学生成绩信息: XAU sers

20、 ohn口 esktop停谑文件云Deb ugTLere"6、费计学生成绩x退出系统小蒯蛆®醯颤蒯醯颤舰艇醯的顾颤电酶魄 酗也碘酶像蜒触蜿 请根据提示选择操作工3请输入要修改记录的学生字号! 1请重新输入学生的数学成蒸:L00清重新输入学生英语成绩请重新输入学生的计算机基础戌绩:WQ* * * * * * * X*#*3C*平辛1.根据学号查询学生成亲信息2J艮括姓名查询学生成绩信息3 .根据教学分数查询学生成绩信意4 .根据英语成绩查询学生成绩信息5 ,根殍十算机基就成绩班学生成绩惊6 .逅回上筋目泉布中 率不米本布布 串布布寺 串布布本奉事守事审审方,新审帝弘东靠年卡奉

21、才.耳命事 * * * * *请根据提示选择噪作; 撒软折叠半:图4为删除学生成绩信息: "C;U q ersjo h nDe 与 kt 口u gV,exe "请输入学生字号耳请输入学生姓名:1请输入学生数学成绩:1请输入学生英语成绩:1请输入学生的计算机基刷成绩;1欢迎进入学生成绩管理系统!酗题腼艇鲍鲍鲍®魄觎®蛆蝴题 的血蛆电酶鲍翼 晨添加学生成绩1 人删除学生成绩1 3、修改学生成馈1自心良心自心r三d言4、查询学生成绩信息5、显示所有学生成绩信息6、统计学生成绩信息0、退出系统鲍颤雕始鲍魄飒艇触艇施鲍鲍蒯蛔鲍鲍碰®触触®鲍鲍魄

22、 ,根据提示选择操作:2请输入要删除记录的学生学号1Press any key ta continue微软拼音半:5 .软件使用说明学生成绩管理系统包括九个模块:输入学生资料,输出学生资料,学生姓名 按顺 序排列,添加学生资料,按姓名查找,删除该学生资料,查找并显示学生 资料,按姓名 查找,修改该学生资料,从文件中读入数据,储存学生资料并退 出系统。这九个模块既相互联系又相互独立。本系统根据学生成绩管理的需要, 而建立一个学生成绩管理系统,以方便对成绩的各项管理操作。本系统能对成绩进行输入和输出;能按姓名对学生进行排序,并显示学生资料、成绩等,不过 得以系统输入学生资料、成绩为前提;能添加学生

23、成绩资料;能根据学生的姓名 来查询该学生的成绩资料,并修改或是删除该学生信息;能够从文件中读取学生 信息,并且添加到系统中;能把对系统所进行的操作进行保存, 以及时更新系统 中的数据。6 .结论课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题, 锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程 .随 着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。 因 此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。回 顾起此次课程设计,至今我们仍感慨颇多,的确,自

24、从拿到题目到完成整个编程, 从理论到实践,在整整半个月的日子里,可以学到很多很多的东西,同时不仅可 以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来, 从理论中得出结论, 才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。 在设计 的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各 种各样的问题,同时在设计的过程中发现了自己的不足之处, 对一些前面学过的 知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针,链表通过这 次

25、课程设计之后,我们把前面所学过的知识又重新温故了一遍。我做的是黑白棋的课程设计,虽然是很简单的一个小的程序,但对我一个初 学者来说却是一个很大的困难。更加是第一次做课程设计,所以第一天下午在机 房做了一个下午却丝毫没有进展,最主要是不知从何开始,这个时候才知道上课 老师们不厌其烦的教导是多么的宝贵,这个时候才后悔上课的时候没有认真的听 讲。可是现在一切都晚了,还好时间还算是充裕,只好拿出书本重新复习一下。特别是结构体,绘制棋盘的部分,几乎是一片空白,不知从何着手。不过经 过几天的努力,大体上把课本上的知识点看了一遍,知识点也都基本是撑握了, 所以一下一步就是开始正式的编程序了。不过毕竟是个新手

26、,还是不知如何下手, 于是就在网上下了一篇类似的程序,经过仔细的研究,终于读懂了 C语言编程的 基本过程和方法。经过一波三折,终于开始正式编程。编程是一件很枯燥很无聊的事情,但是出于完成作业,得到学分的压力,还 必须强破自己坚持下去,按照老师所说的模块化思想,分部分的进行编写。而且 编程是一件高精度、模范化的事情,稍有疏乎都会影响全局,也可能因为某一处 的小的错误而导致整个程序的无法运行。所以认真仔细就是非常重要的了。开始的时候真的感觉编程是一件很无聊的事情, 不过当一个程序运行成功的 时候那种喜悦是无法言语的,那种成就感是无法比拟的。又经过几天的努力,终 于把程序完成了,尽管程序还是有很多错

27、误和漏洞, 不过还是很高兴的。无论如 何是自己的劳动成果,是自己经过努力得到的成绩,同时也是学习C语言的一次 实践作业,自己进步的证明。通过这次课程设计,使我对C语言有了更进一步的认识和了解,要想学好它 要重在实践,要通过不断的上机操作才能更好地学习它, 我也发现我的好多不足 之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有 对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉, 还 有对C语言中经常出现的错误也不了解,通过实践的学习,我认识到学好计算机 要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方 面的知识都要重在实践,所以后在学

28、习过程中,我会更加注视实践操作,使自己 便好地学好计算机。在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲 理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎 么样去克服心理上的不良情绪。因此在以后的生活和学习的过程中, 我一定会把 课程设计的精神带到生活中,不畏艰难,勇往直前!参考文献1谭浩强.C程序设计(第三版),清华大学出版社,2005.72梁凤兰 郑步芹 C+福序设计实践指导,东南大学出版社,2015.12附录:源代码# include <iostream># include <string># include <fs

29、tream> using namespace std;struct SCOREint num;string name;float math;float english;float computer;float scoresum; struct SCORE * next;struct SCORE * head;int studentSum=0;class record/定义存放学生成绩信息的结点/学号/姓名/数学成绩/英语成绩/就算计基础成绩/总成绩/next为指向下一结点的指针/指向链表头结点的指针/学生总人数/根据学生姓名查/根据学生学号/统计某门课程的/统计三门课程public:st

30、ruct SCORE * InsertRecord(struct SCORE * h);/增加学生成绩信息struct SCORE * DeleteRecord(struct SCORE * h); 删除学生成绩 信息struct SCORE * UpdateRecord(struct SCORE * h);修改学生成绩信息void FindRecord(struct SCORE * h,int x,float s1,float s2); 根据某门课程 的分数段查询学生成绩信息void FindRecord(struct SCORE * h,string x);询成绩信息void FindRe

31、cord(struct SCORE * h,int x);查询成绩信息void StatisticRecord(struct SCORE * h,int x);及格学生人数、及格率,并显示不及格学生信息void StacRecordFine(struct SCORE * h);成绩全为优秀的学生人数,并显示全为优秀的学生信息void StacRecordDisq(struct SCORE * h);/统计三门课程成绩全部不及格的学生人数,并显示全部不及格的学生信息void PrintRecord(struct SCORE * h);输出所有学生成绩信息void SaveRecordFile(s

32、truct SCORE * h);保存学生成绩信息到文件struct SCORE * LoadRecordFile(struct SCORE * h);从文件中加载学生成绩信息;struct SCORE * record:InsertRecord(struct SCORE * h) /定义指针变量pl、p2、p3/创建新的学生成绩结/从键盘接收输入数赋值/从键盘接收输入数赋值/从键盘接收输入数赋值/从键盘接收输入数赋值struct SCORE * p1,*p2,*p3;p3=new SCORE;点coutvv"n请输入学生学号:"; cin>>p3->nu

33、m;给结点的学号cout<v"n请输入学生姓名:"; cin>>p3->name;给结点的姓名cout<v"n请输入学生数学成绩 cin>>p3->math;给结点的数学成绩cout<v"n请输入学生英语成绩 cin>>p3->english;给结点的英语成绩coutvv”n请输入学生的计算机基础成绩:”;cin>>p3->computer;/从键盘接收输入数赋值给结点的计算机成绩p3->scoresum=p3->math+p3->english+

34、p3->computer;计算结点的总成绩 p3->next=NULL;/将要插入结点的指针域设置为空 if(h=NULL)当链表中没有结点时,将要加入的结点作为头结点h=p3;return h;p1=p2=h;while(p1!=NULL&&p3->num>p1->num)查找结点的学号大于要插入结点学号的第一个结点/指针pl表示符合条件的结 点的指针,指针p2是指针pl的前一个结点指针p2=p1;p1=p1->next;/插入位置为头结点前/插入位置为链表中间和/学生人数加1/返回链表的头结点if(p1=h)p3->next=p3;

35、h=p3;return h;else链表尾部p2->next=p3;p3->next=p1;studentSum+=1;return h;void record二PrintRecord(SCORE * h)if(h=NULL)cout<<"n抱歉,没有任何记录! n" return;cout<<"n学号t姓名t数学t英语t计算机t总分"<<endl;while(h)输出链表中每个结点的学生成绩信息cout<<h->num<<"t"<<h->

36、name<<"t"<<h->math<<"t"<<h->english<<"t"< <h->computer<<"t"<<h->scoresum<<endl;h=h->next;struct SCORE * record二DeleteRecord(struct SCORE * h)struct SCORE * p1,* p2;int num;if(h=NULL)/链表为空cout

37、<<"n抱歉,没有任何记录!"return h;p1=p2=h;针h赋值给指针pl和指针p2cout<<"n请输入要删除记录的学生学号"cin>>num;while(p1!=NULL&&p1->num!=num)等于要删除学生学号的第一个结点的结点的指针,指针p2是指针pl的前一个结点指针p2=p1;p1=p1->next;if(p1=NULL)的结点/将链表的头结点指/查找结点的学号/指针pl表示符合条件/没有找到符合要求cout<<"n抱歉啊,表中没有该记录哦!re

38、turn h;if(p1->num=num)studentSum-=1;if(p1=h)h=h->next ;elsep2->next=p1->next;delete p1;return h;/学生人数减1/删除的是头结点/删除的是非头结点/释放p1所指向的储存单struct SCORE * record:UpdateRecord(struct SCORE *h ) struct SCORE * p1;int num;if(h=NULL)/链表为空cout<<"n抱歉,没有任何记录!"return h;p1=h;/将链表的头结点指针h赋值

39、给指针plcout<<"n请输入要修改记录的学生学号!"cin>>num;/查找结点的学号/将p1指针移到下一个结/没有找到符合要求/找到符合要求的结while(p1!=NULL&&p1->num!=num)等于要修改学生学号的指针结点(p1=p1->next;点if(p1=NULL)的结点(cout<<"n抱歉啊,表中没有该记录哦!return h;if(p1->num=num)点,并修改学生的相关成绩(cout<<"n请重新输入学生的数学成绩cin>>p1-

40、>math ;cout<<"n请重新输入学生英语成绩:” cin>>p1->english ;cout<<"n请重新输入学生的计算机基础成绩:”;cin>>p1->computer;p1->scoresum=p1->math+p1->english+p1->computer;return h;void record二FindRecord(struct SCORE * h,int x,float s1,float s2)(if(h=NULL)/链表为空(cout<<"

41、;n抱歉,没有任何记录!"return;cout <<"n学号t姓名t数学t英语t计算机t总分"<<endl;while(h)(if(x=1)/查找数学成绩在某分数段的学生成绩信息if(h->math>=s1&&h->math<=s2)coutvvh->numvv"t"vvh->name<v"t"vvh->mathvv"t"vvh-> englishvv"t"v<h->comput

42、ervv"t"vvh->scoresumvvendl;if(x=2)/查找英语成绩在某分数段的学生成绩信息if(h->english>=s1&&h->englishv=s2)coutvvh->numvv"t"vvh->namevv"t"vvh->mathvv"t"vvh->english<<"t"<<h->computer<<"t"<<h->scores

43、um <<endl; if(x=3)/查找计算机成绩在某分数段的学生成绩信息if(h->computer>=s1&&h->english<=s2)cout<<h->num<<"t"<<h->name<<"t"<<h->math<<"t"<<h->english<<"t"<<h->computer<<"t&q

44、uot;<<h->scoresum <<endl; h=h->next;void record二FindRecord(struct SCORE * h,int num)根据学生学号查找学生成绩信息(struct SCORE * p1;if(h=NULL)/链表为空(cout<<"n抱歉,没有任何记录!"return;p1=h;/将链表的头结点指针h赋值给指针plwhile(p1!=NULL&&p1->num!=num)/查找节点的学号等于要查找学生学号的指针结点(p1=p1->next;if(p1=

45、NULL)/没有找到(cout<<"n抱歉,表中没有该记录哦!"return;if(p1->num=num)/找到并显示信息(cout<<"n学号t姓名t数学t英语t计算机t总分"<<endl;cout<<p1->num<<"t"<<p1->name<<"t"<<p1->math<<"t"<<p1->english<<"t&q

46、uot;<<p1->computer<<"t"<<p1->scoresum<<endl;void record:FindRecord(struct SCORE * h,string name)根据学生姓名查找学生成绩信息struct SCORE * p1; if(h=NULL)/链表为空cout<<"n抱歉,没有任何记录"return ;p1=h;while(p1!=NULL&&p1->name!=name)p1=p1->next;if(p1=NULL)c

47、out<<"n抱歉,表中没有该记录哦! return;if(p1->name=name)cout<<"n学号t姓名t数学t英语t计算机t总分"<<endl;cout<<p1->num<<"t"<<p1->name<<"t"<<p1->math<<"t"<<p1->english<<"t"<<p1->compu

48、ter<<"t"<<p1->scoresum<<endl;void record二StatisticRecord(struct SCORE*h,int x) struct SCORE*p=h;点指针h复制给指针pint count=0;count变量并赋初始值为0if(p=NULL)cout<<"n抱歉,没有任何记录!"return;while(p)if(x=1)的学生人数/将链表的头结/定义统计人数/链表为空/统计数学成绩及格if(p->math>=60) count+=1;if(x=2

49、)的学生人数/统计英语成绩及格if(p->english>=60)count+=1;if(x=3)/统计计算机成绩及格的学生人数if(p->computer>=60)count+=1;p=p->next;if(x=1)/显示数学成绩及格的学生人数及及格率cout<<"数学成绩及格学生人数为"cout<<count;cout<<",及格率为"cout<<count/(float)studentSum<<endl;if(count<studentSum)cout&

50、lt;<"n 学号t 姓名 t 数学"<<endl;elsecout<<"没有数学成绩不及格学生"<<endl;elseif(x=2)/显示英语成绩及格的学生人数及及格率cout<<”英语绩及格学生人数为"cout<<count;cout<<",及格率为"cout<<count/(float)studentSum<<endl;if(count<studentSum)cout<<"n 学号t 姓名t

51、 英语"<<endl;elsecout<<"没有英语成绩不及格的学生"<<endl;elseif(x=3)/显示计算机成绩及格的学生人数及及格率cout<<”计算机成绩及格的学生人数为"cout<<count;cout<<",及格率为"cout<<count/(float)studentSum<<endl;if(count<studentSum)cout<<"n学号t姓名t计算机"<<end

52、l;elsecout<<"没有计算机成绩不及格的学生”<<endl;)p=h;while(p)(if(x=1)/显示数学成绩不及格的学生信息if(p->math<60)cout<<p->num<<"t"<<p->name<<"t"<<p->math<<endl;if(x=2)/显示英语成绩不及格的学生信息if(p->english<60)cout<<p->num<<"t

53、"<<p->name<<"t"<<p->english<<endl;if(x=3)/显示计算机成绩不及格的学生信息if(p->computer<60)cout<<p->num<<"t"<<p->name<<"t"<<p->computer<<endl;p=p->next;)void record二StacRecordFine(struct SCORE*h)(s

54、truct SCORE *p=h;/将链表的头结点指针h赋值给指针平pint count=0;/定义统计人数count变量并赋初始值为0if(p=NULL)/链表为空(cout<<"n抱歉,没有任何记录!"return;)while(p)(if(p->math>=90&&p->english>=90&&p->computer>=90)/统计三门成绩全部为优秀的学生人数count+=1;p=p->next;将指针移到下一结点)cout<<"三门成绩全为优秀的学生人数为&

55、quot;cout<<count<<endl;cout<<"n学号t姓名t数学t英语t计算机t总分"<<endl;P=h;/将链表的头结点指针h赋值给指针pwhile(p)(if(p->math>=90&&p->english>=90&&p->computer>=90)/显示三门成绩全部为优秀的学生信息cout«p->num«,t,«p->name«,t"«p->math«

56、,t,«p-> english«"t"«p->computer«"t"«p->scoresum«endl;p=p->next;)void record:StacRecordDisq(struct SCORE*h)(struct SCORE*p=h;/将链表的头结点指针h赋值给指针pint count=0;/定义统计人数count变量并赋初值为0if(p=NULL)/链表为空(cout«"n抱歉,没有任何记录!return ;)while(p)(if(p

57、->math<60&&p->english<60&&p->computer<60)统计三门成绩全部为不及格的学生人数count+=1;p=p->next;)cout«"三门成绩全部不及格的学生信息为cout«count«endl;coutvv”全为不及格的学生信息为:"«endl;cout«"n学号t姓名t数学t英语t计算机t总分"vvendl;P=h;while(p)(if(p->math<60&&p-

58、>english<60&&p->computer<60)显示三门成绩全部为不及格的学生信息cout«p->num«"t"«p->name«"t"«p->math«"t"«p-> english«"t"«p->computer«"t"«p->scoresum«endl;p=p->next;)void

59、 record二SaveRecordFile(struct SCORE *h)/将链表中的数据写入文件struct SCORE *p;ofstream ofile;ofile.open("score.dat",ios二out);/以写的方式打开文件score.dat,若该文件不存在,则创建score.dat文件if(!ofile)/文件打开错误cout<<"n数据文件打开错误没有将数据写入文件!n”;return ;ofile<<"学号t姓名t数学t英语t计算机t总分";while(h) ofile<<end

60、l<<h->num<<"t"<<h->name<<"t"<<h->math<<"t"<<h->english<<"t"<<h->computer<<"t"<<h->scoresum;将当前结点的数据信息写入到文件中p=h;h=h->next;delete p; ofile.close();/关闭文件对象struct SCORE * record:LoadRecordFile(struct SCORE *h)ifstream ifile;/定义输入文件对象ifile.open("score.dat",ios二in);以读的方式打开文件score.datstruct SCORE *p,*q;if(! ifile)/文件打开错误cout<<"n数据文件不存在,加载不成功! n"return NULL;char s50;ifile.getline(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论