最近要做数据库课设,准备用python来写,那就先做个简单的登录页面练练手,功能包括登录注册删除显示等。后期有时间的话可以添加成绩管理、学籍管理等功能。(大致内容已实现,后续添加挺easy的)过一段时间,再做一个航空机票预定系统,感兴趣的同学们点个赞哈
1.总体效果
主页面
注册
查看所有信息
注册
2.代码实现
2_1.数据库导入及创建表
import sqlite3
con = sqlite3.connect('test.db')
print('创建数据库文件成功')
cursor = con.cursor() # 创建一个游标
cursor.execute('''
create table user(
id int(10) primary key,
password int(10))
''')
cursor.close()
con.close()
2_2.界面及业务逻辑功能实现
首先导入包
import sqlite3
import tkinter
import tkinter.messagebox
from tkinter import ttk
from tkinter import *
from PIL import Image,ImageTk
创建根页面
root = tkinter.Tk()
root.title("账号密码管理系统")
root.geometry('800x600')
canvas = Canvas(root, width=600, height=400, bg='white')
canvas.pack(expand=YES, fill=BOTH)
#这里创建了一个图片标签
image = ImageTk.PhotoImage(file=r"E:/桌面文档/11.jpg")
canvas.create_image(0, 0, image=image, anchor=NW)
Frame_one = tkinter.Frame(root, height=50, width=500)
Label_one = tkinter.Label(Frame_one, text="登录用户 : ")
Entry_one = tkinter.Entry(Frame_one)
Label_one.pack(side='left')
Entry_one.pack()
Frame_one.pack(pady=10)
Frame_two = tkinter.Frame(root)
Label_two = tkinter.Label(Frame_two, text="密码 : ")
Entry_two = tkinter.Entry(Frame_two, show="*")
Label_two.pack(side='left')
Entry_two.pack(side='right')
Frame_two.pack()
Frame_three = tkinter.Frame(root)
Button_one = tkinter.Button(Frame_three, text="登录", command=event1)
Button_two = tkinter.Button(Frame_three, text="注册", command=event2)
Button_delete = tkinter.Button(Frame_three, text="删除", command=delete_event)
Button_three = tkinter.Button(Frame_three, text="所有用户信息", command=event3)
Button_three.pack(side='bottom', pady=10)
Button_one.pack(side='left', pady=30)
Button_delete.pack(side='right', padx=20)
Button_two.pack(side='right', padx=30, pady=30)
Frame_three.pack()
canvas.pack()
root.mainloop()
登录功能
def event1():
con = sqlite3.connect('test.db')
cursor = con.cursor()
cursor.execute('select * from user')
all_user_information = cursor.fetchall()
cursor.close()
con.close()
if Entry_one.get() == "" or Entry_two.get() == "":
tkinter.messagebox.showwarning("提示", "请输入账号和密码!")
else:
user_information = int(Entry_one.get()), int(Entry_two.get())
if user_information in all_user_information:
tkinter.messagebox.showinfo(title='登陆页面', message='登陆成功!')
Entry_one.delete(0, "end")
Entry_two.delete(0, "end")
else:
tkinter.messagebox.showerror(title='登陆页面', message='用户名或密码错误!')
Entry_one.delete(0, "end")
Entry_two.delete(0, "end")
注册功能实现
def event2():
sign = tkinter.Tk()
sign.title("注册")
sign.geometry("400x400")
Frame_1 = tkinter.Frame(sign, height=50, width=500)
Label_1 = tkinter.Label(Frame_1, text="用户名 : ")
Entry_1 = tkinter.Entry(Frame_1)
Label_1.pack(side='left')
Entry_1.pack()
Frame_1.pack(pady=10)
Frame_2 = tkinter.Frame(sign)
Label_2 = tkinter.Label(Frame_2, text="密码 : ")
Entry_2 = tkinter.Entry(Frame_2)
Label_2.pack(side='left')
Entry_2.pack(side='right')
Frame_2.pack()
def insert():
if Entry_1.get() == "" or Entry_2.get() == "":
tkinter.messagebox.showwarning("提示", "请输入账号和密码!")
values = (Entry_1.get(), Entry_2.get())
con1 = sqlite3.connect('test.db')
cursor1 = con1.cursor()
con1.execute("insert into user values(?,?) ", values)
tkinter.messagebox.showinfo("提示", "插入成功!")
cursor1.close()
con1.commit()
con1.close()
Button_1 = tkinter.Button(sign, text='确认', command=insert)
Button_1.pack(pady=30)
删除功能,使用删除功能,首先输入要管理员密码,这里设置为1
def delete_event():
def admlogin():
def delete():
con = sqlite3.connect('test.db')
cursor1 = con.cursor()
cursor = con.cursor()
x = Entry2.get()
if cursor.execute("DELETE from user WHERE id=" + x).rowcount != 0:
cursor.close()
cursor1.close()
con.commit()
con.close()
tkinter.messagebox.showinfo("提示", "删除成功!")
elif cursor.execute("DELETE from user WHERE id=" + x).rowcount == 0:
cursor.close()#这里判断行数是否改变,如未改变就未找到该账号
tkinter.messagebox.showerror("提示", "该账号不存在!")
if Entry1.get() == "1":
login.destroy()
successlogin = tkinter.Tk()
successlogin.title("删除")
successlogin.geometry("400x400")
Lable2 = tkinter.Label(successlogin, text="请输入要删除的账号:")
Lable2.pack()
Entry2 = tkinter.Entry(successlogin)
Entry2.pack()
button2 = tkinter.Button(successlogin, text="确认", command=delete)
button2.pack()
elif Entry1.get() == "":
tkinter.messagebox.showwarning("提示", "请输入账号和密码!")
else:
tkinter.messagebox.showerror("ERROR", "密码错误!")
Entry1.delete(0, "end")
显示信息,这里使用treeview方法将数据库内容展示
def event3():
output = tkinter.Tk()
output.title("信息")
output.geometry("400x400")
columns = ['账号', '密码']
table = ttk.Treeview(
master=output, # 父容器
height=20, # 表格显示的行数,height行
columns=columns, # 显示的列
show='headings', # 隐藏首列
)
table.heading(column='账号', text='账号', anchor='w') # 定义表头
table.heading('账号', text='账号', ) # 定义表头
table.heading('密码', text='密码', ) # 定义表头
table.column('账号', width=100, minwidth=100) # 定义列
table.column('密码', width=150, minwidth=100) # 定义列
con2 = sqlite3.connect('test.db')
cursor2 = con2.cursor()
x = table.get_children()
for item in x:
table.delete(item)
cursor2.execute('select * from user')
info_tuple = cursor2.fetchall()
for item in info_tuple:
table.insert("", index=0, values=item)
cursor2.close()
con2.commit()
con2.close()
table.pack(pady=20)