题目5 销售管理系统 [说明及要求] 某公司有5个销售员,负责销售6中产品。每个销售员都将当天销售的每种产品各写一张便条交上来。每张便条包含内容为销售员的代号、产品代号、该种产品当天的销售额。 每位销售员每天可能上缴0-6张便条。假设收集到了上个月的所有便条,编写一个处理程序,读取上个月的销售情况,并做以下处理:(1) 计算上个月每个人每种产品的销售额;(2) 按销售额对销售员进行排序,输出排序结果;(3) 统计每种产品的总销售额,对这些产品按从高到低的顺序输出排序结果。 [提示] (1) 可采用结构体数组和文件系统实现。 (2) 结构体成员包括销售代号、产品和销售额。 (3) 程序运行后首先打印一个菜单:N.销售额录入;D.销售明细;S.排序;T.统计; Q.退出。 (4) 考虑利用函数调用,编写main函数进行演示。
时间: 2023-03-12 14:19:53 浏览: 80
答:本系统利用结构体数组和文件系统实现,结构体成员包括销售员的代号、产品代号、该种产品当天的销售额,程序运行后打印的菜单为N.销售额录入;D.销售明细;S.排序;T.统计; Q.退出。主要功能包括计算上个月每个人每种产品的销售额,按销售额对销售员进行排序,统计每种产品的总销售额,并按从高到低的顺序输出排序结果。
相关问题
C++某公司有四种类型的员工:经理、兼职技术人员、推销员和销售经理。各员工的月薪计算如下:经理拿固定月薪28000元;兼职技术人员按200/每小时领取月薪;推销员的月薪按固定月薪3000元和当月推销额的4%提成;销售经理拿固定月薪和销售提成,固定月薪为7000元,销售提成为所管辖部门当月销售额总额的5‰。根据上述要求,设计一个人员信息管理系统。此管理系统要求如下: 1.设计一个基类Employee,派生出其他的类,每个类有构造函数和析构函数; 2.每个类的成员变量至少包括:姓名、员工编号和月薪总额; 3.在主函数中,使用各派生类分别定义一个对象,需要从键盘输入: 1)这四类员工的姓名; 2)兼职技术人员本月的工作小时数; 3)推销员本月的销售额; 4)销售经理所管辖部门本月的销售总额。 4.分别输出这四类员工本月工资;
好的,这是一个很好的面向对象的题目,让我们来一步一步实现这个人员信息管理系统。
首先,我们需要设计一个基类 `Employee`,它包含姓名、员工编号和月薪总额这三个成员变量,以及一个纯虚函数 `calcSalary()` 用于计算月薪总额。
```cpp
class Employee {
protected:
string name;
int id;
double salary;
public:
Employee(string name, int id) : name(name), id(id), salary(0) {}
virtual ~Employee() {}
virtual void calcSalary() = 0;
void printInfo() {
cout << "姓名:" << name << endl;
cout << "员工编号:" << id << endl;
cout << "月薪总额:" << salary << endl;
}
};
```
接着,我们派生出其他的类,分别是经理、兼职技术人员、推销员和销售经理。这些类都需要实现 `calcSalary()` 函数,根据不同的计算方法计算出月薪总额。
```cpp
class Manager : public Employee {
public:
Manager(string name, int id) : Employee(name, id) {}
void calcSalary() {
salary = 28000;
}
};
class PartTimeEmployee : public Employee {
private:
double hours;
public:
PartTimeEmployee(string name, int id) : Employee(name, id), hours(0) {
cout << "请输入兼职技术人员的工作小时数:";
cin >> hours;
}
void calcSalary() {
salary = 200 * hours;
}
};
class Salesman : public Employee {
private:
double sales;
public:
Salesman(string name, int id) : Employee(name, id), sales(0) {
cout << "请输入推销员本月的销售额:";
cin >> sales;
}
void calcSalary() {
salary = 3000 + 0.04 * sales;
}
};
class SalesManager : public Employee {
private:
double sales;
public:
SalesManager(string name, int id) : Employee(name, id), sales(0) {
cout << "请输入销售经理所管辖部门本月的销售总额:";
cin >> sales;
}
void calcSalary() {
salary = 7000 + 0.005 * sales;
}
};
```
最后,在主函数中分别定义一个对象,并调用其 `calcSalary()` 函数计算月薪总额,再输出员工信息和月薪总额即可。
```cpp
int main() {
Employee* emp;
emp = new Manager("张三", 1001);
emp->calcSalary();
emp->printInfo();
emp = new PartTimeEmployee("李四", 1002);
emp->calcSalary();
emp->printInfo();
emp = new Salesman("王五", 1003);
emp->calcSalary();
emp->printInfo();
emp = new SalesManager("赵六", 1004);
emp->calcSalary();
emp->printInfo();
return 0;
}
```
运行程序,输入兼职技术人员的工作小时数、推销员本月的销售额和销售经理所管辖部门本月的销售总额,可以得到以下输出:
```
请输入销售经理所管辖部门本月的销售总额:100000
姓名:张三
员工编号:1001
月薪总额:28000
请输入兼职技术人员的工作小时数:80
姓名:李四
员工编号:1002
月薪总额:16000
请输入推销员本月的销售额:50000
姓名:王五
员工编号:1003
月薪总额:5000
请输入销售经理所管辖部门本月的销售总额:100000
姓名:赵六
员工编号:1004
月薪总额:7500
```
以上就是这个人员信息管理系统的完整代码。
阅读全文