C/C++:学生管理系统
学生管理系统
- 一、问题描述
- 二、设计需求及分析
- 三、概要设计
- 四、详细设计
- 五、设计功能的实现(C++语言描述)
- 六、实例测试及运行结果
- 七、实现提示
- 八、UML图
- 九、心得体会
一、问题描述
随着大学规模的不断扩大,有关各种学生信息的数据量也不断增大。学生有本科生、研究生和助教博士生,校方需要对这些学生的信息进行计算机管理。所开发的软件应包括各类学生的添加、修改、删除和查找等功能。考虑到软件的可重用性、可扩展性和可维护性,校方决定采用面向对象的程序设计方法来开发系统。学生信息需要以文件方式保存到计算机硬盘中。另外,系统的用户界面应该尽可能友好,方便用户使用。
源文件开源在:https://github.com/fengqianiqan/C-C-studentSystem
二、设计需求及分析
(1) 使用C++语言开发,充分利用面向对象程序设计的类、对象、继承、封装和多态性等 概念来设计和实现该管理系统。
(2) 设计一个Person(人员)类,考虑到通用性,只抽象出所有类型人员都具有的属性:name(姓名),
id(身份证号),gender(性别),birthday(出生日期)等等。其中“出生日期”为内嵌子对象,是一个Date(日期)类型,Date类具有属性:
year(年),month(月),day(日)。用成员函数实现对人员信息的录入和显示等必要功能操作。
(3) 从Person类派生出Student(学生)类,添加属性: studentNo(学号),schoolName(学校),classIn
(班级)。从Person类派生出Teacher(教师)类,添加属性:teacherNo(教师编号),schoolName(学校),department(部门)。
(4) 从Student类中派生出UnderGraduate(本科生)类,添加属性:major(专业)。从Student类中派生出Graduate(研究生)类,添加属性:direction(研究方向),adviserName(导师姓名)。
(5) 从Graduate类和Teacher类派生出TA(助教博士生)类。 (6) 写程序测试上述各类,看能否正常运行。
(7) 构建必要的辅助类,实现对本科生、研究生和助教博士生的添加、修改、删除、查询管理。
(8) 根据需要定义类的构造函数、析构函数、拷贝构造函数、成员函数。必要时重载函数。
(9) 要求将Person类设置为虚基类,以消除其派生类成员访问的二义性问题(注意在虚基类各级派生类的构造函数实现时调用虚基类的构造函数)。
(10) 要求在Person类中定义虚函数displayDetails(),用于显示当前对象的信息;同时定义虚函数inputData(
),用于从键盘获取当前对象的信息。Person类所有派生类也要定义同名虚函数,使程序可以实现动态多态性。
(11) 用菜单方式设计主控模块程序。 (12) 对程序源代码要给出各部分的详细注释,这也是该题目的考核重点之一。
(13) 用UML语言描述系统用到的类及其关系。
三、概要设计
(1)//日期类型定义
class Date{ private: int year; int month; int day; public: Date(Date &d){year = d.year; month = d.month; day = d.day;} //初始化 ~Date( ){ }; void setYear(int y){year = y;} void setMonth(int m){month = m;} void setDay(int d){day = d;}//修改单个属性 int getYear( ){return year;} int getMonth( ){return month;} int getDay( ){return day;}//修改单个属性 void inputDate(){ cout > year; cout > month; cout > day; }//输入各个属性 void displayDate(){cout
