学生信息管理系统

更新时间:2024-06-14 17:22:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

XX工程大学 计算机科学与工程学院

综合设计报告

设计名称: 软件基础综合设计 设计题目: 小型学生成绩管理系统 学生学号: XXXXXXXXX 专业班级: 201X计算机科学与技术01班 学生姓名: XXXXXXXXX 学生成绩: 指导教师(职称): XXXXXXXXX 完成时间: 2015.4.7~2015. 5.15

说明:

1、报告中的第一、二、三项由指导教师在综合设计开始前填写并发给每个学生;四、五两项(中英文摘要)由学生在完成综合设计后填写。 2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩。 3、指导教师评语一栏由指导教师就学生在整个综合设计期间的表现、设计完成情况、报告的质量及答辩等方面,给出客观、全面的评价。 4、所有学生必须参加综合设计的答辩环节。凡不参加答辩者,其成绩一律按不及格处理。答辩小组成员应由2人及以上教师组成。

5、报告正文字数一般应不少于5000字,也可由指导教师根据本门综合设计的情况另行规定。

6、平时表现成绩低于6分的学生,其综合设计成绩按不及格处理。 7、此表格式为武汉工程大学计算机科学与工程学院提供的基本格式(适用于学院各类综合设计),各教研室可根据本门综合设计的特点及内容做适当的调整,并上报学院批准。

