【Python】python员工信息管理系统(数据库版本)(GUI界面+数据库文件+源码)【独一无二】

简介: 【Python】python员工信息管理系统(数据库版本)(GUI界面+数据库文件+源码)【独一无二】

一、设计要求

该代码实现了一个基于 Python 的员工管理系统,使用 SQLite 数据库进行数据存储和管理。主要功能包括添加、更新、删除、查询和显示员工信息。以下是详细的设计思路分析:


1. 数据库管理模块

EmployeeDatabase 类

  • 初始化:连接 SQLite 数据库,并调用 create_table 方法创建员工表。
  • 创建表:在数据库中创建一个包含员工信息的表 employees,字段包括 ID、姓名、年龄、婚姻状况、学历、职位和入职日期。
  • 插入员工:向数据库中插入新的员工记录。
  • 更新员工:根据员工 ID 更新员工信息。
  • 删除员工:根据员工 ID 删除员工记录。
  • 查询员工:根据条件查询员工信息,返回所有符合条件的记录。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 员工 ” 获取,拿来即用。👈👈👈


2. 用户界面模块

EmployeeManagementSystem 类(继承自 QMainWindow)

  • 初始化:设置窗口标题和尺寸,初始化数据库连接,创建主窗口部件和布局。
  • 表单布局:创建一个表单布局,用于输入员工信息,包括姓名、年龄、婚姻状况、学历、职位和入职日期。
  • 按钮布局:创建多个按钮,分别用于添加、更新、删除、查询和显示所有员工。
  • 表格布局:创建一个表格,用于显示员工信息,表格的列包括 ID、姓名、年龄、婚姻状况、学历、职位和入职日期。


3. 事件处理模块
  • 添加员工
  • 从表单获取员工信息。
  • 调用数据库的 insert_employee 方法插入员工记录。
  • 显示成功信息。
  • 更新员工
  • 获取当前选中行的员工 ID 和表单中的更新信息。
  • 调用数据库的 update_employee 方法更新员工记录。
  • 显示成功信息。
  • 删除员工
  • 获取当前选中行的员工 ID。
  • 调用数据库的 delete_employee 方法删除员工记录。
  • 从表格中移除该行。
  • 查询员工
  • 根据表单中的输入条件构建查询条件字符串。
  • 调用数据库的 query_employees 方法查询符合条件的员工记录。
  • 更新表格显示查询结果。
  • 显示成功信息。
  • 显示所有员工
  • 调用数据库的 query_employees 方法查询所有员工记录。
  • 更新表格显示所有员工信息。


4. 用户交互模块
  • 表单输入:用户通过表单输入员工信息或查询条件。
  • 按钮点击:用户点击按钮触发相应的事件处理函数。
  • 表格显示:用户在表格中查看员工信息,选择行进行更新或删除操作。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 员工 ” 获取,拿来即用。👈👈👈


二、设计思路

1. 数据库管理模块

EmployeeDatabase 类

  • 初始化:创建与 SQLite 数据库的连接并初始化员工表。
  • 创建表:创建一个包含员工信息的表employees,包含以下字段:
  • id: 主键,整数类型。
  • name: 员工姓名,文本类型。
  • age: 员工年龄,整数类型。
  • marital_status: 婚姻状况,文本类型。
  • education: 学历,文本类型。
  • position: 职位,文本类型。
  • start_date: 入职日期,文本类型。
  • 插入员工:向数据库插入一条新的员工记录。
  • 更新员工:根据员工 ID 更新员工信息。
  • 删除员工:根据员工 ID 删除员工记录。
  • 查询员工:根据可选条件查询员工信息。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 员工 ” 获取,拿来即用。👈👈👈


代码示例

class EmployeeDatabase:
    def __init__(self):
        self.conn = sqlite3.connect('employee.db')
        self.create_table()

    def create_table(self):
        cursor = self.conn.cursor()
        cursor.execute('''CREATE TABLE IF NOT EXISTS employees (
                          id INTEGER PRIMARY KEY,
                          name TEXT,
                          age INTEGER,
                          marital_status TEXT,
                          education TEXT,
                          position TEXT,
                          start_date TEXT)''')
        self.conn.commit()

    def insert_employee(self, name, age, marital_status, education, position, start_date):
        cursor = self.conn.cursor()
        cursor.execute('INSERT INTO employees (name, age, marital_status, education, position, start_date) VALUES (?, ?, ?, ?, ?, ?)',
                       (name, age, marital_status, education, position, start_date))
        self.conn.commit()

    # 代码略(至少十行)... 
    # 代码略(至少十行)... 

    def delete_employee(self, emp_id):
        cursor = self.conn.cursor()
        cursor.execute('DELETE FROM employees WHERE id=?', (emp_id,))
        self.conn.commit()

    def query_employees(self, condition=None):
        cursor = self.conn.cursor()
        if condition:
            cursor.execute(f'SELECT * FROM employees WHERE {condition}')
        else:
            cursor.execute('SELECT * FROM employees')
        return cursor.fetchall()


2. 用户界面模块

EmployeeManagementSystem 类(继承自 QMainWindow)

  • 初始化:设置窗口标题和尺寸,初始化数据库连接,创建主窗口部件和布局。
  • 表单布局:创建用于输入员工信息的表单,包括姓名、年龄、婚姻状况、学历、职位和入职日期。
  • 按钮布局:创建按钮用于添加、更新、删除、查询和显示所有员工。
  • 表格布局:创建表格显示员工信息,表格的列包括 ID、姓名、年龄、婚姻状况、学历、职位和入职日期。


代码示例

