发布时间:2023-08-17 09:00
导读 | 这篇文章主要为大家详细介绍了python tkinter实现学生信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 |
本文实例为大家分享了python tkinter实现学生信息管理系统的具体代码,供大家参考,具体内容如下
初学python,代码写的比较繁杂,系统功能还有完善的空间
系统使用了mysql数据库,数据库:sch,用户名:root ,密码:123456,创建表的语句写在代码里面了
import tkinter import tkinter.messagebox import re import pymysql from tkinter import scrolledtext import os from tkinter import * def window_info(main): w = main.winfo_screenwidth() h = main.winfo_screenheight() x = (w / 2) - 200 y = (h / 2) - 200 return (x, y) def conn(): con = pymysql.connect(\"localhost\", \"root\", \"root\", \"sch\") return con def cur(connection): cur = connection.cursor() return cur def exitsys(): root.destroy() def teacherlogin(): #=============================================================================== def managerindex(): def addstudent(): def addone(): connection = conn() cursor = cur(connection) try: cursor.execute(\'insert into student values(%s,%s,%s,%s,%s)\', (addnameentry.get(), addageentry.get(), addnoentry.get(), addclassentry.get(),\'未注册\')) connection.commit() except: if addsuccessentry.get() != \'\': addsuccessentry.delete(\'0\', \'end\') addsuccessentry.insert(\'0\', \'添加失败!\') else: addsuccessentry.insert(\'0\', \'添加失败!\') connection.rollback() connection.close() cursor.close if addsuccessentry.get() != \'\': addsuccessentry.delete(\'0\', \'end\') addsuccessentry.insert(\'0\', \'添加成功!\') else: addsuccessentry.insert(\'0\', \'添加成功!\') def addcancel(): addnameentry.delete(\'0\', \'end\') addageentry.delete(\'0\', \'end\') addnoentry.delete(\'0\', \'end\') addclassentry.delete(\'0\', \'end\') addsuccessentry.delete(\'0\', \'end\') def exit(): add.destroy() add = Toplevel() add.title(\'添加学生信息\') x, y = window_info(add) add.geometry(\"415x295+%d+%d\" % (x, y)) add[\'bg\'] = \'dodgerblue\' labelname = tkinter.Label(add, text=\'添加学生\', width=80, bg=\'dodgerblue\') labelname.place(x=140, y=50, width=150, height=20) labelname = tkinter.Label(add, text=\'学生名:\', width=80) labelname.place(x=140, y=80, width=60, height=20) addnameentry = tkinter.Entry(add, width=200) addnameentry.place(x=195, y=80, width=80, height=20) labelage = tkinter.Label(add, text=\'年 龄:\', width=80) labelage.place(x=140, y=110, width=60, height=20) addageentry = tkinter.Entry(add, width=200) addageentry.place(x=195, y=110, width=80, height=20) labelno = tkinter.Label(add, text=\'学 号:\', width=80) labelno.place(x=140, y=140, width=60, height=20) addnoentry = tkinter.Entry(add, width=200) addnoentry.place(x=195, y=140, width=80, height=20) labelclass = tkinter.Label(add, text=\'班 级:\', width=80) labelclass.place(x=140, y=170, width=60, height=20) addclassentry = tkinter.Entry(add, width=200) addclassentry.place(x=195, y=170, width=80, height=20) addsuccessentry = tkinter.Entry(add, width=200, state=\'normal\') addsuccessentry.place(x=140, y=200, width=135, height=20) buttonadd = tkinter.Button(add, text=\"添加\", command=addone) buttonadd.place(x=140, y=230, width=50, height=20) buttoncancel = tkinter.Button(add, text=\"重置\", command=addcancel) buttoncancel.place(x=220, y=230, width=50, height=20) add.mainloop() return add # =================================================================================== def findonestudent(): def search(): if textsearch.get(\'1.0\', \'end\') != \'\': textsearch.delete(\'1.0\', \'end\') else: connection = conn() cursor = cur(connection) try: cursor.execute(\'select * from student where sno=%s\', (entrysearchone.get())) data = list(cursor.fetchone()) textsearch.insert(\'insert\', \"学生姓名:\" + data[0] + \"\\n\" + \"年龄:\" + data[1] + \"\\n\" + \"学号\" + data[2] + \"\\n\" + \"班级:\" + data[3] + \"\\n\\n\") connection.commit() except: connection.rollback() connection.close() cursor.close connection = conn() cursor = cur(connection) try: cursor.execute(\'select * from student where sno=%s\', (entrysearchone.get())) data = list(cursor.fetchone()) textsearch.insert(\'insert\', \"学生姓名:\" + data[0] + \"\\n\" + \"年龄:\" + data[1] + \"\\n\" + \"学号\" + data[2] + \"\\n\" + \"班级:\" + data[3] + \"\\n\\n\") connection.commit() except: connection.rollback() connection.close() cursor.close def searchonecancel(): textsearch.delete(\'1.0\', \'end\') def searchnocancel(): entrysearchone.delete(\'0\', \'end\') def exit(): findone.destroy() findone = Toplevel() findone.title(\'查询学生信息\') x, y = window_info(findone) findone.geometry(\"415x295+%d+%d\" % (x, y)) findone[\'bg\'] = \'dodgerblue\' labelname = tkinter.Label(findone, text=\'请输入要查询学生的学号:\', width=80, bg=\'dodgerblue\') labelname.place(x=140, y=50, width=140, height=20) entrysearchone = tkinter.Entry(findone, width=200) entrysearchone.place(x=140, y=80, width=150, height=20) buttonsearch = tkinter.Button(findone, text=\"查找\", command=search) buttonsearch.place(x=140, y=110, width=50, height=20) buttonsearch = tkinter.Button(findone, text=\"重置\", command=searchnocancel) buttonsearch.place(x=240, y=110, width=50, height=20) textsearch = tkinter.scrolledtext.ScrolledText(findone, width=18, height=6) textsearch.place(x=140, y=140) buttoncancel = tkinter.Button(findone, text=\"清空\", command=searchonecancel) buttoncancel.place(x=190, y=230, width=50, height=20) findone.mainloop() # ================================================================================== def deletestudent(): def deleteone(): if deleteoneentry.get() == \'\': tkinter.messagebox.showerror(\'error\', message=\"请输入学号!\") else: if textdelete.get(\'1.0\', \'end\') != \'\': textdelete.delete(\'1.0\', \'end\') else: connection = conn() cursor = cur(connection) try: cursor.execute(\'delete from student where sno=%s\', (deleteoneentry.get())) connection.commit() cursor.execute(\'select * from student\') data = list(cursor.fetchall()) textdelete.insert(\'insert\', \"姓名:\\t\\t年龄:\\t\\t学号:\\t\\t班级:\") textdelete.insert(\'insert\', \"\\n\") for i in data: print(i) textdelete.insert(\'insert\', \'\\t\\t\'.join(i)) textdelete.insert(\'insert\', \"\\n\") except: connection.rollback() connection.close() cursor.close connection = conn() cursor = cur(connection) try: cursor.execute(\'delete from student where sno=%s\', (deleteoneentry.get())) connection.commit() cursor.execute(\'select * from student\') data = list(cursor.fetchall()) textdelete.insert(\'insert\', \"姓名:\\t\\t年龄:\\t\\t学号:\\t\\t班级:\") textdelete.insert(\'insert\', \"\\n\") for i in data: print(i) textdelete.insert(\'insert\', \'\\t\\t\'.join(i)) textdelete.insert(\'insert\', \"\\n\") except: connection.rollback() connection.close() cursor.close def exit(): deleteone.destroy() def deleteonecancel(): deleteoneentry.delete(\'0\', \'end\') delete = Toplevel() delete.title(\'删除学生信息\') x, y = window_info(delete) delete.geometry(\"415x295+%d+%d\" % (x, y)) delete[\'bg\'] = \'dodgerblue\' labelname = tkinter.Label(delete, text=\'请输入要删除学生的学号:\', bg=\'dodgerblue\') labelname.place(x=5, y=20, width=140, height=20) deleteoneentry = tkinter.Entry(delete, width=200) deleteoneentry.place(x=5, y=50, width=150, height=20) buttondelete = tkinter.Button(delete, text=\"删除\", command=deleteone) buttondelete.place(x=5, y=80, width=50, height=20) buttondelete = tkinter.Button(delete, text=\"重置\", command=deleteonecancel) buttondelete.place(x=105, y=80, width=50, height=20) textdelete = tkinter.scrolledtext.ScrolledText(delete, width=54, height=9) textdelete.place(x=5, y=110) delete.mainloop() # ======================================================================================= def findallstudent(): def show(): if textshow.get(\'1.0\', \'end\') != \'\': textshow.delete(\'1.0\', \'end\') else: connection = conn() cursor = cur(connection) try: cursor.execute(\'select * from student\') data = list(cursor.fetchall()) textshow.insert(\'insert\', \"姓名:\\t\\t年龄:\\t\\t学号:\\t\\t班级:\\t\\t登录密码:\") textshow.insert(\'insert\', \"\\n\") for i in data: print(i) textshow.insert(\'insert\', \'\\t\\t\'.join(i)) textshow.insert(\'insert\', \"\\n\") except: connection.rollback() connection.close() cursor.close connection = conn() cursor = cur(connection) try: cursor.execute(\'select * from student\') data = list(cursor.fetchall()) textshow.insert(\'insert\', \"姓名:\\t\\t年龄:\\t\\t学号:\\t\\t班级:\\t\\t登录密码:\") textshow.insert(\'insert\', \"\\n\") for i in data: print(i) textshow.insert(\'insert\', \'\\t\\t\'.join(i)) textshow.insert(\'insert\', \"\\n\") except: connection.rollback() connection.close() cursor.close def searchallcancel(): textshow.delete(\'1.0\', \'end\') def exit(): findall.destroy() findall = Toplevel() findall.title(\'查询所有学生信息\') x, y = window_info(findall) findall.geometry(\"520x295+%d+%d\" % (x, y)) findall[\'bg\'] = \'dodgerblue\' labelname = tkinter.Label(findall, text=\'查询所有学生信息?\', bg=\'dodgerblue\') labelname.place(x=5, y=20, width=100, height=20) buttonshow = tkinter.Button(findall, text=\"确定\", command=show) buttonshow.place(x=5, y=50, width=50, height=20) textshow = tkinter.scrolledtext.ScrolledText(findall, width=75, height=9) textshow.place(x=5, y=80) buttoncancel = tkinter.Button(findall, text=\"清空\", command=searchallcancel) buttoncancel.place(x=5, y=210, width=50, height=20) findall.mainloop() # ======================================================================================= def modifystudent(): def modifyfindone(): connection = conn() cursor = cur(connection) try: cursor.execute(\'select * from student where sno=%s\', (modifyoneentry.get())) connection.commit() except: connection.rollback() connection.close() cursor.close data = list(cursor.fetchall()) if data == []: tkinter.messagebox.showerror(message=\"没有查询到该学生的信息!\") else: modifynameentry.insert(\'0\', data[0][0]) modifyageentry.insert(\'0\', data[0][1]) modifynoentry.insert(\'0\', data[0][2]) modifyclassentry.insert(\'0\', data[0][3]) def submit(): print(modifynameentry.get()) print(modifyoneentry.get()) connection = conn() cursor = cur(connection) sqlname = \"update student set sname = %s where sno = %s\" cursor.execute(sqlname, (modifynameentry.get(), modifyoneentry.get())) sqlage = \"update student set sage = %s where sno = %s\" cursor.execute(sqlage, (modifyageentry.get(), modifyoneentry.get())) sqlno = \"update student set sno = %s where sno = %s\" cursor.execute(sqlno, (modifynoentry.get(), modifyoneentry.get())) sqlclass = \"update student set sclass = %s where sno = %s\" cursor.execute(sqlclass, (modifyclassentry.get(), modifyoneentry.get())) connection.commit() if modifysuccessentry.get() != \'\': modifysuccessentry.delete(\'0\', \'end\') modifysuccessentry.insert(\'0\', \'修改成功!\') else: modifysuccessentry.insert(\'0\', \'修改成功!\') modify = Toplevel() modify.title(\'修改学生信息\') x, y = window_info(modify) modify.geometry(\"415x295+%d+%d\" % (x, y)) modify[\'bg\'] = \'dodgerblue\' labelname = tkinter.Label(modify, text=\'请输入要修改学生的学号:\', bg=\'dodgerblue\') labelname.place(x=5, y=20, width=140, height=20) buttonshow = tkinter.Button(modify, text=\"确定\", command=modifyfindone) buttonshow.place(x=155, y=50, width=50, height=20) modifyoneentry = tkinter.Entry(modify, width=200) modifyoneentry.place(x=5, y=50, width=150, height=20) labelname = tkinter.Label(modify, text=\'该学生信息如下\', bg=\'dodgerblue\') labelname.place(x=5, y=70, width=85, height=20) labelname = tkinter.Label(modify, text=\'姓名:\',bg=\'dodgerblue\') labelname.place(x=5, y=100, width=30, height=20) modifynameentry = tkinter.Entry(modify, width=200) modifynameentry.place(x=5, y=120, width=150, height=20) labelname = tkinter.Label(modify, text=\'年龄:\',bg=\'dodgerblue\') labelname.place(x=200, y=100, width=30, height=20) modifyageentry = tkinter.Entry(modify, width=200) modifyageentry.place(x=200, y=120, width=150, height=20) labelname = tkinter.Label(modify, text=\'学号:\',bg=\'dodgerblue\') labelname.place(x=5, y=150, width=30, height=20) modifynoentry = tkinter.Entry(modify, width=200) modifynoentry.place(x=5, y=170, width=150, height=20) labelname = tkinter.Label(modify, text=\'班级:\',bg=\'dodgerblue\') labelname.place(x=200, y=150, width=30, height=20) modifyclassentry = tkinter.Entry(modify, width=200) modifyclassentry.place(x=200, y=170, width=150, height=20) modifysuccessentry = tkinter.Entry(modify, width=200) modifysuccessentry.place(x=5, y=200, width=150, height=20) buttonshow = tkinter.Button(modify, text=\"提 交\", command=submit) buttonshow.place(x=5, y=230, width=50, height=20) modify.mainloop() # ================================================================================== def findselectcourseinfor(): def show(): print(\'swj\') if textshow.get(\'1.0\', \'end\') != \'\': textshow.delete(\'1.0\', \'end\') else: connection = conn() cursor = cur(connection) try: cursor.execute(\'select sno,sname,sclass,cno,cname from student,course where student.sno=sc.sno and course.cno=sc.cno\') data = list(cursor.fetchall()) textshow.insert(\'insert\', \"学号:\\t\\t姓名:\\t\\t班级:\\t\\t课程编号:\\t\\t课程名:\") textshow.insert(\'insert\', \"\\n\") for i in data: print(i) textshow.insert(\'insert\', \'\\t\\t\'.join(i)) textshow.insert(\'insert\', \"\\n\") except: connection.rollback() connection.close() cursor.close connection = conn() cursor = cur(connection) try: cursor.execute(\'select sc.sno,sname,sclass,sc.cno,course.cname from student,course,sc where student.sno=sc.sno and course.cno=sc.cno\') data = list(cursor.fetchall()) textshow.insert(\'insert\', \"学号:\\t\\t姓名:\\t\\t班级:\\t\\t课程编号:\\t\\t课程名:\") textshow.insert(\'insert\', \"\\n\") for i in data: print(i) textshow.insert(\'insert\', \'\\t\\t\'.join(i)) textshow.insert(\'insert\', \"\\n\") except: connection.rollback() connection.close() cursor.close def searchallcancel(): textshow.delete(\'1.0\', \'end\') findall = Toplevel() findall.title(\'查询学生选课信息\') x, y = window_info(findall) findall.geometry(\"520x295+%d+%d\" % (x, y)) findall[\'bg\'] = \'dodgerblue\' labelname = tkinter.Label(findall, text=\'查询学生选课信息?\', bg=\'dodgerblue\') labelname.place(x=5, y=20, width=100, height=20) buttonshow = tkinter.Button(findall, text=\"确定\", command=show) buttonshow.place(x=5, y=50, width=50, height=20) textshow = tkinter.scrolledtext.ScrolledText(findall, width=105, height=9) textshow.place(x=5, y=80) buttoncancel = tkinter.Button(findall, text=\"清空\", command=searchallcancel) buttoncancel.place(x=5, y=210, width=50, height=20) findall.mainloop() #=================================================================================== def addcourse(): def addonecourse(): print(addcnoentry.get()) connection = conn() cursor = cur(connection) try: cursor.execute(\'insert into course values(%s,%s,%s)\', (addcnoentry.get(), addcnameentry.get(), addtnoentry.get())) connection.commit() except: if addsuccessentry.get() != \'\': addsuccessentry.delete(\'0\', \'end\') addsuccessentry.insert(\'0\', \'添加失败!\') else: addsuccessentry.insert(\'0\', \'添加失败!\') connection.rollback() connection.close() cursor.close if addsuccessentry.get() != \'\': addsuccessentry.delete(\'0\', \'end\') addsuccessentry.insert(\'0\', \'添加成功!\') else: addsuccessentry.insert(\'0\', \'添加成功!\') def addcancel(): addcnoentry.delete(\'0\', \'end\') addcnameentry.delete(\'0\', \'end\') addtnoentry.delete(\'0\', \'end\') addsuccessentry.delete(\'0\', \'end\') addcourse = Toplevel() addcourse.title(\'添加学生信息\') x, y = window_info(addcourse) addcourse.geometry(\"415x295+%d+%d\" % (x, y)) addcourse[\'bg\'] = \'dodgerblue\' labelname = tkinter.Label(addcourse, text=\'添加学生\', width=80, bg=\'dodgerblue\') labelname.place(x=140, y=50, width=150, height=20) labelname = tkinter.Label(addcourse, text=\'课程号:\', width=80) labelname.place(x=140, y=80, width=60, height=20) addcnoentry = tkinter.Entry(addcourse, width=200) addcnoentry.place(x=195, y=80, width=80, height=20) labelage = tkinter.Label(addcourse, text=\'课程名:\', width=80) labelage.place(x=140, y=110, width=60, height=20) addcnameentry = tkinter.Entry(addcourse, width=200) addcnameentry.place(x=195, y=110, width=80, height=20) labelno = tkinter.Label(addcourse, text=\'教师编号:\', width=80) labelno.place(x=140, y=140, width=60, height=20) addtnoentry = tkinter.Entry(addcourse, width=200) addtnoentry.place(x=195, y=140, width=80, height=20) addsuccessentry = tkinter.Entry(addcourse, width=200, state=\'normal\') addsuccessentry.place(x=140, y=170, width=135, height=20) buttonadd = tkinter.Button(addcourse, text=\"添加\", command=addonecourse) buttonadd.place(x=140, y=200, width=50, height=20) buttoncancel = tkinter.Button(addcourse, text=\"重置\", command=addcancel) buttoncancel.place(x=220, y=200, width=50, height=20) addcourse.mainloop() def exitsys(): root.destroy() studentindex = Toplevel() studentindex.title(\'学生信息管理系统\') x, y = window_info(studentindex) studentindex.geometry(\"430x505+%d+%d\" % (x, y)) studentindex[\'bg\'] = \'dodgerblue\' labelname = tkinter.Label(studentindex, text=\'欢迎使用学生信息管理系统\', bg=\'dodgerblue\', font=(\"楷体\", 20)) labelname.place(x=60, y=30, width=350, height=40) buttonadd = tkinter.Button(studentindex, text=\"添 加\", command=addstudent) buttonadd.place(x=150, y=90, width=100, height=40) buttonadd = tkinter.Button(studentindex, text=\"查 询\", command=findonestudent) buttonadd.place(x=150, y=140, width=100, height=40) buttonadd = tkinter.Button(studentindex, text=\"删 除\", command=deletestudent) buttonadd.place(x=150, y=190, width=100, height=40) buttonadd = tkinter.Button(studentindex, text=\"查询所有\", command=findallstudent) buttonadd.place(x=150, y=240, width=100, height=40) buttonadd = tkinter.Button(studentindex, text=\"修 改\", command=modifystudent) buttonadd.place(x=150, y=290, width=100, height=40) buttonadd = tkinter.Button(studentindex, text=\"添加课程\", command=addcourse) buttonadd.place(x=150, y=340, width=100, height=40) buttonadd = tkinter.Button(studentindex, text=\"学生选课信息\", command=findselectcourseinfor) buttonadd.place(x=150, y=390, width=100, height=40) buttonadd = tkinter.Button(studentindex, text=\"退出系统\", command=exitsys) buttonadd.place(x=150, y=440, width=100, height=40) studentindex.mainloop() # =============================================================================== def login(): name = entryName.get() pwd = entryPwd.get() connection = conn() cursor = cur(connection) cursor.execute(\'select * from login\') data = list(cursor.fetchall()) print(data) if data == []: tkinter.messagebox.showerror(message=\"账号或密码错误!\") return 0 for i in data: print(i[0]) print(i[1]) if i[0] == name and i[1] == pwd: managerindex() def forregister(): def loginregister(): if pwdentry.get() == \'\' or confirmpwdentry.get == \'\': tkinter.messagebox.showerror(message=\"请输入账号密码!\") elif pwdentry.get() == confirmpwdentry.get(): connection = conn() cursor = cur(connection) try: cursor.execute(\'insert into login(user,password)values(%s,%s)\', (userentry.get(), pwdentry.get())) connection.commit() if registersuccessentry.get() != \'\': registersuccessentry.delete(\'0\', \'end\') registersuccessentry.insert(\'0\', \'注册成功!\') else: registersuccessentry.insert(\'0\', \'注册成功!\') bottonOk = tkinter.Button(studentregister, text=\"立即登录\", command=registerlogin, bg=\'dodgerblue\') bottonOk.place(x=125, y=230, width=70, height=30) #return userentry.get(), pwdentry.get() except: connection.rollback() if registersuccessentry.get() != \'\': registersuccessentry.delete(\'0\', \'end\') registersuccessentry.insert(\'0\', \'注册失败!\') else: registersuccessentry.insert(\'0\', \'注册失败!\') else: tkinter.messagebox.showerror(message=\"两次输入的密码不相同!\") def registerlogin(): managerindex() studentregister = Toplevel() x, y = window_info(studentregister) studentregister.title(\'学生信息管理系统\') studentregister.geometry(\"415x295+%d+%d\" % (x, y)) studentregister[\'bg\'] = \'dodgerblue\' labelname = tkinter.Label(studentregister, text=\'注册学生信息管理系统\', bg=\'dodgerblue\', font=(\"楷体\", 20)) labelname.place(x=60, y=30, width=300, height=40) labelName = tkinter.Label(studentregister, text=\"账 号:\", bg=\'dodgerblue\', width=80) labelName.place(x=115, y=110, width=80, height=20) userentry = tkinter.Entry(studentregister, width=80) userentry.place(x=210, y=110, width=80, height=20) labelPwd = tkinter.Label(studentregister, text=\"密 码:\", bg=\'dodgerblue\', width=80) labelPwd.place(x=115, y=135, width=80, height=20) pwdentry = tkinter.Entry(studentregister, width=80) pwdentry.place(x=210, y=135, width=80, height=20) labelPwd = tkinter.Label(studentregister, text=\"确认密码:\", bg=\'dodgerblue\', width=80) labelPwd.place(x=115, y=160, width=80, height=20) confirmpwdentry = tkinter.Entry(studentregister, width=80) confirmpwdentry.place(x=210, y=160, width=80, height=20) registersuccessentry = tkinter.Entry(studentregister, width=80) registersuccessentry.place(x=125, y=190, width=165, height=20) bottonCancel = tkinter.Button(studentregister, text=\'注册\', command=loginregister, bg=\'dodgerblue\') bottonCancel.place(x=225, y=230, width=70, height=30) studentregister.mainloop() manager = Toplevel() manager.title(\' 管理员端\') x, y = window_info(manager) manager.geometry(\"415x295+%d+%d\" % (x, y)) manager[\'bg\'] = \'dodgerblue\' varLoginName = tkinter.StringVar() varLoginPwd = tkinter.StringVar() labelname = tkinter.Label(manager, text=\'欢迎使用学生信息管理系统\', bg=\'dodgerblue\', font=(\"楷体\", 18)) labelname.place(x=60, y=30, width=300, height=40) labelName = tkinter.Label(manager, text=\"账 号:\", justify=tkinter.RIGHT, bg=\'dodgerblue\', width=80) labelName.place(x=110, y=110, width=80, height=20) labelPwd = tkinter.Label(manager, text=\"密 码:\", justify=tkinter.RIGHT, bg=\'dodgerblue\', width=80) labelPwd.place(x=110, y=135, width=80, height=20) entryName = tkinter.Entry(manager, width=80, textvariable=varLoginName) entryName.place(x=210, y=110, width=80, height=20) entryPwd = tkinter.Entry(manager, show=\'*\', width=80, textvariable=varLoginPwd) entryPwd.place(x=210, y=135, width=80, height=20) bottonOk = tkinter.Button(manager, text=\"登录\", command=login, bg=\'dodgerblue\') bottonOk.place(x=125, y=170, width=70, height=30) bottonCancel = tkinter.Button(manager, text=\'注册\', command=forregister, bg=\'dodgerblue\') bottonCancel.place(x=225, y=170, width=70, height=30) manager.mainloop() def studentlogin(): def forstudentregister(): def loginregister(): if pwdentry.get() == \'\' or confirmpwdentry.get == \'\': tkinter.messagebox.showerror(message=\"请输入账号密码!\") elif pwdentry.get() == confirmpwdentry.get(): connection = conn() cursor = cur(connection) try: sqlpwd = \"update student set loginpwd = %s where sno = %s\" cursor.execute(sqlpwd, ( pwdentry.get(),userentry.get())) connection.commit() if registersuccessentry.get() != \'\': registersuccessentry.delete(\'0\', \'end\') registersuccessentry.insert(\'0\', \'注册成功!\') else: registersuccessentry.insert(\'0\', \'注册成功!\') bottonOk = tkinter.Button(studentregister, text=\"立即登录\", command=registerlogin, bg=\'dodgerblue\') bottonOk.place(x=125, y=230, width=70, height=30) except: connection.rollback() if registersuccessentry.get() != \'\': registersuccessentry.delete(\'0\', \'end\') registersuccessentry.insert(\'0\', \'注册失败!\') else: registersuccessentry.insert(\'0\', \'注册失败!\') else: tkinter.messagebox.showerror(message=\"两次输入的密码不相同!\") return userentry.get() def registerlogin(): studentindex(userentry.get()) studentregister = Toplevel() x, y = window_info(studentregister) studentregister.title(\'学生信息管理系统-注册\') studentregister.geometry(\"415x295+%d+%d\" % (x, y)) studentregister[\'bg\'] = \'dodgerblue\' labelname = tkinter.Label(studentregister, text=\'注册学生信息管理系统\', bg=\'dodgerblue\', font=(\"楷体\", 20)) labelname.place(x=60, y=30, width=300, height=40) labelName = tkinter.Label(studentregister, text=\"学 号:\", bg=\'dodgerblue\', width=80) labelName.place(x=115, y=110, width=80, height=20) userentry = tkinter.Entry(studentregister, width=80) userentry.place(x=210, y=110, width=80, height=20) labelPwd = tkinter.Label(studentregister, text=\"密 码:\", bg=\'dodgerblue\', width=80) labelPwd.place(x=115, y=135, width=80, height=20) pwdentry = tkinter.Entry(studentregister, width=80) pwdentry.place(x=210, y=135, width=80, height=20) labelPwd = tkinter.Label(studentregister, text=\"确认密码:\", bg=\'dodgerblue\', width=80) labelPwd.place(x=115, y=160, width=80, height=20) confirmpwdentry = tkinter.Entry(studentregister, width=80) confirmpwdentry.place(x=210, y=160, width=80, height=20) registersuccessentry = tkinter.Entry(studentregister, width=80) registersuccessentry.place(x=125, y=190, width=165, height=20) bottonCancel = tkinter.Button(studentregister, text=\'注册\', command=loginregister, bg=\'dodgerblue\') bottonCancel.place(x=225, y=230, width=70, height=30) studentregister.mainloop() def studentindex(name): loginingno=name print(\'sdfsdffds\') def showinfor(): def show(): if textshowinformation.get(\'1.0\', \'end\') != \'\': textshowinformation.delete(\'1.0\', \'end\') else: print(loginingno) print(\'swj\') connection = conn() cursor = cur(connection) try: cursor.execute(\'select * from student where sno=%s\', (loginingno)) data = list(cursor.fetchone()) textshowinformation.insert(\'insert\', \"学生姓名:\" + data[0] + \"\\n\" + \"年龄:\" + data[1] + \"\\n\" + \"学号\" + data[2] + \"\\n\" + \"班级:\" + data[3] + \"\\n\\n\") connection.commit() except: connection.rollback() connection.close() cursor.close connection = conn() cursor = cur(connection) try: cursor.execute(\'select * from student where sno=%s\', (loginingno)) data = list(cursor.fetchone()) textshowinformation.insert(\'insert\', \"学生姓名:\" + data[0] + \"\\n\" + \"年龄:\" + data[1] + \"\\n\" + \"学号\" + data[2] + \"\\n\" + \"班级:\" + data[3] + \"\\n\\n\") connection.commit() except: connection.rollback() connection.close() cursor.close def showinforcancel(): textshowinformation.delete(\'1.0\', \'end\') showinformation = Toplevel() showinformation.title(\'查询学籍信息\') x, y = window_info(showinformation) showinformation.geometry(\"415x295+%d+%d\" % (x, y)) showinformation[\'bg\'] = \'dodgerblue\' labelname = tkinter.Label(showinformation, text=\'查询学籍信息?\', bg=\'dodgerblue\') labelname.place(x=5, y=20, width=100, height=20) buttonshow = tkinter.Button(showinformation, text=\"确定\", command=show) buttonshow.place(x=5, y=50, width=50, height=20) textshowinformation = tkinter.scrolledtext.ScrolledText(showinformation, width=60, height=9) textshowinformation.place(x=5, y=80) buttoncancel = tkinter.Button(showinformation, text=\"清空\", command=showinforcancel) buttoncancel.place(x=5, y=210, width=50, height=20) showinformation.mainloop() def findcourseinfor(): def show(): if textshow.get(\'1.0\', \'end\') != \'\': textshow.delete(\'1.0\', \'end\') else: connection = conn() cursor = cur(connection) try: cursor.execute(\'select * from course\') data = list(cursor.fetchall()) textshow.insert(\'insert\', \"课程号:\\t\\t\\t课程名:\\t\\t\\t教师编号:\") textshow.insert(\'insert\', \"\\n\") for i in data: print(i) textshow.insert(\'insert\', \'\\t\\t\'.join(i)) textshow.insert(\'insert\', \"\\n\") except: connection.rollback() connection.close() cursor.close connection = conn() cursor = cur(connection) try: cursor.execute(\'select * from course\') data = list(cursor.fetchall()) textshow.insert(\'insert\', \"课程号:\\t\\t\\t课程名:\\t\\t\\t教师编号:\") textshow.insert(\'insert\', \"\\n\") for i in data: print(i) textshow.insert(\'insert\', \'\\t\\t\\t\'.join(i)) textshow.insert(\'insert\', \"\\n\") except: connection.rollback() connection.close() cursor.close def searchallcancel(): textshow.delete(\'1.0\', \'end\') findall = Toplevel() findall.title(\'查询课程信息\') x, y = window_info(findall) findall.geometry(\"520x295+%d+%d\" % (x, y)) findall[\'bg\'] = \'dodgerblue\' labelname = tkinter.Label(findall, text=\'查询所有课程信息?\', bg=\'dodgerblue\') labelname.place(x=5, y=20, width=100, height=20) buttonshow = tkinter.Button(findall, text=\"确定\", command=show) buttonshow.place(x=5, y=50, width=50, height=20) textshow = tkinter.scrolledtext.ScrolledText(findall, width=75, height=9) textshow.place(x=5, y=80) buttoncancel = tkinter.Button(findall, text=\"清空\", command=searchallcancel) buttoncancel.place(x=5, y=210, width=50, height=20) findall.mainloop() def selectcourse(): def show(): if textshow.get(\'1.0\', \'end\') != \'\': textshow.delete(\'1.0\', \'end\') else: connection = conn() cursor = cur(connection) try: cursor.execute(\'select * from course\') data = list(cursor.fetchall()) textshow.insert(\'insert\', \"课程号:\\t\\t\\t课程名:\\t\\t\\t教师编号:\") textshow.insert(\'insert\', \"\\n\") for i in data: print(i) textshow.insert(\'insert\', \'\\t\\t\'.join(i)) textshow.insert(\'insert\', \"\\n\") except: connection.rollback() connection.close() cursor.close connection = conn() cursor = cur(connection) try: cursor.execute(\'select * from course\') data = list(cursor.fetchall()) textshow.insert(\'insert\', \"课程号:\\t\\t\\t课程名:\\t\\t\\t教师编号:\") textshow.insert(\'insert\', \"\\n\") for i in data: print(i) textshow.insert(\'insert\', \'\\t\\t\\t\'.join(i)) textshow.insert(\'insert\', \"\\n\") except: connection.rollback() connection.close() cursor.close def searchallcancel(): textshow.delete(\'1.0\', \'end\') def select(): connection = conn() cursor = cur(connection) try: cursor.execute(\'insert into sc values(%s,%s)\', (loginingno, entrysearchone.get())) connection.commit() except: if addsuccessentry.get() != \'\': addsuccessentry.delete(\'0\', \'end\') addsuccessentry.insert(\'0\', \'选课失败!\') else: addsuccessentry.insert(\'0\', \'选课失败!\') connection.rollback() connection.close() cursor.close if addsuccessentry.get() != \'\': addsuccessentry.delete(\'0\', \'end\') addsuccessentry.insert(\'0\', \'选课成功!\') else: addsuccessentry.insert(\'0\', \'选课成功!\') def addcancel(): entrysearchone.delete(\'0\', \'end\') addsuccessentry.delete(\'0\', \'end\') findall = Toplevel() findall.title(\'学生选课\') x, y = window_info(findall) findall.geometry(\"520x325+%d+%d\" % (x, y)) findall[\'bg\'] = \'dodgerblue\' labelname = tkinter.Label(findall, text=\'查询所有课程信息?\', bg=\'dodgerblue\') labelname.place(x=5, y=20, width=100, height=20) buttonshow = tkinter.Button(findall, text=\"确定\", command=show) buttonshow.place(x=5, y=50, width=50, height=20) textshow = tkinter.scrolledtext.ScrolledText(findall, width=75, height=9) textshow.place(x=5, y=80) labelname = tkinter.Label(findall, text=\'请输入课程编号:\', bg=\'dodgerblue\') labelname.place(x=5, y=210, width=100, height=20) entrysearchone = tkinter.Entry(findall, width=200) entrysearchone.place(x=5, y=240, width=150, height=20) addsuccessentry = tkinter.Entry(findall, width=200) addsuccessentry.place(x=5, y=270, width=75, height=20) buttoncancel = tkinter.Button(findall, text=\"选择\", command=select) buttoncancel.place(x=5, y=300, width=50, height=20) buttoncancel = tkinter.Button(findall, text=\"重置\", command=addcancel) buttoncancel.place(x=105, y=300, width=50, height=20) findall.mainloop() def findselectcourseinfor(): def show(): print(\'swj\') if textshow.get(\'1.0\', \'end\') != \'\': textshow.delete(\'1.0\', \'end\') else: connection = conn() cursor = cur(connection) try: cursor.execute(\'select sno,sname,sclass,cno,cname from student,course where student.sno=sc.sno and course.cno=sc.cno and sno=%s\',(loginingno)) data = list(cursor.fetchall()) textshow.insert(\'insert\', \"学号:\\t\\t姓名:\\t\\t班级:\\t\\t课程编号:\\t\\t课程名:\") textshow.insert(\'insert\', \"\\n\") for i in data: print(i) textshow.insert(\'insert\', \'\\t\\t\'.join(i)) textshow.insert(\'insert\', \"\\n\") except: connection.rollback() connection.close() cursor.close connection = conn() cursor = cur(connection) try: cursor.execute(\'select sc.sno,sname,sclass,sc.cno,course.cname from student,course,sc where student.sno=sc.sno and course.cno=sc.cno and sc.sno=%s\',(loginingno)) data = list(cursor.fetchall()) textshow.insert(\'insert\', \"学号:\\t\\t姓名:\\t\\t班级:\\t\\t课程编号:\\t\\t课程名:\") textshow.insert(\'insert\', \"\\n\") for i in data: print(i) textshow.insert(\'insert\', \'\\t\\t\'.join(i)) textshow.insert(\'insert\', \"\\n\") except: connection.rollback() connection.close() cursor.close def searchallcancel(): textshow.delete(\'1.0\', \'end\') findall = Toplevel() findall.title(\'查询选课信息\') x, y = window_info(findall) findall.geometry(\"520x295+%d+%d\" % (x, y)) findall[\'bg\'] = \'dodgerblue\' labelname = tkinter.Label(findall, text=\'查询选课信息?\', bg=\'dodgerblue\') labelname.place(x=5, y=20, width=100, height=20) buttonshow = tkinter.Button(findall, text=\"确定\", command=show) buttonshow.place(x=5, y=50, width=50, height=20) textshow = tkinter.scrolledtext.ScrolledText(findall, width=105, height=9) textshow.place(x=5, y=80) buttoncancel = tkinter.Button(findall, text=\"清空\", command=searchallcancel) buttoncancel.place(x=5, y=210, width=50, height=20) findall.mainloop() print(3) indexofstudent = Toplevel() indexofstudent.title(\'学生信息管理系统-学生\') x, y = window_info(indexofstudent) indexofstudent.geometry(\"430x425+%d+%d\" % (x, y)) indexofstudent[\'bg\'] = \'dodgerblue\' labelname = tkinter.Label(indexofstudent, text=\'欢迎使用学生信息管理系统\', bg=\'dodgerblue\', font=(\"楷体\", 20)) labelname.place(x=60, y=30, width=350, height=40) buttonadd = tkinter.Button(indexofstudent, text=\"查询学籍信息\", command=showinfor) buttonadd.place(x=150, y=90, width=100, height=40) buttonadd = tkinter.Button(indexofstudent, text=\"查询课程信息\", command=findcourseinfor) buttonadd.place(x=150, y=140, width=100, height=40) buttonadd = tkinter.Button(indexofstudent, text=\"选 课\", command=selectcourse) buttonadd.place(x=150, y=190, width=100, height=40) buttonadd = tkinter.Button(indexofstudent, text=\"查询选课信息\", command=findselectcourseinfor) buttonadd.place(x=150, y=240, width=100, height=40) buttonadd = tkinter.Button(indexofstudent, text=\"退出系统\", command=exitsys) buttonadd.place(x=150, y=290, width=100, height=40) indexofstudent.mainloop() def login(): name = entryName.get() pwd = entryPwd.get() connection = conn() cursor = cur(connection) cursor.execute(\'select * from student\') data = list(cursor.fetchall()) print(data) if data == []: tkinter.messagebox.showerror(message=\"账号或密码错误!\") return 0 for i in data: print(i[2]) print(i[4]) if i[2] == name and i[4] == pwd: studentindex(name) student = Toplevel() student.title(\' 登录-学生端\') x, y = window_info(student) student.geometry(\"415x295+%d+%d\" % (x, y)) student[\'bg\'] = \'dodgerblue\' labelname = tkinter.Label(student, text=\'欢迎使用学生信息管理系统\', bg=\'dodgerblue\', font=(\"楷体\", 18)) labelname.place(x=60, y=30, width=300, height=40) labelName = tkinter.Label(student, text=\"学 号:\", bg=\'dodgerblue\', width=80) labelName.place(x=110, y=110, width=80, height=20) labelPwd = tkinter.Label(student, text=\"密 码:\", bg=\'dodgerblue\', width=80) labelPwd.place(x=110, y=135, width=80, height=20) entryName = tkinter.Entry(student, width=80, textvariable=varLoginName) entryName.place(x=210, y=110, width=80, height=20) entryPwd = tkinter.Entry(student, show=\'*\', width=80, textvariable=varLoginPwd) entryPwd.place(x=210, y=135, width=80, height=20) bottonOk = tkinter.Button(student, text=\"登录\", command=login, bg=\'dodgerblue\') bottonOk.place(x=125, y=170, width=70, height=30) bottonCancel = tkinter.Button(student, text=\'注册\', command=forstudentregister, bg=\'dodgerblue\') bottonCancel.place(x=225, y=170, width=70, height=30) student.mainloop() root=tkinter.Tk(className=\' 学生信息管理系统\') x,y=window_info(root) root.geometry(\"415x295+%d+%d\"%(x,y)) root[\'bg\']=\'dodgerblue\' varLoginName=tkinter.StringVar() varLoginPwd=tkinter.StringVar() labelname = tkinter.Label(root, text=\'欢迎使用学生信息管理系统\', bg=\'dodgerblue\', font=(\"楷体\", 18)) labelname.place(x=60, y=30, width=300, height=40) bottonOk=tkinter.Button(root,text=\"学生登录\",command=studentlogin,bg=\'dodgerblue\') bottonOk.place(x=150,y=140,width=100,height=40) bottonCancel=tkinter.Button(root,text=\'管理员登录\',command=teacherlogin,bg=\'dodgerblue\') bottonCancel.place(x=150,y=200,width=100,height=40) def createdatabase(): conn = pymysql.connect(\"localhost\", \"root\", \"root\") cur = conn.cursor() cur.execute(\'create database if not exists sch\') def createtable(): connection = conn() cursor = cur(connection) sqlstudent=\"\"\"create table if not exists student( sname char(45) not null, sage char(45), sno char(45) primary key, sclass char(45), loginpwd char(45) )engine=innodb\"\"\" cursor.execute(sqlstudent) sqllogin=\"\"\"create table if not exists login( user char(45)primary key, password char(45) not null )engine=innodb\"\"\" cursor.execute(sqllogin) connection.commit() cursor.execute(\"\"\"insert into login(user,password) values(\'user\',\'pwd\')\"\"\") connection.commit() sqlteacher=\"\"\"create table if not exists teacher( tno char(45) primary key, tname char(45) )engine=innodb\"\"\" cursor.execute(sqlteacher) connection.commit() sqlcourse=\"\"\"create table if not exists course( cno char(45) , cname char(45), tno char(45), constraint pk_course primary key (cno,tno) )engine=innodb\"\"\" cursor.execute(sqlcourse) connection.commit() sqlsc=\"\"\"create table if not exists sc( sno char(45), cno char(45), constraint pk_sc primary key (sno,cno) )engine=innodb\"\"\" cursor.execute(sqlsc) connection.commit() createdatabase() createtable() root.mainloop()
以上就是本文的全部内容,希望对大家的学习有所帮助。www.linuxprobe.com