C++实现小型公司工资管理系统
以下是使用C++编写的一个实现小型公司工资管理的程序:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
class Employee {
protected:
int id;
string name;
float monthlySalary;
public:
Employee(int id, string name) {
this->id = id;
this->name = name;
monthlySalary = 0;
}
virtual void calculateSalary() = 0;
void displayInfo() {
cout << 'ID: ' << id << endl;
cout << 'Name: ' << name << endl;
cout << 'Monthly Salary: ' << monthlySalary << ' yuan' << endl;
}
};
class Manager : public Employee {
public:
Manager(int id, string name) : Employee(id, name) {}
void calculateSalary() {
monthlySalary = 8000;
}
};
class PartTimeTechnician : public Employee {
private:
float hourlyRate;
float hoursWorked;
public:
PartTimeTechnician(int id, string name, float hourlyRate, float hoursWorked) : Employee(id, name) {
this->hourlyRate = hourlyRate;
this->hoursWorked = hoursWorked;
}
void calculateSalary() {
monthlySalary = hourlyRate * hoursWorked;
}
};
class Salesperson : public Employee {
private:
float salesAmount;
public:
Salesperson(int id, string name, float salesAmount) : Employee(id, name) {
this->salesAmount = salesAmount;
}
void calculateSalary() {
monthlySalary = salesAmount * 0.04;
}
};
class SalesManager : public Employee {
private:
float salesAmount;
public:
SalesManager(int id, string name, float salesAmount) : Employee(id, name) {
this->salesAmount = salesAmount;
}
void calculateSalary() {
monthlySalary = 5000 + salesAmount * 0.05;
}
};
int main() {
vector<Employee*> employees;
// 添加经理
employees.push_back(new Manager(1, 'Manager 1'));
// 添加兼职技术人员
employees.push_back(new PartTimeTechnician(2, 'Technician 1', 100, 80));
employees.push_back(new PartTimeTechnician(3, 'Technician 2', 100, 60));
// 添加销售员
employees.push_back(new Salesperson(4, 'Salesperson 1', 50000));
employees.push_back(new Salesperson(5, 'Salesperson 2', 100000));
// 添加销售经理
employees.push_back(new SalesManager(6, 'Sales Manager 1', 200000));
// 计算并显示工资信息
for (auto employee : employees) {
employee->calculateSalary();
employee->displayInfo();
cout << endl;
}
// 释放内存
for (auto employee : employees) {
delete employee;
}
return 0;
}
这个程序使用了面向对象的思想,定义了一个抽象的Employee类作为基类,然后派生出了具体的员工类型类:Manager(经理)、PartTimeTechnician(兼职技术人员)、Salesperson(销售员)和SalesManager(销售经理)。每个员工类型类都实现了纯虚函数calculateSalary()来计算月工资。
在main()函数中,创建了一个vector来保存员工对象的指针,然后按照题目要求创建不同类型的员工对象并添加到vector中。最后,遍历vector,计算每个员工的月工资并显示全部信息。
注意,这个程序只是一个简单的示例,并没有进行输入验证和错误处理。在实际应用中,可能需要添加更多的逻辑和异常处理来提高程序的健壮性和用户体验。
原文地址: https://www.cveoy.top/t/topic/PB1 著作权归作者所有。请勿转载和采集!