信息会保存在txt文本文件中,具有登录、注册以及对学生信息的增删查改等操作。
下面是实现的核心代码,完整代码可以通过下载的方式获取
if __name__ == '__main__':
login = Login()
login.show()
class Login:
def do_login(self):
name = self.entryName.get()
pwd = self.entryPwd.get()
with open('user.txt') as f:
for i in f.readlines():
items = i.strip().split(',')
if items[0] == name and items[1] == pwd:
self.login_tk.destroy()
IndexUi().show()
break
else:
messagebox.showerror(message="账号或密码错误!")
def close_reg(self):
self.studentregister.destroy()
def do_register(self):
if self.pwdentry.get() == '' or self.confirmpwdentry.get == '':
messagebox.showerror(message="请输入账号密码!")
elif self.pwdentry.get() == self.confirmpwdentry.get():
try:
with open('user.txt') as f:
name = self.userentry.get()
for i in f.readlines():
items = i.strip().split(',')
if items[0] == name:
messagebox.showerror(message="用户名重复!")
return
with open('user.txt','a') as f:
f.write(f'{name},{self.pwdentry.get()}\n')
bottonOk = tkinter.Button(self.studentregister, text="立即登录", command=self.close_reg)
bottonOk.place(x=125, y=230, width=70, height=30)
except Exception as e:
print(e)
messagebox.showerror(message="注册失败!")
else:
messagebox.showerror(message="两次输入的密码不相同!")
def show_register(self):
self.studentregister = tkinter.Toplevel()
x, y = window_info(self.studentregister)
self.studentregister.title('学生信息管理系统')
self.studentregister.geometry("415x295+%d+%d" % (x, y))
labelname = tkinter.Label(self.studentregister, text='学生信息管理系统注册', font=("楷体", 20))
labelname.place(x=60, y=30, width=300, height=40)
labelName = tkinter.Label(self.studentregister, text="账号:", width=80)
labelName.place(x=115, y=110, width=80, height=20)
self.userentry = tkinter.Entry(self.studentregister, width=80)
self.userentry.place(x=210, y=110, width=80, height=20)
labelPwd = tkinter.Label(self.studentregister, text="密码:", width=80)
labelPwd.place(x=115, y=135, width=80, height=20)
self.pwdentry = tkinter.Entry(self.studentregister, width=80)
self.pwdentry.place(x=210, y=135, width=80, height=20)
labelPwd = tkinter.Label(self.studentregister, text="确认密码:", width=80)
labelPwd.place(x=115, y=160, width=80, height=20)
self.confirmpwdentry = tkinter.Entry(self.studentregister, width=80)
self.confirmpwdentry.place(x=210, y=160, width=80, height=20)
bottonCancel = tkinter.Button(self.studentregister, text='注册', command=self.do_register)
bottonCancel.place(x=225, y=230, width=70, height=30)
self.studentregister.mainloop()
def show(self):
login_tk = tkinter.Tk()
self.login_tk = login_tk
login_tk.title('学生信息管理系统')
x, y = window_info(login_tk)
login_tk.geometry("450x300+%d+%d" % (x, y))
varLoginName = tkinter.StringVar()
varLoginPwd = tkinter.StringVar()
labelname = tkinter.Label(login_tk, text='欢迎使用学生信息管理系统', font=("楷体", 18))
labelname.place(x=60, y=30, width=300, height=40)
labelName = tkinter.Label(login_tk, text="账号:", justify=tkinter.RIGHT, width=80)
labelName.place(x=110, y=110, width=80, height=20)
labelPwd = tkinter.Label(login_tk, text="密码:", justify=tkinter.RIGHT, width=80)
labelPwd.place(x=110, y=135, width=80, height=20)
self.entryName = tkinter.Entry(login_tk, width=80, textvariable=varLoginName)
self.entryName.place(x=210, y=110, width=80, height=20)
self.entryPwd = tkinter.Entry(login_tk, show='*', width=80, textvariable=varLoginPwd)
self.entryPwd.place(x=210, y=135, width=80, height=20)
bottonOk = tkinter.Button(login_tk, text="登录", command=self.do_login, )
bottonOk.place(x=125, y=170, width=70, height=30)
bottonCancel = tkinter.Button(login_tk, text='注册', command=self.show_register, )
bottonCancel.place(x=225, y=170, width=70, height=30)
login_tk.mainloop()