计一个小型公司的信息管理系统,内容如下。 某小型公司主要有4类人:经理、兼职技术人员、销售经理、兼职销售员,这些人具有以下属性: 经理:姓名、编号、级别、固定工资、当月薪水、计算月薪、显示信息。 兼职技术人员:姓名、编号、级别、工作小时、每小时工资额、当月薪水、计算月薪、显示信息。 兼职销售员:姓名、编号、级别、销售额、销售额提成、当月薪水、计算月薪、显示信息。 销售经理:姓名、编号、级别、固定工资、销售额、销售额提成、当月薪水、计算月薪、显示信息。 要求: 1、 人员编号要求基数为1000,每输入一个人员信息编号顺序加1; 2、 要有主函数,在主函数里定义不同类的对象,实现人员信息的输出。 3、月薪计算办法: 经理固定月薪8000元;兼职技术人员按100元/小时领取月薪;兼职推销员按当月销售额的4%提成;销售经理固定月薪5000,销售提成为所管辖部门当月销售总额的千分之五。 c++实现

时间: 2023-08-10 19:04:17 浏览: 36
以下是一个简单的C++实现,包含了所述的类和要求的功能: ```cpp #include <iostream> #include <string> using namespace std; class Employee { public: Employee(string name, int level) : name(name), level(level), id(nextId++) {} virtual void displayInfo() const = 0; virtual void calculateSalary() = 0; protected: string name; int level; int id; double salary; static int nextId; }; int Employee::nextId = 1000; class Manager : public Employee { public: Manager(string name, int level) : Employee(name, level), fixedSalary(8000) {} void displayInfo() const override { cout << "Manager " << name << ", ID " << id << ", level " << level << endl; cout << "Fixed salary: " << fixedSalary << ", current month salary: " << salary << endl; } void calculateSalary() override { salary = fixedSalary; } private: double fixedSalary; }; class PartTimeTechnician : public Employee { public: PartTimeTechnician(string name, int level, double hourlySalary) : Employee(name, level), hourlySalary(hourlySalary) {} void displayInfo() const override { cout << "Part-time technician " << name << ", ID " << id << ", level " << level << endl; cout << "Hourly salary: " << hourlySalary << ", worked hours: " << workedHours << ", current month salary: " << salary << endl; } void calculateSalary() override { salary = hourlySalary * workedHours; } void setWorkedHours(double hours) { workedHours = hours; } private: double hourlySalary; double workedHours; }; class PartTimeSales : public Employee { public: PartTimeSales(string name, int level, double commissionRate) : Employee(name, level), commissionRate(commissionRate) {} void displayInfo() const override { cout << "Part-time sales " << name << ", ID " << id << ", level " << level << endl; cout << "Sales amount: " << salesAmount << ", commission rate: " << commissionRate << ", current month salary: " << salary << endl; } void calculateSalary() override { salary = salesAmount * commissionRate; } void setSalesAmount(double amount) { salesAmount = amount; } private: double commissionRate; double salesAmount; }; class SalesManager : public Employee { public: SalesManager(string name, int level, double fixedSalary, double commissionRate) : Employee(name, level), fixedSalary(fixedSalary), commissionRate(commissionRate) {} void displayInfo() const override { cout << "Sales manager " << name << ", ID " << id << ", level " << level << endl; cout << "Fixed salary: " << fixedSalary << ", sales amount: " << salesAmount << ", commission rate: " << commissionRate << ", current month salary: " << salary << endl; } void calculateSalary() override { salary = fixedSalary + salesAmount * commissionRate; } void addSalesAmount(double amount) { salesAmount += amount; } private: double fixedSalary; double commissionRate; double salesAmount = 0; }; int main() { Manager manager("John", 2); manager.calculateSalary(); manager.displayInfo(); PartTimeTechnician technician("Mike", 1, 100); technician.setWorkedHours(80); technician.calculateSalary(); technician.displayInfo(); PartTimeSales sales("Alice", 1, 0.04); sales.setSalesAmount(50000); sales.calculateSalary(); sales.displayInfo(); SalesManager salesManager("Bob", 3, 5000, 0.005); salesManager.addSalesAmount(100000); salesManager.calculateSalary(); salesManager.displayInfo(); return 0; } ``` 在这个程序中,我们定义了一个`Employee`基类,它包含了所有员工共有的属性和方法,如姓名、级别、编号、当月薪水等。然后,我们派生出了4个子类,分别对应经理、兼职技术人员、兼职销售员和销售经理。 每个子类都覆盖了`displayInfo`和`calculateSalary`方法,前者用于输出员工信息,后者用于计算当月薪水。其中,兼职技术人员和兼职销售员还增加了一个`setWorkedHours`和`setSalesAmount`方法,用于设置他们的工作小时数和销售额。 在主函数中,我们定义了不同类型的员工,设置他们的属性,并调用他们的`calculateSalary`和`displayInfo`方法,输出他们的当月薪水和信息。 需要注意的是,这里的实现只是一个简单的示例,可能还有很多需要完善的地方,例如输入员工信息、处理异常情况等等。

相关推荐

最新推荐

recommend-type

基于C/S结构的小型餐饮管理系统设计与实现

为使酒店管理(信息工程)专业的学生掌握设计和实现旅游信息管理系统的方法,对酒店餐饮管理工作的业务流程进行了分析,并在此基础上设计了可供学生在管理信息系统设计课程中使用的餐饮管理系统设计方案。通过教学...
recommend-type

中小型超市综合信息管理系统-毕业设计(源程序).doc

整个超市综合管理信息系统是一个很大的系统,它包括,人事管理模块,公司财务管理模块,商品采购管理模块,商品销售管理模块,企业用户查询模块等,各个模块有很大的相似性,因此,在这里主要以一个模块作为样板详细...
recommend-type

中小型超市综合信息管理系统-毕业设计(论文).doc

该系统完成日常超市的综合信息管理和维护,它主要包括以下几个模块:人事信息管理模块,主要包含员工部门信息管理,员工的信息管理,员工考勤管理;商品采购信息管理模块,供应商的信息管理,供应商联系人的信息管理...
recommend-type

小型仓库管理系统的设计与实现(毕业论文)

小型仓库管理系统的设计与实现(毕业论文) -----------------来自网络 如有侵权 请联系删除
recommend-type

项目经理职责以及项目经理的工作内容说明

项目经理工作职责职责描述及说明,针对中小型项目对于项目经理的管理办法; 项目经理是对项目实行质量、安全、进度、成本管理的责任保证体系和全面提高项目管理水平、所设立的重要管理岗位。它要负责处理项目中所有...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

2. 通过python绘制y=e-xsin(2πx)图像

可以使用matplotlib库来绘制这个函数的图像。以下是一段示例代码: ```python import numpy as np import matplotlib.pyplot as plt def func(x): return np.exp(-x) * np.sin(2 * np.pi * x) x = np.linspace(0, 5, 500) y = func(x) plt.plot(x, y) plt.xlabel('x') plt.ylabel('y') plt.title('y = e^{-x} sin(2πx)') plt.show() ``` 运行这段
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。