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


Posted in Python onFebruary 08, 2021

实验项目简介

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

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

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

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

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

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

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

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

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

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

(5) 考勤系统老师端总共有两个Python文件,一个main.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

考勤记录写入

def add(user_no):
  for x in student_infos:
    if user_no==x['no']:
      name=x['name']
      break
  times=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
  choices=['出勤','迟到','请假','缺勤']
  a=int(input("\t该学生出勤情况:1-出勤\t2-迟到\t3-请假\t4-缺勤:"))
  if a==1:
    data=choices[0]
  elif a==2:
    data=choices[1]
  elif a==3:
    data=choices[2]
  else:
    data=choices[3]
  with open(r"attendance.csv",'a+',newline='', encoding='utf-8') as f:
    wf = csv.writer(f)
    wf.writerow([user_no,name,times,data])#写入一行数据
    print("{}同学{}数据已经写入成功!操作时间是{}".format(name,data,times))

查询考勤记录

def select():
  student = []
  with open(r"attendance.csv", encoding='utf-8-sig') as file:
    f_csv = csv.reader(file)
    header = next(f_csv)
    for row in f_csv:
      students = {}
      for index in range(4):
        students[header[index]] = row[index]
      student.append(students)
    name=input("请输入你需要查找的姓名:")
    print(" 学号\t\t姓名\t\t操作时间\t\t出勤状态")
    for a in student:
      if a['name']==name:
        print(a['no']+'\t'+a['name']+'\t'+a['time']+'\t\t'+a['state'])
      else:
        print("无此人!!!")
        break

主函数我就不给出了,有需要的可以自己编写一下,如果需要可以私信我或者在这里下载数据集和源码哟!!!

看看运行效果哟!

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

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

每文一语

创作的思路来源于生活中细微的品味,勿骄勿躁,才是王道

到此这篇关于用Python编写一个电子考勤系统的文章就介绍到这了,更多相关用Python编写一个电子考勤系统内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python 性能优化方法小结
Mar 31 Python
Python爬虫实现网页信息抓取功能示例【URL与正则模块】
May 18 Python
TensorFlow Session使用的两种方法小结
Jul 30 Python
python实现对任意大小图片均匀切割的示例
Dec 05 Python
Python 堆叠柱状图绘制方法
Jul 29 Python
python 实现将Numpy数组保存为图像
Jan 09 Python
python实现五子棋游戏(pygame版)
Jan 19 Python
python GUI库图形界面开发之PyQt5打印控件QPrinter详细使用方法与实例
Feb 28 Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
May 11 Python
python实现二分类和多分类的ROC曲线教程
Jun 15 Python
python 调用js的四种方式
Apr 11 Python
一篇文章弄懂Python中的内建函数
Aug 07 Python
python编程的核心知识点总结
Feb 08 #Python
python上下文管理器异常问题解决方法
Feb 07 #Python
python中@contextmanager实例用法
Feb 07 #Python
python tkinter实现下载进度条及抖音视频去水印原理
Feb 07 #Python
python gui开发——制作抖音无水印视频下载工具(附源码)
Feb 07 #Python
Python中全局变量和局部变量的理解与区别
Feb 07 #Python
Python抖音快手代码舞(字符舞)的实现方法
Feb 07 #Python
You might like
从PHP $_SERVER相关参数判断是否支持Rewrite模块
2013/09/26 PHP
PHP CURL获取cookies模拟登录的方法
2013/11/04 PHP
服务器迁移php版本不同可能诱发的问题
2015/12/22 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
2017/08/07 PHP
利用javascript移动div层-javascript 拖动层
2009/03/22 Javascript
jQuery学习笔记(4)--Jquery中获取table中某列值的具体思路
2013/04/10 Javascript
jquery实现导航固定顶部的效果仿蘑菇街
2014/10/22 Javascript
JavaScript的事件代理和委托实例分析
2015/03/25 Javascript
简介JavaScript中setUTCSeconds()方法的使用
2015/06/12 Javascript
JS实现动态生成表格并提交表格数据向后端
2020/11/25 Javascript
js不间断滚动的简单实现
2016/06/03 Javascript
基于jQuery插件jqzoom实现的图片放大镜效果示例
2017/01/23 Javascript
JS实现的五级联动菜单效果完整实例
2017/02/23 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
2017/03/09 Javascript
js实现点击切换checkbox背景图片的简单实例
2017/05/08 Javascript
vuejs+element-ui+laravel5.4上传文件的示例代码
2017/08/12 Javascript
[01:58]最残酷竞争 2016国际邀请赛中国区预选赛积分循环赛回顾
2016/06/28 DOTA
Python中用PIL库批量给图片加上序号的教程
2015/05/06 Python
Python的Tornado框架的异步任务与AsyncHTTPClient
2016/06/27 Python
python web.py开发httpserver解决跨域问题实例解析
2018/02/12 Python
Python基于sklearn库的分类算法简单应用示例
2018/07/09 Python
在python 不同时区之间的差值与转换方法
2019/01/14 Python
Python3.5基础之NumPy模块的使用图文与实例详解
2019/04/24 Python
Pytorch实现LSTM和GRU示例
2020/01/14 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
Python机器学习工具scikit-learn的使用笔记
2021/01/28 Python
浅谈pc和移动端的响应式的使用
2019/01/03 HTML / CSS
美国知名平价彩妆品牌:e.l.f. Cosmetics
2017/11/20 全球购物
物流管理专业大学生自荐信
2013/10/04 职场文书
安全大检查反思材料
2014/01/31 职场文书
《狼》教学反思
2014/03/02 职场文书
物业管理专业自荐信
2014/07/01 职场文书
先进工作者主要事迹材料
2015/11/03 职场文书
2016七夕情人节寄语
2015/12/04 职场文书
会计工作自我鉴定范文
2019/06/21 职场文书