You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

392 lines
15 KiB

from tkinter import *
import tkinter.messagebox as mb
import _sqlite3
import Managerview # 管理员菜单栏对应的各个子页面
import Teacherview # 教师菜单栏对应的各个子页面
import Studentview # 学生菜单栏对应的各个子页面
#连接数据库
# conn = _sqlite3.connect(":memory:")
conn = _sqlite3.connect("data.db")
c = conn.cursor()
def login_teacher(name):
c.execute("select * from teachers where teachers.name = '%s'" % name)
# 提交事务
conn.commit()
return c.fetchall()
def login_student(name):
c.execute("select * from students where students.name = '%s'" % name)
# 提交事务
conn.commit()
return c.fetchall()
#登录窗体
class LoginPage(object):
def __init__(self, master=None):
self.root = master # 定义内部变量root
self.root.geometry('%dx%d' % (800, 610)) # 设置窗口大小
self.usrrole = IntVar()
self.usrrole.set(1)
self.username = StringVar()
self.username.set("admin")
self.password = StringVar()
self.createPage()
def createPage(self):
self.page = Frame(self.root) # 创建Frame
self.page.pack()
Label(self.page).grid(row=0, stick=W)
Label(self.page, text="登录角色:").grid(row=1, stick=W, pady=10)
Radiobutton(self.page, text="管理员", variable=self.usrrole, value=1, command=self.__setusrstr).grid(row=1, column=1, stick=W)
Radiobutton(self.page, text="教师", variable=self.usrrole, value=2, command=self.__setusrstr).grid(row=1, column=2, stick=W)
Radiobutton(self.page, text="学生", variable=self.usrrole, value=3, command=self.__setusrstr).grid(row=1, column=3, stick=W)
Label(self.page, text='账户: ').grid(row=2, stick=W, pady=10)
Entry(self.page, textvariable=self.username).grid(row=2, column=1, columnspan=2, stick=E)
Label(self.page, text='密码: ').grid(row=3, stick=W, pady=10)
Entry(self.page, textvariable=self.password, show='*').grid(row=3, column=1, columnspan=2, stick=E)
Button(self.page, text='登陆', command=self.loginCheck).grid(row=4, columnspan=2, pady=10, stick=W)
Button(self.page, text='退出系统', command=self.exitsys).grid(row=4, column=2, columnspan=2, stick=E)
#判断登录用户
def loginCheck(self):
role = self.usrrole.get()
name = self.username.get()
secret = self.password.get()
if role == 1 and name == "admin" and secret == "123456":
self.page.destroy()
self.username.set('')
self.password.set('')
ManagerPage(name,self.root)
mb.showinfo('登录成功', '欢迎:%s' % name)
elif role == 2:
login = login_teacher(name)
if len(login) == 0:
mb.showerror("登录失败","账号不存在")
pth = login[0]
print(pth)
if name == pth[1] and secret == pth[0]:
self.page.destroy()
self.username.set('')
self.password.set('')
TeacherPage(name,secret, self.root)
mb.showinfo('登录成功', '欢迎:%s' % name)
else:
mb.showinfo(title='错误', message='账号或密码错误!')
elif role == 3:
login = login_student(name)
if len(login) == 0:
mb.showerror("登录失败", "账号不存在")
pth = login[0]
print(pth)
if name == pth[1] and secret == pth[0]:
self.page.destroy()
self.username.set('')
self.password.set('')
StudentPage(name, self.root)
mb.showinfo('登录成功', '欢迎:%s' % name)
else:
mb.showinfo(title='错误', message='账号或密码错误!')
else:
mb.showinfo(title='错误', message='账号或密码错误!')
self.username.set('')
self.password.set('')
def __setusrstr(self):
self.username.set("admin")
if self.usrrole.get() == 2:
self.username.set("请输入工号")
elif self.usrrole.get() == 3:
self.username.set("请输入学号")
def exitsys(self):
if mb.askyesno("退出系统", "你确定更要退出系统"):
self.page.destroy()
self.root.destroy()
#管理员窗体
class ManagerPage(object):
def __init__(self, name, master=None):
self.root = master # 定义内部变量root
self.usrname = name
self.root.geometry('%dx%d' % (600, 400)) # 设置窗口大小
self.createPage()
#菜单栏
def createPage(self):
self.WelcomePage = Managerview.WelcomeFrame(self.usrname,self.root) # 创建不同Frame
self.inputTeacherPage = Managerview.InputTeacherFrame(self.root)
self.inputstudentPage = Managerview.InputStudentFrame(self.root)
self.queryPage = Managerview.QueryFrame(self.root)
self.maintainPage = Managerview.maintainFrame(self.root)
self.UpdateKeywordPage = Managerview.UpdateKeywordFrame(self.root)
self.WelcomePage.pack() # 默认显示欢迎界面
menubar = Menu(self.root)
self.menubar = menubar
menu1 = Menu(self.root)
menu1.add_command(label="创建教师账号", command=self.CreateTeacher)
menu1.add_command(label="创建学生账号", command=self.CreateStudent)
menu1.add_command(label="修改管理员密码", command=self.UpdateKeyword)
menubar.add_cascade(label='账户权限管理', menu=menu1)
menubar.add_command(label='信息查询', command=self.queryData)
menubar.add_command(label='信息维护', command=self.maintain)
menubar.add_command(label='退出登录', command=self.returnLogin)
self.root['menu'] = menubar # 设置菜单栏
def UpdateKeyword(self):
self.WelcomePage.pack_forget()
self.inputTeacherPage.pack_forget()
self.inputstudentPage.pack_forget()
self.queryPage.pack_forget()
self.maintainPage.pack_forget()
self.UpdateKeywordPage.pack()
def CreateTeacher(self):
self.WelcomePage.pack_forget()
self.inputTeacherPage.pack()
self.inputstudentPage.pack_forget()
self.queryPage.pack_forget()
self.maintainPage.pack_forget()
self.UpdateKeywordPage.pack_forget()
def queryData(self):
self.WelcomePage.pack_forget()
self.inputTeacherPage.pack_forget()
self.inputstudentPage.pack_forget()
self.queryPage.pack()
self.maintainPage.pack_forget()
self.UpdateKeywordPage.pack_forget()
def maintain(self):
self.WelcomePage.pack_forget()
self.inputTeacherPage.pack_forget()
self.inputstudentPage.pack_forget()
self.queryPage.pack_forget()
self.maintainPage.pack()
self.UpdateKeywordPage.pack_forget()
def CreateStudent(self):
self.WelcomePage.pack_forget()
self.inputTeacherPage.pack_forget()
self.inputstudentPage.pack()
self.queryPage.pack_forget()
self.maintainPage.pack_forget()
self.UpdateKeywordPage.pack_forget()
def returnLogin(self):
self.WelcomePage.destroy()
self.inputTeacherPage.destroy()
self.inputstudentPage.destroy()
self.queryPage.destroy()
self.maintainPage.destroy()
self.UpdateKeywordPage.destroy()
self.menubar.destroy()
LoginPage(self.root)
#老师窗体类
class TeacherPage(object):
def __init__(self, name,secret, master=None):
self.usrname = name
self.password = secret
self.root = master # 定义内部变量root
self.root.geometry('%dx%d' % (600, 500)) # 设置窗口大小
self.createPage()
def createPage(self):
self.WelcomePage = Teacherview.WelcomeFrame(self.usrname, self.root) # 创建欢迎界面
self.myPage = Teacherview.MyFrame(self.usrname,self.root)
self.updatepwdPage = Teacherview.UpdatepwdFrame(self.usrname,self.root)
self.inputPage = Teacherview.InputFrame(self.root) # 创建不同Frame
self.queryPage = Teacherview.QueryFrame(self.root)
self.countPage = Teacherview.CountFrame(self.root)
self.count2Page = Teacherview.EditFrame(self.root)
self.feedbackPage = Teacherview.FeedbackFrame(self.root)
self.WelcomePage.pack() # 默认显示欢迎界面
menubar = Menu(self.root)
self.menubar = menubar
menu1 = Menu(self.root)
menu1.add_command(label='个人信息', command=self.myData)
menu1.add_command(label='修改密码', command=self.updatepwdData)
menubar.add_cascade(label='我的', menu=menu1)
menubar.add_command(label='成绩录入', command=self.inputData)
menubar.add_command(label='查询', command=self.queryData)
menubar.add_command(label='统计', command=self.countData)
menubar.add_command(label='编辑', command=self.count2Data)
menubar.add_command(label='意见反馈', command=self.feedbackData)
menubar.add_command(label= "教师"+self.usrname + '已登录,退出登录', command=self.returnLogin)
self.root['menu'] = menubar # 设置菜单栏
def myData(self):
self.inputPage.pack_forget()
self.queryPage.pack_forget()
self.countPage.pack_forget()
self.feedbackPage.pack_forget()
self.count2Page.pack_forget()
self.myPage.pack()
self.updatepwdPage.pack_forget()
self.WelcomePage.pack_forget()
def updatepwdData(self):
self.inputPage.pack_forget()
self.queryPage.pack_forget()
self.countPage.pack_forget()
self.feedbackPage.pack_forget()
self.count2Page.pack_forget()
self.myPage.pack_forget()
self.updatepwdPage.pack()
self.WelcomePage.pack_forget()
def inputData(self):
self.inputPage.pack()
self.queryPage.pack_forget()
self.countPage.pack_forget()
self.feedbackPage.pack_forget()
self.count2Page.pack_forget()
self.myPage.pack_forget()
self.updatepwdPage.pack_forget()
self.WelcomePage.pack_forget()
def queryData(self):
self.inputPage.pack_forget()
self.queryPage.pack()
self.countPage.pack_forget()
self.feedbackPage.pack_forget()
self.count2Page.pack_forget()
self.myPage.pack_forget()
self.updatepwdPage.pack_forget()
self.WelcomePage.pack_forget()
def countData(self):
self.inputPage.pack_forget()
self.queryPage.pack_forget()
self.countPage.pack()
self.feedbackPage.pack_forget()
self.count2Page.pack_forget()
self.myPage.pack_forget()
self.updatepwdPage.pack_forget()
self.WelcomePage.pack_forget()
def count2Data(self):
self.count2Page.pack()
self.inputPage.pack_forget()
self.queryPage.pack_forget()
self.countPage.pack_forget()
self.feedbackPage.pack_forget()
self.myPage.pack_forget()
self.updatepwdPage.pack_forget()
self.WelcomePage.pack_forget()
def feedbackData(self):
self.inputPage.pack_forget()
self.queryPage.pack_forget()
self.countPage.pack_forget()
self.feedbackPage.pack()
self.count2Page.pack_forget()
self.myPage.pack_forget()
self.updatepwdPage.pack_forget()
self.WelcomePage.pack_forget()
def returnLogin(self):
self.inputPage.destroy()
self.queryPage.destroy()
self.countPage.destroy()
self.menubar.destroy()
self.feedbackPage.destroy()
self.count2Page.destroy()
self.myPage.destroy()
self.updatepwdPage.destroy()
self.WelcomePage.destroy()
LoginPage(self.root)
#学生窗体类
class StudentPage(object):
def __init__(self, name, master=None):
self.usrname = name
self.root = master # 定义内部变量root
self.root.geometry('%dx%d' % (600, 500)) # 设置窗口大小
self.createPage()
def createPage(self):
self.myPage2 = Studentview.MyFrame(self.usrname, self.root)
self.updatepwdPage2 = Studentview.UpdatepwdFrame(self.usrname, self.root)
self.inputPage = Studentview.InputFrame(self.root) # 创建不同Frame
self.queryPage = Studentview.QueryFrame(self.root)
self.countPage = Studentview.CountFrame(self.root)
self.submitPage = Studentview.SubmitFrame(self.root)
self.inputPage.pack() # 默认显示主界面
menubar = Menu(self.root)
self.menubar = menubar
menu1 = Menu(self.root)
menu1.add_command(label='个人信息', command=self.myData2)
menu1.add_command(label='修改密码', command=self.updatepwdData2)
menubar.add_cascade(label='主页', menu=menu1)
# menubar.add_command(label='主页', command=self.inputData)
menubar.add_command(label='查询成绩', command=self.queryData)
menubar.add_command(label='意见反馈', command=self.countData)
menubar.add_command(label='提交作业', command=self.submitData)
menubar.add_command(label= "学生"+self.usrname + '已登录,退出登录', command=self.returnLogin)
self.root['menu'] = menubar # 设置菜单栏
def updatepwdData2(self):
self.updatepwdPage2.pack()
self.inputPage.pack_forget()
self.queryPage.pack_forget()
self.countPage.pack_forget()
self.submitPage.pack_forget()
self.myPage2.pack_forget()
def myData2(self):
self.myPage2.pack()
self.queryPage.pack_forget()
self.countPage.pack_forget()
self.submitPage.pack_forget()
self.inputPage.pack_forget()
self.updatepwdPage2.pack_forget()
def inputData(self):
self.inputPage.pack()
self.queryPage.pack_forget()
self.countPage.pack_forget()
self.submitPage.pack_forget()
self.myPage2.pack_forget()
self.updatepwdPage2.pack_forget()
def queryData(self):
self.inputPage.pack_forget()
self.queryPage.pack()
self.countPage.pack_forget()
self.submitPage.pack_forget()
self.myPage2.pack_forget()
self.updatepwdPage2.pack_forget()
def countData(self):
self.inputPage.pack_forget()
self.queryPage.pack_forget()
self.submitPage.pack_forget()
self.countPage.pack()
self.myPage2.pack_forget()
self.updatepwdPage2.pack_forget()
def submitData(self):
self.inputPage.pack_forget()
self.queryPage.pack_forget()
self.countPage.pack_forget()
self.submitPage.pack()
self.myPage2.pack_forget()
self.updatepwdPage2.pack_forget()
def aboutDisp(self):
self.inputPage.pack_forget()
self.queryPage.pack_forget()
self.countPage.pack_forget()
self.submitPage.pack_forget()
self.myPage2.pack_forget()
self.updatepwdPage2.pack_forget()
def returnLogin(self):
self.myPage2.destroy()
self.updatepwdPage2.destroy()
self.inputPage.destroy()
self.queryPage.destroy()
self.countPage.destroy()
self.submitPage.destroy()
self.menubar.destroy()
LoginPage(self.root)