当前位置:   article > 正文

基于Python+MySQL的员工档案管理系统

员工档案管理系统

目录
目 录 1
一、系统定义 1 1
二、 需求分析 1
(一) 系统综合需求 2
(二) 系统逻辑模型 2
三、 系统设计 4
(一)概念结构设计 5
四、 详细设计 10
(一) 开发平台及工具 10
(二) 创建数据库和表 11
(三) 设计框架 12
(四) 界面设计 14
五、 课程设计总结 17
六、 参考文献 18
七、 附录 18
二、需求分析
(一)系统综合需求
作为一个员工管理系统,应当为公司的员工信息管理提供便利。同时给用户提供方便、友好而简洁的界面进行操作和使用。
在实际的公司员工管理过程中,通常有三类用户:管理员(BOSS)、部门经理以及员工。显然,用户的身份不同,所拥有的权限也不会相同,因此我们应当为不同身份的用户提供不同的操作权限和界面。所以在此我们通过设立三种不同类型的账号,不同账号类型登入系统后的功能不同来达到此效果。
管理员(BOSS)拥有最高级别的权限,可以对所有员工和经理的信息进行增加、删除、修改和查找操作,同时可以对公司的所有员工、经理的登录账号和密码进行管理,若有新员工入职,管理员不仅需要增加其信息,还需要为其设立一个可登录系统的账号,同时,如有员工离职,则对其信息和账号进行删除。员工、经理的信息更新和忘记密码等功能均由管理员完成。
部门经理由于对自己所属部门的员工拥有领导权,因此拥有管理员的部分权限,经理只能对属于自己部门的员工的信息进行增加、删除、修改和查找操作,同时,经理登录后可以查看自己的信息和修改自己的登录密码。经理无法查看和修改其他经理的信息,也无法对其他部门的员工信息进行管理,在经理进行增加员工操作时,会检查新增员工的部门信息是否与经理本人相同,不相同则弹出Error提示框,告诉经理没有该部门的操作权限。由此解决了经理可能存在的滥用职权等问题。
作为公司的基层,员工不具有对其他人员的领导权,因此员工登录后的功能实现比较简单:员工登录后只能查看自己的信息和修改自己的登录密码。由此实现了一定的保密能力,并在很大程度上避免了信息的泄露和外流。
由此也实现了管理员(BOSS)-部门经理-员工的三级管理模式,比较契合实际企业的员工管理情况。

#账号管理系统只对管理员开放
from tkinter import *
from tkinter import ttk
import tkinter.messagebox
import pymysql
from PIL import Image,ImageTk

#连接数据库
database=pymysql.connect(host='localhost',user='root',password='123456',database='employee_system',charset='gb2312')
cursor=database.cursor()

def get_image(file_name,width,height):
    im=Image.open(file_name).resize((width,height))
    return ImageTk.PhotoImage(im)

mode=0

def button_admin_login():
    global mode
    username_input = entry1.get().strip()
    password_input = entry2.get().strip()
    cursor.execute('select * from admin where user_name = "%s" and password = "%s"' % (username_input,password_input))
    if (len(cursor.fetchall()) > 0):
        print("已成功登录")
        mynewwin.destroy()
        mode=1
    else:
    	tkinter.messagebox.showerror("错误","用户名或密码错误")

mynewwin=Tk()
mynewwin.title('员工账号管理系统登录页面')
mynewwin.geometry('1080x600')

canvans_myWindow=Canvas(mynewwin,width=720,height=400)
im_root=get_image('D:\数据库课程设计\湖南工程学院员工账号管理系统.png',720,400)
canvans_myWindow.create_image(400,200,image=im_root)
canvans_myWindow.pack()

Label(mynewwin, text="管理员账号:",font=('Arial 12 bold'),width=10,height=1).place(relx = 0.10, rely = 0.75)
Label(mynewwin, text="管理员密码:",font=('Arial 12 bold'),width=10,height=1).place(relx = 0.10, rely = 0.85)

button_login = Button(text = '登陆',relief = 'raised', command = button_admin_login)
button_login.place(relx = 0.5, rely = 0.92)

entry1=Entry(mynewwin)
entry2=Entry(mynewwin,show='*')
entry1.place(relx = 0.45, rely = 0.75)
entry2.place(relx = 0.45, rely = 0.85)
#进入消息循环
mynewwin.mainloop()

def button_insert_account_emp():
    user_name=entry_user.get().strip()
    password=entry_pass.get().strip()
    print(user_name,password)
    cursor.execute('select * from employee_login where user_name ="%s"'%(user_name))
    data=cursor.fetchall()
    if len(data)>0:
        tkinter.messagebox.showerror(title='Error',message='该账号已存在!')
        return None
    cursor.execute('insert into employee_login values("%s","%s")' % (user_name,password))
    database.commit()
    tkinter.messagebox.showinfo(title='新增员工账号密码',message='新增员工账号成功!')

