• 需求分析
  • 类架构设计
  • 基类详细设计
  • 子类详细设计
  • 技术要点
  • 代码实现
    • 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)相关推荐

  1. Java Web项目源代码|CRM客户关系管理系统项目实战(Struts2+Spring+Hibernate)解析+源代码+教程

    客户关系管理 (CRM) CRM一般指客户关系管理 客户关系管理是指企业为提高核心竞争力,利用相应的信息技术以及互联网技术协调企业与顾客间在销售.营销和服务上的交互,从而提升其管理方式,向客户提供创新 ...

  2. JavaWeb框架(四):JavaWeb项目基于三大组件实现的公司管理系统

    MVC实战项目 Web 三大组件实现 公司管理系统 需求: 项目实战 基于会话跟踪技术实现登录功能 基于Filter过滤器实现登录验证功能 基于Listener监听器监听ServletCntext对象 ...

  3. 基于JAVA建材公司管理系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA建材公司管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA建材公司管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 开发语 ...

  4. 联系人管理-客户拜访记录| CRM客户关系管理系统项目 实战七(Struts2+Spring+Hibernate)解析+源代码

    联系人管理-客户拜访记录| CRM客户关系管理系统项目 实战七(Struts2+Spring+Hibernate)解析+源代码 客户拜访记录的列表的显示, 客户拜访记录的保存, 客户拜访记录查询(条件 ...

  5. (附源码)计算机毕业设计SSM街舞公司管理系统

    (附源码)计算机毕业设计SSM街舞公司管理系统 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(Intel ...

  6. JAVA毕业设计建材公司管理系统计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计建材公司管理系统计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计建材公司管理系统计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目架构:B/S架构 开发语 ...

  7. 基于java基于vue的百乐儿童玩具公司管理系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署

    基于java基于vue的百乐儿童玩具公司管理系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java基于vue的百乐儿童玩具公司管理系统计算机毕业设计源码+系统+lw文档+my ...

  8. java毕业设计基于vue的百乐儿童玩具公司管理系统mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计基于vue的百乐儿童玩具公司管理系统mybatis+源码+调试部署+系统+数据库+lw java毕业设计基于vue的百乐儿童玩具公司管理系统mybatis+源码+调试部署+系统+数据库 ...

  9. java计算机毕业设计街舞公司管理系统MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计街舞公司管理系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计街舞公司管理系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: 项目架构:B ...

  10. java计算机毕业设计建材公司管理系统MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计建材公司管理系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计建材公司管理系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: 项目架构:B ...

最新文章

  1. 几何匹配和分合算法的图像识别技术
  2. 2015第16周三知道做到
  3. java找出一组数据缺少最小数组_Java获取一维数组的最小值实现方法
  4. localhost 已拒绝连接_MySQL连接错误:Access denied for #x27;root#x27;@#x27;localhost#x27;
  5. linux gdb使用
  6. 网络流-SAP算法模板
  7. ElasticSearch sql 插件安装
  8. Vue.js生命周期
  9. Jquery Validate 动态添加校验
  10. 吴恩达|机器学习作业2.1正则化的Logistic回归
  11. 关于PHP SESSION
  12. python中怎样获得unicode_如何在Python中获取unicode月份名称?
  13. Struts2学习笔记(十) OGNL
  14. HTML 动画(一)
  15. 【蓝桥杯历年题】2020蓝桥杯A组省赛第二场(10.17)【含蓝桥杯官网提交地址】
  16. linux集群环境搭建
  17. 写给前端的区块链开发入门指南:零基础开发基于以太坊智能合约的 ICO DApp
  18. matlab四叉树分割代码,【测绘专用】 MATLAB 四叉树分割遥感图像
  19. 高清多媒体接口(HDMI)静电防护器件ULC0524PA
  20. 180127 逆向-JarvisOJ(BrokenDriver)(静态分析解法)

热门文章

  1. 【Pygame小游戏】这款经典的炸弹人超能游戏上线,你爱了嘛?(附源码)
  2. [FlareOn2]very_success [FlareOn3]Challenge1
  3. 修改xp boot.ini文件
  4. Objective-c 字符串的拼接
  5. HTML5学习笔记(二)2015-12-7
  6. MySQL存储引擎精讲(附带各种存储引擎的对比)
  7. 5、优化MySQL服务器
  8. 1.6 去除字符串中的空格(trim())
  9. 1.5 @SafeVarargs注解
  10. 2021 RoboCom 世界机器人开发者大赛-本科组(初赛)【完结】