cpp-面向抽象类编程员工工资管理系统案例-请不要在构造函数写业务代码导致多重继承后混乱_工资管理系统类图_su27_0101的博客-程序员资料

技术标签: # C/C++  

类图

面向抽象类编程

代码

main.cpp

#include <iostream>
#include <stdlib.h>
#include "employee.h"
#include "coder.h"
#include "manager.h"
#include "saleman.h"
#include "saleManager.h"
using namespace std;
//new coder,new manager,new saleman,
int main(){
	employee *e[] = {new coder,new saleManager};
	
	for(int i=0;i<sizeof(e)/sizeof(e[0]);i++){
		e[i]->init();
		e[i]->getInfo();
	}

	system("pause");
	return 0;
}
  • employee.h
#pragma once
#include <string>
#include <iostream>
using namespace std;
static int e_id = 1000;
class employee
{
public:
	employee(void);
	virtual void init() = 0;
	void getSalary();
	void getInfo();
	virtual~employee(void);
protected:
	string name;
	int level;
	int id;
	double salary;
};
  • employee.cpp
#include "employee.h"


employee::employee(void)
{
	name = "";
	level = 1;
	salary = 0.0;
	id = e_id++;
}

void employee::getSalary(){
	cout << "工资:" << salary << endl;
	
}
void employee::getInfo(){
	cout << "----------------" << endl;
	cout << "姓名:" << name << endl;
	cout << "等级:" << level << endl;
	cout << "编号:" << id  << endl;
	cout << "工资:" << salary << endl;
	cout << "----------------" << endl;
}
employee::~employee(void)
{
	
}

  • coder.h
#pragma once
#include "employee.h"
class coder :
	public employee
{
public:
	coder(void);
	virtual void init();
	
	
	
	~coder(void);
private:
	int day;
	int hour;
	int hourWage;
};
  • coder.cpp
#include "coder.h"


coder::coder(void)
{
	
}
void coder::init(){
	cout << "+添加一个程序员信息" << endl;
	cout << "请输入雇员姓名" << endl;
	cin >> name;
	cout << "请输入雇员等级" << endl;
	cin >> level;
	cout << "请输入每月上班天数" << endl;
	cin >> day;
	cout << "请输入每日上班小时数" << endl;
	cin >> hour;
	hourWage = 100;
	salary = day * hour * hourWage;
}



coder::~coder(void)
{
}

  • manager.h
#pragma once
#include "employee.h"
class manager :
	virtual public employee
{
public:
	manager(void);
	virtual void init();
	~manager(void);
};
  • manager.cpp
#include "manager.h"


manager::manager(void)
{
	
	

}

void manager::init(){
	cout << "+添加一个经理信息" << endl;
	cout << "请输入雇员姓名" << endl;
	cin >> name;
	cout << "请输入雇员等级" << endl;
	cin >> level;
	
	salary = 8000;
}
manager::~manager(void)
{
}

  • saleman.h
#pragma once
#include "employee.h"
class saleman :
	virtual public employee
{
public:
	saleman(void);
	virtual void init();
	~saleman(void);
protected:
	double saleVolumn;
};


  • saleman.cpp
#include "saleman.h"


saleman::saleman(void)
{
	
}
void saleman::init(){
	cout << "+添加一个销售员信息" << endl;
	cout << "请输入雇员姓名" << endl;
	cin >> name;
	cout << "请输入雇员等级" << endl;
	cin >> level;
	cout << "请输入当月销售额" << endl;
	cin >> saleVolumn;
	
	salary = saleVolumn * 0.04;
}


saleman::~saleman(void)
{
}

  • saleManager.h
#pragma once
#include "manager.h"
#include "saleman.h"
class saleManager :
	public manager,public saleman
{
public:
	saleManager(void);
	virtual void init();
	~saleManager(void);
};
  • saleManager.cpp
#include "saleManager.h"


saleManager::saleManager(void)
{
	
	
	
}
void saleManager::init(){
	cout << "+添加一个销售经理信息" << endl;
	cout << "请输入雇员姓名" << endl;
	cin >> name;
	cout << "请输入雇员等级" << endl;
	cin >> level;
	cout << "请输入当月销售额" << endl;
	cin >> saleVolumn;
	salary = saleVolumn * 0.05 + 5000;
}


