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


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

相关文章
|
2月前
|
SQL 关系型数据库 MySQL
数据库导入SQL文件:全面解析与操作指南
在数据库管理中,将SQL文件导入数据库是一个常见且重要的操作。无论是迁移数据、恢复备份,还是测试和开发环境搭建,掌握如何正确导入SQL文件都至关重要。本文将详细介绍数据库导入SQL文件的全过程,包括准备工作、操作步骤以及常见问题解决方案,旨在为数据库管理员和开发者提供全面的操作指南。一、准备工作在导
300 0
|
6天前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。
|
28天前
|
数据可视化 开发者 Python
Python GUI开发:Tkinter与PyQt的实战应用与对比分析
【10月更文挑战第26天】本文介绍了Python中两种常用的GUI工具包——Tkinter和PyQt。Tkinter内置于Python标准库,适合初学者快速上手,提供基本的GUI组件和方法。PyQt基于Qt库,功能强大且灵活,适用于创建复杂的GUI应用程序。通过实战示例和对比分析,帮助开发者选择合适的工具包以满足项目需求。
85 7
|
2月前
|
存储 关系型数据库 MySQL
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
36 2
|
2月前
|
SQL 存储 关系型数据库
SQL文件导入MySQL数据库的详细指南
数据库中的数据转移是一项常规任务,无论是在数据迁移过程中,还是在数据备份、还原场景中,导入导出SQL文件显得尤为重要。特别是在使用MySQL数据库时,如何将SQL文件导入数据库是一项基本技能。本文将详细介绍如何将SQL文件导入MySQL数据库,并提供一个清晰、完整的步骤指南。这篇文章的内容字数大约在
226 1
|
2月前
|
数据可视化 测试技术 Linux
基于Python后端构建多种不同的系统终端界面研究
【10月更文挑战第10天】本研究探讨了利用 Python 后端技术构建多样化系统终端界面的方法,涵盖命令行界面(CLI)、图形用户界面(GUI)及 Web 界面。通过分析各种界面的特点、适用场景及关键技术,展示了如何使用 Python 标准库和第三方库(如 `argparse`、`click`、`Tkinter` 和 `PyQt`)实现高效、灵活的界面设计。旨在提升用户体验并满足不同应用场景的需求。
|
2月前
|
Linux Android开发 开发者
【Python】GUI:Kivy库环境安装与示例
这篇文章介绍了 Kivy 库的安装与使用示例。Kivy 是一个开源的 Python 库,支持多平台开发,适用于多点触控应用。文章详细说明了 Kivy 的主要特点、环境安装方法,并提供了两个示例:一个简单的 Hello World 应用和一个 BMI 计算器界面。
62 0
|
2月前
|
机器学习/深度学习 算法框架/工具 Python
基于深度学习的手写数字识别项目GUI(Deep Learning Project – Handwritten Digit Recognition using Python)
基于深度学习的手写数字识别项目GUI(Deep Learning Project – Handwritten Digit Recognition using Python)
76 0
|
2月前
|
Oracle 关系型数据库 数据库
oracle数据恢复—Oracle数据库文件损坏导致数据库打不开的数据恢复案例
打开oracle数据库时报错,报错信息:“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。急需恢复zxfg用户下的数据。 出现上述报错的原因有:控制文件损坏、数据文件损坏、数据文件与控制文件的SCN不一致等。数据恢复工程师对数据库文件做进一步检测分析后发现sysaux01.dbf文件有坏块。修复sysaux01.dbf文件,启动数据库依然有许多查询报错。export和data pump工具无法使用,查询告警日志并分析报错,确认发生上述错误的原因就是sysaux01.dbf文件损坏。由于该文件损坏,从数据库层面无法修复数据库。由于system和用户表空间的数据文件是正常的,
|
18天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
32 1