一、项目地址

具体项目相关信息可移步至我的Github查看,那里有整套项目文件以及课程设计报告等,仅供交流学习和参考,如有错误之处请多多指正哦。

二、系统定义

随着计算机技术的不断发展,计算机作为知识经济时代的产物,已被广泛应用于社会的各个行业和领域。在许多工作行业各自的领域上,行内竞争十分关键,谁掌握的知识多,信息量大,处理数据的速度快,谁就能在激烈的行内竞争中立于不败之地。越来越多的企业管理员意识到了信息管理的重要性,所以说信息化是当今世界发展的主流。因此,一个良好的员工管理系统对企业而言必不可少,可以方便地对整个企业的各个员工进行统计和管理,有效地减少了传统管理时间、精力的浪费。本课题是设计一个基于python+mysql的员工信息管理系统,可以有效对公司、工厂的员工进行管理。

系统E-R图如下:

系统数据流图如下:

三、需求分析

作为一个员工管理系统,应当为公司的员工信息管理提供便利。同时给用户提供方便、友好而简洁的界面进行操作和使用。

在实际的公司员工管理过程中,通常有三类用户:管理员(BOSS)、部门经理以及员工。显然,用户的身份不同,所拥有的权限也不会相同,因此我们应当为不同身份的用户提供不同的操作权限和界面。所以在此我们通过设立三种不同类型的账号,不同账号类型登入系统后的功能不同来达到此效果。

管理员(BOSS)拥有最高级别的权限,可以对所有员工和经理的信息进行增加、删除、修改和查找操作,同时可以对公司的所有员工、经理的登录账号和密码进行管理,若有新员工入职,管理员不仅需要增加其信息,还需要为其设立一个可登录系统的账号,同时,如有员工离职,则对其信息和账号进行删除。员工、经理的信息更新和忘记密码等功能均由管理员完成。

部门经理由于对自己所属部门的员工拥有领导权,因此拥有管理员的部分权限,经理只能对属于自己部门的员工的信息进行增加、删除、修改和查找操作,同时,经理登录后可以查看自己的信息和修改自己的登录密码。经理无法查看和修改其他经理的信息,也无法对其他部门的员工信息进行管理,在经理进行增加员工操作时,会检查新增员工的部门信息是否与经理本人相同,不相同则弹出Error提示框,告诉经理没有该部门的操作权限。由此解决了经理可能存在的滥用职权等问题。

作为公司的基层,员工不具有对其他人员的领导权,因此员工登录后的功能实现比较简单:员工登录后只能查看自己的信息和修改自己的登录密码。由此实现了一定的保密能力,并在很大程度上避免了信息的泄露和外流。

由此也实现了管理员(BOSS)-部门经理-员工的三级管理模式,比较契合实际企业的员工管理情况。

四、运行结果演示

4.1 登录界面

4.2 管理员登入后的界面

4.3 经理登入后的界面

4.4 员工登入后的界面

五、源代码

1. 首先需要进行pymysql库的安装,可采用直接pip安装或者镜像源安装,这里不再赘述

pip3 install pymysql

2.  由于没有在Python程序中进行创建数据库和表的操作,因此在程序开始之前必须在MySQL中执行以下语句:

#创建数据库
Create database employee_system;
Use employee_system;#创建管理员表
Create table admin(User_name char(30) primary key,Password char(30));#创建员工信息表
Create table employee(Id bigint primary key,Name char(40),Gender char(10),Age int,Dept char(40));#创建经理信息表
Create table manager(Id bigint primary key,Name char(40),Gender char(10),Age int,Dept char(40));#创建员工登录表
Create table employee_login(User_name char(30) primary key,Password char(30));#创建经理登录表
Create table manager_login(User_name char(30) primary key,Password char(30));

注意:在向员工登录表和经理登录表插入数据时,员工和经理的登录账号必须与员工信息表和经理信息表中的工号一致,只有这样后续的多表查询操作才能进行。

3. Python程序:

注意:在进行数据库连接时,需要将pymysql.connect()中的password参数更改为自己本地的MySQL密码,否则连接会被拒绝进而导致错误!