class EmployeeManagementSystem(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('员工管理系统')
        self.setGeometry(100, 100, 800, 600)
        self.db = EmployeeDatabase()

        self.main_widget = QWidget()
        self.setCentralWidget(self.main_widget)
        self.layout = QVBoxLayout(self.main_widget)

    # 代码略(至少十行)... 
    # 代码略(至少十行)... 

        self.form_layout.addRow('姓名:', self.name_input)
        self.form_layout.addRow('年龄:', self.age_input)
        self.form_layout.addRow('婚姻状况:', self.marital_status_input)
        self.form_layout.addRow('学历:', self.education_input)
        self.form_layout.addRow('职位:', self.position_input)
        self.form_layout.addRow('入职日期:', self.start_date_input)

        self.layout.addLayout(self.form_layout)

    # 代码略(至少十行)... 
    # 代码略(至少十行)... 

        self.layout.addLayout(self.button_layout)

        self.table = QTableWidget()
        self.table.setColumnCount(7)
        self.table.setHorizontalHeaderLabels(['ID', '姓名', '年龄', '婚姻状况', '学历', '职位', '入职日期'])
        self.layout.addWidget(self.table)

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 员工 ” 获取,拿来即用。👈👈👈


3. 事件处理模块
  • 添加员工:从表单获取员工信息并插入数据库,显示成功信息。
  • 更新员工:获取当前选中行的员工 ID 和表单中的更新信息,更新数据库记录,显示成功信息。
  • 删除员工:获取当前选中行的员工 ID,删除数据库记录,从表格中移除该行,显示成功信息。
  • 查询员工:根据表单中的输入条件构建查询条件,查询数据库记录,更新表格显示结果。
  • 显示所有员工:查询所有员工记录,更新表格显示所有员工信息。


代码示例

    def add_employee(self):
        name = self.name_input.text()
        age = self.age_input.text()
        marital_status = self.marital_status_input.currentText()
        education = self.education_input.text()
        position = self.position_input.text()
        
    # 代码略(至少十行)... 
    # 代码略(至少十行)... 

        self.db.update_employee(emp_id, name, age, marital_status, education, position, start_date)
        QMessageBox.information(self, '成功', '员工更新成功!')

    def delete_employee(self):
        current_row = self.table.currentRow()
        if current_row == -1:
            QMessageBox.warning(self, '警告', '请选择要删除的员工')
            return
    # 代码略(至少十行)... 
    # 代码略(至少十行)... 

    def show_all_employees(self):
        employees = self.db.query_employees()
        self.table.setRowCount(0)
        for row_number, row_data in enumerate(employees):
            self.table.insertRow(row_number)
            for column_number, data in enumerate(row_data):
                self.table.setItem(row_number, column_number, QTableWidgetItem(str(data)))

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 员工 ” 获取,拿来即用。👈👈👈

(程序启动)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = EmployeeManagementSystem()
    window.show()
    sys.exit(app.exec_())


  1. 数据库管理EmployeeDatabase 类处理所有数据库操作,包括表的创建、员工记录的增删改查。
  2. 用户界面EmployeeManagementSystem 类创建 GUI 界面,包括表单输入、按钮和表格显示。
  3. 事件处理:各个按钮的点击事件处理函数实现具体功能,通过与数据库的交互来完成员工信息的管理。


实现了一个功能完整的员工管理系统,具有良好的用户交互体验和数据管理能力。


三、可视化分析

1. 添加员工信息


👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 员工 ” 获取,拿来即用。👈👈👈


2. 显示所有员工


3. 查询信息


3. 删除信息

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 员工 ” 获取,拿来即用。👈👈👈



4. 更改信息


👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 员工 ” 获取,拿来即用。👈👈👈

相关文章
|
3天前
|
存储 NoSQL 关系型数据库
可以存储文件的数据库有哪些?
可以存储文件的数据库有哪些?
15 6
|
13天前
|
数据挖掘 定位技术 API
Python GIS神器geopandas 1.0版本来了
Python GIS神器geopandas 1.0版本来了
|
14天前
|
存储 前端开发 关系型数据库
秀啊,用Python快速开发在线数据库更新修改工具
秀啊,用Python快速开发在线数据库更新修改工具
|
14天前
|
前端开发 数据库 虚拟化
太6了!用Python快速开发数据库入库系统
太6了!用Python快速开发数据库入库系统
|
14天前
|
前端开发 数据库 Python
用Python轻松开发数据库取数下载工具
用Python轻松开发数据库取数下载工具
|
14天前
|
SQL API 数据库
原来Python自带了数据库,用起来真方便!
原来Python自带了数据库,用起来真方便!
|
14天前
|
机器学习/深度学习 运维 数据挖掘
scikit-learn 1.0 版本重要新特性一览
scikit-learn 1.0 版本重要新特性一览
|
14天前
|
SQL Shell API
python Django教程 之 模型(数据库)、自定义Field、数据表更改、QuerySet API
python Django教程 之 模型(数据库)、自定义Field、数据表更改、QuerySet API
|
20天前
|
SQL 关系型数据库 MySQL
【揭秘】MySQL binlog日志与GTID:如何让数据库备份恢复变得轻松简单?
【8月更文挑战第22天】MySQL的binlog日志记录数据变更,用于恢复、复制和点恢复;GTID为每笔事务分配唯一ID,简化复制和恢复流程。开启binlog和GTID后,可通过`mysqldump`进行逻辑备份,包含binlog位置信息,或用`xtrabackup`做物理备份。恢复时,使用`mysql`命令执行备份文件,或通过`innobackupex`恢复物理备份。GTID模式下的主从复制配置更简便。
89 2
|
15天前
|
弹性计算 关系型数据库 数据库
手把手带你从自建 MySQL 迁移到云数据库,一步就能脱胎换骨
阿里云瑶池数据库来开课啦!自建数据库迁移至云数据库 RDS原来只要一步操作就能搞定!点击阅读原文完成实验就可获得一本日历哦~