基于Python的课堂点名器V3

前言

在课堂点名器V2的基础上,我们又有了更高的要求。

需求分析

课堂点名器V3的大致需求如下:
在这里插入图片描述下面就说说自己看到这个大致需求后,脑子里的初步想法。

因为思路很难一下理清,我先阐述自己得出的结论

我们的目的:输入是学生名单的csv文件,输出的是四大名单并且要保存在四个csv文件中。
判别方法:有两次点名,课前点一次(后面叫第一次点名)和课后点名(第二次点名);四个输出的数据判定如下:

  • 迟到判定:第一次点名不在就是迟到
  • 请假判定:第一次点名输出已请假
  • 早退判定:第一次点名在,但是第二次点名不在
  • 旷课判定:第一次和第二次点名都不在

然后,第一次点名得出迟到名单和请假名单,第二次点名得出早退名单,然后旷课名单经过迟到名单和早退名单的交运算得出。

或许有人会说,这个结果和需求有些不同。确实有些不同,但是程序在不考虑换显示界面的话(GUI等界面),无法在调试窗口那里实时显示出四种名单(个人认为),肯定是两次点名结束才显示出来最后的名单,那么,我们只要确保最终的名单是符合需求的就行了,判断过程可以怎么方便怎么来。

下面我就放一些自己思考过程中的想法
在这里插入图片描述在这里插入图片描述

在这里插入图片描述当然,上面这三张已经是自己第二次思考过程了。下面再给些自己第一次思考的过程(你们可能看不懂)
在这里插入图片描述(下面这张是我一开始打算用tkinter来写GUI的点名器所想的东西)
在这里插入图片描述
虽然都是很累赘的东西,但毕竟是自己所想,也给出来看看,自己第一次自己独立搞一个大程序,想法方面还是很稚嫩,万一有个大佬看我这样,来指导我呢 ~ ~

全部代码(讲解就放注释里面了)

# 点名器V3
import csv
import random

# 规定的一些常量
student_late = []   # 存储迟到名单
students_late = []   # 迟到录入名单 这种形式[[姓名, 学号], [], [], ....]
# student_absence = []   # 存储旷课名单(不需要,因为absence这个表是通过late和early交运算得到的)
students_absence = []    # 旷课录入名单 这种形式[[姓名, 学号], [], [], ....]
student_sick = []   # 存储请假名单
students_sick = []   # 请假录入名单 这种形式[[姓名, 学号], [], [], ....]
student_early = []   # 存储早退名单
students_early = []   # 早退录入名单 这种形式[[姓名, 学号], [], [], ....]


###
# 功能:读入csv文件学生名单
# 输入:文件名(string)
# 返回值:学生全部信息(dict),学生名单(list)
###
def file_in(file_name):
    students_info = {
   
   }
    students_name = []
    # open()函数读入文件
    with open(file_name, newline='') as info:
        reader = csv.reader(info)
        for row in reader:
            students_info[row[0]] = row[1]
            students_name.append(row[0])
    return students_info, students_name


###
# 功能:产生随机学生名单
# 输入:学生名单(list)
# 返回值:打乱的学生名单(list)
###
def new_list(students_name):
    student_upset_name = random.sample(students_name, len(students_name))
    return student_upset_name


###
# 功能:完成点名器的初始化,整合了new_list()和file_in()两个函数
# 输入:学生名单(list)
# 返回值:学生信息(dict)和打乱的学生名单(list)
###
def dmq_init(file_name):
    student_info = file_in(file_name)[0]
    # print(students_wg_dict)
    student_upset_name = new_list(file_in(file_name)[1])
    # print(students_wg_list)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值