开发者

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.Ewww.cppcns.comntry(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 = tkinterhttp://www.cppcns.com.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()

以上就是本文编程客栈的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新开发

开发排行榜