某小型公司,主要有四类人员:经理、技术人员、销售经理和推销员。
现在,需要存储这些人员的姓名、编号、级别、当月薪水.计算月薪总额并显示全部信息。
人员编号基数为 1000,每输入一个人员信息编号顺序加 1。
程序要有对所有人员提升级别的功能。 本例中为简单起见, 所有人员的初始级别均为 1级。
然后进行升级,经理升为 4 级,技术人员和销售经理升为 3 级,推销员仍为 1 级。
月薪计算办法是: 经理拿固定月薪 8000 元; 技术人员按每小时  100 元领取月薪;
推销员的月薪按该推销员当月销售额的 4%提成;销售经理既拿固定月薪也领取销售提成,固定月薪为 5000 元,
销售提成为所管辖部门当月销售总额的 5%。

id调整:定义一个全局数组来保存id,每一个员工

#include<iostream>
#include<string>
#include<typeinfo>
using namespace std;int id[1000];
static int i = 0;class worker //员工表
{public:worker(string name){m_name = name;num++;m_id = num;level = 1;for(int j = 0; j <= i ; j++){if(id[j] == m_id){m_id++;j = 0;}}id[i] = m_id;i++;}string getname()const{return m_name;}void setid(int id){m_id = id;}int getid() const{return m_id;}virtual void display() = 0;//显示员工信息virtual void calsalary() = 0;//计算每月薪水virtual ~worker(){}protected:string m_name; //名字static int num;//编号int level;     //级别int m_id;      //具体人员编号float m_salary;//当月薪水
};
int worker::num = 1000;class manager:public worker//经理
{public:manager(string name):worker(name){level = 4;}void calsalary(){m_salary = 8000;}void display(){calsalary();cout<<"职位:经理,姓名:"<<m_name<<",编号:"<<m_id<<",级别:"<<level<<",工资:"<<m_salary<<endl;}~manager(){num--;cout<<"经理:"<<m_name<<"离开了"<<endl;}
};class technician:public worker//技术人员
{public:technician(string name,int time = 192):worker(name){level = 4;worktime = time;}void calsalary(){m_salary = worktime * 100;}void display(){calsalary();cout<<"职位:技术人员,姓名:"<<m_name<<",编号:"<<m_id<<",级别:"<<level<<",工资:"<<m_salary<<endl;}~technician(){num--;cout<<"技术人员:"<<m_name<<"离开了"<<endl;}private:int worktime;
};class salsesman:public worker//销售员
{public:salsesman(string name,float volume):worker(name){level = 1;m_volume = volume;sum += volume;}void calsalary(){m_salary = m_volume * 0.04;}void display(){calsalary();cout<<"职位:销售,姓名:"<<m_name<<",编号:"<<m_id<<",级别:"<<level<<",工资:"<<m_salary<<endl;}~salsesman(){num--;cout<<"销售:"<<m_name<<"离开了"<<endl;}public:static float sum;private:float m_volume;//销售额
};
float salsesman::sum = 0.0;class salsesmanager:public worker//销售经理
{public:salsesmanager(string name):worker(name){level = 3;}void calsalary(){m_salary = salsesman::sum  * 0.05 + 5000;}void display(){calsalary();cout<<"职位:销售经理,姓名:"<<m_name<<",编号:"<<m_id<<",级别:"<<level<<",工资:"<<m_salary<<endl;}~salsesmanager(){num--;cout<<"销售经理:"<<m_name<<"离开了"<<endl;}public:int volume;
};void upgrade(worker * &w)
{int id = w->getid();if(typeid(*w) == typeid(salsesman)){string name = w->getname();delete w;w = new salsesmanager(name);}else if(typeid(*w) == typeid(salsesmanager)){string name = w->getname();delete w;w = new manager(name);}else if(typeid(*w) == typeid(technician)){string name = w->getname();delete w;w = new manager(name);}w->setid(id);
}int main()
{worker *w1 = new manager("张三");w1->display();worker *w2 = new technician("李四");w2->display();delete w1;worker *w3 = new salsesman("王五",500000);w3->display();worker *w4 = new salsesmanager("赵六");w4->display();upgrade(w3);w3->display();cout<<endl<<"当月操作之后"<<endl;//w1->display();w2->display();w3->display();w4->display();return 0;
}

赋予id时与数组中的进行比对,若有重复则id+1,继续比对,将无人使用的id给人员,并将新的id存入数组

