代码:https://mbd.pub/o/bread/ZZeZk5lx
一、基本内容论述
1、问题描述 某高校有四类员工:教师、实验员、行政人员、教师兼行政人员;共有的信息包括:编号、姓名、性别、年龄等。其中,教师还包含的信息有:所在系部、专业、职称;实验员还包含的信息由:所在实验室、职务;行政人员还包含的信息有:政治面貌、职称等。
2、功能要求
(1)添加功能:程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求员工的编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。
(2)查询功能:可根据编号、姓名等信息对已添加的记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。
(3)显示功能:可显示当前系统中所有记录,每条记录占据一行。
(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。
(5)删除功能:主要实现对已添加的人员记录进行删除。如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作;否则,输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存。
(6)统计功能:能根据多种参数进行人员的统计。能统计四类人员数量以及总数,统计男、女员工的数量。
(7)保存功能:可将当前系统中各类人员记录存入文件中,存入方式任意。
(8)读取功能:可将保存在文件中的人员信息读入到当前系统中,供用户进行使用。
。
1、系统总体方案
使用面向对象的编程思想,系统分为四大板块,分别为教师、实验员、行政人员、教师兼行政人员等管理信息模块,定义高校员工类保存公共属性,共有的信息包括:编号、姓名、性别、年龄等,学校员工类为college_staff, 教师、实验员、行政人员、教师兼行政人员等类分别继承此员工类。工类派生出教师类、实验员类、行政人员类,教师类和行政人员类派生出教师兼行政人员类。程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求人员的编号要唯一,如果添加了重复编号的记录时,则提示用户数据添加重复并取消添加。各个功能选择循环和分支选择完成各个功能的选择。
(1) 教师类teacher:继承员工类college_staff,实现添加,查询,显示,删除,统计,保存,读取等功能,通过继承可以很好的实现功能的继承使用。成员函数分别有 int Add();int Search();void Show();void Edit();int Delete();void Save();
void Read();。
(2) 实验员类tester:继承员工类college_staff,实现添加,查询,显示,删除,统计,保存,读取等功能,实验员还包含的信息有:所在实验室、职务。 成员函数分别有 int Add();int Search();void Show();void Edit();int Delete();void Save();
void Read();。
(3) 行政人员类officer,继承员工类college_staff,实现添加,查询,显示,删除,统计,保存,读取等功能,成员函数分别有 int Add();int Search();void Show();void Edit();int Delete();void Save();void Read();。行政人员还包含的信息有:政治面貌、职称等。(4) 教师兼职行政人员类teacher_officer ,继承员工类college_staff,教师类teacher和行政人员类officer,实现添加,查询,显示,删除,统计,保存,读取等功能,成员函数分别有 int Add();int Search();void Show();void Edit();int Delete();void Save();void Read();。
2、设计思路和主要步骤
根据需求分析,首先我们需要建立员工college_staff基类,由此派生出了教师类(teacher),实验员类(tester),行政人员类officer,教师兼职行政人员类teacher_officer。通过进一步分析,由于基类中的构造函数不能被继承,而且在派生类中又需要增加自己的数据成员,所以我们必须定义派生类的构造函数来完成相应的初始化。我们通过类的继承实现增加不同功能的成员函数如:void Add(); //增加人员 void Delete(); //删除人员 void Edit (); //编辑人员信息void Search (); //查询人员, void Save(); //数据存盘 void Read(); //读取文件———为了实现多文件的效果,我们对员工类各个属性继承,然后逐一对各功能函数进行代码编写。最后,我们定义了主函数,通过公司类创建了一个对象,并通过此对象完成相应的操作。在调试并测试代码过程中,当输入相应的指令后,该系统自动调用相应的功能函数来达到需求效果,至此,一个高校人员信息管理系统的实现才算基本成功。
3、各功能模块和流程图
(1)各功能模块
1)添加功能:程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求人员的编号要唯一,如果添加了重复编号的记录时,则提示用户数据添加重复并取消添加。2)查询功能:可根据编号、姓名等信息对已添加的记录进行查询。如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。3)显示功能:可显示当前系统中所有记录。4)修改功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。5)删除功能:对已添加的人员记录进行删除。如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作;否则输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存在。6)统计功能:能根据多种参数进行人员的统计。例如:统计四类人员数量以及总数,统计男、女员工的数量,统计某年龄段人员的数量等。7)保存功能:将当前系统中各类人员记录存入文件中。8)读取功能:将保存在文件中的人员信息读入到当前系统中,以供用户使用。
(2)流程图
1主函数流程
界面:
二、实验结果测试
列出各功能具体的输入数据及对应的输出结果,说明其是否符合设计要求:
三、心得体会
通过本次设计课学到了很多,相比之前的C++语言上机,难度有很大的提升,以前仅仅涉及变量,函数和条件语句,和循环语句等基本概念,而这次像老师说的那样是一个工程。本学期的学期期间也进行过几次的上机实习,不过是根据老师给的现成题目进行简单编程,并没有像C++课设那样庞大。在一开始进行课程的时候,我感到有些无法适应并且跟不上进度。前两次上课的时候,对于本次的题目“学生成绩管理系统”感觉无从下手,根据老师发的源代码,才有一点点眉目。本次C++语言课程设计对我来说是一一个挑战, 虽说不上一波三折,但过程绝不轻松。同时也让我认识到扎实基本功的重要性。在课设过程中,有许多的细节需要去注意和纠正,太过于草率导致的后果就是会忽略掉很多必需的点,最终结果就是程序不能成功地运行。在这次课程设计中,我们首先对系统的整体功能进行了构思,然后用结构化分析方法进行分析,将整个系统清楚的划分为几个模块,再根据每个模块的功能编写代码。而且尽可能的将模块细分,最后在进行函数的调用。我们在函数的编写过程中,我们不仅用到了for循环、while循环和switch语句,还用到了函数之间的调用(包括递归调用)。由于我们是分工编写代码,最后需要将每个人的代码放到一起进行调试。因为我们每个人写的函数的思想不都一样,所以在调试的过程中也遇到了困难,但经过我们耐心的修改,终于功夫不负有心人,我们成功了。最后,我认为C++语言课程设计是一个可以供我们慢慢钻研的课程,而学会最基本的C++语言知识是非常重要的。要沉下心来认真钻研。感谢老师能从多个角度提供帮助,启发我们自己发现问题并解决,引导我们独立思考。祝老师万事胜意!