|
|
import time
|
|
|
import tkinter as tk
|
|
|
import SystemDesign
|
|
|
|
|
|
start = SystemDesign.Manage()
|
|
|
start.read_information()
|
|
|
|
|
|
|
|
|
# root:主菜单 root2:管理员菜单 root3:管理员登录界面 root4:学生登陆界面
|
|
|
def administrator_menu():
|
|
|
root.withdraw()
|
|
|
root2 = tk.Tk()
|
|
|
root2.title("单项选择题答题与管理系统")
|
|
|
root2.geometry("900x700")
|
|
|
root2.config(background='lightblue')
|
|
|
bt1 = tk.Button(root2, text='1.录入试题信息', font=("Helvetica", 30), background='lightblue',
|
|
|
command=lambda: func_ad_1(root2))
|
|
|
bt1.place(x=300, y=20)
|
|
|
bt2 = tk.Button(root2, text='2.查看学生信息', font=("Helvetica", 30), background='lightblue',
|
|
|
command=lambda: func_ad_2(root2))
|
|
|
bt2.place(x=300, y=100)
|
|
|
bt3 = tk.Button(root2, text='3. 排名学生成绩', font=("Helvetica", 30), background='lightblue',
|
|
|
command=lambda: func_ad_3(root2))
|
|
|
bt3.place(x=300, y=180)
|
|
|
bt4 = tk.Button(root2, text='4.查看试题信息', font=("Helvetica", 30), background='lightblue',
|
|
|
command=lambda: func_ad_4(root2))
|
|
|
bt4.place(x=300, y=260)
|
|
|
bt5 = tk.Button(root2, text='5.分析总体答题情况', font=("Helvetica", 30), background='lightblue',
|
|
|
command=lambda: func_ad_5(root2))
|
|
|
bt5.place(x=300, y=340)
|
|
|
bt6 = tk.Button(root2, text='6.删除试题信息', font=("Helvetica", 30), background='lightblue',
|
|
|
command=lambda: func_ad_6(root2))
|
|
|
bt6.place(x=300, y=420)
|
|
|
bt7 = tk.Button(root2, text='7.删除学生信息', font=("Helvetica", 30), background='lightblue',
|
|
|
command=lambda: func_ad_7(root2))
|
|
|
bt7.place(x=300, y=500)
|
|
|
bt8 = tk.Button(root2, text='8.返回上级', font=("Helvetica", 30), background='lightblue',
|
|
|
command=lambda: func_ad_8(root2))
|
|
|
bt8.place(x=300, y=580)
|
|
|
|
|
|
|
|
|
def func_ad_1(x): # 管理员功能一
|
|
|
x.destroy()
|
|
|
root_func1 = tk.Tk()
|
|
|
root_func1.title("单项选择题答题与管理系统")
|
|
|
root_func1.geometry("900x700")
|
|
|
root_func1.config(background='lightblue')
|
|
|
func1title = tk.Label(root_func1, text="输入你的试题信息:", font=("Helvetica", 40), background="lightblue")
|
|
|
func1title.pack()
|
|
|
func1title.place(x=220, y=80)
|
|
|
|
|
|
func1_lb1 = tk.Label(root_func1, text="题号", font=("Helvetica", 20), background="lightblue")
|
|
|
func1_lb1.place(x=220, y=160)
|
|
|
func1_entry1 = tk.Entry(root_func1, width=45)
|
|
|
func1_entry1.place(x=320, y=170)
|
|
|
|
|
|
func1_lb2 = tk.Label(root_func1, text="题目", font=("Helvetica", 20), background="lightblue")
|
|
|
func1_lb2.place(x=220, y=200)
|
|
|
func1_entry2 = tk.Entry(root_func1, width=45)
|
|
|
func1_entry2.place(x=320, y=210)
|
|
|
|
|
|
func1_lb3 = tk.Label(root_func1, text="选项A", font=("Helvetica", 20), background="lightblue")
|
|
|
func1_lb3.place(x=210, y=240)
|
|
|
func1_entry3 = tk.Entry(root_func1, width=45)
|
|
|
func1_entry3.place(x=320, y=250)
|
|
|
|
|
|
func1_lb4 = tk.Label(root_func1, text="选项B", font=("Helvetica", 20), background="lightblue")
|
|
|
func1_lb4.place(x=210, y=280)
|
|
|
func1_entry4 = tk.Entry(root_func1, width=45)
|
|
|
func1_entry4.place(x=320, y=290)
|
|
|
|
|
|
func1_lb5 = tk.Label(root_func1, text="选项C", font=("Helvetica", 20), background="lightblue")
|
|
|
func1_lb5.place(x=210, y=320)
|
|
|
func1_entry5 = tk.Entry(root_func1, width=45)
|
|
|
func1_entry5.place(x=320, y=330)
|
|
|
|
|
|
func1_lb6 = tk.Label(root_func1, text="选项D", font=("Helvetica", 20), background="lightblue")
|
|
|
func1_lb6.place(x=210, y=360)
|
|
|
func1_entry6 = tk.Entry(root_func1, width=45)
|
|
|
func1_entry6.place(x=320, y=370)
|
|
|
|
|
|
func1_lb7 = tk.Label(root_func1, text="正确答案", font=("Helvetica", 20), background="lightblue")
|
|
|
func1_lb7.place(x=200, y=400)
|
|
|
func1_entry7 = tk.Entry(root_func1, width=45)
|
|
|
func1_entry7.place(x=320, y=410)
|
|
|
|
|
|
func1_bt1 = tk.Button(root_func1, text="确定", font=("Helvetica", 20), background="lightblue",
|
|
|
command=lambda: func_ad_1_1(func1_entry1.get(), func1_entry2.get(), func1_entry3.get(),
|
|
|
func1_entry4.get(), func1_entry5.get(), func1_entry6.get(),
|
|
|
func1_entry7.get(), root_func1))
|
|
|
func1_bt1.place(x=460, y=450)
|
|
|
|
|
|
func1_bt2 = tk.Button(root_func1, text="取消", font=("Helvetica", 20), background="lightblue",
|
|
|
command=lambda: func_back(root_func1))
|
|
|
func1_bt2.place(x=560, y=450)
|
|
|
|
|
|
func1_bt3 = tk.Button(root_func1, text="<- 返回", font=("Helvetica", 20), background="lightblue",
|
|
|
command=lambda: func_back(root_func1))
|
|
|
func1_bt3.place(x=20, y=10)
|
|
|
|
|
|
|
|
|
def func_ad_1_1(x1, x2, x3, x4, x5, x6, x7, root_func1): # 功能一的衍生函数
|
|
|
root_func1.destroy()
|
|
|
new_problem = SystemDesign.Problem(num=x1,
|
|
|
question=x2,
|
|
|
choice_a=x3,
|
|
|
choice_b=x4,
|
|
|
choice_c=x5,
|
|
|
|
|
|
choice_d=x6,
|
|
|
answer=x7)
|
|
|
temp = {"题号": new_problem.num, "题目": new_problem.question, "选项A": new_problem.choice_a,
|
|
|
"选项B": new_problem.choice_b, "选项C": new_problem.choice_c, "选项D": new_problem.choice_d,
|
|
|
"正确答案": new_problem.answer}
|
|
|
start.ProblemInfo.append(temp)
|
|
|
start.save_information()
|
|
|
message = tk.Tk()
|
|
|
message.geometry("400x150")
|
|
|
message.title("单项选择题答题与管理系统")
|
|
|
message_lb = tk.Label(message, text="添加成功!", font=("等线", 30))
|
|
|
message_lb.config(fg="red")
|
|
|
message_lb.pack()
|
|
|
message_lb.place(x=100, y=20)
|
|
|
message_bt = tk.Button(message, text="返回", height=1, width=8, command=lambda: func_back(message))
|
|
|
message_bt.place(x=150, y=95)
|
|
|
|
|
|
|
|
|
def func_back(x):
|
|
|
x.destroy()
|
|
|
administrator_menu()
|
|
|
|
|
|
|
|
|
def func_ad_2(x):
|
|
|
x.destroy()
|
|
|
root_func2 = tk.Tk()
|
|
|
root_func2.title("单项选择题答题与管理系统")
|
|
|
root_func2.geometry("800x600")
|
|
|
bt1 = tk.Button(root_func2, text="返回", width=600, font=("Helvetica", 20), command=lambda: func_back(root_func2))
|
|
|
bt1.place(x=20,y=10)
|
|
|
bt1.pack()
|
|
|
frame_func2 = tk.Frame(root_func2)
|
|
|
frame_func2.pack()
|
|
|
scrollbar1 = tk.Scrollbar(frame_func2)
|
|
|
scrollbar1.pack(side="right", fill="y")
|
|
|
scrollbar2 = tk.Scrollbar(frame_func2, orient="horizontal")
|
|
|
scrollbar2.pack(side="bottom", fill="x")
|
|
|
list_func2 = tk.Listbox(frame_func2, selectmode='browse', width=500, height=20, font=("等线", 30),
|
|
|
xscrollcommand=scrollbar2.set, yscrollcommand=scrollbar1.set)
|
|
|
for stu in start.StudentInfo:
|
|
|
list_func2.insert("end", stu)
|
|
|
list_func2.pack()
|
|
|
scrollbar1.config(command=list_func2.yview)
|
|
|
scrollbar2.config(command=list_func2.xview)
|
|
|
|
|
|
|
|
|
def func_ad_3(r):
|
|
|
r.destroy()
|
|
|
root_func3 = tk.Tk()
|
|
|
root_func3.title("单项选择题答题与管理系统")
|
|
|
root_func3.geometry("800x600")
|
|
|
bt1 = tk.Button(root_func3, text="返回", width=600, font=("Helvetica", 20), command=lambda: func_back(root_func3))
|
|
|
bt1.pack()
|
|
|
frame_func3 = tk.Frame(root_func3)
|
|
|
frame_func3.pack()
|
|
|
scrollbar1 = tk.Scrollbar(frame_func3)
|
|
|
scrollbar1.pack(side="right", fill="y")
|
|
|
scrollbar2 = tk.Scrollbar(frame_func3, orient="horizontal")
|
|
|
scrollbar2.pack(side="bottom", fill="x")
|
|
|
list_func3 = tk.Listbox(frame_func3, selectmode='browse', width=500, height=20, font=("等线", 30),
|
|
|
xscrollcommand=scrollbar2.set, yscrollcommand=scrollbar1.set)
|
|
|
tool = start.StudentInfo
|
|
|
for del_zero in tool:
|
|
|
if del_zero["成绩"] == "暂无成绩":
|
|
|
del_zero["成绩"] = -1
|
|
|
temp = sorted(tool, key=lambda x: int(x["成绩"]), reverse=True)
|
|
|
list_stu = []
|
|
|
for stu in temp:
|
|
|
if stu["成绩"] == -1:
|
|
|
stu["成绩"] = "暂无成绩"
|
|
|
stu_pass = {"用户名": stu["用户名"],
|
|
|
"成绩": stu["成绩"],
|
|
|
"答题用时": stu["答题时间"]}
|
|
|
list_stu.append(stu_pass)
|
|
|
for stu in list_stu:
|
|
|
list_func3.insert("end", stu)
|
|
|
|
|
|
list_func3.pack()
|
|
|
scrollbar1.config(command=list_func3.yview)
|
|
|
scrollbar2.config(command=list_func3.xview)
|
|
|
|
|
|
|
|
|
def func_ad_4(x):
|
|
|
x.destroy()
|
|
|
root_func4 = tk.Tk()
|
|
|
root_func4.title("单项选择题答题与管理系统")
|
|
|
root_func4.geometry("800x600")
|
|
|
bt1 = tk.Button(root_func4, text="返回", width=600, font=("Helvetica", 20), command=lambda: func_back(root_func4))
|
|
|
bt1.pack()
|
|
|
frame_func4 = tk.Frame(root_func4)
|
|
|
frame_func4.pack()
|
|
|
scrollbar1 = tk.Scrollbar(frame_func4)
|
|
|
scrollbar1.pack(side="right", fill="y")
|
|
|
scrollbar2 = tk.Scrollbar(frame_func4, orient="horizontal")
|
|
|
scrollbar2.pack(side="bottom", fill="x")
|
|
|
list_func2 = tk.Listbox(frame_func4, selectmode='browse', width=500, height=20, font=("等线", 30),
|
|
|
xscrollcommand=scrollbar2.set, yscrollcommand=scrollbar1.set)
|
|
|
for stu in start.ProblemInfo:
|
|
|
list_func2.insert("end", stu)
|
|
|
list_func2.pack()
|
|
|
scrollbar1.config(command=list_func2.yview)
|
|
|
scrollbar2.config(command=list_func2.xview)
|
|
|
|
|
|
|
|
|
def func_ad_5(x):
|
|
|
x.destroy()
|
|
|
root_func5 = tk.Tk()
|
|
|
root_func5.title("单项选择题答题与管理系统")
|
|
|
root_func5.geometry("800x600")
|
|
|
root_func5.config(background="lightblue")
|
|
|
bt1 = tk.Button(root_func5, text="返回", width=600, font=("Helvetica", 20), command=lambda: func_back(root_func5))
|
|
|
bt1.pack()
|
|
|
lb1 = tk.Label(root_func5, background="lightblue", text="本次测试有%d道题目" % len(start.ProblemInfo),
|
|
|
font=("Helvetica", 40))
|
|
|
lb1.pack()
|
|
|
lb2 = tk.Label(root_func5, background="lightblue", text="满分%d分" % (len(start.ProblemInfo) * 5),
|
|
|
font=("Helvetica", 40))
|
|
|
lb2.pack()
|
|
|
student_num = 0
|
|
|
total = 0
|
|
|
for stu in start.StudentInfo:
|
|
|
if stu["成绩"] == "暂无成绩":
|
|
|
continue
|
|
|
total += int(stu["成绩"])
|
|
|
student_num += 1
|
|
|
lb3 = tk.Label(root_func5, background="lightblue", text="参与测试%d人" % student_num, font=("Helvetica", 40))
|
|
|
lb3.pack()
|
|
|
lb3 = tk.Label(root_func5, background="lightblue", text="平均分:%0.2f" % (total / student_num), font=("Helvetica", 40))
|
|
|
lb3.pack()
|
|
|
|
|
|
|
|
|
def func_ad_6(x):
|
|
|
x.destroy()
|
|
|
root_func6 = tk.Tk()
|
|
|
root_func6.geometry("600x300")
|
|
|
root_func6.title("单项选择题答题与管理系统")
|
|
|
lb_func6 = tk.Label(root_func6, text="请输入要删除的试题题号!", font=("Helvetica", 20))
|
|
|
lb_func6.pack()
|
|
|
entry_func6 = tk.Entry(root_func6)
|
|
|
entry_func6.place(x=220, y=60)
|
|
|
bt1 = tk.Button(root_func6, height=1, width=8, text="确认",
|
|
|
command=lambda: func_ad_6_1(entry_func6.get()))
|
|
|
bt1.place(x=220, y=100)
|
|
|
bt2 = tk.Button(root_func6, height=1, width=8, text="取消", command=lambda: func_back(root_func6))
|
|
|
bt2.place(x=300, y=100)
|
|
|
|
|
|
|
|
|
def func_ad_6_1(x):
|
|
|
index = 0
|
|
|
for pro in start.ProblemInfo:
|
|
|
if pro["题号"] == x:
|
|
|
del start.ProblemInfo[index]
|
|
|
start.save_information()
|
|
|
message = tk.Tk()
|
|
|
message.geometry("400x150")
|
|
|
message.title("单项选择题答题与管理系统")
|
|
|
message_lb = tk.Label(message, text="删除成功!", font=("等线", 30))
|
|
|
message_lb.config(fg="red")
|
|
|
message_lb.pack()
|
|
|
message_bt = tk.Button(message, text="返回", height=1, width=8, command=message.destroy)
|
|
|
message_bt.place(x=150, y=75)
|
|
|
return
|
|
|
index += 1
|
|
|
message = tk.Tk()
|
|
|
message.geometry("400x150")
|
|
|
message.title("单项选择题答题与管理系统")
|
|
|
message_lb = tk.Label(message, text="未找到试题信息", font=("等线", 30))
|
|
|
message_lb.config(fg="red")
|
|
|
message_lb.pack()
|
|
|
message_bt = tk.Button(message, text="返回", height=1, width=8, command=message.destroy)
|
|
|
message_bt.place(x=150, y=75)
|
|
|
|
|
|
|
|
|
def func_ad_7(x):
|
|
|
x.destroy()
|
|
|
root_func7 = tk.Tk()
|
|
|
root_func7.geometry("600x300")
|
|
|
root_func7.title("单项选择题答题与管理系统")
|
|
|
lb_func7 = tk.Label(root_func7, text="请输入要删除的学生账号!", font=("Helvetica", 20))
|
|
|
lb_func7.pack()
|
|
|
entry_func7 = tk.Entry(root_func7)
|
|
|
entry_func7.place(x=220, y=60)
|
|
|
bt1 = tk.Button(root_func7, height=1, width=8, text="确认",
|
|
|
command=lambda: func_ad_7_1(entry_func7.get()))
|
|
|
bt1.place(x=220, y=100)
|
|
|
bt2 = tk.Button(root_func7, height=1, width=8, text="取消", command=lambda: func_back(root_func7))
|
|
|
bt2.place(x=300, y=100)
|
|
|
|
|
|
|
|
|
def func_ad_7_1(x):
|
|
|
index = 0
|
|
|
for pro in start.StudentInfo:
|
|
|
if pro["账号"] == x:
|
|
|
del start.StudentInfo[index]
|
|
|
start.save_information()
|
|
|
message = tk.Tk()
|
|
|
message.geometry("400x150")
|
|
|
message.title("单项选择题答题与管理系统")
|
|
|
message_lb = tk.Label(message, text="删除成功!", font=("等线", 30))
|
|
|
message_lb.config(fg="red")
|
|
|
message_lb.pack()
|
|
|
message_bt = tk.Button(message, text="返回", height=1, width=8, command=message.destroy)
|
|
|
message_bt.place(x=150, y=75)
|
|
|
return
|
|
|
index += 1
|
|
|
message = tk.Tk()
|
|
|
message.geometry("400x150")
|
|
|
message.title("单项选择题答题与管理系统")
|
|
|
message_lb = tk.Label(message, text="未找到学生信息", font=("等线", 30))
|
|
|
message_lb.config(fg="red")
|
|
|
message_lb.pack()
|
|
|
message_bt = tk.Button(message, text="返回", height=1, width=8, command=message.destroy)
|
|
|
message_bt.place(x=150, y=75)
|
|
|
|
|
|
|
|
|
def func_ad_8(x):
|
|
|
x.destroy()
|
|
|
root.deiconify()
|
|
|
|
|
|
|
|
|
def student_menu(x):
|
|
|
index = 0
|
|
|
global grade
|
|
|
grade = 0
|
|
|
start_time = time.time()
|
|
|
root.withdraw()
|
|
|
root_stu = tk.Tk()
|
|
|
root_stu.title("单项选择题答题与管理系统")
|
|
|
root_stu.geometry("900x700")
|
|
|
root_stu.config(background='lightblue')
|
|
|
lb1 = tk.Label(root_stu, text="欢迎你%s同学" % x, font=("Helvetica", 40), background='lightblue')
|
|
|
lb1.pack()
|
|
|
bt1 = tk.Button(root_stu, text='1.开始答题', font=("Helvetica", 30), background='lightblue',
|
|
|
command=lambda: func_stu_1(root_stu, x, index, start_time))
|
|
|
bt1.place(x=320, y=240)
|
|
|
bt2 = tk.Button(root_stu, text='2.返回上级', font=("Helvetica", 30), background='lightblue',
|
|
|
command=lambda: func_stu_2(root_stu))
|
|
|
bt2.place(x=320, y=360)
|
|
|
|
|
|
|
|
|
def func_stu_1(win, name, index_pro, start_time):
|
|
|
win.destroy()
|
|
|
root_func1 = tk.Tk()
|
|
|
root_func1.title("单项选择题答题与管理系统")
|
|
|
root_func1.geometry("900x700")
|
|
|
root_func1.config(background='lightblue')
|
|
|
func1title = tk.Label(root_func1, text="做下一题前请先提交当前题目!", font=("Helvetica", 40), background="lightblue")
|
|
|
func1title.pack()
|
|
|
|
|
|
temp = start.ProblemInfo[index_pro]
|
|
|
|
|
|
pro_num = tk.Label(root_func1, text="%s." % temp["题号"], font=("Helvetica", 30), background="lightblue", )
|
|
|
pro_num.place(x=200, y=80)
|
|
|
|
|
|
pro_question = tk.Label(root_func1, text="%s" % temp["题目"], font=("Helvetica", 30), background="lightblue")
|
|
|
pro_question.place(x=260, y=80)
|
|
|
|
|
|
pro_a = tk.Label(root_func1, text="A.%s" % temp["选项A"], font=("Helvetica", 30), background="lightblue")
|
|
|
pro_a.place(x=220, y=160)
|
|
|
|
|
|
pro_b = tk.Label(root_func1, text="B.%s" % temp["选项B"], font=("Helvetica", 30), background="lightblue")
|
|
|
pro_b.place(x=220, y=240)
|
|
|
|
|
|
pro_c = tk.Label(root_func1, text="C.%s" % temp["选项C"], font=("Helvetica", 30), background="lightblue")
|
|
|
pro_c.place(x=220, y=320)
|
|
|
|
|
|
pro_d = tk.Label(root_func1, text="D.%s" % temp["选项D"], font=("Helvetica", 30), background="lightblue")
|
|
|
pro_d.place(x=220, y=400)
|
|
|
|
|
|
pro_answer = tk.Label(root_func1, text="你的选项为", font=("Helvetica", 30), background="lightblue")
|
|
|
pro_answer.place(x=220, y=480)
|
|
|
answer_get = tk.Entry(root_func1, font=("Helvetica", 30), width=2)
|
|
|
answer_get.place(x=450, y=480)
|
|
|
|
|
|
bt_ensure = tk.Button(root_func1, text="提 交", command=lambda: check_answer(answer_get.get(), temp["正确答案"]),
|
|
|
font=("Helvetica", 30), background="lightblue")
|
|
|
bt_ensure.place(x=220, y=560)
|
|
|
|
|
|
if index_pro == len(start.ProblemInfo) - 1: # 目前只能下一题,且无法返回更改
|
|
|
for stu in start.StudentInfo:
|
|
|
if stu["用户名"] == name:
|
|
|
stu["成绩"] = str(grade)
|
|
|
stu["答题时间"] = str(int(time.time() - start_time))
|
|
|
start.save_information()
|
|
|
bt_end = tk.Button(root_func1, text="结束考试", command=lambda: func_stu_1_1(root_func1),
|
|
|
font=("Helvetica", 30), background="lightblue")
|
|
|
bt_end.place(x=480, y=560)
|
|
|
|
|
|
else:
|
|
|
bt_down = tk.Button(root_func1, text="下一题",
|
|
|
command=lambda: func_stu_1(root_func1, name, index_pro + 1, start_time),
|
|
|
font=("Helvetica", 30),
|
|
|
background="lightblue")
|
|
|
bt_down.place(x=480, y=560)
|
|
|
|
|
|
|
|
|
def check_answer(x, y):
|
|
|
global grade
|
|
|
if x == y:
|
|
|
grade += 5
|
|
|
|
|
|
|
|
|
def func_stu_1_1(x):
|
|
|
x.destroy()
|
|
|
message = tk.Tk()
|
|
|
message.geometry("400x150")
|
|
|
message.title("单项选择题答题与管理系统")
|
|
|
message_lb = tk.Label(message, text="答题结束!", font=("等线", 30))
|
|
|
message_lb.config(fg="red")
|
|
|
message_lb.pack()
|
|
|
message_bt = tk.Button(message, text="返回", height=1, width=8, command=lambda: func_stu_2(message))
|
|
|
message_bt.place(x=150, y=75)
|
|
|
|
|
|
|
|
|
def func_stu_1_2(x):
|
|
|
x.destroy()
|
|
|
root.deiconify()
|
|
|
|
|
|
|
|
|
def func_stu_2(x):
|
|
|
x.destroy()
|
|
|
root.deiconify()
|
|
|
|
|
|
|
|
|
def check_psw(x, y):
|
|
|
if x == "123456":
|
|
|
y.destroy()
|
|
|
administrator_menu()
|
|
|
else:
|
|
|
message = tk.Tk()
|
|
|
message.geometry("300x150")
|
|
|
message.title("单项选择题答题与管理系统")
|
|
|
message_lb = tk.Label(message, text="密码错误!", font=("等线", 30))
|
|
|
message_lb.config(fg="red")
|
|
|
message_lb.pack()
|
|
|
message_bt = tk.Button(message, text="返回", height=1, width=8, command=message.destroy)
|
|
|
message_bt.place(x=120, y=75)
|
|
|
|
|
|
|
|
|
def administrator_login():
|
|
|
root3 = tk.Tk()
|
|
|
root3.geometry("600x300")
|
|
|
root3.title("单项选择题答题与管理系统")
|
|
|
ad_login = tk.Label(root3, text="请输入管理员密码!", font=("Helvetica", 20))
|
|
|
ad_login.pack()
|
|
|
ad_login_entry = tk.Entry(root3, show="*")
|
|
|
ad_login_entry.place(x=220, y=60)
|
|
|
ad_login_bt1 = tk.Button(root3, height=1, width=8, text="确认",
|
|
|
command=lambda: check_psw(ad_login_entry.get(), root3))
|
|
|
ad_login_bt1.place(x=220, y=100)
|
|
|
ad_login_bt2 = tk.Button(root3, height=1, width=8, text="取消", command=root3.destroy)
|
|
|
ad_login_bt2.place(x=300, y=100)
|
|
|
|
|
|
|
|
|
def student_login():
|
|
|
root4 = tk.Tk()
|
|
|
root4.geometry("600x300")
|
|
|
root4.title("单项选择题答题与管理系统")
|
|
|
st_login = tk.Label(root4, text="请输入账号和密码!", font=("Helvetica", 20))
|
|
|
st_login.pack()
|
|
|
st_lb1 = tk.Label(root4, text="账号", font=6)
|
|
|
st_lb1.place(x=200, y=60)
|
|
|
st_login_entry1 = tk.Entry(root4)
|
|
|
st_login_entry1.place(x=250, y=60)
|
|
|
st_lb2 = tk.Label(root4, text="密码", font=6)
|
|
|
st_lb2.place(x=200, y=100)
|
|
|
st_login_entry2 = tk.Entry(root4)
|
|
|
st_login_entry2.place(x=250, y=100)
|
|
|
st_login_bt1 = tk.Button(root4, height=1, width=8, text="确认",
|
|
|
command=lambda: student_check(st_login_entry1.get(), st_login_entry2.get(), root4))
|
|
|
st_login_bt1.place(x=240, y=130)
|
|
|
st_login_bt2 = tk.Button(root4, height=1, width=8, text="取消", command=root4.destroy)
|
|
|
st_login_bt2.place(x=320, y=130)
|
|
|
'''
|
|
|
bt2 = tk.Button(root, text='1.开始答题', font=("Helvetica", 30), background='lightblue')
|
|
|
bt2.place(x=300, y=180)
|
|
|
bt3 = tk.Button(root, text='2.返回上级', font=("Helvetica", 30), background='lightblue')
|
|
|
bt3.place(x=300, y=260)
|
|
|
'''
|
|
|
|
|
|
|
|
|
def student_check(x, y, z): # 检查学生的登录信息
|
|
|
for stu in start.StudentInfo:
|
|
|
if x == stu["账号"] and y == stu["密码"]:
|
|
|
z.destroy()
|
|
|
student_menu(stu["用户名"])
|
|
|
break
|
|
|
else:
|
|
|
message = tk.Tk()
|
|
|
message.geometry("400x150")
|
|
|
message.title("单项选择题答题与管理系统")
|
|
|
message_lb = tk.Label(message, text="账号或密码错误!", font=("等线", 30))
|
|
|
message_lb.config(fg="red")
|
|
|
message_lb.pack()
|
|
|
message_bt = tk.Button(message, text="返回", height=1, width=8, command=message.destroy)
|
|
|
message_bt.place(x=150, y=75)
|
|
|
|
|
|
|
|
|
def student_register(): # 注册学生信息页面
|
|
|
root5 = tk.Tk()
|
|
|
root5.geometry("600x300")
|
|
|
root5.title("单项选择题答题与管理系统")
|
|
|
st_login = tk.Label(root5, text="填写你的注册信息", font=("Helvetica", 20))
|
|
|
st_login.pack()
|
|
|
|
|
|
st_lb1 = tk.Label(root5, text="用户名", font=6)
|
|
|
st_lb1.place(x=185, y=60)
|
|
|
st_login_entry1 = tk.Entry(root5)
|
|
|
st_login_entry1.place(x=250, y=60)
|
|
|
|
|
|
st_lb2 = tk.Label(root5, text="账号", font=6)
|
|
|
st_lb2.place(x=200, y=100)
|
|
|
st_login_entry2 = tk.Entry(root5)
|
|
|
st_login_entry2.place(x=250, y=100)
|
|
|
|
|
|
st_lb2 = tk.Label(root5, text="密码", font=6)
|
|
|
st_lb2.place(x=200, y=140)
|
|
|
st_login_entry3 = tk.Entry(root5)
|
|
|
st_login_entry3.place(x=250, y=140)
|
|
|
|
|
|
st_login_bt1 = tk.Button(root5, height=1, width=8, text="确认",
|
|
|
command=lambda: add_student(st_login_entry1.get(), st_login_entry2.get(),
|
|
|
st_login_entry3.get(), root5))
|
|
|
st_login_bt1.place(x=240, y=180)
|
|
|
st_login_bt2 = tk.Button(root5, height=1, width=8, text="取消", command=root5.destroy)
|
|
|
st_login_bt2.place(x=320, y=180)
|
|
|
|
|
|
|
|
|
def add_student(x, y, z, root5): # 注册成功后的消息弹窗页面
|
|
|
root5.destroy()
|
|
|
new_student = SystemDesign.Student(name=x,
|
|
|
user_name=y,
|
|
|
user_password=z,
|
|
|
grade="暂无成绩",
|
|
|
usetime="暂无信息")
|
|
|
temp = {"用户名": new_student.name, "账号": new_student.user_name, "密码": new_student.user_password,
|
|
|
"成绩": new_student.grade, "答题时间": new_student.usetime}
|
|
|
# 这里的new_student不能直接传入列表,要放在一个字典里把数据”打包“过去
|
|
|
start.StudentInfo.append(temp)
|
|
|
start.save_information()
|
|
|
message = tk.Tk()
|
|
|
message.geometry("400x150")
|
|
|
message.title("单项选择题答题与管理系统")
|
|
|
message_lb = tk.Label(message, text="添加成功!", font=("等线", 30))
|
|
|
message_lb.config(fg="red")
|
|
|
message_lb.pack()
|
|
|
message_bt = tk.Button(message, text="返回", height=1, width=8, command=message.destroy)
|
|
|
message_bt.place(x=150, y=75)
|
|
|
|
|
|
|
|
|
root = tk.Tk()
|
|
|
root.title("单项选择题答题与管理系统")
|
|
|
root.geometry("900x600")
|
|
|
root.config(background='lightblue')
|
|
|
main_label1 = tk.Label(root, text='单项选择题答题与管理系统', font=("Helvetica", 40), background='lightblue')
|
|
|
main_label1.pack()
|
|
|
main_bt1 = tk.Button(root, text='1.管理员登录', font=("Helvetica", 30), background='lightblue', command=administrator_login)
|
|
|
main_bt1.place(x=300, y=100)
|
|
|
main_bt2 = tk.Button(root, text='2.学生端登录', font=("Helvetica", 30), background='lightblue', command=student_login)
|
|
|
main_bt2.place(x=300, y=180)
|
|
|
main_bt3 = tk.Button(root, text='3. 注册学生账户', font=("Helvetica", 30), background='lightblue', command=student_register)
|
|
|
main_bt3.place(x=300, y=260)
|
|
|
main_bt4 = tk.Button(root, text='4.退出系统', font=("Helvetica", 30), background='lightblue', command=exit)
|
|
|
main_bt4.place(x=300, y=340)
|
|
|
global grade
|
|
|
root.mainloop()
|