Python实现员工管理系统GUI
文章目录
前言
当今世界应用计算机已经变得十分普遍了,如同汽车一样已经普及到各家各户。在许多工作行业各自的领域上,行内竞争十分关键,谁掌握的知识多,信息量大,处理数据的速度快,谁就能在激烈的行内竞争中立于不败之地。越来越多的企业管理员意识到了信息管理的重要性,所以说信息化是当今世界发展的主流。因此,一个良好的员工管理系统对企业而言必不可少,可以方便地对整个企业的各个员工进行统计和管理,有效地减少了传统管理时间、精力的浪费。本课题是设计一个基于python+mysql的员工档案管理系统,可以有效对公司、工厂的员工进行管理。
一、功能介绍
功能描述
1、登录功能:用户可以两种类型的账号,有管理员账号和员工账号,管理员的权限更高,可以实现对数据的增删改查等操作,而员工账号的权限受到一定约束,如有加班,部门管理功能不让其访问等。
2、员工_员工信息管理::员工根据自己账号登录时只允许修改自己的姓名,性别,年龄,婚姻状况,学历,密码。
3、员工打卡:员工进入界面后,一个签到按钮和一个签退按钮;管理员进入界面后,会看到各个员工的打卡信息,可以根据实际情况对打卡信息进行增删改。
4、管理员_员工信息管理:管理员根据账号登录时可对员工任意信息进行增删查改,包括工资,部门号,职称等,在查方面使用多条件查询的方式。
5、部门职称管理:管理员才可以进入,实现对部门和职称的增删改查,当企业新增一个部门时,管理员可以点击部门表中的增加创建一个新的部门,当企业不要某个部门时,管理员可以进行删除操作;当企业新增一个职称时,管理员可以点击职称表中的增加创建一个新的职称,当企业不要某个职称时,管理员可以进行删除操作。
6、考勤信息管理:管理员进入界面后,对员工的日常打卡信息进行增删查改。
7、加班信息管理:管理员进入后可根据员工加班类型、时间,添加其加班信息。
8、统计查询:管理员会直接看到整个公司以及各个部门的详细情况。
9、报表打印:对统计查询的结果进行导出打印输出展示。
二、前期准备
开发环境:python3.7 + mysql5.7
开发软件:SublimeText3 + Prenium Navicat12
三、创建数据库
1.概念模型
2.关系模型
employee(id,name,sex,age,marriged,education,employed_time,job_id,department_id)
employee_login(id,employee_id,password)
admin_login(id,password)
attendance(id,on_time,off_time,type,signal,employee_id)
department(id,name)
job(id,name,fees)
overtime(id,type,date,times,employee_id)
salary(id,earlys,lates,date,employee_id)
3.具体设计
1)不使用外键,有利于对业务逻辑的实现。更多原因可以查看链接:一文搞懂MySQL索引
2)添加一定的索引:例如employee_id,因为后面大部分的等值查询需要用到,提高查找的效率。
四、界面ui
使用QT designer进行快速的控件可视化开发,主要使用到的控件有:
QLabel |
QPushButton |
QMessageBox |
QComboBox |
QTableWidget |
详细使用说明文档请看:白月黑羽教python
五、接口功能
1.引入库
import PySide2
import Pymysql
import xlwt
import json
2.登录功能
:这里用的代码重复度较高,可以考虑用一个登录类来写,区别一下身份就可以。
class EmployeePage:
#员工登陆
def __init__(self,employee_name,employee_pass):
self.employee_name = employee_name
self.employee_pass = employee_pass
self.database = 'cdhlr'
self.databasepass = '666'
def login(self):
username = None
password = None
# 连接database
db = pymysql.connect(
host="localhost",
user="root",
password=self.databsepass,
database=self.database,
charset="utf8")
cursor = db.cursor() # 使用cursor()方法获取操作游标
sql = "SELECT * FROM employee_login WHERE employee_id = '%s'" % (self.employee_name) # SQL 查询语句
try:
# 执行SQL语句
cursor.execute(sql)
# 获取所有记录列表
results = cursor.fetchall()
for row in results:
username = row[1]
password = row[2]
except:
print("Error: unable to fecth data")
########('警告!', '用户名或密码不正确!')
db.close() # 关闭数据库连接
if self.employee_pass == password:
return 1
else:
return 0
class AdminPage:
#管理员登陆
def __init__(self,admin_username,admin_pass):
self.admin_username = admin_username
self.admin_pass = admin_pass
self.database = 'cdhlr'
self.databasepass = '666'
def login(self):
username = None
password = None
# 数据库操作 查询管理员表
# 连接database
db