基于C++的小型公司工资管理系统

Gameisover

发布日期: 2019-02-14 19:11:11 浏览量: 807
评分:
star star star star star star star star star_border star_border
*转载请注明来自write-bug.com

一、要求

1.1 问题描述

某公司需要存储雇员的编号、姓名、性别、所在部门,级别,并进行工资的计算。其中,雇员分为经理、技术人员、销售人员和销售经理。四类人员的月薪计算方法如下:经理拿固定月薪;技术人员按小时领取月薪;销售人员按其当月销售额的提成领取工资;销售经理既拿固定月薪也领取销售提成。

设计一程序能够对公司人员进行管理,应用到继承、抽象类、虚函数、虚基类、多态和文件的输入/输出等内容。

1.2 功能要求

  • 添加功能:程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的 人员类别,要求员工的编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加

  • 查询功能:可根据编号、姓名等信息对已添加的记录进行查询,如果未找到,给出相应的提 示信息,如果找到,则显示相应的记录信息

  • 显示功能:可显示当前系统中所有记录,每条记录占据一行

  • 编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性

  • 删除功能:主要实现对已添加的人员记录进行删除。如果当前系统中没有相应的人员记录, 则提示“记录为空!”并返回操作;否则,输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存

  • 统计功能:能根据多种参数进行人员的统计。例如,统计四类人员数量以及总数, 或者统计男、女员工的数量,或者统计平均工资、最高工资、最低工资等信息

  • 保存功能:可将当前系统中各类人员记录存入文件中,存入方式任意

  • 读取功能:可将保存在文件中的人员信息读入到当前系统中,供用户进行使用

1.3 问题的解决方案

根据系统功能要求,可以将问题解决分为以下步骤:

  • 应用系统分析,建立该系统的功能模块框图以及界面的组织和设计

  • 分析系统中的各个实体及它们之间的关系

  • 根据问题描述,设计系统的类层次

  • 完成类层次中各个类的描述

  • 完成类中各个成员函数的定义

  • 完成系统的应用模块

  • 功能调试

  • 完成系统总结报告

二、题目分析

首先需要用到面向对象编程的知识,题目中明确可以看出需要定义职员基类,包含编号、姓名、性别、所在部门,级别的基本属性,派生出经理和销售人员以及技术人员,销售经理兼有销售人员和经理的性质,即销售经理继承于销售人员和技术人员,派生类除基本属性还有其他工资计算所需要的数据,数据的存储可以采取链表的形式,方便查找和储存,其他功能的实现都是基于链表节点的查找、修改、删除。最后的保存和读取采取文件流。

程序流程图

三、类结构设计

类之间的继承关系

其中,employee类为基类,定义了的编号、姓名、性别、所在部门,级别提供了基类指针,基本信息输入输出的接口。

technician类采用公有继承方式继承自employee类,增加了工作时间和每小时工资数,基本工资计算,以及工作时间的输入。

manager采取虚继承方式继承自employee类,增加了基本工资数,基本工资计算,以及基本工资的输入。

salesman采取虚继承方式继承自employee类,增加了销售额数和销售额提成,基本工资计算,以及销售额的输入。

Salesmanager多重继承方式继承自manager和salesman,公有继承manager和salesman的输入,增加基本工资计算。

四、工程结构组织

本项目使用Dev-CPP实现,工程文件结构图如图2所示。

本项目一共由28个文件组成,各文件的功能如下表(表1)所示。

序号 文件名 说明
1 Face.h Face类定义头文件,其他界面函数声明,界面声明
2 Face.cpp Face类实现文件,标题,进度条及界面实现
3 employee.h 职员类定义头文件
4 employee.cpp 职员类实现文件
5 manager.h 经理类定义头文件
6 manager.cpp 经理类实现文件
7 salesman.h 销售人员类定义头文件
8 salesman.cpp 销售人员实现文件
9 technician.h 技术人员类定义头文件
10 technician.cpp 技术人员类实现文件
11 salesmanager.h 销售经理类定义头文件
12 salesmanager.cpp 销售经理类实现文件
13 control.h 控制类定义头文件
14 controldestory.cpp 控制类析构函数实现文件
15 addinformation.cpp 控制类添加信息函数实现文件
16 cancelinformation.cpp 控制类删除信息函数实现文件
17 changeinformation.cpp 控制类修改信息函数实现文件
18 countinformation.cpp 控制类统计信息函数实现文件
19 errorjudge.cpp 输入整数时其他字符处理函数实现文件
20 gotoxy.cpp 光标跳转到xy函数实现文件
21 keepinformation.cpp 控制类保存信息函数实现文件
22 readinformation.cpp 控制类读取信息函数实现文件
23 searchinformation.cpp 控制类查询信息函数实现文件
24 showface.cpp 控制类界面函数实现文件
25 showinformation.cpp 控制类显示信息函数实现文件
26 tongjiformation.cpp 控制类统计信息函数实现文件
27 main.cpp 主函数文件
28 myheader.h 头文件文件

五、运行主要界面

载入程序进度条

程序主界面

添加信息界面

查询信息界面

删除信息界面

修改信息界面

显示信息界面

计算工资界面

统计员工信息界面

六、课程设计所用知识点总结

序号 知识点 说明
1 函数 本系统共定义了52个函数,包括带返回值、传入基本数据类型、指针、操作符重载、虚函数纯、虚函数、函数重载。
2 数组 本项目定义了6数组,用于存储姓名、性别、部门等
3 文件 本项目使用txt格式文件做数据持久化存储
4 类与对象 定义了7个类
5 安全头文件包含 基本全部实现头文件安全包含
6 继承 使用单继承、虚继承、多重继承。
7 文件流 使用文件流输入输出
8 存储方式 使用数据结构链表实现存储
9 异常处理 Try catch throw语句进行整数错误检测
10 操作符重载 重载插入提取运算符

七、项目总结

这次课设首先做好了程序基本分析,设计类的继承派生关系,想到用链表进行存储从最基本的显示功能开始采取瀑式开发逐步添加新的功能,直到实现所有功能。

本次课设较为满意的地方是整体界面实现以及功能的完整性,我认为是难点的是文件流的读入读出方式,以及链表的一系列功能。

本次最大的收获是对面向对象编程有了较好的理解,充分将学到的知识转化为了实体。

上传的附件 cloud_download 基于C++的小型公司工资管理系统.7z ( 1.03mb, 253次下载 )

发送私信

修行的路总是孤独的,因为智慧必然来自孤独

8
文章数
11
评论数
最近文章
eject