def button_update_account_emp():
    user_name=entry_user.get().strip()
    password=entry_pass.get().strip()
    print(user_name,password)
    cursor.execute('update employee_login set password="%s" where user_name="%s"' % (password,user_name))
    database.commit()
    tkinter.messagebox.showinfo(title='修改员工账号密码',message='修改员工账号密码成功!')

def button_delete_account_emp():
    user_name=entry_user.get().strip()
    password=entry_pass.get().strip()
    print(user_name,password)
    cursor.execute('delete from employee_login where user_name="%s"'%(user_name))
    database.commit()
    tkinter.messagebox.showinfo(title='删除员工账号密码',message='删除员工账号密码成功!')


def button_insert_account_ma():
    user_name=entry_user.get().strip()
    password=entry_pass.get().strip()
    print(user_name,password)
    cursor.execute('select * from manager_login where user_name ="%s"'%(user_name))
    data=cursor.fetchall()
    if len(data)>0:
        tkinter.messagebox.showerror(title='Error',message='该账号已存在!')
        return None
    cursor.execute('insert into manager_login values("%s","%s")'%(user_name,password))
    database.commit()
    tkinter.messagebox.showinfo(title='新增经理账号密码',message='新增经理账号密码成功!')
    
def button_update_account_ma():
    user_name=entry_user.get().strip()
    password=entry_pass.get().strip()
    print(user_name,password)
    cursor.execute('update manager_login set password="%s" where user_name="%s"' % (password,user_name))
    database.commit()
    tkinter.messagebox.showinfo(title='修改经理账号密码',message='修改经理账号密码成功!')

def button_delete_account_ma():
    user_name=entry_user.get().strip()
    password=entry_pass.get().strip()
    print(user_name,password)
    cursor.execute('delete from manager_login where user_name="%s"'%(user_name))
    database.commit()
    tkinter.messagebox.showinfo(title='删除经理账号密码',message='删除经理账号密码成功!')

def button_update_account_my():
    user_name=entry_user.get().strip()
    password=entry_pass.get().strip()
    print(user_name,password)
    cursor.execute('update admin set password="%s" where user_name="%s"' % (password,user_name))
    database.commit()
    tkinter.messagebox.showinfo(title='修改管理员密码',message='修改管理员密码成功,请您牢记新密码!')

if mode==1:
    print("已进入系统")
    mynewwin=Tk()
    mynewwin.title('账号管理系统')
    mynewwin.geometry('720x520')
    
    #各个窗体效果
    Label(mynewwin, text=" ",font=('Arial 12 bold'),width=4,height=1).grid(column = 0, row = 0)
    Label(mynewwin, text="账号:",font=('Arial 12 bold'),width=10,height=1).grid(column=0,row=1)
    entry_user=Entry(mynewwin)
    entry_user.grid(column=1,row=1)


    Label(mynewwin, text="密码:",font=('Arial 12 bold'),width=10,height=1).grid(column=2,row=1)
    entry_pass=Entry(mynewwin)
    entry_pass.grid(column=3,row=1)

    
    #Label(mynewwin, text=" ",font=('Arial 12 bold'),width=4,height=1).grid(column = 0, row = 1)
    
    button_insert_emp=Button(mynewwin,text='新增员工账号密码',relief='raised',command=button_insert_account_emp)
    button_insert_emp.place(relx=0.3,rely=0.2)
    
    button_update_emp=Button(mynewwin,text='修改员工账号密码',relief='raised',command=button_update_account_emp)
    button_update_emp.place(relx=0.5,rely=0.2)
    
    button_delete_emp=Button(mynewwin,text='删除员工账号密码',relief='raised',command=button_delete_account_emp)
    button_delete_emp.place(relx=0.7,rely=0.2)
    
    #Label(mynewwin, text=" ",font=('Arial 12 bold'),width=4,height=1).grid(column = 0, row = 2)
    
    button_insert_ma=Button(mynewwin,text='新增经理账号密码',relief='raised',command=button_insert_account_ma)
    button_insert_ma.place(relx=0.3,rely=0.4)
    
    button_update_ma=Button(mynewwin,text='修改经理账号密码',relief='raised',command=button_update_account_ma)
    button_update_ma.place(relx=0.5,rely=0.4)
    
    button_delete_ma=Button(mynewwin,text='删除经理账号密码',relief='raised',command=button_delete_account_ma)
    button_delete_ma.place(relx=0.7,rely=0.4)

    button_update_my=Button(mynewwin,text='修改管理员密码',relief='raised',command=button_update_account_my)
    button_update_my.place(relx=0.75,rely=0.04)

    mynewwin.mainloop()
    

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/747098
推荐阅读
相关标签
  

闽ICP备14008679号