from tkinter import *
from tkinter import ttk
import tkinter.messagebox
import pymysql
from PIL import Image,ImageTk#添加logo为背景图
page = 0   #全局变量page用于存储当前显示信息的页码
who = 0        #全局变量who用于区别身份def button2_clicked():global whowho = 1page = 0display_current_page()data_in = None#用于显示所有信息
def display(i,data):global data_indata_in = datalistbox1.delete(0,END)listbox2.delete(0,END)listbox3.delete(0,END)listbox4.delete(0,END)listbox5.delete(0,END)listbox6.delete(0,END)for d in data:if i==1:listbox1.insert(END,'员工')else:listbox1.insert(END,'经理')listbox2.insert(END, d[0])listbox3.insert(END, d[1])listbox4.insert(END, d[2])listbox5.insert(END, d[3])listbox6.insert(END, d[4])#用于显示下一页的信息
def display_next_page():global page, who, modeif mode == 1:tkinter.messagebox.showwarning(title='warning',message='已经是最后一页!')return Nonepage+= 1if who == 1:cursor.execute("select * from employee limit %d,%d" % (page*20, page*20+20))data = cursor.fetchall()display(who, data)else:cursor.execute("select * from manager limit %d,%d" % (page*20, page*20+20))data = cursor.fetchall()display(who, data)def button_next_page_clicked():display_next_page()#用于显示前一页的信息
def display_previous_page():global page, who, modeif mode == 1:tkinter.messagebox.showwarning(title='warning',message='已经是第一页!')return Nonepage -= 1page = max(page, 0)if who == 1:cursor.execute("select * from employee limit %d,%d" % (page*20, page*20+20))data = cursor.fetchall()display(who, data)else:cursor.execute("select * from manager limit %d,%d" % (page*20, page*20+20))data = cursor.fetchall()display(who, data)#用于选择显示何种信息(employee/manager)
def display_current_page():global page, who, mode , using_namepage = pageif mode == 0:if who == 1:cursor.execute("select * from employee limit %d,%d" % (page*20, page*20+20))data = cursor.fetchall()display(who, data)else:cursor.execute("select * from manager limit %d,%d" % (page*20, page*20+20))data = cursor.fetchall()display(who, data)elif mode == 1:cursor.execute('select dept from manager where id ={}'.format(int(using_name)))manager_dept=cursor.fetchall()real_dept=str(manager_dept[0][0])#print('select * from employee where dept = "%s"'%(real_dept))cursor.execute('select * from employee where dept = "%s"'%(real_dept))data=cursor.fetchall()display(who,data)#cursor.execute()def button_manager_clicked():global who, pagewho = 0page = 0display_current_page()#listbox为空格数目
#实现删除功能
def button_delete_clicked():indexs1 = listbox1.curselection()indexs2 = listbox2.curselection()indexs3 = listbox3.curselection()indexs4 = listbox4.curselection()indexs5 = listbox5.curselection()indexs6 = listbox6.curselection()index = -1if len(indexs1) > 0:index = indexs1[0]elif len(indexs2) > 0:index = indexs2[0]elif len(indexs3) > 0:index = indexs3[0]elif len(indexs4) > 0:index = indexs4[0]elif len(indexs5) > 0:index = indexs5[0]elif len(indexs6) > 0:index = indexs6[0]if index == -1:tkinter.messagebox.showerror("Error","未选择要删除的数据")delete_id = listbox2.get(index,index)delete_who = listbox1.get(index,index)if delete_who[0] == "员工":cursor.execute("delete from employee where id = %d" % int(delete_id[0]))database.commit()display_current_page()else:cursor.execute("delete from manager where id = %d" % int(delete_id[0]))database.commit()display_current_page()#print(delete_id)  #实现添加信息功能
def button_add_clicked():global mode,using_nameindex = combobox_2.current()if index < 0:tkinter.messagebox.showerror("Error","请选择身份")return Noneadd_id = entry4.get().strip()if len(add_id)<=0:tkinter.messagebox.showerror("Error","请输入工号")return Nonetry:add_id = int(add_id)except Exception as e:tkinter.messagebox.showerror("Error","输入工号错误")return Noneadd_name = entry5.get().strip()if len(add_name)<=0:tkinter.messagebox.showerror("Error","请输入名字")return Noneadd_gender = combobox_3.current()if add_gender < 0:tkinter.messagebox.showerror("Error","请选择性别")return Noneadd_age = entry7.get().strip()if len(add_age)<=0:tkinter.messagebox.showerror("Error","请输入年龄")return Nonetry:add_age = int(add_age)except Exception as e:tkinter.messagebox.showerror("Error","年龄输入错误")return Noneadd_dept = entry8.get().strip()if mode == 1:cursor.execute('select dept from manager where id ={}'.format(int(using_name)))manager_dept=cursor.fetchall()real_dept=str(manager_dept[0][0])if real_dept != add_dept:tkinter.messagebox.showerror("Error","抱歉,您没有该部门的操作权限!")return Noneif len(add_dept)<=0:tkinter.messagebox.showerror("Error","请输入部门")return Noneif index == 0:cursor.execute('select * from employee where id = %d' % add_id)data = cursor.fetchall()if len(data) > 0:tkinter.messagebox.showerror("Error","该id已存在")return Nonecursor.execute('insert into employee(id,name,gender,age,dept) values(%d,"%s","%s",%d,"%s")' % (add_id, add_name, "男" if add_gender == 0 else "女", add_age, add_dept))database.commit()display_current_page()else:cursor.execute('select * from manager where id = %d' % add_id)data = cursor.fetchall()if len(data) > 0:tkinter.messagebox.showerror("Error","该id已存在")return Nonecursor.execute('insert into manager(id,name,gender,age,dept) values(%d,"%s","%s",%d,"%s")' % (add_id, add_name, "男" if add_gender == 0 else "女", add_age, add_dept))database.commit()display_current_page()'''_____________________________________________________________________________'''#连接database,解决编码问题
#程序执行后在mysql中进行查询会发现中文无法正常显示,这是因为在安装mysql时未选择Mysql Server Instance Config Wizard,而机房电脑可以显示正常
database = pymysql.connect(host='localhost', user='root',password='123456',database='employee_system',charset='gb2312')
cursor = database.cursor()
if database.open == False:raise Exception("数据库未连接,请检查数据库服务是否启动")
cursor.execute('use employee_system')mode = -1
#实现登录功能
using_name=""
def button_login_clicked():global modeglobal using_nameindex = combobox_login.current()username_input = entry1.get().strip()using_name=username_inputpassword_input = entry2.get().strip()print(index, username_input, password_input)if index == -1:tkinter.messagebox.showerror("错误","请选择你的登陆身份")elif len(username_input) == 0 or len(password_input) == 0:tkinter.messagebox.showerror("错误","请输入用户名和密码")else:if index == 0:cursor.execute('select * from admin where user_name = "%s" and password = "%s"' % (username_input,password_input))if (len(cursor.fetchall()) > 0):print("已成功登录")myWindow.destroy()mode = 0else:tkinter.messagebox.showerror("错误","用户名或密码错误")if index == 1:cursor.execute('select * from manager_login where user_name = "%s" and password = "%s"' % (username_input,password_input))if (len(cursor.fetchall()) > 0):print("已成功登录")myWindow.destroy()mode = 1else:tkinter.messagebox.showerror("错误","用户名或密码错误")if index == 2:cursor.execute('select * from employee_login where user_name = "%s" and password = "%s"' % (username_input,password_input))if (len(cursor.fetchall()) > 0):print("已成功登录")myWindow.destroy()mode = 2else:tkinter.messagebox.showerror("错误","用户名或密码错误")#实现修改功能
def button_change_clicked():indexs1 = listbox1.curselection()indexs2 = listbox2.curselection()indexs3 = listbox3.curselection()indexs4 = listbox4.curselection()indexs5 = listbox5.curselection()indexs6 = listbox6.curselection()print(indexs1,indexs2,indexs3,indexs4,indexs5,indexs6)index = -1if len(indexs1) > 0:index = indexs1[0]elif len(indexs2) > 0:index = indexs2[0]elif len(indexs3) > 0:index = indexs3[0]elif len(indexs4) > 0:index = indexs4[0]elif len(indexs5) > 0:index = indexs5[0]elif len(indexs6) > 0:index = indexs6[0]if index == -1:tkinter.messagebox.showerror("错误","请选择要修改的数据")change_id = listbox2.get(index,index)[0]change_who = listbox1.get(index,index)[0]change_name = entry11.get().strip()change_age = entry22.get().strip()change_grade = entry33.get().strip()index = combobox_22.current()if len(change_name) > 0:if (change_who == "员工"):try:change_id = int(change_id)except Exception as e:tkinter.messagebox.showerror("错误","输入错误")return Nonecursor.execute('update employee set name = "%s" where id = %d' % (change_name, change_id))database.commit()display_current_page()else:try:change_id = int(change_id)except Exception as e:tkinter.messagebox.showerror("错误","输入错误")return Nonecursor.execute('update manager set name = "%s" where id = %d' % (change_name, change_id))database.commit()    display_current_page()if len(change_age) > 0:if (change_who == "员工"):try:change_age = int(change_age)except Exception as e:tkinter.messagebox.showerror("错误","输入错误")return Nonecursor.execute('update employee set age = "%s" where id = %d' % (int(change_age), int(change_id)))database.commit()display_current_page()else:try:change_age = int(change_age)except Exception as e:tkinter.messagebox.showerror("错误","输入错误")return Nonecursor.execute('update manager set age = "%s" where id = %d' % (int(change_age), int(change_id)))database.commit()  display_current_page()if len(change_grade) > 0:if (change_who == "员工"):try:change_grade = change_gradeexcept Exception as e:tkinter.messagebox.showerror("错误","输入错误")return Nonecursor.execute('update employee set dept = "%s" where id = %d' % (change_grade, int(change_id)))database.commit()display_current_page()else:try:change_grade = change_gradeexcept Exception as e:tkinter.messagebox.showerror("错误","输入错误")return Nonecursor.execute('update manager set dept = "%s" where id = %d' % (change_grade, int(change_id)))database.commit()  display_current_page()if index != -1:if (change_who == "员工"):cursor.execute('update employee set gender = "%s" where id = %d' % ("男" if index==0 else "女", int(change_id)))database.commit()display_current_page()else:cursor.execute('update manager set gender = "%s" where id = %d' % ("男" if index==0 else "女", int(change_id)))database.commit()  display_current_page()#实现搜索功能
def button_search_clicked():global using_nameindex = combobox_1.current()content = entry1.get().strip()if index == -1:tkinter.messagebox.showerror("错误","请选择搜索依据")return Noneif len(content) == 0:tkinter.messagebox.showerror("错误","请输入搜索内容")return Noneif index == 0:try:search_id = int(content)except Exception as e:tkinter.messagebox.showerror("Error","请输入正确id")return Noneif mode == 0 :cursor.execute('select * from employee where id = %d' % search_id)data1 = cursor.fetchall()cursor.execute('select * from manager where id = %d' % search_id)data2 = cursor.fetchall()else:cursor.execute('select dept from manager where id ={}'.format(int(using_name)))manager_dept=cursor.fetchall()real_dept=str(manager_dept[0][0])cursor.execute('select * from (select * from employee where dept = "%s") as new_emp where new_emp.id = %d'%(real_dept,search_id))data1=cursor.fetchall()data2=cursor.fetchall()listbox1.delete(0,END)listbox2.delete(0,END)listbox3.delete(0,END)listbox4.delete(0,END)listbox5.delete(0,END)listbox6.delete(0,END)for d in data1:listbox1.insert(END,'员工')listbox2.insert(END, d[0])listbox3.insert(END, d[1])listbox4.insert(END, d[2])listbox5.insert(END, d[3])listbox6.insert(END, d[4])for d in data2:listbox1.insert(END,'经理')listbox2.insert(END, d[0])listbox3.insert(END, d[1])listbox4.insert(END, d[2])listbox5.insert(END, d[3])listbox6.insert(END, d[4])if index == 1:if mode == 0:cursor.execute('select * from employee where name = "%s"' % content)data1 = cursor.fetchall()cursor.execute('select * from manager where name = "%s"' % content)data2 = cursor.fetchall()else:cursor.execute('select dept from manager where id ={}'.format(int(using_name)))manager_dept=cursor.fetchall()real_dept=str(manager_dept[0][0])#必须为嵌套查询的内部表设置别名(as new_emp)cursor.execute('select * from (select * from employee where dept = "%s") as new_emp where new_emp.name = "%s"'%(real_dept,content))data1=cursor.fetchall()data2=cursor.fetchall()listbox1.delete(0,END)listbox2.delete(0,END)listbox3.delete(0,END)listbox4.delete(0,END)listbox5.delete(0,END)listbox6.delete(0,END)for d in data1:listbox1.insert(END,'员工')listbox2.insert(END, d[0])listbox3.insert(END, d[1])listbox4.insert(END, d[2])listbox5.insert(END, d[3])listbox6.insert(END, d[4])for d in data2:listbox1.insert(END,'经理')listbox2.insert(END, d[0])listbox3.insert(END, d[1])listbox4.insert(END, d[2])listbox5.insert(END, d[3])listbox6.insert(END, d[4])def get_image(file_name,width,height):im=Image.open(file_name).resize((width,height))return ImageTk.PhotoImage(im)#界面设置
#初始化Tk()
myWindow = Tk()
#设置标题
myWindow.title('员工信息管理系统登陆页面')
myWindow.geometry('1080x600')#插入背景图片
canvans_myWindow=Canvas(myWindow,width=720,height=385)
#此处为设置登录界面背景图片,需替换成自己所需的文件及路径
im_root=get_image('D:\数据库课程设计\员工信息管理系统.png',720,385)
canvans_myWindow.create_image(400,200,image=im_root)
canvans_myWindow.pack()#创建一个标签,显示文本
Label(myWindow, text="用户名:",font=('Arial 12 bold'),width=10,height=1).place(relx = 0.10, rely = 0.75)
Label(myWindow, text="密码:",font=('Arial 12 bold'),width=10,height=1).place(relx = 0.10, rely = 0.85)
Label(myWindow, text="登陆身份:",font=('Arial 12 bold'),width=10,height=1).place(relx = 0.10, rely = 0.65)combobox_login = ttk.Combobox(myWindow, values = ['管理员','经理','员工'], width=17)
combobox_login.place(relx = 0.45, rely = 0.65)button_login = Button(text = '登陆',relief = 'raised', command = button_login_clicked)
button_login.place(relx = 0.5, rely = 0.92)entry1=Entry(myWindow)
entry2=Entry(myWindow,show='*')
entry1.place(relx = 0.45, rely = 0.75)
entry2.place(relx = 0.45, rely = 0.85)
#进入消息循环
myWindow.mainloop()#设置员工操作页面
def employee_click():content = entry111.get()if len(content) == 0:tkinter.messagebox.showerror("Error","请输入新密码!")cursor.execute('update employee_login set password= "%s" where user_name="%s"' % (content,using_name))database.commit()tkinter.messagebox.showinfo(title='修改密码',message="密码修改完成,请牢记新密码!")#设置经理修改密码功能
def manager_click():content= entry_update.get()if len(content) == 0:tkinter.messagebox.showerror("Error","请输入新密码!")cursor.execute('update manager_login set password= "%s" where user_name="%s"' % (content,using_name))database.commit()tkinter.messagebox.showinfo(title='修改密码',message="密码修改完成,请牢记新密码!")#设置管理员操作页面
if mode == 0:print("已进入系统")page = 0who = 1#初始化Tk()myWindow = Tk()#设置标题myWindow.title('管理员界面')myWindow.geometry('1280x640')#创建一个标签,显示文本Label(myWindow, text="搜索选项:",font=('Arial 12 bold'),width=10,height=1).grid(column = 0, row = 0)combobox_1 = ttk.Combobox(myWindow, values = ['按工号搜索','按姓名搜索'], width=17)combobox_1.grid(column = 1, row = 0)Label(myWindow, text="搜索关键字:",font=('Arial 12 bold'),width=10,height=1).grid(column = 2, row = 0)entry1=Entry(myWindow)entry1.grid(column = 3, row = 0)#将各功能按键与函数绑定button1 = Button(text = '搜索',relief = 'raised', command = button_search_clicked)button1.grid(column = 4, row = 0)button2 = Button(text = '显示所有员工信息',relief = 'raised', command = button2_clicked)button2.grid(column = 5, row = 0)button3 = Button(text = '显示所有经理信息',relief = 'raised', command = button_manager_clicked)button3.grid(column = 6, row = 0)Label(myWindow, text=" ",font=('Arial 12 bold'),width=4,height=1).grid(column = 0, row = 1)Label(myWindow, text="身份",font=('Arial 12 bold'),width=10,height=1).grid(column = 0, row = 2)listbox1 = Listbox(myWindow,height=20,selectmode="browse",font=('Arial 12 bold'))listbox1.grid(column = 0, row = 3)Label(myWindow, text="工号",font=('Arial 12 bold'),width=10,height=1).grid(column = 1, row = 2)listbox2 = Listbox(myWindow,height=20,selectmode="browse",font=('Arial 12 bold'))listbox2.grid(column = 1, row = 3)Label(myWindow, text="姓名",font=('Arial 12 bold'),width=10,height=1).grid(column = 2, row = 2)listbox3 = Listbox(myWindow,height=20,width = 10,selectmode="browse",font=('Arial 12 bold'))listbox3.grid(column = 2, row = 3)Label(myWindow, text="性别",font=('Arial 12 bold'),width=10,height=1).grid(column = 3, row = 2)listbox4 = Listbox(myWindow,height=20,width = 5,selectmode="browse",font=('Arial 12 bold'))listbox4.grid(column = 3, row = 3)Label(myWindow, text="年龄",font=('Arial 12 bold'),width=10,height=1).grid(column = 4, row = 2)listbox5 = Listbox(myWindow,height=20,width = 8,selectmode="browse",font=('Arial 12 bold'))listbox5.grid(column = 4, row = 3)Label(myWindow, text="部门",font=('Arial 12 bold'),width=10,height=1).grid(column = 5, row = 2)listbox6 = Listbox(myWindow,height=20,width = 8,selectmode="browse",font=('Arial 12 bold'))listbox6.grid(column = 5, row = 3)Label(myWindow, text='身份无法修改',font=('Arial 12 bold'),width=10,height=1).grid(column = 0, row = 4)Label(myWindow, text='工号无法修改',font=('Arial 12 bold'),width=10,height=1).grid(column = 1, row = 4)entry11=Entry(myWindow)entry11.grid(column = 2, row = 4)combobox_22 = ttk.Combobox(myWindow, values = ['男','女'], width=17)combobox_22.grid(column = 3, row = 4)entry22=Entry(myWindow)entry22.grid(column = 4, row = 4)entry33=Entry(myWindow)entry33.grid(column = 5, row = 4)button4 = Button(text = '修改',relief = 'raised', command = button_change_clicked)button4.grid(column = 6, row = 4)combobox_2 = ttk.Combobox(myWindow, values = ['员工','经理'], width=17)combobox_2.grid(column = 0, row = 5)entry4=Entry(myWindow)entry4.grid(column = 1, row = 5)entry5=Entry(myWindow)entry5.grid(column = 2, row = 5)combobox_3 = ttk.Combobox(myWindow, values = ['男','女'], width=17)combobox_3.grid(column = 3, row = 5)entry7=Entry(myWindow)entry7.grid(column = 4, row = 5)entry8=Entry(myWindow)entry8.grid(column = 5, row = 5)button5 = Button(text = '添加',relief = 'raised', command = button_add_clicked)button5.grid(column = 6, row = 5)button6 = Button(text = '删除',relief = 'raised', command = button_delete_clicked)button6.grid(column = 6, row = 6)button7 = Button(text = '上一页',relief = 'raised', command = display_previous_page)button7.grid(column = 3, row = 7)button8 = Button(text = '下一页',relief = 'raised', command = button_next_page_clicked)button8.grid(column = 4, row = 7)#进入消息循环myWindow.mainloop()#设置经理操作页面
elif mode == 1:print("已成功登录")page = 0who = 1#初始化Tk()myWindow = Tk()#设置标题myWindow.title('经理界面')myWindow.geometry('1280x650')#创建一个标签,显示文本Label(myWindow, text="搜索选项:",font=('Arial 12 bold'),width=10,height=1).grid(column = 0, row = 0)combobox_1 = ttk.Combobox(myWindow, values = ['按工号搜索','按姓名搜索'], width=17)combobox_1.grid(column = 1, row = 0)Label(myWindow, text="搜索关键字:",font=('Arial 12 bold'),width=10,height=1).grid(column = 2, row = 0)entry1=Entry(myWindow)entry1.grid(column = 3, row = 0)button1 = Button(text = '搜索',relief = 'raised', command = button_search_clicked)button1.grid(column = 4, row = 0)button2 = Button(text = '显示我的部门员工信息',relief = 'raised', command = button2_clicked)button2.grid(column = 5, row = 0)Label(myWindow, text=" ",font=('Arial 12 bold'),width=4,height=1).grid(column = 0, row = 1)Label(myWindow, text="身份",font=('Arial 12 bold'),width=10,height=1).grid(column = 0, row = 2)listbox1 = Listbox(myWindow,height=20,selectmode="browse",font=('Arial 12 bold'))listbox1.grid(column = 0, row = 3)Label(myWindow, text="工号",font=('Arial 12 bold'),width=10,height=1).grid(column = 1, row = 2)listbox2 = Listbox(myWindow,height=20,selectmode="browse",font=('Arial 12 bold'))listbox2.grid(column = 1, row = 3)Label(myWindow, text="姓名",font=('Arial 12 bold'),width=10,height=1).grid(column = 2, row = 2)listbox3 = Listbox(myWindow,height=20,width = 10,selectmode="browse",font=('Arial 12 bold'))listbox3.grid(column = 2, row = 3)Label(myWindow, text="性别",font=('Arial 12 bold'),width=10,height=1).grid(column = 3, row = 2)listbox4 = Listbox(myWindow,height=20,width = 5,selectmode="browse",font=('Arial 12 bold'))listbox4.grid(column = 3, row = 3)Label(myWindow, text="年龄",font=('Arial 12 bold'),width=10,height=1).grid(column = 4, row = 2)listbox5 = Listbox(myWindow,height=20,width = 8,selectmode="browse",font=('Arial 12 bold'))listbox5.grid(column = 4, row = 3)Label(myWindow, text="部门",font=('Arial 12 bold'),width=10,height=1).grid(column = 5, row = 2)listbox6 = Listbox(myWindow,height=20,width = 8,selectmode="browse",font=('Arial 12 bold'))listbox6.grid(column = 5, row = 3)Label(myWindow, text='身份无法修改',font=('Arial 12 bold'),width=10,height=1).grid(column = 0, row = 4)Label(myWindow, text='工号无法修改',font=('Arial 12 bold'),width=10,height=1).grid(column = 1, row = 4)entry11=Entry(myWindow)entry11.grid(column = 2, row = 4)combobox_22 = ttk.Combobox(myWindow, values = ['男','女'], width=17)combobox_22.grid(column = 3, row = 4)entry22=Entry(myWindow)entry22.grid(column = 4, row = 4)entry33=Entry(myWindow)entry33.grid(column = 5, row = 4)button4 = Button(text = '修改',relief = 'raised', command = button_change_clicked)button4.grid(column = 6, row = 4)combobox_2 = ttk.Combobox(myWindow, values = ['员工'], width=17)combobox_2.grid(column = 0, row = 5)entry4=Entry(myWindow)entry4.grid(column = 1, row = 5)entry5=Entry(myWindow)entry5.grid(column = 2, row = 5)combobox_3 = ttk.Combobox(myWindow, values = ['男','女'], width=17)combobox_3.grid(column = 3, row = 5)entry7=Entry(myWindow)entry7.grid(column = 4, row = 5)entry8=Entry(myWindow)entry8.grid(column = 5, row = 5)button5 = Button(text = '添加',relief = 'raised', command = button_add_clicked)button5.grid(column = 6, row = 5)button6 = Button(text = '删除',relief = 'raised', command = button_delete_clicked)button6.grid(column = 6, row = 6)button7 = Button(text = '上一页',relief = 'raised', command = display_previous_page)button7.grid(column = 3, row = 7)button8 = Button(text = '下一页',relief = 'raised', command = button_next_page_clicked)button8.grid(column = 4, row = 7)Label(myWindow, text='请输入想更改的新密码:',font=('Arial 12 bold'),height=1).grid(column = 0, row = 7)entry_update=Entry(myWindow)entry_update.grid(column=1,row=7)button_update=Button(text='修改密码',relief='raised',command=manager_click).grid(column=1,row=8)cursor.execute("select * from manager where id = %d" % int(using_name))data=cursor.fetchall()Label(myWindow,text='我的信息如下:',font=('Arial 12 bold'),height=1).place(relx=0.8,rely=0.06)myinfo1="工号:%d"%(data[0][0])myinfo2="姓名:%s"%(data[0][1])myinfo3="性别:%s"%(data[0][2])myinfo4="年龄:%d"%(data[0][3])myinfo5="职位:%s经理"%(data[0][4])Label(myWindow,text=myinfo1,font=('Arial 12 bold'),height=1).place(relx=0.8,rely=0.12)Label(myWindow,text=myinfo2,font=('Arial 12 bold'),height=1).place(relx=0.8,rely=0.18)Label(myWindow,text=myinfo3,font=('Arial 12 bold'),height=1).place(relx=0.8,rely=0.24)Label(myWindow,text=myinfo4,font=('Arial 12 bold'),height=1).place(relx=0.8,rely=0.30)Label(myWindow,text=myinfo5,font=('Arial 12 bold'),height=1).place(relx=0.8,rely=0.36)#进入消息循环myWindow.mainloop()#设置员工页面
elif mode == 2:myWindow = Tk()#设置标题myWindow.title('员工界面')myWindow.geometry('720x580')#只显示自己的信息cursor.execute("select * from employee where id = %d" % int(using_name))data = cursor.fetchall()#Label(myWindow, text=" ",font=('Arial 12 bold'),width=4,height=1).grid(column = 0, row = 0)Label(myWindow,text='我的信息如下:',font=('Arial 12 bold'),height=1).place(relx=0.45,rely=0.23)myinfo1="工号:%d"%(data[0][0])myinfo2="姓名:%s"%(data[0][1])myinfo3="性别:%s"%(data[0][2])myinfo4="年龄:%d"%(data[0][3])myinfo5="部门:%s"%(data[0][4])Label(myWindow,text=myinfo1,font=('Arial 12 bold'),height=1).place(relx=0.45,rely=0.3)Label(myWindow,text=myinfo2,font=('Arial 12 bold'),height=1).place(relx=0.45,rely=0.37)Label(myWindow,text=myinfo3,font=('Arial 12 bold'),height=1).place(relx=0.45,rely=0.44)Label(myWindow,text=myinfo4,font=('Arial 12 bold'),height=1).place(relx=0.45,rely=0.51)Label(myWindow,text=myinfo5,font=('Arial 12 bold'),height=1).place(relx=0.45,rely=0.58)Label(myWindow, text='请输入想更改的新密码:',font=('Arial 12 bold'),height=1).grid(column = 1, row = 6)entry111=Entry(myWindow)entry111.grid(column = 2, row = 6)button111 = Button(text = '修改密码',relief = 'raised', command = employee_click)button111.grid(column = 2, row = 8)myWindow.mainloop()

