课堂点名器V5

本文介绍了使用Python和MySQL数据库实现课堂点名器的过程,包括教师注册、学生信息导入、点名、请假、迟到和早退处理等功能。系统通过读取CSV文件、随机点名、判断学生状态并更新数据库来管理课堂考勤。
摘要由CSDN通过智能技术生成

本文逻辑简单内容冗余,若想独自实现,建议使用字典实现(为完成作业偷懒,懒得改了)

  1. 任务描述:
    用Python实现一个简单课堂点名器V5
    要求:
    1.实现教师用户的注册和用户登陆功能,将教师用户名和密码存储在MySQL数据库。
    2.以18网工、19网工的学生名单为例,从外部文件分别导入程序中,并将学生信息分别存入MySQL数据库中的两个表中。
    3.实现登陆后的教师用户选择所需点名的课程和班级的功能。
    4.随机对班级所有同学进行点名。
    5.判断未到学生是否有请假条,有则视为请假,无则视为旷课。
    6.对点名结束后进入教室的学生将旷课改为迟到。
    7.对中途离开课堂学生计为早退(需要考虑学生既是迟到又是早退的情况)。
    8.将未到学生按照请假、旷课、迟到、早退四类分别存储在MySQL数据库中的四个表中。
    9.从MySQL数据中读取请假、旷课、迟到、早退四类信息并分别展示。
  2. 方案:
    此代码分为8个部分,下面依次介绍(姓名列表和学号列表内容一一对应):
    (1) import导用xlrd、pymssql、random;
    (2) 创建Pro函数,运用if选择for循环和cursor.execute ()处理数据库内容,用INSERT INTO * 写入到数据库中;
    (3) 创建InputInformation函数,运用xlrd库内容用for循环和table.cell_value()读取本地csv文件内容,用INSERT INTO * 写入到数据库中;
    (4) 创建SignIn_ALL函数,进行初步的点名签到处理:创建StudentName_SignIn_list列表和 StudentNumber_SignIn_list列表。用while循环构造随机数组成的集合set,转为list,for循环进行点名处理,对未到的学生记录到StudentName_SignIn_list中,并依据StudentNumber_list获取该学生的学号记录到StudentNumber_SignIn_list中,return返回StudentName_SignIn_list, StudentNumber_SignIn_list后期需要对此处理;
    (5) 创建SignIn_paper函数,对写了请假条的学生进行处理:创建student_paper接受拥有请假条的学生的姓名,while循环处理,if语句判断是否在StudentName_SignIn_list(初步签到未到学生名单)中,若在则用list.insert()放入新创建的list_student_paper(储存有请假条学生的姓名)列表中,用list.index()找出所在StudentName_SignIn_list列表中的位置赋值给address,用list.pop()方法删去所在StudentName_SignIn_list列表和StudentNumber_SignIn_list列表对应位置内容(为有请假条学生的姓名和学号),用list.index()找出所在StudentName_list列表中的位置赋值给address2,用list.insert()方法将该学生的学号放入新创建的list_studentNumber_paper(储存有请假条学生的学号)列表中。处理结束调用INSERT INTO * 写入到数据库中;
    (6) 创建SignIn_chidao函数,过程类似SignIn_paper函数,处理结果:list_student_chidao储存迟到学生姓名,list_studentNumber_chidao储存迟到学生的学号,展示并调用InputInformation_File函数存储;此时StudentName_SignIn_list列表和StudentNumber_SignIn_list列表中存储的为旷课学生(=全班学生-签到学生-迟到学生-请假学生)的姓名和学号调用调用INSERT INTO * 写入到数据库中;
    (7) 创建SignIn_zaotui函数,过程类似SignIn_paper函数,处理结果:list_studentName_zaotui记录早退学生姓名,list_studentNumber_zaotui记录早退学生学号处理结束调用调用INSERT INTO * 写入到数据库中;
    (8) 主函数:依次运行,Pro函数获取用户状态,while循环永久执行InputInformation函数读取数据,SignIn_ALL函数并将return结果給part1,用part1[1]和part1[0]储存初处理的学生学号和姓名,SignIn_paper函数统计请假学生,SignIn_chidao函数统计迟到学生,SignIn_zaotui函数统计早退学生。添加for循环,导用select语句对数据库中的内容进行展示。
  3. 代码:
import xlrd
import pymssql
import random
def pro():
    choose = input("登录 or 注册")
    if choose == '注册':
        teacherName = input("请输入姓名:")
        teacherPasswd = input("请输入密码")
        teacherPasswd2 = input("请确认密码")
        if teacherPasswd == teacherPasswd2:
            cursor.executemany(
                    "INSERT INTO user_list VALUES (%d, %s, %d)",
                    [(1, teacherName, teacherPasswd)])
            conn.commit()
            print("注册成功")
            return 1
        else:
            print("密码错误")
            return 2
    elif choose == '登录':
        teacherName = input("请输入姓名:")
        teacherPasswd = input("请输入密码")
        cursor.execute("SELECT password FROM user_list where name='"+teacherName+"'")
        row = cursor.fetchone()
        teacherPasswd2 = row[0]
        if teacherPasswd == teacherPasswd2:
            print("登陆成功")
            return 3
        else:
            print("用户不存在或密码错误")
            return 4
    else:
        print("未知错误!")

def InputInformation(StudentName_list, StudentNumber_list, cursor):
    print("正在导入学生信息:")
    choose = input("网工18(path1)网工19(path2)")
    if choose == "path1":
        data =<
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值