一、任务
-
实现教师用户的注册和用户登陆功能,将教师用户名和密码存储在MySQL数据库。
-
以18网工、19网工的学生名单为例,从外部文件分别导入程序中,并将学生信息分别存入MySQL数据库中的两个表中。
-
实现登陆后的教师用户选择所需点名的课程和班级的功能。
-
随机对班级所有同学进行点名。
-
判断未到学生是否有请假条,有则视为请假,无则视为旷课。
-
对点名结束后进入教室的学生将旷课改为迟到。
-
对中途离开课堂学生计为早退(需要考虑学生既是迟到又是早退的情况)。
-
将未到学生按照请假、旷课、迟到、早退四类分别存储在MySQL数据库中的四个表中。
-
从MySQL数据中读取请假、旷课、迟到、早退四类信息并分别展示。
二、方案
- Home 模块:
导入图形开发界面库tkinter,设计主界面完成教师用户的登录,设置按钮“登录”和“注册”,按钮分别触发界面。
①登录界面:教师用户输入用户名和密码后,若与MySQL数据库匹配,则进入点名界面,开始对网工18学生点名(roll_call4作为模块导入)
②注册界面:教师用户进行账号的注册,写入MySQL数据库。 - roll_call4 模块:
①数据:pandas包将”网工18学生名单.xls”导入,并转换为列表储存在info_list1
②处理:要完成随机对班级所有同学的点名,可导入random库中的shuffle()函数,对info_list1中的元素随机排序。之后进行课前点名,遍历学生名单,答到的学生放入info_list2,未达到的学生判断是否有请假条,有则放进请假学生名单(ask_list),无则暂计入旷课(no_ask_list);对no_ask_list进行第二次点名,未到则旷课,到了放进迟到名单,对info_list2进行第二次点名,未到则早退。
③输出:连接MySQL数据库,将info_list1、ask_list、late_list、absence_list、early_list存放的数据插入数据库对应表中。使用select语句输出请假、旷课、迟到、早退四类信息。
三、流程图
- 登陆注册:
- roll_call4模块:
四、代码
- Module home:
# -*- coding: utf-8 -*-
import pymysql
import sys
import tkinter as tk
import tkinter.messagebox
from tkinter import ttk
class home():
def __init__(self):
'''
主界面
'''
self.window = tk.Tk()
self.window.title('简单课堂点名器') # 窗口名
self.window.geometry('450x300') # 窗口大小(长x宽) 乘为小x
self.window.resizable(False, False) # 窗口不可放大
self.title_label = tk.Label(self.window,text='欢迎使用简单课堂点名器',font=('Arial',14))
self.username_label = tk.Label(self.window,text='用户名')
self.password_label = tk.Label(self.window,text='密码')
self.username_text = tk.Entry(self.window)
self.password_text = tk.Entry(self.window,show='●')
self.login_button = tk.Button(self.window,text='登录',command=self.login)
self.register_button = tk.Button(self.window,text='注册',command=self.register)
self