实现公司管理系统【C++实战】(53)
- 需求分析
- 类架构设计
- 基类详细设计
- 子类详细设计
- 技术要点
- 代码实现
- employee类
- employee.h
- employee.cpp
- manager类
- manager.h
- manager.cpp
- salemanager类
- salemanager.h
- salemanager.cpp
- salesman类
- salesman.h
- salesman.cpp
- technician类
- technician.h
- technician.cpp
- main.cpp
- 测试结果
需求分析
某小型公司,主要有四类人员:
经理、技术人员、推销员和销售经理。
现在需要存储这些人员的姓名、编号、级别、当月薪水.计算月薪总额并显示全部信息。
人员编号基数为 1000,每输入一个人员信息编号顺序加 1。
程序要有对所有人员提升级别的功能。本例中为简单起见,所有人员的初始级别均为 1级。然后进行升级,经理升为 4 级,技术人员和销售经理升为 3 级,推销员仍为 1 级。
月薪计算办法是: 经理拿固定月薪 8000 元;技术人员按每小时 100 元领取月薪; 推销员的月薪按该推销员当月销售额的 4%提成;销售经理既拿固定月薪也领取销售提成,固定月薪为 5000 元,销售提成为所管辖部门当月销售总额的 5%。
类架构设计
基类详细设计
子类详细设计
技术要点
继承
虚继承
虚函数
纯虚函数
多态
静态数据成员
二段式初始化
虚析构
代码实现
employee类
employee.h
#pragma once
#include <iostream>
using namespace std;class employee //基类
{public:employee(); virtual ~employee() {}virtual void init() = 0; //二段式初始化virtual void calSalary() = 0; //计算工资总额virtual void disinfor() = 0; //显示全部信息virtual void promote() = 0; //升职protected:string _name; //姓名int _num; //编号int _level; //级别double _salary; //薪水static int _StartNumber;//起始编号 };
employee.cpp
#include "employee.h"int employee::_StartNumber = 1000;employee::employee()
{}
manager类
manager.h
#pragma once
#include "employee.h"
class manager :virtual public employee
{public:manager();virtual ~manager() {}virtual void init();virtual void calSalary(); //计算工资总额virtual void disinfor(); //显示全部信息virtual void promote(); //升职protected:double _FixedSalary;};
manager.cpp
#include "manager.h"manager::manager()
{}void manager::init()
{_FixedSalary = 8000;_num = _StartNumber++;_level = 1;cout << "请输入经理的姓名:" << endl;cin >> _name;
}void manager::calSalary() //计算工资总额
{_salary = _FixedSalary;
}void manager::disinfor() //显示全部信息
{cout << "====================================" << endl;cout << "经理名字: " << _name << endl;cout << "经理工号: " << _num << endl;cout << "经理级别: " << _level << endl;cout << "本月合计工资 : " << _salary << endl;cout << "====================================" << endl;
}void manager::promote() //升职
{_level += 4;
}
salemanager类
salemanager.h
#pragma once
#include "manager.h"
#include "salesman.h"
class salemanager :virtual public manager, virtual public salesman
{public:salemanager();virtual ~salemanager() {}virtual void init();virtual void calSalary(); //计算工资总额virtual void disinfor(); //显示全部信息virtual void promote(); //升职
};
salemanager.cpp
#include "salemanager.h"salemanager::salemanager()
{}void salemanager::init()
{_FixedSalary = 5000;_num = _StartNumber++;_level = 1;_rate = 0.05;cout << "请输入销售经理的姓名:" << endl;cin >> _name;cout << "输入本月销售额: " << endl;cin >> saleAmount;
}void salemanager::calSalary() //计算工资总额
{_salary = _FixedSalary + saleAmount * _rate;
}
void salemanager::disinfor() //显示全部信息
{cout << "====================================" << endl;cout << "销售经理名字: " << _name << endl;cout << "销售经理工号: " << _num << endl;cout << "销售经理级别: " << _level << endl;cout << "本月销售额度 : " << saleAmount << endl;cout << "本月提成比率 : " << _rate << endl;cout << "本月固定工资 : " << _FixedSalary << endl;cout << "本月提成工资 : " << saleAmount * _rate << endl;cout << "本月合计工资 : " << _salary << endl;cout << "====================================" << endl;
}
void salemanager::promote() //升职
{_level += 3;
}
salesman类
salesman.h
#pragma once
#include "employee.h"class salesman :virtual public employee
{public:salesman();virtual ~salesman() {}virtual void init();virtual void calSalary(); //计算工资总额virtual void disinfor(); //显示全部信息virtual void promote(); //升职protected:double saleAmount;double _rate;
};
salesman.cpp
#include "salesman.h"salesman::salesman()
{}void salesman::init()
{_rate = 0.04;_num = _StartNumber++;_level = 1;cout << "请输入销售员的姓名:" << endl;cin >> _name;cout << "输入本月销售额: " << endl;cin >> saleAmount;
}void salesman::calSalary() //计算工资总额
{_salary = saleAmount * _rate;
}void salesman::disinfor() //显示全部信息{cout << "====================================" << endl;cout << "销售员名字: " << _name << endl;cout << "销售员工号: " << _num << endl;cout << "销售员级别: " << _level << endl;cout << "本月销售额度 : " << saleAmount << endl;cout << "本月提成比率 : " << _rate << endl;cout << "本月合计工资 : " << _salary << endl;cout << "====================================" << endl;}void salesman::promote() //升职{_level += 2;}
technician类
technician.h
#pragma once
#include "employee.h"
class technician :public employee
{public:technician();virtual ~technician() {}virtual void init();virtual void calSalary();virtual void disinfor();virtual void promote();protected:int _moneyPerHour;int _amountHour;
};
technician.cpp
#include "technician.h"
technician::technician()
{}void technician::init()
{_num = _StartNumber++;_level = 1;_moneyPerHour = 100;cout << "请输入技术人员的姓名:" << endl;cin >> _name;cout << "请输入本月工作的小时数:" << endl;cin >> _amountHour;
}void technician::calSalary()
{_salary = _amountHour * _moneyPerHour;
}void technician::disinfor()
{cout << "====================================" << endl;cout << "技术员名字: " << _name << endl;cout << "技术员工号: " << _num << endl;cout << "技术员级别: " << _level << endl;cout <<"本月工作小时数: " << _amountHour << endl;cout <<"每个工作时工资: " << _moneyPerHour << endl;cout <<"本月合计工资 : " << _salary << endl;cout << "====================================" << endl;
}void technician::promote()
{_level += 3;
}
main.cpp
#include <iostream>
#include "technician.h"
#include "manager.h"
#include "salesman.h"
#include "salemanager.h"
using namespace std;int main()
{technician tech;tech.init();tech.promote();tech.calSalary();tech.disinfor();manager man;man.init();man.promote();man.calSalary();man.disinfor();salesman sman;sman.init();sman.promote();sman.promote();sman.disinfor();salemanager sm;sm.init();sm.promote();sm.calSalary();sm.disinfor();return 0;
}
测试结果
运行结果为:
实现公司管理系统【C++实战】(53)相关推荐
- Java Web项目源代码|CRM客户关系管理系统项目实战(Struts2+Spring+Hibernate)解析+源代码+教程
客户关系管理 (CRM) CRM一般指客户关系管理 客户关系管理是指企业为提高核心竞争力,利用相应的信息技术以及互联网技术协调企业与顾客间在销售.营销和服务上的交互,从而提升其管理方式,向客户提供创新 ...
- JavaWeb框架(四):JavaWeb项目基于三大组件实现的公司管理系统
MVC实战项目 Web 三大组件实现 公司管理系统 需求: 项目实战 基于会话跟踪技术实现登录功能 基于Filter过滤器实现登录验证功能 基于Listener监听器监听ServletCntext对象 ...
- 基于JAVA建材公司管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
基于JAVA建材公司管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA建材公司管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 开发语 ...
- 联系人管理-客户拜访记录| CRM客户关系管理系统项目 实战七(Struts2+Spring+Hibernate)解析+源代码
联系人管理-客户拜访记录| CRM客户关系管理系统项目 实战七(Struts2+Spring+Hibernate)解析+源代码 客户拜访记录的列表的显示, 客户拜访记录的保存, 客户拜访记录查询(条件 ...
- (附源码)计算机毕业设计SSM街舞公司管理系统
(附源码)计算机毕业设计SSM街舞公司管理系统 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(Intel ...
- JAVA毕业设计建材公司管理系统计算机源码+lw文档+系统+调试部署+数据库
JAVA毕业设计建材公司管理系统计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计建材公司管理系统计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目架构:B/S架构 开发语 ...
- 基于java基于vue的百乐儿童玩具公司管理系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
基于java基于vue的百乐儿童玩具公司管理系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java基于vue的百乐儿童玩具公司管理系统计算机毕业设计源码+系统+lw文档+my ...
- java毕业设计基于vue的百乐儿童玩具公司管理系统mybatis+源码+调试部署+系统+数据库+lw
java毕业设计基于vue的百乐儿童玩具公司管理系统mybatis+源码+调试部署+系统+数据库+lw java毕业设计基于vue的百乐儿童玩具公司管理系统mybatis+源码+调试部署+系统+数据库 ...
- java计算机毕业设计街舞公司管理系统MyBatis+系统+LW文档+源码+调试部署
java计算机毕业设计街舞公司管理系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计街舞公司管理系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: 项目架构:B ...
- java计算机毕业设计建材公司管理系统MyBatis+系统+LW文档+源码+调试部署
java计算机毕业设计建材公司管理系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计建材公司管理系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: 项目架构:B ...
最新文章
- 几何匹配和分合算法的图像识别技术
- 2015第16周三知道做到
- java找出一组数据缺少最小数组_Java获取一维数组的最小值实现方法
- localhost 已拒绝连接_MySQL连接错误:Access denied for #x27;root#x27;@#x27;localhost#x27;
- linux gdb使用
- 网络流-SAP算法模板
- ElasticSearch sql 插件安装
- Vue.js生命周期
- Jquery Validate 动态添加校验
- 吴恩达|机器学习作业2.1正则化的Logistic回归
- 关于PHP SESSION
- python中怎样获得unicode_如何在Python中获取unicode月份名称?
- Struts2学习笔记(十) OGNL
- HTML 动画(一)
- 【蓝桥杯历年题】2020蓝桥杯A组省赛第二场(10.17)【含蓝桥杯官网提交地址】
- linux集群环境搭建
- 写给前端的区块链开发入门指南:零基础开发基于以太坊智能合约的 ICO DApp
- matlab四叉树分割代码,【测绘专用】 MATLAB 四叉树分割遥感图像
- 高清多媒体接口(HDMI)静电防护器件ULC0524PA
- 180127 逆向-JarvisOJ(BrokenDriver)(静态分析解法)
热门文章
- 【Pygame小游戏】这款经典的炸弹人超能游戏上线,你爱了嘛?(附源码)
- [FlareOn2]very_success [FlareOn3]Challenge1
- 修改xp boot.ini文件
- Objective-c 字符串的拼接
- HTML5学习笔记(二)2015-12-7
- MySQL存储引擎精讲(附带各种存储引擎的对比)
- 5、优化MySQL服务器
- 1.6 去除字符串中的空格(trim())
- 1.5 @SafeVarargs注解
- 2021 RoboCom 世界机器人开发者大赛-本科组(初赛)【完结】