基于python连接sql server实现员工入职信息管理系统
功能代码都很基础,适合初学者借鉴
一些运行图片
登录界面
主界面
注册界面
显示界面
查询界面
修改界面
别的界面再不做一一演示
代码部分
python与sql连接代码
#里面有一些库需要自己导入
import tkinter
from tkinter import *
import tkinter.messagebox as messagebox
from tkinter import ttk
import win32com.client
import pymssql
from PIL import ImageTk,Image
import time
server = 'DESKTOP-4TF7JVV'
user ='sa'
userpassword ='123456'
database = 'python'
conn = pymssql.connect(server,user,userpassword,database)
cursor = conn.cursor()
#连接服务器和数据库
cn=win32com.client.Dispatch('ADODB.Connection')
cnstr='Provider=SQLOLEDB.1;Integrated Security=SSPI;Data Source=DESKTOP-4TF7JVV'
cn.Open(cnstr,'sa','123456')
#如果数据库
cn.DefaultDatabase='python'
#打开数据库
cn.Execute('USE python')
rs=win32com.client.Dispatch('ADODB.RecordSet')
登录界面
#登录界面函数
def ase():
rt = Tk()
rt.title('员工信息管理')
rt.geometry('250x400+200+100')
bj = PhotoImage(file='1.gif')
lb = Label(image=bj)
lb.place(x=0, y=120)
'''time1 = time.strftime("%Y--%m--%d %H:%M", time.localtime(time.time()))
L3 = Label(rt, text=time1, fg='purple')
L3.place(x=80,y=1)
l2=Label(rt,text='北京时间:',fg='purple')
l2.place(x=20,y=1)'''
def gettime():#获取当前时间
var.set(time.strftime("%Y-%m-%d %H:%M:%S")) # 获取当前时间
rt.after(1000, gettime) # 每隔1s调用函数 gettime 自身获取时间
var = StringVar()
lb = Label(rt, textvariable=var, fg='purple',font=('微软雅黑',10))
lb.place(x=70,y=0)
l2 = Label(rt, text='北京时间', fg='purple',font=('微软雅黑',10))
l2.place(x=10, y=0)
gettime()
lb1 = Label(rt, text='')
lb1.grid(row=0, column=1)
lb2 = Label(rt, text='')
lb2.grid(row=1, column=0)
Label(rt, text='用户名:',fg='blue').grid(row=1, stick=W, pady=10, column=8)
Label(rt, text='密码:',fg='blue').grid(row=2, stick=W, pady=10, column=8)
l1 = Entry(rt)
l1.grid(row=1, column=10)
l2 = Entry(rt, show='*')
l2.grid(row=2, column=10)
lb3 = Label(rt, text='')
lb3.grid(row=4, column=1)
def Zhuce():#账号注册界面函数
rt.destroy()
rs = Tk()
rs.title('账号注册')
rs.geometry('250x250')
Label(rs).grid(row=0)
Label(rs, text="账号:").grid(row=1, stick=W, pady=10)
t1 = Entry(rs)
t1.grid(row=1, column=1, stick=E)
Label(rs, text="密码:").grid(row=2, stick=W, pady=10)
t2 = Entry(rs, show='*')
t2.grid(row=2, column=1, stick=E)
Label(rs, text="再次输入:").grid(row=3, stick=W, pady=10)
t3 = Entry(rs, show='*')
t3.grid(row=3, column=1, stick=E)
def back():#账号注册界面返回函数
rs.destroy()
ase()
def zhuce1():#账号注册确认监听函数
s1 = t1.get()
s2 = t2.get()
s3 = t3.get()
if str(t2.get()) != str(t3.get()):
messagebox.showwarning('错误', '密码核对错误')
elif len(t1.get()) == 0 or len(t2.get()) == 0:
messagebox.showerror("错误", "不能为空")
else:
rs.LockType = 4
cursor.execute("SELECT USERNAME FROM T WHERE USERNAME = '%s'" % (s1,))
name1 = cursor.fetchone()
if name1 is None:
s1 = str(t1.get())
s3 = str(t3.get())
cn.Execute("INSERT T VALUES('%s','%s')" % (s1, s3))
conn.commit()
messagebox.showinfo("成功", "注册成功,按确定返回登录界面")
rs.destroy()
ase()
else:
messagebox.showerror("注册失败", "该账户已存在")
bt3 = Button(rs, text="返回", command=back).grid(row=4, stick=W, pady=10)
Button(rs, text="注册", command=zhuce1).grid(row=4, column=1, stick=E)
bt1 = Button(rt, text='登录', command=cmtpro).grid(row=3, column=10, stick=E, pady=10)
bt2 = Button(rt, text='注册', command=Zhuce).grid(row=3, stick=W, column=8, pady=10)
bt3 = Button(rt, text='退出',command=quit).place(x=80,y=119,width=50)
rt.mainloop()
ase()
显示界面函数
# 清空表格
rw = Tk()
rw.title('修改')
rw.geometry('390x400+200+200')
cursor.execute("select * from staff order by t_id desc")
txt=tkinter.StringVar()
t1 = Entry(rw,textvariable=txt,state=DISABLED)
txt.set('无法输入')
t1.place(x=0,y=0)
T = cursor.fetchall()
if T is None:
messagebox.showwarning('员工管理,么有员工!')
else:
manfra = LabelFrame(text='客户信息')
manfra.pack(anchor='center', pady=50, ipadx=5, ipady=5)
manfra.columnconfigure(1, minsize=5)
manfra.columnconfigure(2, minsize=50)
manfra.columnconfigure(3, minsize=30)
Label(manfra, text='编号',
font=('微软雅黑', 9, 'normal'), bd=1,
relief=SOLID).grid(row=1, column=1)
Label(manfra, text='姓名',
font=('微软雅黑', 9, 'normal'), bd=1,
relief=SOLID).grid(row=1, column=2, sticky=N + E + S + W)
Label(manfra, text='性别',
font=('微软雅黑', 9), bd=1,
relief=SOLID).grid(row=1, column=3, sticky=N + E + S + W)
Label(manfra, text='出生日期',
font=('微软雅黑', 9), bd=1,
relief=SOLID).grid(row=1, column=4, sticky=N + E + S + W)
Label(manfra, text='身份证号',
font=('微软雅黑', 9), bd=1,
relief=SOLID).grid(row=1, column=5, sticky=N + E + S + W)
Label(manfra, text='手机号',
font=('微软雅黑', 9), bd=1,
relief=SOLID).grid(row=1, column=6, sticky=N + E + S + W)
Label(manfra, text='入职日期',
font=('微软雅黑', 9), bd=1,
relief=SOLID).grid(row=1, column=7, sticky=N + E + S + W)
Label(manfra, text='现任职位',
font=('微软雅黑', 9), bd=1,
relief=SOLID).grid(row=1, column=8, sticky=N + E + S + W)
Label(manfra, text='任职部门',
font=('微软雅黑', 9), bd=1,
relief=SOLID).grid(row=1, column=9, sticky=N + E + S + W)
Label(manfra, text='工资',
font=('微软雅黑', 9), bd=1,
relief=SOLID).grid(row=1, column=10, sticky=N + E + S + W)
rn = 2
for x in T:
cn = 0
Label(manfra, text=str(rn - 1),
font=('微软雅黑', 9, 'bold'), bd=1,
relief=SOLID).grid(row=rn, column=cn, sticky=N + E + S + W)
for a in x:
cn += 1
Label(manfra, text=str(a),
font=('微软雅黑', 9), bd=1,
relief=SOLID).grid(row=rn, column=cn, sticky=N + E + S + W)
rn += 1
rw.mainloop()
查询界面函数
rw=Tk()
rw.title('查询')
rw.geometry('650x400+300+200')
l1=Label(rw,text="请输入你要查询的编号:")
time1 = time.strftime("%Y-%m-%d %H:%M", time.localtime(time.time()))
L3 = Label(rw, text=time1, fg='blue')
L3.place(x=200,y=0)
l1.place(x=200,y=30)
l1=Entry(rw,width=20)
l1.place(x=350,y=30)
t_name = StringVar()
t_id = StringVar()
t_sex = StringVar()
t_databoar= StringVar()
t_selfid= StringVar()
t_telephone= StringVar()
t_enrolldate = StringVar()
t_startswitch= StringVar()
t_section= StringVar()
t_salary= StringVar()
l2 = Label(text="编号:").place(x=30, y=90)
l3 = Label(text='姓名:').place(x=330, y=90)
l4 = Label(text='性别:').place(x=30, y=120)
l5 = Label(text='出生日期:').place(x=330, y=120)
l6 = Label(text='身份证号:').place(x=30, y=150)
l7 = Label(text='电话号码:').place(x=330, y=150)
l8 = Label(text='入职日期:').place(x=30, y=180)
l9 = Label(text='现任职位:').place(x=330, y=180)
l10 = Label(text='任职部门:').place(x=30, y=210)
l11 = Label(text='工资:').place(x=330, y=210)
l2 = Entry(textvariable=t_id,width=25)
l2.place(x=120, y=90)
l3 = Entry(textvariable=t_name,width=25)
l3.place(x=420, y=90)
l4 = Entry(textvariable=t_sex,width=25,state=DISABLED)
l4.place(x=120, y=120)
l5 = Entry(textvariable=t_databoar,width=25)
l5.place(x=420, y=120)
l6 = Entry(textvariable=t_selfid,width=25)
l6.place(x=120, y=150)
l7 = Entry(textvariable=t_telephone,width=25)
l7.place(x=420, y=150)
l8 = Entry(textvariable=t_enrolldate,width=25)
l8.place(x=120, y=180)
l9 = Entry(textvariable=t_startswitch,width=25)
l9.place(x=420, y=180)
l10 = Entry(textvariable=t_section,width=25)
l10.place(x=120, y=210)
l11 = Entry(textvariable=t_salary,width=25)
l11.place(x=420, y=210)
def add():
s1=l1.get()
rs.LockType = 4
cursor.execute("select * from staff where t_id='%s' " % ( s1))
s = cursor.fetchall()
if len(s)==0:
messagebox.showwarning('查询失败', '账户不存在')
else:
messagebox.showinfo("成功", '查询结果如下!!!')
t_id.set(str(s[0][0])) # 将获取的信息填入文本框
t_name.set(str(s[0][1])) # 将获取的信息填入文本框
t_sex.set(str(s[0][2]))
t_databoar.set(str(s[0][3]))
t_selfid.set(str(s[0][4]))
t_telephone.set(str(s[0][5]))
t_enrolldate.set(str(s[0][6]))
t_startswitch.set(str(s[0][7]))
t_section.set(str(s[0][8]))
t_salary.set(str(s[0][9]))
b1=Button(rw,text='确认',command=add).place(x=250,y=270,width=50)
b2=Button(rw,text='退出',command=quit).place(x=400,y=270,width=50)
rw.mainloop()
删除界面函数
rw=Tk()
rw.title('删除')
rw.geometry('390x400+200+200')
bj = PhotoImage(file='背景.gif')
lb = Label(image=bj)
lb.place(x=0, y=0)
l1=Label(text="请输入你要删除的编号:")
l1.place(x=10,y=50)
l1=Entry(width=20)
l1.place(x=150,y=50)
def add():
s1=l1.get()
rs.LockType = 4
cursor.execute("select * from staff where t_id='%s' " % ( s1))
s = cursor.fetchone()
if s is None:
messagebox.showerror('删除失败', '账户不存在')
else:
cursor.execute("delete from staff where t_id='%s'" % ( s1))
conn.commit()
messagebox.showinfo("成功", '该条信息删除成功!!!')
b1=Button(rw,text='确认',command=add).place(x=100,y=120,width=50)
b2=Button(rw,text='退出',command=quit).place(x=230,y=120,width=50)
rw.mainloop()
修改界面函数
rw=Tk()
rw.title('修改')
rw.geometry('400x200+300+200')
l1=Label(text="请输入你要修改的编号:")
l1.place(x=10,y=50)
l1=Entry(width=20)
l1.place(x=150,y=50)
def add():
s1=l1.get()
rs.LockType = 4
cursor.execute("select * from staff where t_id='%s' " % ( s1))
s = cursor.fetchone()
if s is None:
messagebox.showerror('修改失败', '账户不存在')
else:
rw.destroy()
rx = Tk()
rx.title('修改员工信息')
rx.geometry('400x380+300+100')
s2 = StringVar()
s3 = StringVar()
s4 = StringVar()
s5 = StringVar()
s6 = StringVar()
s7 = StringVar()
s8 = StringVar()
s9 = StringVar()
s10 = StringVar()
s11 = StringVar()
l3 = Label(text='输入新编号:').place(x=30, y=30)
l3=Label(text='输入新姓名:').place(x=30,y=60)
l4=Label(text='输入新性别:').place(x=30,y=90)
l5=Label(text='输入新出生日期:').place(x=30,y=120)
l6=Label(text='输入新身份证号:').place(x=30,y=150)
l7=Label(text='输入新电话号码:').place(x=30,y=180)
l8=Label(text='输入新入职日期:').place(x=30,y=210)
l9=Label(text='输入新现任职位:').place(x=30,y=240)
l10=Label(text='输入新任职部门:').place(x=30,y=270)
l11=Label(text='输入新工资:').place(x=30,y=300)
l2 = Entry(textvariable=s2,width=25,state=DISABLED)
l2.place(x=150, y=30)
l3= Entry(textvariable=s3,width=25)
l3.place(x=150, y=60)
l4 = Entry(textvariable=s4,width=25)
l4.place(x=150, y=90)
l5 = Entry(textvariable=s5,width=25)
l5.place(x=150, y=120)
l6 = Entry(textvariable=s6,width=25)
l6.place(x=150, y=150)
l7 = Entry(textvariable=s7,width=25)
l7.place(x=150, y=180)
l8 = Entry(textvariable=s8,width=25)
l8.place(x=150, y=210)
l9 = Entry(textvariable=s9,width=25)
l9.place(x=150, y=240)
l10 = Entry(textvariable=s10,width=25)
l10.place(x=150, y=270)
l11= Entry(textvariable=s11,width=25)
l11.place(x=150, y=300)
s2.set(s[0])
s3.set(s[1])
s4.set(s[2])
s5.set(s[3])
s6.set(s[4])
s7.set(s[5])
s8.set(s[6])
s9.set(s[7])
s10.set(s[8])
s11.set(s[9])
def add1():
s2=l2.get()
s3 = l3.get()
s4 = l4.get()
s5 = l5.get()
s6 = l6.get()
s7 = l7.get()
s8 = l8.get()
s9 = l9.get()
s10 = l10.get()
s11 = l11.get()
cursor.execute("UPDATE staff SET t_name='%s', t_sex='%s',t_databoar='%s', t_selfid='%s', t_telephone='%s', t_enrolldate='%s', t_startswitch='%s', t_section='%s', t_salary='%s' WHERE t_id='%s' " % (s3, s4, s5, s6, s7, s8, s9, s10, s11, s1))
conn.commit()
messagebox.showinfo("成功", '员工信息修改成功!!!')
b1 = Button(rx, text='确认',command=add1).place(x=110, y=330, width=50)
b2 = Button(rx, text='退出', command=quit).place(x=260, y=330, width=50)
b1=Button(rw,text='确认',command=add).place(x=100,y=120,width=50)
b2=Button(rw,text='退出',command=quit).place(x=230,y=120,width=50)
rw.mainloop()
添加界面函数
rw=Tk()
rw.title('添加')
rw.geometry('400x200+300+200')
l1=Label(rw,text="请输入你要添加的编号:")
time1 = time.strftime("%Y-%m-%d %H:%M", time.localtime(time.time()))
L3 = Label(rw, text=time1, fg='blue')
L3.place(x=140,y=160)
l1.place(x=10,y=50)
l1=Entry(rw,width=20)
l1.place(x=150,y=50)
def add():
s1=l1.get()
rs.LockType = 4
cursor.execute("select * from staff where t_id='%s' " % ( s1))
s = cursor.fetchone()
if s is not None:
messagebox.showerror('添加失败', '账户已经存在')
else:
rw.destroy()
rx = Tk()
rx.title('添加员工信息')
rx.geometry('400x380+300+100')
l2=Label(text="输入编号:").place(x=30,y=30)
l3=Label(text='输入姓名:').place(x=30,y=60)
l4=Label(text='输入性别:').place(x=30,y=90)
l5=Label(text='输入出生日期:').place(x=30,y=120)
l6=Label(text='输入身份证号:').place(x=30,y=150)
l7=Label(text='输入电话号码:').place(x=30,y=180)
l8=Label(text='输入入职日期:').place(x=30,y=210)
l9=Label(text='输入现任职位:').place(x=30,y=240)
l10=Label(text='输入任职部门:').place(x=30,y=270)
l11=Label(text='输入工资:').place(x=30,y=300)
s2=StringVar()
l2= Entry(textvariable=s2,width=25,state=DISABLED)
s2.set(s1)
l2.place(x=150, y=30)
l3= Entry(width=25)
l3.place(x=150, y=60)
l4 = Entry(width=25)
l4.place(x=150, y=90)
l5 = Entry(width=25)
l5.place(x=150, y=120)
l6 = Entry(width=25)
l6.place(x=150, y=150)
l7 = Entry(width=25)
l7.place(x=150, y=180)
l8 = Entry(width=25)
l8.place(x=150, y=210)
l9 = Entry(width=25)
l9.place(x=150, y=240)
l10 = Entry(width=25)
l10.place(x=150, y=270)
l11= Entry(width=25)
l11.place(x=150, y=300)
def add1():
s2=l2.get()
s3=l3.get()
s4 = l4.get()
s5 = l5.get()
s6 = l6.get()
s7 = l7.get()
s8 = l8.get()
s9 = l9.get()
s10 = l10.get()
s11= l11.get()
if s1 != s2:
messagebox.showwarning('错误', '两次输入编号不一致,请修改编号!')
else:
cn.Execute("INSERT staff VALUES('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')" % (s2,s3,s4,s5,s6,s7,s8,s9,s10,s11))
conn.commit()
messagebox.showinfo("成功", '员工信息添加成功!!!')
b1 = Button(rx, text='确认',command=add1).place(x=110, y=330, width=50)
b2 = Button(rx, text='退出', command=quit).place(x=260, y=330, width=50)
b1=Button(rw,text='确认',command=add).place(x=100,y=120,width=50)
b2=Button(rw,text='退出',command=quit).place(x=230,y=120,width=50)
rw.mainloop()