某小型公司,主要有四类人员:经理、技术人员、销售经理和推销员。现在,需要存储这些人员的姓名、编号、级别、当月薪水.计算月薪总额并显示全部信息。相关推荐

  1. 四类运算放大器的技术发展趋势及其应用热点

    前言 运算放大器历经数十年的发展,从早期的真空管演变为现在的集成电路,根据不同的应用需求主要分化出通用型.低电压/低功耗型.高速型.高精度型四大类运放产品.一般而言,高速运放主要用于通信设备.视频系统 ...

  2. C++小型公司人员信息管理系统

    C++小型公司人员信息管理系统 一.设计实现一个小型公司人员信息管理系统 1.目标 1.1通过公司人员信息管理系统的设计,培养学生能重述,辨别面向对象知识要素:封装,继承,多态;应用面向对象方法,分析 ...

  3. C++小型公司管理系统

    项目要求: 编写一个程序实现小型公司的人员信息管理系统.该公司雇员(employee)包括经理(manager),技术人员(technician).销售员(salesman)和销售部经理(salesm ...

  4. 四类大屏拼接技术:LED、LDP、DLP、PDP

    大屏拼接一直是比较热门的技术及话题之一,以下四类大屏拼接最具有代表性,今天就它们的优缺点做一个简单分析比较. 市场上的主流的显示产品有LED显示屏.液晶显示屏等,它们代表着最新的科技技术,其中大屏拼接 ...

  5. 北京四达时代软件技术股份有限公司招聘公告

    北京四达时代软件技术股份有限公司 公司简介 北京四达时代软件技术股份有限公司(以下简称四达软件)由2002年12月25日在北京中关村注册成立的北京四达时代软件技术有限公司整体变更而来,注册资本1.06 ...

  6. C++小型公司人员信息管理系统(多态)

    C++小型公司人员信息管理系统(多态) 1.实验题目及要求 已有应用为: 某公司包含多种员工类型:技术员,产品经理,销售员.销售经理. 技术员 (包含工号(6位 :000001~ 999999).姓名 ...

  7. //公司有四种职位 经理(Manager) 技术人员(Technician) 销售(SaleMan) 销售经理(SaleManager) //每增加一个人,工号加1 //薪资:经理 8000 技术人员

    //公司有四种职位 经理(Manager) 技术人员(Technician) 销售(SaleMan) 销售经理(SaleManager) //每增加一个人,工号加1 //薪资:经理 8000 技术人员 ...

  8. WordPress企业主题:BDV适合于小型公司、企业,主要以产品类为主

    2019独角兽企业重金招聘Python工程师标准>>> WordPress企业主题:BDV适合于小型公司.企业,主要以产品类为主. 二级菜单 自定义菜单 首页幻灯 友情链接 特色图像 ...

  9. C++小型公司管理系统 公司有雇员,经理,技术人员,销售经理;储存这些人员的姓名、编号、年龄、性别、工资;

    具体代码如下: #include<iostream> using namespace std; class date{public:int year1;int month1;int day ...

最新文章

  1. 辽宁省计算机专业A类,辽宁省2008年中职升高职招生考试计算机专业综合试题
  2. EasyPusher实现Android手机屏幕桌面直播,实时推送操作画面,用于手游直播等应用
  3. 汇总|3D目标检测文章(CVPR2020)
  4. 带参数的方法;导入包
  5. WCF学习之旅—第三个示例之二(二十八)
  6. 【Little_things】jsp+MySql简单的数据录入功能
  7. iPhone 12 mini大幅砍单 苹果可能又要因为屏幕而向三星支付违约金
  8. 用C#实现DES加密解密解决URL参数明文的问题
  9. php mixed约束,Mixed Content: 混合被动/显示内容和混合活动内容
  10. Java简单实现贪吃蛇经典小游戏(附源代码)
  11. 手把手教你学DSP 28335学习笔记
  12. 汇编语言指令大全(详细)
  13. [原]终于有新机器用了Intel E6500K+4G+23.6’液晶
  14. logo一键制作器源码
  15. SQL判断是否为null如果为null则返回0
  16. 25岁,我明白了这些道理
  17. 一个命令批量新建任意名称的文件夹
  18. 《社会调查数据管理——基于Stata 14管理CGSS数据》一3.3 和社会调查有关的术语...
  19. 工厂源码--迭代器Iterator
  20. VMware虚拟机复制粘贴不能用的解决办法

热门文章

  1. 数据异构的武器-BINLOG+MQ
  2. 新疆咋报名计算机二级,新疆2018年上半年计算机二级报名通知
  3. 二手车买卖小程序开发制作功能介绍
  4. 写一个清空Mysql数据库数据的脚本Shell
  5. 归一化 (Normalization)、标准化 (Standardization)和中心化/零均值化 (Zero-centered)...
  6. 探索脑电情绪分类(EEG)项目的总结篇
  7. mysql 查看是否锁表
  8. 小米有Android11吗,真实体验说说安卓之光的小米11 Ultra有什么有缺点
  9. 东方学习SQL-task01安装及认识数据库
  10. 解决.NET Core/Standard 2.0编译时报“CS0579: Duplicate 'Assem