高校人员信息管理系统C++

代码: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++语言知识是非常重要的。要沉下心来认真钻研。感谢老师能从多个角度提供帮助,启发我们自己发现问题并解决,引导我们独立思考。祝老师万事胜意!

相关推荐
陌上花开࿈12 分钟前
调用第三方接口
java
Aileen_0v019 分钟前
【玩转OCR | 腾讯云智能结构化OCR在图像增强与发票识别中的应用实践】
android·java·人工智能·云计算·ocr·腾讯云·玩转腾讯云ocr
Hello.Reader20 分钟前
Redis大Key问题全解析
数据库·redis·bootstrap
獨枭1 小时前
CMake 构建项目并整理头文件和库文件
c++·github·cmake
桂月二二2 小时前
Java与容器化:如何使用Docker和Kubernetes优化Java应用的部署
java·docker·kubernetes
靖顺2 小时前
【OceanBase 诊断调优】—— packet fly cost too much time 的根因分析
数据库·oceanbase
liuxin334455662 小时前
学籍管理系统:实现教育管理现代化
java·开发语言·前端·数据库·安全
小马爱打代码3 小时前
设计模式详解(建造者模式)
java·设计模式·建造者模式
小王爱吃月亮糖3 小时前
C++的23种设计模式
开发语言·c++·qt·算法·设计模式·ecmascript
栗子~~3 小时前
idea 8年使用整理
java·ide·intellij-idea