项目方案:计算每个部门的平均工资

一、项目背景

在现代企业管理中,掌握员工的薪酬结构对于制定优化的薪酬政策至关重要。本文将提出一个计算每个部门平均工资的项目方案,利用 MySQL 数据库进行数据存储和查询,结合 Python 处理逻辑,最终实现一个易于使用的工具。

二、项目目标

本项目的目标是通过 MySQL 数据库,计算和展示每个部门的平均工资。项目主要分为以下几个功能模块:

  1. 数据库表设计
  2. 数据录入
  3. 数据查询与计算
  4. 结果展示

三、数据库设计

为了存储部门和员工信息,我们需要设计以下两个表:

  1. Department(部门表)
  2. Employee(员工表)

数据库表设计

CREATE TABLE Department (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100) NOT NULL
);

CREATE TABLE Employee (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100) NOT NULL,
    salary DECIMAL(10, 2) NOT NULL,
    department_id INT,
    FOREIGN KEY (department_id) REFERENCES Department(id)
);

类图设计

我们可以用类图表示这个项目的结构,使用 Mermaid 语法进行标识:

classDiagram
    class Department {
        +int id
        +String name
    }
    class Employee {
        +int id
        +String name
        +double salary
        +int department_id
    }

四、数据录入

为了确保数据的正确性,我们可以使用 Python 的 mysql-connector 模块将数据写入到数据库中。以下是一个简单的示例,用于插入部门和员工信息:

import mysql.connector

def insert_department(name):
    conn = mysql.connector.connect(user='user', password='password', host='localhost', database='company')
    cursor = conn.cursor()
    
    add_department = ("INSERT INTO Department (name) VALUES (%s)")
    cursor.execute(add_department, (name,))
    
    conn.commit()
    cursor.close()
    conn.close()

def insert_employee(name, salary, department_id):
    conn = mysql.connector.connect(user='user', password='password', host='localhost', database='company')
    cursor = conn.cursor()
    
    add_employee = ("INSERT INTO Employee (name, salary, department_id) VALUES (%s, %s, %s)")
    cursor.execute(add_employee, (name, salary, department_id))
    
    conn.commit()
    cursor.close()
    conn.close()

五、数据查询与计算

实现计算每个部门平均工资的功能,可以使用 SQL 聚合函数。以下是相应的 SQL 查询语句:

SELECT d.name AS department_name, AVG(e.salary) AS average_salary
FROM Department d
JOIN Employee e ON d.id = e.department_id
GROUP BY d.id;

若在 Python 中执行该查询并展示结果,可以使用以下示例代码:

def calculate_average_salary():
    conn = mysql.connector.connect(user='user', password='password', host='localhost', database='company')
    cursor = conn.cursor()
    
    query = ("SELECT d.name AS department_name, AVG(e.salary) AS average_salary "
             "FROM Department d "
             "JOIN Employee e ON d.id = e.department_id "
             "GROUP BY d.id;")
    
    cursor.execute(query)
    results = cursor.fetchall()
    
    for row in results:
        print(f"Department: {row[0]}, Average Salary: {row[1]:.2f}")
    
    cursor.close()
    conn.close()

calculate_average_salary()

六、结果展示

通过上述逻辑,我们既可以计算出每个部门的平均工资,也能通过 Python 程序在终端直接展示结果。为了进一步提升用户体验,可以将结果转为图形化的形式,例如使用 matplotlib 绘制柱状图。

import matplotlib.pyplot as plt

def plot_average_salary(department_data):
    department_names = [item[0] for item in department_data]
    average_salaries = [item[1] for item in department_data]

    plt.bar(department_names, average_salaries)
    plt.xlabel('Departments')
    plt.ylabel('Average Salary')
    plt.title('Average Salary by Department')
    plt.xticks(rotation=45)
    plt.tight_layout()
    plt.show()

七、结论

本项目通过 MySQL 数据库和 Python 语言,实现了对每个部门平均工资的计算和展示功能,能够有效帮助企业管理者了解员工工资结构,为制定薪酬政策提供参考。后续可以考虑加入数据可视化和更多统计分析功能,以提高系统的实用性和用户体验。

期待大家在未来的工作中,能借助本项目方案为企业带来更多价值。