当前位置: 首页 > article >正文

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


http://www.kler.cn/a/156192.html

相关文章:

  • 大数据新视界 -- 大数据大厂之 Impala 存储格式转换:从原理到实践,开启大数据性能优化星际之旅(下)(20/30)
  • 简单叙述 Spring Boot 启动过程
  • Thread类及常见方法
  • C++《继承》
  • 除了 Mock.js,前端还有更方便的 Mock 数据工具吗?
  • pySpark乱码
  • 通义灵码简单使用例子
  • MATLAB算法实战应用案例精讲-【图像处理】人脸识别(补充篇)
  • 手持机|三防智能手机_4寸/5寸/6寸安卓系统三防手机PDA手持终端方案
  • 保存防火墙的规则和自定义链
  • 【Vulnhub 靶场】【Momentum: 2】【简单】【20210628】
  • 基于PHP的在线日语学习平台
  • Python---函数递归---练习:使用递归求N的阶乘(如n=100)(本文以递归算法 解法为主)
  • 领域驱动架构(DDD)建模
  • Rstudio-server无法登陆?几种解决方法 卡死 崩溃了
  • 基本面选股的方法
  • 基于Java SSM框架实现美好生活九宫格日志网站系统项目【项目源码+论文说明】计算机毕业设计
  • Java内存缓存神器:Caffeine(咖啡因)
  • qt-C++笔记之addItem(), addWidget(), addLayout()
  • Kettle 安装配置
  • 关于随机数的设定和随机噪声
  • SQLserver通过字符串中间截取然后分组
  • 【MySQL 20题练习 包含:select,join,union,where 等复合语句】
  • RT-Thread 汇编分析启动流程
  • PCL 空间直角坐标系与极坐标系的相互转换(C++详细过程版)
  • Docker下安装可视化工具Portainer