logo资料库

学生成绩管理系统实验报告.doc

第1页 / 共30页
第2页 / 共30页
第3页 / 共30页
第4页 / 共30页
第5页 / 共30页
第6页 / 共30页
第7页 / 共30页
第8页 / 共30页
资料共30页,剩余部分请下载后查看
南华大学 计 算 机 科 学 与 技 术 学 院 实 训 报 告 ( 2017 ~ 2018 学年 夏季 学期 ) 高级语言程序设计实训 学生成绩管理系统 课程名称 实验名称 组长姓名 LFY 学号 201604408 组员姓名 YY 组员姓名 ZMJ 学号 201604408 学号 201604408 专业 计算机类 班级 八班 地点 八教 教师 CX
南华大学计算机科学与技术学院 实训报告 1.实验目的及要求 编程环境:codeblocks 硬件:普通笔记本电脑 一 实验目的: 1、要求熟练掌握 C++语言的基本知识和技能; 2、基本掌握面向对象程序设计的基本思路和方法; 3、能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。 4、运用面向对象的程序设计建造出一个学生成绩管理系统 5、通过实验实践设计、巩固自己继承与派生、虚函数等的应用以及相关知识的加强、 形成以面向对象的思维方式、学会分析各类成员以及他们之间的关系,为未来的程序设计打 下基础。 二 实验要求: 1、设计出一个学生成绩管理系统。 2、运用面向对象的方式,应用到继承、抽象类、虚函数、虚基类、多态和文件的输入/ 输出等内容。 3、学生类为基类(抽象类)其中包含学生的一些基本信息,学生类派生出小学生类 增 添了 3 门成绩信息,小学生类派生出中学生类,又增添了 2 门成绩,学生类派生出大学生类, 由于大学生的成绩科目计算方法更为复杂,大学生类也不同与前面的中小学生类,更为复杂 化。 4、编写成绩管理系统类,对前面的几个学生对象进行操作,实现一定的管理功能(例 如:读取,添加,查询,显示,排序,保存,删除,编辑等功能) 5、能力足够,可以另外添加一些功能。 2.实验步骤 一 分析实验要求: 看清题目意思,弄明白各个实验要求,避免南辕北辙,通过分析可以明白题目的一些基 本要求。 二 分析类的层次关系: 既然是面向对象的程序设计,那就必须少不了对类的分析,题目中涉及到几个类,他们 之间的关系是什么,这都是实现实验之前需要分析的内容。 三 思考实现方法: 分析完了类的层次关系之后,就要考虑怎么来构建和实现他们关系以及怎么实现相关的 成员函数。是用组合类还是继承和派生来完成?是用对象数组还是对象链表的实现相应的存 储?是用基本的冒泡排序还是其他的各种排序方法?这都是需要在这一阶段考虑清楚的内 容。 四 画流程图和 UML 类图: 通过画流程图和 UML 类图,使得之前的分析更简单明了,更贴近与代码,这样一画,代 码的实现就更加有依据了,不是凭空瞎写了。 五 分工编写实验代码: 根据队员的代码习惯和风格,分工合作,各个队员负责相应的类或分开负责接口的设计 和函数实现的设计,分工写代码使得效率更高并且加强了同学之间的配合思想的形成。 六 代码拼凑和调试: 最后将各队员的代码组合起来进行调试分析,看看有没有问题?,问题出在哪?需不需 要改进及优化?这些都是在这一步需要解决的问题。
南华大学计算机科学与技术学院 实训报告 七 实验报告的撰写和总结分析自我评价: 根据实验,发现自己的不足,哪里没学好,哪里不会用,促进自己的学习和成长,总结 分析本次实验的优缺点,哪里处理的好,哪里还有待改进。 3. 实验内容 一 需求分析: 1、学生类(抽象类)要求包含一些基本的学生信息。 2、小学生类(由学生类派生而来)在学生类的基础之上再增添了 3 门课程的成绩信息。 3、中学生类(由小学生类派生而来)在小学生类的基础之上再增添了 2 门课程的成绩 信息。 4、大学生类(由学生类派生而来)在学生类的基础之上再增添了许多门课程的成绩信 息。 5、学生成绩管理类,可以对各种学生类对象进行相关操作(操作包括:读取信息,显 示信息,查询信息,编辑信息,删除学生,增添学生,成绩排序等) 6、应用到继承、抽象类、虚函数、虚基类、多态和文件的输入/输出等内容。 二 概要设计: 1、设计思想: 此实验明显用一个类是解决不了,要么就用类的嵌套,或者组合类,我们选择了类的继 承与派生以及利用 friend 类来实现相应的功能。我们用五个类解决了这个题目。 定义出学生类(抽象基类)、小学生类、中学生类、大学生类。 其中类的层次关系为:学生类为基类(抽象类)学生类派生出小学生类,小学生派生出 中学生类,学生类派生出大学生类(大学生类的实现和中小学生类不同,相比更为复杂)。 他们的友元类都为 studentmanagementsystem 类,studentmanagementsystem 类里面保 存几个指针,开创 3 个双向链表,一个是小学生对象双向链表、一个中学生对象双向链表、 一个大学生对象双向链表。 studentmanagementsystem 类里面再定义相应的函数实现相应的操作功能。 2、实现方法: 我们将学生的基本信息和成绩信息分开处理,分开用不同的文件进行读取相应的 信息数据。 学生的那些基本数据信息全部用 student 类的保护(方便继承)成员数据存下来。 至于成绩信息,我们分学生类的不同而实现不同。 由于小学生类和中学生类的科目固定,我直接开固定的科目成绩存了下来。 大学生的成绩信息相对复杂些,考虑到大学生每个人的科目不同,有些科目有实验成绩、 平时成绩、卷面成绩、综合成绩等。那么我在大学生类里面内嵌一个结构体链表来存相应的 成绩数据。运用结构体链表,实现了不同人科目可以不同,学分不同。 至于那些操作功能用 studentmanagementsystem 类的成员函数来实现解决。学生对象内 存几乎都是动态申请的内存,解决办法---我在 studentmanagementsystem 类里面保存了用 于创建双向链表的相应指针,再用指针动态申请一个小学生对象的双向链表、一个中学生对 象的双向链表、一个大学生对象的双向链表,这样排序就只要排一次就可以升序和降序输出 了,不过构建和排序过程中更改指针的指向十分烧脑,很容易弄错。其他的查询,删除都还 好办。只需要遍历链表,以及更改相应的指针指向就 ok 了。
南华大学计算机科学与技术学院 实训报告 3、系统中主要模块及各模块间的关系的描述: 其中类的层次关系为:学生类为基类(抽象类)学生类派生出小学生类,小学生派生出 中学生类,学生类派生出大学生类(大学生类的实现和中小学生类不同,相比更为复杂)。 他们的友元类都为 studentmanagementsystem 类,tudentmanagementsystem 类里面保 存几个指针,开创 3 个双向链表,一个是小学生对象双向链表、一个中学生对象双向链表、 一个大学生对象双向链表。 studentmanagementsystem 类里面再定义相应的函数实现相应的操作功能。 三 详细设计: 1、简化 UML 类关系图 2、主要函数流程图 学生类构造函数 学生类 show_normal_message()函数
南华大学计算机科学与技术学院 实训报告 单个小学生成绩信息输出 单个大学生成绩信息输出 求大学生综合成绩和总学分函数
南华大学计算机科学与技术学院 实训报告 管理系统构造函数 系统删除功能函数 管理系统编辑信息功能函 管理系统基本信息查询功能函数 系统查找成绩信息功能函数 系统添加学生功能函数
南华大学计算机科学与技术学院 实训报告 管理系统析构函数 单科成绩打印功能函数
南华大学计算机科学与技术学院 实训报告 系统按大学生学分排序打印成绩单函数 系统交换链表里面两个元素功能函数 系统读取文件信息函数
分享到:
收藏