`

答辩记录表

学生姓名: XXX 学号: X 班级:计算机X 答辩地点: 答辩内容记录: 合计 各项分值 分值 答辩成绩 评分标准 在规定时间内能就所设计的内容进实际得分 合计得分 备注 10 行阐述,言简意明,重点突出,论点25 15 正确,条理清晰。 在规定时间内能准确、完整、流利地回答教师所提出的问题。 答辩小组成员(签字): 年 月 日

成绩评定表

X

类别 平时表现 设计完成情况 合计 各项分值 分值 10 10 评分标准 遵守学习纪律,表现良好,积极完成综合设计任务,无旷课、迟到、早退等情况。 按照要求完成设计内容,方案合理,功能完善,实际合计得分 得分 备注 20 设计工作量饱满,能运用专业知识和技能去发现30 10 与解决实际问题。 在设计过程中展现出了较强的学习能力、动手实践能力、团队协作能力和创新意识。 报告格式规范,表述清晰,章节内容组织恰当。 10 符号统一,图表完备,符合规范要求。参考文献数量在5篇以上,格式及引用符合要求。 报告内容翔实,结构严谨合理。课题背景介绍清 报告质量 35 15 楚,综述充分。设计与实现等主要过程完整,论述具体透彻。能运用所学专业知识对问题加以分析和求解。无抄袭现象。 设计报告对整个设计过程进行了全面总结,体现了收获,得出了有价值的结论或结果。 在规定时间内能就所设计的内容进行阐述,言简意明,重点突出,论点正确,条理清晰。 在规定时间内能准确、完整、流利地回答教师所提出的问题。 10 10 25 15 答辩情况 总评成绩 指导教师评语 指导教师: (签字) 日期: 年 月 日 一、综合设计目的、条件、任务和内容要求:

软件基础综合设计是计算机科学与技术(计算机工程方向)专业学生进行的第一次纯软件方面的综合设计,本设计主要考察学生能够从实际问题出发设计和选择合适的数据结构;能够熟练运用基本数据结构做工具来解决一些实际问题。 综合设计的条件:PIV及以上级别CPU计算机,windows xp及以上版本操作系统,Visual studio2005及以上版本集成开发环境。 一个完整的小型学生成绩管理系统应完成以下要求: (1)有10个小学生,每个学生学习数学和语文2门课程,从键盘输入学生的学号、姓名及成绩,计算每位学生的平均成绩,将数据存入文件stud.dat中。 (2)按如下格式输出链表中大于等于平均成绩的学生信息: 学号 姓名 数学 语文 平均成绩 (3)用类来实现本程序,并且用链表实现 (4)可在已有记录后面追加新的学生记录。 (5)可在原链表中删除指定条件(如学号、姓名等)的学生记录 (6)可以按学号、姓名查找要修改的记录内容。 (7)使用多文件编程和菜单操作 (8)要求对”<<”和”>>”运算符进行重载。 设计思想:设计一个菜单,通过菜单选择实现相应的操作,使用链表存储输入的原始信息。这样做的好处是可以随时增加内容和删除内容。为学生设计一个结构及使用这个结构作为数据成员的

武汉工程大学计算机科学与工程学院 综合设计报告

Abstract

Student achievement management system mainly provides query performance, convenient management platform for the online information is accessible, students can consult with their relevant information through this system.. Development of student achievement management system can make the college faculty reduce the pressure of work, systematically student achievement in teaching management. Main functions include to collect and input, student's result to the output of student achievement, to find and remove the student information module, modify the students information module, etc. Through the use of c + + to design a menu, through the menu choose to implement corresponding operation, using linked lists to store the original information input. Use class to implement and use the program list. Of course this system also has shortcomings, for users, using

Keywords:the program design; linked lists;class;C++;student achievement management system

- III -

武汉工程大学计算机科学与工程学院 综合设计报告

第一章 绪 论

1.1 课题设计背景

多年以来,学校对本校学生的信息管理都还沿用传统的方式,在这样的模式管理下,用人工来记录学生的信息效率低、保密性差,人力资源也存在着极大的浪费。此外,随着时间的推移,资料库将会产生大量的文件和数据堆积现象,这种现象对于数据的查找、更新以及维护都会带来很大的阻碍。随着现代素质教育的提高以及时代的快速发展,靠人工来管理学生信息已经不再适用于现代的教育管理模式。步入21世纪的我们,假如还是不能很好地利用网络和科技,又或是不会用较少的成本来动教育的信息化、科学化发展,那么像这样没有明确的发展方向,一定会偏离信息化、科技化的轨道,从而就可能会阻碍社会科技化、信息化的进步,甚至于整个国民经济的科技化发展。所以说,如何实施教育的信息化管理已经成了一个十分重要的且必须立刻解决的问题,而如何有效的管理学生信息是实现教育信息化管理的关键。

1.2课题设计目的

作为计算机应用的一部分,使用计算机对学生档案进行管理,有着手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生档案管理的效率,也是学校向科学化、正规化管理发展的必要条件,更是各个高等院校与世界接轨的重要条件。

利用C++语言编写学生成绩信息管理系统,主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、科学化、规范化和自动化,其主要任务是用计算机对学生各种信息进行日常管理,如查询、修改、增加、删除。进一步推进学生学籍管理规范化、电子化、控制辍学和提高义务教育水平[1]。

1.3课题设计意义

学生成绩信息系统针对学校学生信息的特点以及管理中实际需要而设计,能够有效地实现学生信息管理的信息化,减轻管理人员的工作负担,高效率、规范化地管理大量的学生信息,并避免人为操作的错误和不规范行为。

1.4应解决的主要问题

如何输出链表中大于等于平均成绩的学生信息 如何用类来实现本程序,并且用链表实现 如何在已有记录后面追加新的学生记录

- 1 -

武汉工程大学计算机科学与工程学院 综合设计报告

如何在原链表中删除指定条件(如学号、姓名等)的学生记录 如何按学号、姓名查找要修改的记录内容 如何使用多文件编程和菜单操作

如何对”<<”和”>>”运算符进行重载。

1.5应达到的技术要求

可以按如下格式输出链表中大于等于平均成绩的学生信息: 学号 姓名 数学 语文 平均成绩 用类来实现本程序,并且用链表实现 可在已有记录后面追加新的学生记录。

可在原链表中删除指定条件(如学号、姓名等)的学生记录 可以按学号、姓名查找要修改的记录内容

- 2 -

武汉工程大学计算机科学与工程学院 综合设计报告

第二章 需求分析与概述

2.1需求分析

学校工作总体规划由教务人员在学生信息管理系统中完成对运行教务处所需的基本数据的维护,包括这些信息的增加、修改及对各项信息的变动都将在这进行操作。新的学年,教务人员首先加入年级信息,然后编排班级,再对来校学生进行基本的信息录入,新生入学后由教务人员在学籍系统中完成新学生信息的维护。在每个学期开始,教务处根据班级的情况,以班为单位,为每个班级安排一个班主任及对此年级安排一个年级组长。并对各科老师进行安排。每举行一次考试后由任课老师对成绩进行录入。班主任对本班的成绩汇总。并进行排名,然后年级组长再进行汇总,并对本年级各科成绩及总成绩进行排名。教务处、年级组长、班主任及任课老师跟据实际情况对录入的成绩进行维护,各位同学对以上录入的信息可以跟据自己的需要进行适当的查询。

作为计算机应用的一部分,使用计算机对学生档案进行管理,有着手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生档案管理的效率,也是学校向科学化、正规化管理发展的必要条件,更是各个高等院校与世界接轨的重要条件。

2.2 问题定义

问题定义阶段必须回答的关键问题是“要解决的问题是什么?”。显然,这个问题解决整个软件开发周期中起着指导性作用。软件开发应该有这样一条鲜明的线索贯穿始终,否则我们的所有工作都是盲目的。现在我们应该明确问题定义阶段的主要任务:我们要建立一个学生信息管理系统,用计算机对学生各种信息进行日常管理,针对这些要求设计了学生信息管理系统本系统主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、规范化和自动化,其主要任务是用计算机对学生各种信息进行日常管理,如查询、修改、增加、删除,另外还考虑到学生选课,针对这些要求设计了学生信息管理系统[2]。

2.3可行性论述

本系统分为录入、查询、修改、删除等模块,操作人员可是即时录入、查询、修改、删除学生信息,通过建立此学生成绩信息管理系统有助于学生信息的统一收录与管理,满足了学生信息管理人员的工作需求,减轻了管理人员的工作压力。

(1)时机可行性:作为一个学校,就有一定的工作量存在,而学生信息,它的工作量可能是其它信息工作量的几倍,班级的增加、班级的查找、班级的修改;学生档案;

- 3 -

武汉工程大学计算机科学与工程学院 综合设计报告

课程管理;成绩管理;缴费管理;统计等等,每个信息的数据都在不断地变化着,如果采用人工的方式进行操作,那么,一天的工作量,足以让人觉得比较繁琐,吃不消。针对这样的情况,采用让数据的查询变得简单化,数据变的更让每个人都在任何时刻都可以了解到。

(2)操作可行性:本系统操作简单方便,只要懂得上网都能方便操作本系统,所以在操作上也是可行的。

(3)法律可行性:本系统拥有自主知识产权,没有使用任何违法的软件也没有交易任何非法的商品,所以在法律上是可行的。

(4)分析结果:从以上的分析可知,学生成绩管理系统的解决方案无论在技术,经济还是法律以及操作上都是可行的,且开发本系统具有一定的经济价值和实用价值。

2.4数据成员需求分析

学生成绩信息管理的步骤是收录学生信息,包括学号、姓名、数学成绩、语文成绩以及平均成绩,我们通过分析,定义出这五个数据成员[3]。如表2-1所示。

表2-1数据成员- 名称 No Name Math Chinese Average 属性 数据成员 数据成员 数据成员 数据成员 数据成员 说明 说明学生学号 说明学生姓名 说明学生数学成绩 说明学生语文成绩 说明学生平均成绩

2.5功能需求分析

学生成绩信息管理系统操作功能需要包括(具体如图2.1所示): (1)显示系统菜单; (2)学生成绩信息录入; (3)学生成绩信息显示浏览;

(4)按学号和按姓名进行学生成绩查询; (5)按学号和按姓名进行学生成绩删除; (6)修改指定的学生成绩信息; (7)输出全部学生成绩信息; (8)计算所有学生的平均成绩;

- 4 -

武汉工程大学计算机科学与工程学院 综合设计报告

(9)将数据保存到外部文件中;

学生成绩管理系统 学 生 成 绩 录 入 模 块 学 生 成 绩 查 询 模 块 学 生 成 绩 删 除 模 块 学 生 成 绩 修 改 模 块 学 生 成 绩 输 出 模 块 学 生 成 绩 读 取 模 块 学 生 成 绩 保 存 模 块

图2.1学生成绩管理系统模块-

线性表的链接存储结构称为单链表,单链表使用一组任意的存储单元存放线性表的元素,这组存储单元可以连续也可以不连续,甚至可以零散分布在内存中的任意位置。为了正确表示元素之间逻辑关系,每个存储单元在存储数据元素的同时,还必须存储其后继元素所在地址信息,这个地址信息称为指针,这两部分组成了数据元素的存储映像,称为结点[4],结点结构如图2.2所示。

Data next

- 图2.2单链表的结点构造-

- 5 -

武汉工程大学计算机科学与工程学院 综合设计报告

设p是一个指针变量,则p的值是一个指针。设指针p指向某个结点,则该结点用*p表示,在单链表中,结点p由两个域组成:存放数据元素的部分和存放后继结点地址的指针部分,分别用p->data和p->next来标识,p->next指向结点n+1[5].

- 6 -

武汉工程大学计算机科学与工程学院 综合设计报告

第三章 总体设计及论述

3.1 结构设计框架

根据前一章的需求分析,学生成绩信息系统需要实现学生成绩的录入、查询、删除、修改、输出、读取及保存功能[6],所以设计此程序时需要同时顾及这几个方面,把

整个学生成绩信息管理系统具体分为七大模块,具体如图3.1所示。

学生成绩管理系统 学生成绩录入 学生成绩查询 学生成绩删除 学生成绩修改 学生成绩输出 学生成绩读取 学生成绩保存

图3.1学生成绩管理系统模块-

3.2功能需求分析

学生成绩信息管理系统操作功能需要包括: (2)显示系统菜单; (2)学生成绩信息录入; (3)学生成绩信息显示浏览;

(4)按学号和按姓名进行学生成绩查询; (5)按学号和按姓名进行学生成绩删除; (6)修改指定的学生成绩信息; (7)输出全部学生成绩信息;

- 7 -

武汉工程大学计算机科学与工程学院 综合设计报告

(8)计算所有学生的平均成绩;

3.3 模块设计

(1)输入学生资料模块

主要功能用来对学生的成绩进行收集和输入。在学生信息保存在系统中的前提下, 成绩录入需要输入学生资料,比如学号,姓名,数学,语文,平均成绩。在准确输入学生资料后,就可以对该学生的各科成绩进行录入[7]。 (2)输出学生资料模块

主要功能用来对学生的成绩进行输出。在系统已经录入了学生资料成绩的前提下,使用该功能可以显示所有学生的信息,资料等等。具体包括学生的班级,学号,姓名和各科成绩。在查看学生的资料,成绩各方面的信息后,按任意键就可以返回到主菜单。 (3)按学生姓名进行显示模块

主要功能是用来对学生的资料按姓名进行显示。在系统保存学生资料。 (4)添加学生资料模块

主要功能是用来添加学生资料,成绩。如果系统有保存学生资料的情况下,想录入学生成绩的话,就不用添加学生资料这模块。如果系统没有保存该学生信息的话,就要使用此模块,在成功添加学生资料后,就可以对该学生进行其他的操作[8]。 (5)按姓名查找,删除该学生资料模块

主要功能是用来删除学生资料。在系统保存学生资料的前提下,想删除某学生的资料,可以输入学生姓名或学号,系统查找该学生资料后,就可以删除了。由于学生辍学,毕业等原因,及时对系统进行更新,删除一些没用的信息,可以使系统更加优化 (6)查找并显示学生资料模块

主要功能是用来查找学生资料。在系统保存了某学生资料的前提下,想要查找该学生资料,可以输入该学生姓名或学号,这样系统就会显示该学生资料和各科成绩等信息 (7)按姓名查找,修改学生资料模块

主要功能是用来修改学生资料。在系统保存了某学生资料的前提下,想要查找该学生资料,可以输入该学生姓名,系统就会显示该学生资料和各科成绩等信息,这样就可以修改该学生的资料,成绩等信息。 (8)储存学生资料并退出系统模块

- 8 -

武汉工程大学计算机科学与工程学院 综合设计报告

主要功能是用来储存学生资料。在对系统进行一系列操作,比如添加、删除、修改学生资料后,对系统的最新操作进行保存,及时更新系统,方便下一次的操作[9]。

3.4成绩管理系统运行流程示意图

对于一个学生成绩管理系统来说,首先需要执行的功能必然是数据的录入,录入保存之后,我们可以通过系统对学生信息进行具体的查询功能、修改功能、删除功能,执行完这些操作后我们可以选择保存或者不保存已修改的数据,所有操作完成后我们需要实现一个退出系统的功能。关于学生成绩信息管理系统的具体运行流程图[10],如图3.2所示。

查询 不保存 N 数据保存 Y 修改 进入系统 数据录入 删除 退出系统 输出 图3.2成绩管理系统运行流程示意图-

3.5 关于类的分析

学生成绩信息管理的步骤是收录学生信息,包括学号、姓名、数学成绩、语文成绩以及平均成绩,我们通过分析,定义出这五个数据成员[11]。如表3-1所示。

表3-1类的分析 名称 属性 说明 No 数据成员 说明学生学号 Name 数据成员 说明学生姓名 Math 数据成员 说明学生数学成绩 Chinese 数据成员 说明学生语文成绩 Average 数据成员 说明学生平均成绩

- 9 -

武汉工程大学计算机科学与工程学院 综合设计报告

- 10 -

武汉工程大学计算机科学与工程学院 综合设计报告

第四章 详细设计及分析

4.1录入模块

4.1.1功能

主要功能用来对学生的成绩进行收集和输入,在学生信息保存在系统中的前提下。 成绩录入需要输入学生资料,比如学号,姓名,数学,语文,平均成绩。在准确输入学生资料后,就可以对该学生的各科成绩进行录入。增加以后,全局变量n加1,如果系统中存在需要增加的学号,则输出已存在学生信息,全局变量不变,返回全局指针,调用输出函数显示系统中存在的学生信息,操作完成后,系统会提示是否继续进行操作

[12]

4.1.2程序代码

void Function::Add() {

char name[20]; double no; Class score; char choose;

Student *f1, *p, *f2,*f3; system(\ f1 = Student_First; f2 = Student_First->next; f3 = Student_First->next; while (f1->next) do {

p = new Student;

cout << \请输入您要添加的学生成绩信息:\cout << \请输入学生姓名:\cin >> name; while (f2) {

- 11 -

f1 = f1->next;

武汉工程大学计算机科学与工程学院 综合设计报告

}

}

if (strcmp(f2->GetName(), name) == 0)//比较两个字符串 { }

f2 = f2->next;

cout << \该学生已存在,请确定姓名!\\n\\n\cout << \请输入姓名:\cin >> name; break;

cout << \请输入学号:\cin >> no; { }

cout << \请输入语文成绩:\cin >> score.Chinese; cout << \请输入数学成绩:\cin >> score.Math; p->Set(name, no, score); f1->next = p; p->next = NULL; f1 = f1->next;

cout << \是否继续输入信息?(Y\\\\N) \cin >> choose;

if (f3->GetNo()==no) { }

f3 = f3->next;

cout << \该学生已存在,请确定学号!\\n\\n\cout << \请输入学号:\cin >>no; break; while (f3)

- 12 -

武汉工程大学计算机科学与工程学院 综合设计报告

4.1.3运行结果截图

图4.1菜单界面

图4.2成绩录入

- 13 -

武汉工程大学计算机科学与工程学院 综合设计报告

4.2查询模块

4.2.1功能

主要功能是用来查找学生资料。在系统保存了某学生资料的前提下,想要查找该学生资料,可以输入该学生姓名或学号,这样系统就会显示该学生资料和各科成绩等信息。

4.2.2程序代码

void Function::Search() {

double flag(0); char choose; char t1[20]; double t2; system(\

Student *temp = Student_First->next; do {

cout << \输入查询方式:\\n1.按姓名查询\\n2.按学号查询\\n\cin >> choose; if (choose == '1') {

cout << \请输入您要查询的姓名:\cin >> t1; while (temp) { }

if (flag == 0) {

- 14 -

if (strcmp(t1, temp->GetName()) == 0) { }

temp = temp->next;

flag = 1; break;

cout << \无该学生的信息\\n\

else

武汉工程大学计算机科学与工程学院 综合设计报告

}

}

cout << \姓名\\t学号\\t平均成绩\\t语文成绩\\t数学成绩\\n\temp->Out();

break;

else if (choose == '2') { }

cout << \请输入您要查询的学号\cin >> t2; while (temp) { }

if (flag == 0) { } break;

cout << \姓名\\t学号\\t平均成绩\\t语文成绩\\t数学成绩\\n\temp->Out();

cout << \无该学生的信息\\n\else

if (t2 == temp->GetNo()) { }

temp = temp->next;

flag = 1; break;

4.2.3运行结果截图

-图4.3按姓名查询学生信息-

- 15 -

武汉工程大学计算机科学与工程学院 综合设计报告

图4.4按学号查询学生信息

4.3删除模块

4.3.1功能

主要功能是用来删除学生资料。在系统保存学生资料的前提下,想删除某学生的资料,可以输入学生姓名或学号,系统查找该学生资料后,就可以删除了。由于学生辍学,毕业等原因,及时对系统进行更新,删除一些没用的信息,可以使系统更加优化,首先判断系统中是否存在学生信息,如果存在且没有找到学生的信息,则输出没有此学生信息,否则删除学生信息,删除以后,变量n减1,返回全局指针,函数中会提示是否继续删除学生信息。

4.3.2程序代码

void Function::Delete() {

char name[20]; double no; char choose; Student *p, *q; system(\ p = Student_First; cout << \请输入姓名:\ cin >> name;

cout << \输入学号:\

- 16 -

武汉工程大学计算机科学与工程学院 综合设计报告

cin >> no; while (p) { } Save();

cout << \返回主菜单\\n2.继续删除\ cin >> choose; }

q = p->next;

if (strcmp(q->GetName(), name) == 0 && q->GetNo() == no) { }

p = p->next;

cout << \姓名\\t学号\\t平均成绩\\t语文成绩\\t数学成绩\\n\q->Out();

cout << \是否删除(Y/N)\cin >> choose;

if (choose == 'y' || choose == 'Y') { } break;

p->next = q->next; delete q;

cout << \删除成功:\\n\

4.3.3运行结果截图

图4.5删除学生信息

- 17 -

武汉工程大学计算机科学与工程学院 综合设计报告

图4.6删除函数

4.4修改模块

4.4.1功能

主要功能是用来修改学生资料。在系统保存了某学生资料的前提下,想要查找该学生资料,可以输入该学生姓名,系统就会显示该学生资料和各科成绩等信息,这样就可以修改该学生的资料,成绩等信息。

4.4.2程序代码

void Function::Modify() {

char choose, name[20]; Student *temp, *p; double no; Class score; system(\

temp = p = Student_First;

cout << \请输入您要修改的学生姓名:\ cin >> name; while (temp) {

if (strcmp(temp->GetName(), name) == 0)

- 18 -

武汉工程大学计算机科学与工程学院 综合设计报告

}

{ }

temp = temp->next;

cout << \姓名\\t学号\\t平均成绩\\t语文成绩\\t数学成绩\\n\temp->Out();

cout << \请输入姓名:\cin >> name;

cout << \请输入学号:\cin >> no;

cout << \请输入语文成绩:\cin >> score.Chinese; cout << \请输入数学成绩:\cin >> score.Math;

temp->Set(name, no, score); break;

Save();

cout << \修改成功!\

cout << \返回主菜单\\n2.继续修改\ cin >> choose;

4.4.3运行结果截图

图4.7修改学生成绩

- 19 -

武汉工程大学计算机科学与工程学院 综合设计报告

4.5显示全部学生成绩信息

4.5.1功能

通过传递输入函数的指针来调用此函数,主要功能用来对学生的成绩进行输出,函数中调用了保存信息的函数。在系统已经录入了学生成绩信息的前提下,使用该功能可以显示所有学生的信息,具体包括学生的学号,姓名,各科成绩和平均成绩。在查看学生的资料,成绩各方面的信息后,系统会提示是否进行操作。

4.5.2程序代码

void Function::Show() {double sum=0; int n=0; char choose; Student *temp; system(\

temp = Student_First->next; if (!temp) { } else {

cout << \姓名\\t学号\\t平均成绩\\t语文成绩\\t数学成绩\\t\\n\while (temp != NULL) {

temp->Out(); temp = temp->next;

- 20 -

cout << \文件无数据\\n\\n \cout << \返回主菜单\cin >> choose; while (choose != '1') { } Menu();

cout << \返回主菜单\cin >> choose;

武汉工程大学计算机科学与工程学院 综合设计报告

}

}

4.5.3运行结果截图

图4.8显示全部学生信息

4.6高于平均分学生的信息

4.6.1功能

主要功能是用来计算所有学生平均成绩,并选取高于平均成绩的学生的信息进行显示

4.6.2程序代码

void Function::Show() {double sum=0; int n=0; char choose; Student *temp; system(\

temp = Student_First->next; if (!temp) {

cout << \文件无数据\\n\\n \cout << \返回主菜单\cin >> choose; while (choose != '1')

- 21 -

武汉工程大学计算机科学与工程学院 综合设计报告

}

{ } Menu();

cout << \返回主菜单\cin >> choose;

else { }

cout << \姓名\\t学号\\t平均成绩\\t语文成绩\\t数学成绩\\t\\n\while (temp != NULL) { }

temp->Out(); temp = temp->next;

4.6.3运行结果截图

图4.9输出高于平均分学生成绩

- 22 -

武汉工程大学计算机科学与工程学院 综合设计报告

4.7 成员函数

实现系统中功能的函数,有菜单选择函数,菜单实现函数,输入学生成绩,输出学生成绩,添加学生成绩,按姓名或学号查找成绩,按姓名或学号删除该学生成绩,按姓名或学号修改学生成绩,输出大于等于平均成绩的学生信息,保存信息到文件中,从文件中读入成绩。

void display(student *); //输出带头结点的单链表中的每个学生结点信息 void Save(student *);

//将带头结点的单链表信息存储到文件中

student *load(student *); //将原始文件中的信息放入内存生成带头结点的单链表 void Select(); //菜单选择函数作为私有数据成员

void DeleteStudent(student *); //删除按照学号或者姓名指定条件的学生结点 void find_record(student *); //查找学生信息 void Add(student *); //录入学生信息

void modify(student *); //按学号,姓名查找修改学生信息

- 23 -

武汉工程大学计算机科学与工程学院 综合设计报告

总 结

紧张而又充实的综合设计即将过去,在这几个星期里,通过做综合设计,自己的感触甚多,收获也很多.发现自己对课本知识的认知提升到了一个新的层次,就好像站在一个山峰上俯瞰,可以比较系统地,全面的理解课本上的内容.过去觉得理解得模模糊糊的知识点,现在基本上都可以掌握了.这又一次验证了实践能够反作用于认识,只有自己真真正正地动手去做了,将自己学到的,或者是只学到一半半的课本知识应用到实际中去,当遇到问题时,再细心地,耐心地慢慢去推敲,去查找错误,看看是哪一步错了,错在哪里.找出问题后再翻翻课本,看课本还解决不了问题就问同学问老师,直到解决问题为止.这时,当你回头看时,你会突然发现自己已经学到了很多东西,有课本上之前不明白的知识点,也有在程序设计过程中遇到问题时该如何去面对,如何去解决的方法.其实,我发现导致程序出现问题错误或运行不了,很大部分原因归结于对课本知识点的不熟悉或理解错误.这些要是不亲自动手去做,光看课本是没有多大作用的.当我通过自己的努力或老师跟同学的帮助下,解决了一个问题,才发现原来这个知识点应该这样用.

通过这次课程设计,我体会最深的就是,不能只看课本,要经常动手去练习一下,看课本加上做练习,效果非常好,可以做到事半功倍.这样知识点记得会比较牢固一些.通过练习还可以培养自己的设计思维,让自己以后设计程序时思维会活跃一些,转得快一些.

在这课程设计接近尾声时,我总结了一下自己在设计时经常犯的一些错误,诸如for循环语句,括号里面的条件之间应该是用分号分开的,而我经常会忘记,都是用逗号来分开的,这导致程序运行不了,自己检查了一遍又一遍还是发现不了问题的所在,后来叫同学帮忙看了一下,才发现问题出现在哪里.就这么简单的,基本的一个错误,常常会令自己花上半个小时或者更长的时间,都无法找出来.类似的错误还有,就是经常会在语句后面忘了加上分号.但现在这些问题不会再出现了,经过这次的实践,我懂得了很多,很多语句用起来都比较熟悉了,更重要的是积累了一些经验,将来可以少走些弯路,不再像刚开始的时候,像一个迷路羔羊一样到处乱窜.

虽然这次的课程设计即将结束,设计的系统也可以运行了,但我知道它现在还只是个雏形,还不够完善,还存在不足之处,还需要我的进一步改善.今后我会更加努力,学习更多的知识来完善它,把它的功能做大,做强!

- 24 -

武汉工程大学计算机科学与工程学院 综合设计报告

致 谢

每一次学习的过程都是一次从未知到已知的探索体验,从开始接到这个设计课题的茫然无措,到现在,设计已经基本完成,有汗水,有劳累,但尤为重要的,便是老师的悉心指导,从一开始,邹君老师便为我们悉心讲解一系列关于这个课题的各类型问题,一步步指导我们如何操作,如何执行,当我们出现具体问题时也是邹君老师及时出现,指导我们订正和改善程序上的一系列错误。其次感谢我的舍友和同学们在此次课程设计中给予我帮助,帮我解答了一些我不懂的问题。此次课程设计综合性很强,毕竟是第一次,在设计过程中遇到了各种各样的问题,同时发现了自己的不足之处,对学过的知识理解不透彻,通过这次设计,巩固了久知识,比如说结构体,指针,链表等等,同时还收获了新知识。所以要感谢邹君老师对我们的重视,老师面临巨大的工作压力,缺乏休息却仍然认真负责,对我们严格要求,认真辅导,使我们能够顺利的有效的完成大学中的第一次课程设计。通过本次课程设计在对我们所学知识检验的同时,提高了我们的编程能力,使我们自身的动手能力得到了很大的提高,为以后的毕业设计及以后的工作打下了坚实的基础。

同时,在这次设计中,我学会了耐心,在未来的道路上我们会遇到各式各样的课题,各式各样的“硬骨头”,我们必须有足够的耐心,细致分析,耐心剖析,查阅资料,去努力解决相关问题。同时,对一个程序开发者来说,信心也是尤为重要的。我们要相信自己能够解决相关问题,碰到困难坚决不放弃,不气馁,相信自己一定能够编出完美的程序来。

最后,要感谢王君玮同学在最后的论文编写中,关于论文的格式向我进行了细致的讲解。也让我认识到学会编写一篇格式严谨的论文的重要性。

总之,感谢所有在这次课程设计中帮助过我的人,谢谢你们。

- 25 -

武汉工程大学计算机科学与工程学院 综合设计报告

参考文献

[1] 张俊,张彦铎. C++面向对象程序设计(第二版). 北京:清华大学出版社[M].2012 [2] 李春葆. 数据结构教程(第四版).北京:清华大学出版社[M].2014

[3] 李春葆. 数据结构教程上机实验指导(第四版)[M].北京:清华大学出版社.2014 [4] 谭火彬.1 UML 2 面向对象分析与设计[M]. 北京:清华大学出版社.2013.5 [5] 金国平. 数据结构 (C++描述)[M]. 北京:清华大学出版社.2012 [6] 郑莉,李宁. C++教程[M]. 北京:人民邮电出版社.2013

[7] 张俊. C++面向对象程序设计习题与实验指导 (第二版)[M]. 北京:清华大学出版社.2012

[8] 狄国华. 数据结构(C语言描述)[M]. 北京:高等教育出版社.2012 [9] 周启生,姬涛.计算机程序设计基础[M]. 北京:科学出版社

[10]马希荣,王洪权,姜丽芬. C++程序教程[M]. 北京:电子工业出版社,2010 [11]王挺,周会平,贾丽丽. C++程序设计[M]. 北京:清华大学出版社.2010 [12]邓振杰. C++程序设计[M]. 北京:清华大学出版社.2010

- 26 -

武汉工程大学计算机科学与工程学院 综合设计报告

附录代码

#include #include #include #include #include using namespace std; struct Class {

double Chinese; double Math; double Average; };

class Student{ public:

Student();

void Ofile(ofstream &of); void Infile(ifstream &f); void Out();

void Set(char *name, double no, Class score); char *GetName(); double GetNo();

double GetAverage(); Student *next; public:

char Name[20]; double No;

double Average; Class Score; };

Student::Student() :next(0){}

char *Student::GetName(){ return Name; } double Student::GetNo(){ return No; }

double Student::GetAverage(){return Average;}

void Student::Set(char *name, double no, Class score) {

strcpy(Name, name); No = no;

Score = score;

Average = (Score.Chinese + Score.Math) / 2;

- 27 -

武汉工程大学计算机科学与工程学院 综合设计报告

}

void Student::Infile(ifstream &f) {

f >> Name >> No >> Average >> Score.Chinese >> Score.Math; //将数据输入到文件 把磁盘文件的内容读取到内存中 }

void Student::Ofile(ofstream &of) {

of << \\从文件中提取数据 把内存中的数据保存到磁盘文件 }

void Student::Out() {

cout << Name << \\}

class Function //功能类 {

public:

Function(); //构造函数 ~Function(); //析构函数 void Menu(); //菜单函数

void Add(); //录入学生成绩函数 void Search(); //查询学生成绩函数 void Delete(); //删除学生成绩函数 void Modify(); //修改学生成绩函数 void Show();

void AverageTotle(); //显示学生成绩函数 public:

Student *Student_First;

void Read(); //读取学生成绩函数

void Save(); //保存学生成绩信息函数 };

Function::Function() {

Student_First = new Student; Read(); }

Function::~Function() {

delete Student_First; }

void Function::Add() //录入学生成绩信息函数

- 28 -

武汉工程大学计算机科学与工程学院 综合设计报告

{

char name[20]; double no; Class score; char choose;

Student *f1, *p, *f2,*f3; system(\

f1 = Student_First;

f2 = Student_First->next; f3 = Student_First->next; while (f1->next) f1 = f1->next; do {

p = new Student;

cout << \请输入您要添加的学生成绩信息:\ cout << \请输入学生姓名:\ cin >> name; while (f2) {

if (strcmp(f2->GetName(), name) == 0)//比较两个字符串 {

cout << \该学生已存在,请确定姓名!\\n\\n\ cout << \请输入姓名:\ cin >> name; break; }

f2 = f2->next; }

cout << \请输入学号:\ cin >> no; while (f3) {

if (f3->GetNo()==no) {

cout << \该学生已存在,请确定学号!\\n\\n\ cout << \请输入学号:\ cin >>no; break; }

f3 = f3->next; }

- 29 -

本文来源:https://www.bwwdw.com/article/3ky3.html

Top