《C++期末机试题》 一、设计一个小型公司的信息管理系统,内容如下。 某小型公司主要有4类人:经理、兼职技术人员、销售经理、兼职销售员,这些人具有以下属性: 经理:姓名、编号、级别、固定工资、当月薪水、计算月薪、显示信息。 兼职技术人员:姓名、编号、级别、工作小时、每小时工资额、当月薪水、计算月薪、显示信息。 兼职销售员:姓名、编号、级别、销售额、销售额提成、当月薪水、计算月薪、显示信息。 销售经理:姓名、编号、级别、固定工资、销售额、销售额提成、当月薪水、计算月薪、显示信息。 要求: 1、 人员编号要求基数为1000,每输入一个人员信息编号顺序加1; 2、 要有主函数,在主函数里定义不同类的对象,实现人员信息的输出。 3、月薪计算办法: 经理固定月薪8000元;兼职技术人员按100元/小时领取月薪;兼职推销员按当月销售额的4%提成;销售经理固定月薪5000,销售提成为所管辖部门当月销售总额的千分之五。 4、创建工程时,工程名以自己的学号命名,源程序以自己的名字命名,提交的时候提交工程文件夹。 各班学委和班长在规定时间内,共同负责收齐后交给老师。
时间: 2023-08-14 20:04:41 浏览: 110
很好,这是一个关于设计小型公司信息管理系统的问题。您需要设计四个类来表示不同类型的人员,并定义他们的属性和方法。以下是一个可能的解决方案:
```c++
#include <iostream>
#include <string>
using namespace std;
// 定义Person类作为基类
class Person {
protected:
string name;
int id;
int level;
double salary;
public:
Person(string n, int l, double s): name(n), level(l), salary(s) {
static int base_id = 1000;
id = ++base_id;
}
virtual void calculateSalary() = 0;
virtual void display() = 0;
};
// 经理类
class Manager: public Person {
private:
double month_salary;
public:
Manager(string n, int l, double s): Person(n, l, s) {}
void calculateSalary() {
month_salary = 8000;
}
void display() {
cout << "姓名:" << name << endl;
cout << "编号:" << id << endl;
cout << "级别:" << level << endl;
cout << "固定工资:" << salary << "元" << endl;
cout << "当月薪水:" << month_salary << "元" << endl;
}
};
// 兼职技术人员类
class PartTimeTech: public Person {
private:
double work_hours;
double hour_salary;
double month_salary;
public:
PartTimeTech(string n, int l, double s): Person(n, l, s) {}
void calculateSalary() {
month_salary = work_hours * hour_salary;
}
void display() {
cout << "姓名:" << name << endl;
cout << "编号:" << id << endl;
cout << "级别:" << level << endl;
cout << "工作小时:" << work_hours << endl;
cout << "每小时工资额:" << hour_salary << "元" << endl;
cout << "当月薪水:" << month_salary << "元" << endl;
}
void setWorkHours(double h) {
work_hours = h;
}
void setHourSalary(double s) {
hour_salary = s;
}
};
// 兼职销售员类
class PartTimeSales: public Person {
private:
double sales_amount;
double commission_rate;
double month_salary;
public:
PartTimeSales(string n, int l, double s): Person(n, l, s) {}
void calculateSalary() {
month_salary = sales_amount * commission_rate;
}
void display() {
cout << "姓名:" << name << endl;
cout << "编号:" << id << endl;
cout << "级别:" << level << endl;
cout << "销售额:" << sales_amount << "元" << endl;
cout << "销售额提成:" << commission_rate * 100 << "%" << endl;
cout << "当月薪水:" << month_salary << "元" << endl;
}
void setSalesAmount(double a) {
sales_amount = a;
}
void setCommissionRate(double r) {
commission_rate = r;
}
};
// 销售经理类
class SalesManager: public Person {
private:
double sales_amount;
double commission_rate;
double month_salary;
public:
SalesManager(string n, int l, double s): Person(n, l, s) {}
void calculateSalary() {
month_salary = salary + sales_amount * commission_rate * 0.005;
}
void display() {
cout << "姓名:" << name << endl;
cout << "编号:" << id << endl;
cout << "级别:" << level << endl;
cout << "固定工资:" << salary << "元" << endl;
cout << "销售额:" << sales_amount << "元" << endl;
cout << "销售额提成:" << commission_rate * 100 << "%" << endl;
cout << "当月薪水:" << month_salary << "元" << endl;
}
void setSalesAmount(double a) {
sales_amount = a;
}
void setCommissionRate(double r) {
commission_rate = r;
}
};
int main() {
Manager m("张经理", 1, 10000);
PartTimeTech pt("李技术", 2, 80);
pt.setWorkHours(80);
pt.setHourSalary(100);
PartTimeSales ps("王销售", 3, 90);
ps.setSalesAmount(100000);
ps.setCommissionRate(0.04);
SalesManager sm("赵总监", 4, 15000);
sm.setSalesAmount(200000);
sm.setCommissionRate(0.05);
m.calculateSalary();
pt.calculateSalary();
ps.calculateSalary();
sm.calculateSalary();
m.display();
pt.display();
ps.display();
sm.display();
return 0;
}
```
这个程序定义了一个`Person`类作为基类,它有四个派生类:`Manager`、`PartTimeTech`、`PartTimeSales`和`SalesManager`。每个类都有自己的属性和方法,它们都继承了`Person`类的属性和方法。在主函数中,我们分别创建了不同类型的对象,并调用它们的方法来计算和显示薪水。
阅读全文