一、任务描述
- 以18级网工学生名单为例,从外部文件导入学生信息,并将学生信息存入MySQL数据库,随机对班级所有同学进行点名。
- 判断未到学生是否有请假条,有则视为请假,无则视为旷课。
- 对点名结束后进入教室的学生将旷课改为迟到。
- 对中途离开课堂学生计为早退(需要考虑学生既是迟到又是早退的情况)。
- 将未到学生按照请假、旷课、迟到、早退四类分别存储在MySQL数据库中的四个表中。
- 从MySQL数据中读取请假、旷课、迟到、早退四类信息并分别展示。
二、方案
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语句输出请假、旷课、迟到、早退四类信息。
三、流程图
四、代码
import random
import pymysql
import pandas as pd
def case(ask):
'''
功能:判断课前点名未到学生是请假还是暂计入旷课。
'''
if ask == '1':
ask_list.append([student_no,student_name])
print("请假")
elif ask == '0':
no_ask_list.append([student_no,student_name])
print("暂计入旷课")
def after_class(list1,list2,list3):
'''
功能:课后点名,判断旷课、迟到、早退。
'''
for student_no,student_name in list1:
res = input(f"{student_name}?\t")
if res ==