【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. 更改信息


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

相关文章
|
23天前
|
Ubuntu Shell Linux
pyenv 管理多个 Python 版本(1)
pyenv 管理多个 Python 版本(1)
155 86
pyenv 管理多个 Python 版本(1)
|
18天前
|
Shell Python
使用 pyenv 来管理多个 Python 版本(2)
使用 pyenv 来管理多个 Python 版本(2)
109 71
使用 pyenv 来管理多个 Python 版本(2)
|
20天前
|
计算机视觉 Python
如何使用Python将TS文件转换为MP4
本文介绍了如何使用Python和FFmpeg将TS文件转换为MP4文件。首先需要安装Python和FFmpeg,然后通过`subprocess`模块调用FFmpeg命令,实现文件格式的转换。代码示例展示了具体的操作步骤,包括检查文件存在性、构建FFmpeg命令和执行转换过程。
37 7
|
26天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
180 15
|
2月前
|
开发者 Python
Python中__init__.py文件的作用
`__init__.py`文件在Python包管理中扮演着重要角色,通过标识目录为包、初始化包、控制导入行为、支持递归包结构以及定义包的命名空间,`__init__.py`文件为组织和管理Python代码提供了强大支持。理解并正确使用 `__init__.py`文件,可以帮助开发者更好地组织代码,提高代码的可维护性和可读性。
84 2
|
2月前
|
中间件 Docker Python
【Azure Function】FTP上传了Python Function文件后,无法在门户页面加载函数的问题
通过FTP上传Python Function至Azure云后,出现函数列表无法加载的问题。经排查,发现是由于`requirements.txt`中的依赖包未被正确安装。解决方法为:在本地安装依赖包到`.python_packages/lib/site-packages`目录,再将该目录内容上传至云上的`wwwroot`目录,并重启应用。最终成功加载函数列表。
|
13天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
39 3
|
13天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
42 3
|
13天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE 'log_%';`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
54 2
|
20天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。