已知某公司有三种类型的员工:1)文员,工资计算方式是:基本工资+奖金-缺勤天数*5,2)销售员,公式是:基本工资+销售业绩*0.05,3)临时工公式:工作小时数*20;每个员工都有自己的工号、姓名。自行设定公司员工信息,编程计算公司发放工资总数
时间: 2024-03-18 21:38:49 浏览: 143
好的,这个需要设计一个简单的数据库,可以用MySQL或者SQLite等关系型数据库实现。以下是一个简单的表设计:
员工表(employee):
| 字段名 | 类型 | 说明 |
| ---- | ---- | ---- |
| id | int | 员工编号 |
| name | varchar(50) | 员工姓名 |
| type | int | 员工类型,1表示文员,2表示销售员,3表示临时工 |
| basic_salary | decimal(10,2) | 基本工资 |
| bonus | decimal(10,2) | 奖金(文员) |
| sales_performance | decimal(10,2) | 销售业绩(销售员) |
| work_hours | decimal(10,2) | 工作小时数(临时工) |
| absence_days | int | 缺勤天数(文员) |
其中,id为主键,type表示员工类型,basic_salary为基本工资,如果是文员则有bonus字段表示奖金,如果是销售员则有sales_performance字段表示销售业绩,如果是临时工则有work_hours字段表示工作小时数。
接下来,可以编写一个程序来计算公司发放的工资总数。以下是一个简单的Python程序:
```python
import sqlite3
# 连接到数据库
conn = sqlite3.connect('company.db')
# 创建员工表
conn.execute('''CREATE TABLE employee
(id INT PRIMARY KEY NOT NULL,
name TEXT NOT NULL,
type INT NOT NULL,
basic_salary DECIMAL(10,2) NOT NULL,
bonus DECIMAL(10,2),
sales_performance DECIMAL(10,2),
work_hours DECIMAL(10,2),
absence_days INT);''')
# 插入数据
conn.execute("INSERT INTO employee (id, name, type, basic_salary, bonus, sales_performance, work_hours, absence_days) \
VALUES (1, 'Alice', 1, 5000, 500, null, null, 5)")
conn.execute("INSERT INTO employee (id, name, type, basic_salary, bonus, sales_performance, work_hours, absence_days) \
VALUES (2, 'Bob', 2, 3000, null, 50000, null, null)")
conn.execute("INSERT INTO employee (id, name, type, basic_salary, bonus, sales_performance, work_hours, absence_days) \
VALUES (3, 'Charlie', 3, null, null, null, 100, null)")
# 计算工资总数
total_salary = 0
for row in conn.execute("SELECT * FROM employee"):
if row[2] == 1:
salary = row[3] + row[4] - row[7]*5
elif row[2] == 2:
salary = row[3] + row[5]*0.05
else:
salary = row[6]*20
total_salary += salary
print('公司发放的工资总数为:', total_salary)
# 关闭连接
conn.close()
```
注意,以上程序仅供参考,实际实现可能需要根据具体情况进行修改。
阅读全文