saleManager::~saleManager(void)
{
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42043407/article/details/106887109

智能推荐

redis在java程序中的用法_weryou1990的博客-程序员资料

基础篇:redis在java程序中的用法1.需要打开redis数据库服务2.需要引入jedis.jar3.创建MyRedis类进行测试import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import re

preempt_count_Loopers的博客-程序员资料

定义/* * low level task data that entry.S needs immediate access to. * __switch_to() assumes cpu_context follows immediately after cpu_domain. */struct thread_info { unsigned long flags; /* low

BGP同步与路由黑洞,路由聚合_router-map 对黑洞路由有效吗_half ~summer的博客-程序员资料

BGP路由不优BGP路由下一跳不可达 BGP同步拓扑图 (AS 234之间直接 2 4建立BGP,EBGP之间采取直连 )下一跳属性:将EBGP邻居学习路由传递给IBGP邻居时,下一跳不发生变化将IBGP邻居学习路由传递给EBGP邻居时,下一跳为EBGP邻居建立的更新源地址。把R4的环回通告,R2会加表失败,这是因为底层是EIGRP,AD值90小于200,所以...

事件循环,event loop_imkaifan的博客-程序员资料

事件循环,event loop的重要概念:1、Javascript是单线程的,所有的同步任务都会在主线程中执行。2、当主线程中的任务,都执行完之后,系统会 “依次” 读取任务队列里的事件。与之相对应的异步任务进入主线程,开始执行。3、==异步任务之间,会存在差异,所以它们执行的优先级也会有区别。==大致分为 微任务(micro task,如:Promise、MutaionObserver等)和宏任务(macro task,如:setTimeout、setInterval、I/O等)。4、Promis

循环生成网络 CycleGan 原理介绍_cyclegan是什么_deephub的博客-程序员资料

​ 本文旨在解释“循环生成网络”的内部工作原理,以及如何将其应用于解决现实世界中的任务。介绍​ 循环生成对抗网络(简称CycleGans)[1]是功能强大的计算机算法,具有改善数字生态系统的潜力。 它们能够将信息从一种表示形式转换为另一种表示形式。 例如,当给定图像时,他们可以对其进行模糊处理,着色(如果其最初是黑白的),提高其清晰度或填补缺失的空白。​ 它们比传统的设计/生产/写作软件更强大。 因为CycleGans是机器学习算法,所以它们原则上可以学习实现所需的任何转换。 相反,传统的转换软

VC++串口通讯(源代码)_c++串口接收源码_keivin2006的博客-程序员资料

VC++常用功能封装代码一系列文章与源码 (欢迎订阅,持续更新...))https://blog.csdn.net/kaizi318/article/details/108846326源代码demo已上传到百度网盘:永久生效 实现功能,实现了串口打开,接收,发送等功能 ,还支持modbus串口通讯功能如看效果:上代码,添加封装好的类到项目中,class CSerialPort{public: int m_nWriteSize; void ClosePort();...

随便推点

python:pyqt5的基本使用_qprogressbar有没有达到100%的信号_face丶的博客-程序员资料

★基本框架★import sysfrom PyQt5.QtGui import *from PyQt5.QtCore import *from PyQt5.QtWidgets import *class Demo(QWidget): def __init__(self): super(Demo, self).__init__() ...

武汉理工大学2021计算机技术专硕经验贴(未完待续)_武汉理工大学计算机专硕_UtopiaInGarden的博客-程序员资料

千呼万唤始出来,终于是在漫长的折磨中等来了武汉理工的拟录取通知。到2021年4月20日,我十四个月的考研路终于算是彻底结束,一切尘埃落定。特写此文来回顾总结我的考研经历,也给后面想要报考武汉理工大学的学弟学妹们一些参考。首先介绍一下我自己,本科武汉一双非院校,2021报考武汉理工大学计算机技术专硕,初试成绩396,计专方向排名第五;复试80.16,总分79.49,总排名计专第十上岸。初试武汉理工大学计专初试科目为 政治 英语二 数学二 408计算机基础综合。数学数学的学习没有捷径可言,一步一脚印的

python之BeautifulSoup库_贾继康的博客-程序员资料

python之BeautifulSoup库简介:BeautifulSoup库通过定位 HTML 标签来格式化和组织复杂的网络信息,用简单易用的Python对象为我们展现 XML 结构信息 安装: 博主是python3.6 版本通过命令:pip install beautifulsoup4进行安装简单范例:问题一1:代码# coding=utf-8"""@author: jiajiknag程

[安卓开发笔记一]Android开发配置opencv环境超详细教程_android搭建完opencv环境怎么用_晓晨同月的博客-程序员资料

[安卓开发笔记一]Android开发配置opencv环境超详细教程 开发安卓项目时要用到opencv,在网上找了很多教程,踩了很多坑才弄好,这里将自己亲自配置的过程记录如下,方便后人1、前期准备1 上opencv官网,下载opencv for android 2 安装 Android studio 2、方法一(使用C++实现底层算法再利用jni传递使用)开始配置1.安装Android ND...

git 拉取最新代码_mixboot的博客-程序员资料

回退到当前版本,重置代码,代码恢复到原始状态git reset --hard HEAD切换到master分支git checkout master拉取最新代码并合并git pull

财务学python有意义吗-8年老财务:财务分析学python就能提高效率?一半人是骗子..._weixin_37988176的博客-程序员资料

半信半疑我加了一个卖课的微信,她跟我说,学了python就能轻松搞定各种可视化报表,实现自动化,能转行干程序员,工作好找工资高,而且python入门简单,0基础也能学....听起来python是个万能语言,于是我二话不说就报名了,不求转行程序员,能帮我实现自动化报表听起来也不错。于是一个年近35的老财务就开始写起了代码,但是课上了一大半,我觉得我被骗了。就拿课程里学的用python操作 Excel...

推荐文章

热门文章

相关标签