• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

如何用Python编写一个电子考勤系统

python 搞代码 4年前 (2022-01-09) 21次浏览 已收录 0个评论

实验项目简介

学校现在需要实现一个电子考勤系统,考虑到你们班已经学过大数据应用开发语言Python,准备让你们实现部分学生端考勤功能。经过和老师的沟通,你了解到:
(1) 目前该系统已经被学长实现了部分功能,你们只需要完成剩余功能即可,需要你们完成的功能会使用
#todo的形式进行标注, todo后面会列出这个地方的功能,形式如下。

(2) 学生信息存储在stu_infos.csv文件中,第一行是列名行,后面每一行都是一个学生的信息,包含学号,姓名,密码。内容形式如下:

(3) 考勤记录最终会被保存到attendance.csv文件中,第一行是列名行,后面每一行代表一个学生的考勤信息,包含学号,姓名,时间,考勤状态(只有出勤、迟到、请假、缺勤四种状态)。内容格式如下:

(4) 学生信息需要首先被加载到student_infos列表中,student_info中的每个元素都是一个字典,字典中的键都是各自列名,而值则是每一行内容,按照示例数据构造出来的student_infos列表如下。

(5) 考勤系统老师端总共有两个Python文件,一个main.本文来源gaodai$ma#com搞$$代**码网py文件,该文件作为入口程序文件,实现主体框架,主体流程就是:加载数据 登录 添加考勤数据;一个stu_attendance.py文件,定义了数据加载、登录等函数。

答题要求:
(1) 在stu_info.csv文件末尾添加一行自己的信息,密码随意写,名字和学号必须是自己
(2) 查看两个Python文件中的todo注释,添加合适代码,最终提供添加的代码。
(3) 测试程序功能,提供程序运行截图。进行登录验证的时候使用自己的学号进行登录验证,并且需要测试如下2个分支:3次都登录失败的情况、登录成功后成功添加考勤数据。

附加功能

添加一个查询功能,输入一个学生的姓名就可以获取他的出勤数据信息

导入模块

import csv
import time
student_infos = []

加载数据

def load_stu_info():
  """
  加载学生信息
  从stu_infos.csv文件中加载数据
  :return: 无
  """
  with open(r"stu_infos.csv", encoding='utf-8-sig') as file:
    f_csv = csv.reader(file)
    header = next(f_csv)
    for row in f_csv:
      student_info = {}
      for index in range(3):
        student_info[header[index]] = row[index]
      student_infos.append(student_info)

登录

def login():
  """
  用户使用学号和密码进行登录
  最多让用户登录三次,如果连续三次都登录失败(用户名或者密码错误),只要密码和用户都正确表示登录成功
  :return:登录成功返回True和学号,三次都登录失败返回False和None
  """
  retry_time = 0
  while retry_time < 3:
    user_no = input('请输入登录账号:')
    password = input('请输入密码:')
    for i in student_infos:
      if i['no']==user_no and i['password']==password:
        return True,user_no
    print('用户名或者密码错误!!!请重新输入。')
    retry_time += 1
  else:
    return False, None

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:如何用Python编写一个电子考勤系统

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址