C++职工管理系统(课程设计报告)

项目介绍

项目介绍
该职工管理系统主要是用来管理整个公司的信息,基于C++继承和多态来实现,同时也包含文件流操作。

设计任务

设计任务
(1)设计个职工管理系统,管理整个公司的信息,公司的职工分为三类:老板,经理,员工,他们的公有属性都包含职工编号,职工姓名,以及职责。
(2)职责:
①老板职责:管理公司所有的事物.
②经理职责:完成老板交给任务,并下达任务给员工。
③员工职责:完成经理交给的任务。

设计要求

设计要求
(1)职工管理系统中需要实现以下几种功能:
①退出功能:退出当前程序。
②增加职工信息:实现批量增加(自己可以确定一次性增加几个职工的信息)职工信息,并将信息录入到文件中,职工信息分为:职工编号,职工职责,职工姓名。
③显示职工信息:显示公司内所有职工的信息。
④删除职工信息:按照职工编号删除信息。
⑤修改职工信息:按照职工编号修改职工信息
⑥排序功能:按照职工编号对职工进行排序。
⑦清空信息功能:清空文件中记录所有职工的信息。
此次项目采用分文件,文件流,C++继承和多态完成。(采用公有继承),并且第二次运行程序时,第一的运行程序的数据仍能保留(信息数据能够保留。

程序设计

代码讲解

2.1程序的总体结构
(1)头文件:
①common.h:包含该项目用到的所有头文件。

(2)类:
②worker(基类,只需要写出声明(worker.h头文件),让其他类继承其中的属性和行为就行,不需要写出实现):包含公司职工的公有属性和行为(成员函数为纯虚函数)。boss(老板类),manager(经理类),employer(员工类),采用公有继承的方式继承worker类。 然后,就可以用一个worker**类型的,管理三个继承worker的类的数据(用new创建,worker*类型)。
③workerManger类:用来实现该程序的所有功能。
④源.cpp,进行该项目的测试。

(3)分文件截图
在这里插入图片描述

(4)头文件截图
①common.h
在这里插入图片描述
②worker.h(包含职工编号,姓名,部门编号,以及获取岗位和显示信息的函数)
在这里插入图片描述
③boss.h 继承worker类
在这里插入图片描述

④manager.h 继承worker
在这里插入图片描述

⑤employer.h 继承worker
在这里插入图片描述

⑥workerManger.h 包含实现该系统功能的所有函数,以及员工总人数(EmpNum),判断文件是否为空(FileEmpty)等数据成员。

(1)boss.cpp,manager.cpp,employer.cpp的实现
①这三个类的实现思路都是一样的,他们的构造函数对继承worker.h的属性,进行初始化。
②ShowInfo()函数,就对他们的数据成员进行打印,getDeptName()函数,就返回对应的职工(老板,经理,员工)。

                                   boss类

在这里插入图片描述
employer类

在这里插入图片描述
manager类
在这里插入图片描述

(2)managerWorker.cpp的实现
①Show_Menu()函数的实现
直接用cout打印即可。

在这里插入图片描述
②ExitSystem()函数的实现
直接调用exit()函数,就可以实现程序的退出。
在这里插入图片描述

③addInfo()函数的实现(添加信息)
添加信息,先进行添加信息数量的输入, 然后进行信息添加,分两步,第一步,先对原来的信息进行拷贝。第二步就添加信息(用cin添加),职工编号,
姓名,部门编号,这几个继承的属性,通过new创建出各自的对象,调用其构造函数即可。
这里的work**类型的便是用于存储,用new创建的work*类型的老板,经理,员工类的数据。
注意:还需要判断添加的信息是否重复,因为后面会多次用到,我单独写了个函数JudgeInformation(int ID),就将之前存储的数据挨个遍历,看是否能找到相同的ID,能找到自己就算是添加信息重复,
当然还有文件信息的保存与更新(saveFile()函数),将存储的信息,输入到文件中去(用文件流操作)
下面是具体代码的实现(以截图形式展示,部分代码分析见上):
函数JudgeInformation(int ID)的实现
当然这里如果添加重新重复了,就还可以重新输入职工编号。

在这里插入图片描述

                  **saveFile()函数的实现**

第一步:就先打开文件,第二步:然后将信息输入到文件中,第三步:关闭文件
文件名这里采用的宏定义(FILENAME)便于后面修改,宏定义和头文件都放在common.h这个头文件中。

在这里插入图片描述

   **addInfo()函数的实现(下面代码)**

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
④ShowInformation()函数,显示信息
就调用存储在work**类型 EmpArray数组中的老板类,员工类,或者是经理类的showInfo()函数既可。 当然要先判断,文件是否为空或者是否存在

在这里插入图片描述

⑤DeleteInformation()函数 删除信息
先看文件是否存在或者是否为空,通过职工编号删除信息,调用函数JudgeInformation(int ID),判断编号是否存在,如果存在吗,用数据覆盖的方式删除,删除后,人数减1。

在这里插入图片描述

⑥ ModifyInformation(),修改信息
也就是判断文件是否存在或者是否为空,通过职工编号修改,后面修改信息思路部分类似于添加信息。
在这里插入图片描述
在这里插入图片描述

⑦ searchInformayion()函数 查找信息

也就是判断文件是否存在或者是否为空,通过职工编号查找,找到就调用showInfo()函数
在这里插入图片描述

⑧sortInformation() 排序函数
就是通过职工编号,对职工的信息进行排序。主要通过选择排序实现排序效果(找到最小的)

在这里插入图片描述

⑨ clearInformation()函数,清空文件记录
用delete,删除信息就行,然后文件更新等一系列初始化操作。

在这里插入图片描述

⑩initArray()函数
将文件中的信息读取到程序中,初始化(关闭程序,下次运行程序中仍然有信息记录)

在这里插入图片描述

⑩① mangerWorker() 构造函数
就先判断关于文件的情况,对其中的数据成员那些进行初始化,再调用之前写的initArray()函数。

在这里插入图片描述

注意:在添加信息,删除信息,修改信息,排序等功能,只要是存储的信息发生了改变,都需要调用saveFile()函数,对文件中的信息进行一次更新和保存。
之所以能做到系统的程序有上次的运行程序的记录,是因为文件的信息及时更新与保存,然后下次运行的时候,在把文件的信息重新从重新读取到系统中就可以实现。(在managerWorker的构造函数中调用initArray函数(这个函数作用就是将文件的信息读取到系统中))。
便于观赏性,合理利用system(“cls”)清屏函数,和system(“pause”)函数暂停。

(3)测试代码 源.cpp

在这里插入图片描述

实例输出

(1)这里的职工数为1,是上次运行程序保留的数据,这里再次添加信息(可以对一次性要添加的数量进行选择,这里我选择一次性添加一个信息)
在这里插入图片描述

(2)显示信息(控制台显示信息和文件显示信息)

在这里插入图片描述
在这里插入图片描述

(3)删除信息
在这里插入图片描述

在这里插入图片描述

(4)修改信息
在这里插入图片描述

在这里插入图片描述

(5)查找信息
在这里插入图片描述

(6)排序 (因为录入信息人数较少,不方便排序,我再录入几个人的信息)

现在系统共有4人信息,进行职工编号排序

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(7)清空文件信息(系统信息和文件信息都清空)
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(8)退出功能

在这里插入图片描述

源码领取

*这是当时大一下写的课程设计,由于交的时候代码就是图片的形式,然后这里博客也发的图片的形式,具体源码我上传到网盘上,大家可以自己领取链接,密码:2222

  • 10
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 20
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温柔了岁月.c

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值