基于python连接sql server实现员工入职信息管理系统

基于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()

数据库和表等相关信息可根据代码自行设计

  • 18
    点赞
  • 140
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,下面是Python基于Pymssql模块实现通讯录管理系统的教程。 1.安装Pymssql模块 ``` pip install pymssql ``` 2.创建数据库和表 首先需要在SQL Server中创建一个数据库,并且创建一个名为“contacts”的表,用于存储联系人的信息。 ```sql CREATE DATABASE ContactDB; GO USE ContactDB; GO CREATE TABLE contacts ( id INT PRIMARY KEY IDENTITY, name VARCHAR(50) NOT NULL, phone VARCHAR(50) NOT NULL, email VARCHAR(50) NOT NULL ); GO ``` 3.连接数据库并实现增删改查功能 ```python import pymssql class Contacts: def __init__(self, server, username, password, database): self.server = server self.username = username self.password = password self.database = database def connect(self): self.conn = pymssql.connect(server=self.server, user=self.username, password=self.password, database=self.database) def add_contact(self, name, phone, email): self.connect() cursor = self.conn.cursor() sql = "INSERT INTO contacts (name, phone, email) VALUES (%s, %s, %s)" cursor.execute(sql, (name, phone, email)) self.conn.commit() self.conn.close() def get_contacts(self): self.connect() cursor = self.conn.cursor() sql = "SELECT * FROM contacts" cursor.execute(sql) rows = cursor.fetchall() self.conn.close() return rows def update_contact(self, id, name, phone, email): self.connect() cursor = self.conn.cursor() sql = "UPDATE contacts SET name=%s, phone=%s, email=%s WHERE id=%s" cursor.execute(sql, (name, phone, email, id)) self.conn.commit() self.conn.close() def delete_contact(self, id): self.connect() cursor = self.conn.cursor() sql = "DELETE FROM contacts WHERE id=%s" cursor.execute(sql, (id,)) self.conn.commit() self.conn.close() ``` 4.编写用户交互界面 ```python def main(): contacts = Contacts(server='localhost', username='sa', password='password', database='ContactDB') while True: print("1. 添加联系人") print("2. 查看联系人") print("3. 修改联系人") print("4. 删除联系人") print("5. 退出") choice = input("请输入要执行的操作:") if choice == '1': name = input("请输入姓名:") phone = input("请输入电话:") email = input("请输入邮箱:") contacts.add_contact(name, phone, email) print("联系人添加成功!\n") elif choice == '2': rows = contacts.get_contacts() print("所有联系人:") for row in rows: print(row) elif choice == '3': id = input("请输入要修改的联系人ID:") name = input("请输入姓名:") phone = input("请输入电话:") email = input("请输入邮箱:") contacts.update_contact(id, name, phone, email) print("联系人修改成功!\n") elif choice == '4': id = input("请输入要删除的联系人ID:") contacts.delete_contact(id) print("联系人删除成功!\n") elif choice == '5': exit() else: print("请输入正确的操作!\n") if __name__ == '__main__': main() ``` 以上就是Python基于Pymssql模块实现通讯录管理系统的教程,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值