利用python tkinter实现学生信息管理系统

发布时间: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

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号