设计一个小型企业工资管理系统 设计说明:该小型企业的员工主要有 4 类:经理、技术员、销售员和计时工。要求存储员工的工号、姓名、岗位、月工资等基本信息。 工资计算方法: 1经理:领取固定月薪 8800 元 2技术员:分高级、中级、初级三类,其中高级固定每月 7700 元,中级 固定每月 6600 元,初级固定每月 5500 元 3销售员:底薪 2500+销售额*2%提成 4计时工:工作时间*每小时 66 元 该企业员工的类层次结构为:员工包含经理,技术员,销售员,计时工 要有一个菜单,用于选择各项功能: 1数据录入:输入各种数据(其中每类员工不能少于 3 人) 2数据查询:能根据工号或姓名查询工资信息 3职工信息的删除、修改 4工资计算:能对各类员工进行工资计算 5数据输出:能按类别输出员工信息及工资信息(包括计算工资时所用到 的相关数据,例如:销售员的销售额) 6设置登录本系统的用户名和密码,通过用户名和密码登录
时间: 2023-07-16 20:12:16 浏览: 69
这是一个较为复杂的系统,需要涉及到数据存储、数据查询、数据修改、工资计算、数据输出等多个功能。以下是一个初步的设计方案:
1. 数据存储:可以使用数据库或者文件存储来保存员工的工号、姓名、岗位、月工资等基本信息。可以将每个员工作为一个对象,用面向对象的思想来管理员工信息。
2. 数据查询:可以根据工号或姓名进行查询,查询到员工信息后可以显示在界面上。
3. 职工信息的删除、修改:可以提供删除和修改功能,删除时需要确认,修改时可以修改姓名、岗位、月工资等信息。
4. 工资计算:可以根据员工的岗位和月工资计算出实际工资,经理的工资为固定月薪 8800 元、技术员的工资根据级别不同而不同、销售员的工资由底薪和提成组成、计时工的工资根据工作时间计算。
5. 数据输出:可以按照员工类别进行输出,包括员工基本信息和工资信息。
6. 设置登录本系统的用户名和密码:可以使用加密算法来保证用户名和密码的安全性,只有通过验证才能登录系统。
以上是一个初步的设计方案,具体实现还需要进一步细化和完善。同时,还需要考虑系统的易用性、可靠性、安全性等方面的问题。
相关问题
用C++写小型公司管理系统该小型企业的员工主要有 4 类:经理、技术员、销售员和计时工。要求存 储员工的工号、姓名、岗位、月工资等基本信息。
好的,那么我们可以用 C++ 类来实现这个小型公司管理系统。首先,我们需要定义一个员工类 Employee,它包含工号、姓名、岗位和月工资等基本信息。
```cpp
class Employee {
public:
Employee(int id, std::string name, std::string position, double salary);
int getId() const;
std::string getName() const;
std::string getPosition() const;
double getSalary() const;
virtual void printInfo() const;
protected:
int m_id;
std::string m_name;
std::string m_position;
double m_salary;
};
```
这是一个基类,包含了所有员工都有的基本信息。其中,printInfo() 方法用于输出员工的信息。
接下来,我们可以定义各种类型的员工类,继承自基类 Employee。比如,经理类 Manager、技术员类 Technician、销售员类 Sales 和计时工类 HourlyWorker。
```cpp
class Manager : public Employee {
public:
Manager(int id, std::string name, double salary);
void printInfo() const override;
};
class Technician : public Employee {
public:
Technician(int id, std::string name, double salary);
void printInfo() const override;
};
class Sales : public Employee {
public:
Sales(int id, std::string name, double salary);
void printInfo() const override;
};
class HourlyWorker : public Employee {
public:
HourlyWorker(int id, std::string name, double wage, double hours);
double getWage() const;
double getHours() const;
double getSalary() const override;
void printInfo() const override;
private:
double m_wage;
double m_hours;
};
```
每个类都重载了 printInfo() 方法,用于输出自己的信息。注意 HourlyWorker 类有一个额外的属性,即时薪和工作小时数,需要根据这两个属性计算月工资。
接下来,我们可以实现这些类的构造函数和 printInfo() 方法。
```cpp
Employee::Employee(int id, std::string name, std::string position, double salary)
: m_id(id), m_name(name), m_position(position), m_salary(salary) {}
int Employee::getId() const {
return m_id;
}
std::string Employee::getName() const {
return m_name;
}
std::string Employee::getPosition() const {
return m_position;
}
double Employee::getSalary() const {
return m_salary;
}
void Employee::printInfo() const {
std::cout << "工号:" << m_id << ",姓名:" << m_name
<< ",岗位:" << m_position << ",月工资:" << m_salary << "元" << std::endl;
}
Manager::Manager(int id, std::string name, double salary)
: Employee(id, name, "经理", salary) {}
void Manager::printInfo() const {
std::cout << "【经理】";
Employee::printInfo();
}
Technician::Technician(int id, std::string name, double salary)
: Employee(id, name, "技术员", salary) {}
void Technician::printInfo() const {
std::cout << "【技术员】";
Employee::printInfo();
}
Sales::Sales(int id, std::string name, double salary)
: Employee(id, name, "销售员", salary) {}
void Sales::printInfo() const {
std::cout << "【销售员】";
Employee::printInfo();
}
HourlyWorker::HourlyWorker(int id, std::string name, double wage, double hours)
: Employee(id, name, "计时工", 0), m_wage(wage), m_hours(hours) {}
double HourlyWorker::getWage() const {
return m_wage;
}
double HourlyWorker::getHours() const {
return m_hours;
}
double HourlyWorker::getSalary() const {
return m_wage * m_hours;
}
void HourlyWorker::printInfo() const {
std::cout << "【计时工】";
Employee::printInfo();
}
```
最后,我们可以在主函数中创建各类员工的对象,并输出它们的信息。
```cpp
int main() {
Manager m(1001, "张三", 10000);
Technician t(1002, "李四", 8000);
Sales s(1003, "王五", 5000);
HourlyWorker h(1004, "赵六", 50, 160);
m.printInfo();
t.printInfo();
s.printInfo();
h.printInfo();
return 0;
}
```
输出结果如下:
```
【经理】工号:1001,姓名:张三,岗位:经理,月工资:10000元
【技术员】工号:1002,姓名:李四,岗位:技术员,月工资:8000元
【销售员】工号:1003,姓名:王五,岗位:销售员,月工资:5000元
【计时工】工号:1004,姓名:赵六,岗位:计时工,月工资:8000元
```
以上就是一个简单的小型公司管理系统的实现。当然,这只是一个初步的版本,还可以根据需求进行更多的扩展和改进。
设计一个小型企业工资管理系统。 设计说明:该小型企业的员工主要有 4 类:经理、技术员、销售员和计时工。要求存储员工的工号、姓名、岗位、月工资等基本信息。 工资计算方法: 1经理:领取固定月薪 8800 元 2技术员:分高级、中级、初级三类,其中高级固定每月 7700 元,中级 固定每月 6600 元,初级固定每月 5500 元 3销售员:底薪 2500+销售额*2%提成 4计时工:工作时间*每小时 66 元 该企业员工的类层次结构为:员工包含经理,技术员,销售员,计时工 要有一个菜单,用于选择各项功能: 1数据录入:输入各种数据(其中每类员工不能少于 3 人) 2数据查询:能根据工号或姓名查询工资信息 3职工信息的删除、修改 4工资计算:能对各类员工进行工资计算 5数据输出:能按类别输出员工信息及工资信息(包括计算工资时所用到 的相关数据,例如:销售员的销售额) 6设置登录本系统的用户名和密码,通过用户名和密码登录
这个小型企业工资管理系统可以采用面向对象的编程思想进行设计和开发,使用Python语言实现。
首先,我们需要定义员工类 Employee,其中包含员工的基本信息(工号、姓名、岗位、月工资)和计算工资的方法 calculate_salary。然后,派生出经理类 Manager、技术员类 Technician、销售员类 Salesman 和计时工类 HourlyWorker,分别实现他们的工资计算方法。
接下来,我们需要设计一个菜单界面,用于选择各项功能。可以使用 Python 的 tkinter 库或者 PyQT 等 GUI 库实现一个简单的窗口界面。在菜单界面中,可以设置登录本系统的用户名和密码,通过用户名和密码登录后,才能进行数据录入、查询、删除、修改、工资计算和数据输出等操作。
具体实现过程可以参考以下代码示例:
```python
class Employee:
def __init__(self, emp_id, name, job, salary):
self.emp_id = emp_id
self.name = name
self.job = job
self.salary = salary
def calculate_salary(self):
pass
class Manager(Employee):
def __init__(self, emp_id, name, salary=8800):
super().__init__(emp_id, name, 'Manager', salary)
def calculate_salary(self):
return self.salary
class Technician(Employee):
def __init__(self, emp_id, name, level):
self.levels = {'high': 7700, 'medium': 6600, 'low': 5500}
super().__init__(emp_id, name, 'Technician', self.levels[level])
def calculate_salary(self):
return self.salary
class Salesman(Employee):
def __init__(self, emp_id, name, base_salary=2500, sales=0):
super().__init__(emp_id, name, 'Salesman', base_salary)
self.sales = sales
def calculate_salary(self):
return self.salary + self.sales * 0.02
class HourlyWorker(Employee):
def __init__(self, emp_id, name, hours=0):
super().__init__(emp_id, name, 'HourlyWorker', 0)
self.hours = hours
def calculate_salary(self):
return self.hours * 66
class PayrollSystem:
def __init__(self):
self.employees = []
def add_employee(self, emp):
self.employees.append(emp)
def remove_employee(self, emp_id):
for emp in self.employees:
if emp.emp_id == emp_id:
self.employees.remove(emp)
return True
return False
def modify_employee(self, emp_id, new_name=None, new_job=None, new_salary=None):
for emp in self.employees:
if emp.emp_id == emp_id:
if new_name:
emp.name = new_name
if new_job:
emp.job = new_job
if new_salary:
emp.salary = new_salary
return True
return False
def calculate_payroll(self):
for emp in self.employees:
print(f'{emp.job} {emp.name} salary: {emp.calculate_salary()}')
def search_employee(self, emp_id=None, name=None):
for emp in self.employees:
if emp_id and emp.emp_id == emp_id:
return emp
if name and emp.name == name:
return emp
return None
```
在这个代码示例中,我们定义了一个员工类 Employee,派生出经理类 Manager、技术员类 Technician、销售员类 Salesman 和计时工类 HourlyWorker,并实现了他们的工资计算方法。
另外,我们还定义了一个 PayrollSystem 类,用于管理员工信息,并实现了添加、删除、修改、查询和工资计算等功能。
具体实现过程中,我们可以通过读取配置文件获取用户名和密码,然后在登录界面中进行验证。在菜单界面中,可以通过按钮或菜单选项实现各项功能。例如,点击“数据录入”按钮,可以打开一个新窗口,输入员工信息并保存到 PayrollSystem 对象中。
总之,这个小型企业工资管理系统的设计和实现需要考虑多个方面,包括员工类的继承关系、工资计算方法的实现、数据管理和用户界面等,可以根据实际需求进行扩展和优化。
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)