数据库课程设计-员工信息管理系统(基于python和MySQL实现)相关推荐

  1. oracle学生信息管理系统课程设计,数据库课程设计-学生信息管理系统的设计与实现.doc...

    数据库课程设计-学生信息管理系统的设计与实现 2011-2012课程设计II 学生信息管理系统的设计与实现 一 设计内容 建立一个简单的在校学生信息查询系统,可以让使用者查询到学生的一些简单的个人信息 ...

  2. 数据库课程设计超市信息管理系统

    目录 一.需求分析 1.系统需求分析描述 1.1.1系统需求说明: 1.1.2系统可行性分析: 1.1.3系统应用范围: 2.系统功能结构图 3.业务流程图 二.概念结构设计 1.实体描述 2.局部E ...

  3. 【记录贴】数据库课程设计——学生信息管理系统

    前言 记录下学习的点点滴滴,留下属于我的足迹. 以此篇记录我的第一次课程设计. 课设实现 一.课程设计题目 题目一 学生信息管理系统 二.总体设计 原理及工具 JAVA的前端搭建:JAVA GUI M ...

  4. 数据库课程设计——学生信息管理系统

    学生信息管理系统 0 前言 0.1效果演示 0.2 开发工具 0.3 创新点 1.系统需求分析 1.1 系统功能分析 1.2 系统功能模块设计(划分) 1.3 与其它系统的关系 1.4 数据流程图 2 ...

  5. JavaWeb课程设计-学生信息管理系统(Jsp+Servlet+MySql

    用户操作的DAO */ public interface UserDao { } 实现持久层接口: public class UserDaoImpl implements UserDao { priv ...

  6. 员工信息管理系统语言论文c,C语言课程设计 职工信息管理系统.doc

    C语言课程设计 职工信息管理系统.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. ...

  7. java毕业生设计员工信息管理系统计算机源码+系统+mysql+调试部署+lw

    java毕业生设计员工信息管理系统计算机源码+系统+mysql+调试部署+lw java毕业生设计员工信息管理系统计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B/S架构 开 ...

  8. java 数据库工资管理系统设计_数据库课程设计—企业工资管理系统(java版完整代码)...

    数据库课程设计-企业工资管理系统(java版完整代码) 数 据 库 课 程 设 计 报 告2016年 5月 20日 目 录企业工资管理系统姓 名 王 素 文班 级 软 133学 号 139074224 ...

  9. 查询学生选修课程管理系统java_JAVA数据库课程设计学生选课管理系统的

    <JAVA数据库课程设计学生选课管理系统的>由会员分享,可在线阅读,更多相关<JAVA数据库课程设计学生选课管理系统的(59页珍藏版)>请在人人文库网上搜索. 1.一.课程设计 ...

最新文章

  1. 大师Martin Fowler强烈推荐的一本书
  2. C Primer Plus (第五版) 第十章 数组和指针 编程练习
  3. 个人代码库の设置窗体效果AnimateWindow
  4. ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry ’1′ for key
  5. 小说的逻辑与反逻辑_毕飞宇北大演讲:“走”与“走”——小说内部的逻辑与反逻辑...
  6. 计算机组成i1-i8,2016年软考程序员例题分析之计算机组成原理
  7. Vert.x 异步访问数据库 MySQL
  8. idea 包存在提示不存在
  9. smbus协议的command_SMBus接口信号/应用框图/帧格式
  10. 利用Xstream注解生成和解析xml
  11. Portainer中文汉化
  12. LTE学习笔记之接口协议
  13. 大学教师晋升正教授职称需要多久
  14. 夜读 | 读书和不读书的人生,差别有多大
  15. matlab simulink 数学符号,MATLAB符号数学
  16. 戴尔笔记本开机logo进度条时间长的解决办法
  17. 2020年度总结 | 葡萄城软件开发技术回顾
  18. 摄影测量:ERDAS自动、手动和导入特征点对(超详细)
  19. 2021美赛C思路总结
  20. Xcode11后新建项目怎么移除SceneDelegate?

热门文章

  1. Javascript 计算请假天数
  2. 结构体 — C 语言中不定长结构体的使用
  3. 透过“最牛”年报,聊聊优然牧业的“最佳养牛模式”
  4. 吞下西甲英超中超成体育大胃王,PPTV还有哪些大招?
  5. 第33次Scrum会议(11/21)【欢迎来怼】
  6. 【javaWeb微服务架构项目——乐优商城day05】——商品规格参数管理(增、删、改,查已完成),SPU和SKU数据结构,商品查询
  7. typeScript(二)
  8. unity算法面试_Unity笔试面试题目分享
  9. java设计最简单记账本_家庭记账本小程序之前端页面设计(java web基础版一)
  10. matlab编写多目标性能度量r、GD、Spacing、德尔塔