今天给大家分享一个比较有意思的Python应用,用 Python 写了一个电子考勤系统,源码已在文章全部给出,记得点赞收藏哦~

项目简介

学校现在需要实现一个电子考勤系统,考虑到你们班已经学过大数据应用开发语言Python,准备让你们实现部分学生端考勤功能。经过和老师的沟通,你了解到:

(1) 目前该系统已经被学长实现了部分功能,你们只需要完成剩余功能即可,需要你们完成的功能会使用

#todo的形式进行标注, todo后面会列出这个地方的功能,形式如下。

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

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

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

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

答题要求

  • 在stu_info.csv文件末尾添加一行自己的信息,密码随意写,名字和学号必须是自己

  • 查看两个Python文件中的todo注释,添加合适代码,最终提供添加的代码。

  • 测试程序功能,提供程序运行截图。进行登录验证的时候使用自己的学号进行登录验证,并且需要测试如下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 = 0while 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_noprint('用户名或者密码错误!!!请重新输入。')retry_time += 1else:return False, None

考勤记录写入

def add(user_no):for x in student_infos:if user_no==x['no']:name=x['name']breaktimes=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

主函数main.py

from student.stu_attendance import *
if __name__ == '__main__':load_stu_info()success, stu_no = login()print(stu_no)if success:print('登录成功!')add(stu_no)q=int(input("你想要查询出勤数据吗?\tyes(1)--no(0)"))if q==1:select()else:print("欢迎下次登录电子考勤系统")else:print('登录失败')

看看运行效果哟!

用 Python 写了一个电子考勤系统!相关推荐

  1. 用Python写了一个电子考勤系统!

    今天给大家分享一个比较有意思的Python应用,用 Python 写了一个电子考勤系统,源码已在文章全部给出,记得点赞收藏哦- 项目简介 学校现在需要实现一个电子考勤系统,考虑到你们班已经学过大数据应 ...

  2. 耗时半年,用 Python 写了一个电子考勤系统

    今天给大家分享一个比较有意思的 Python 应用,用 Python 写了一个电子考勤系统,源码获取在下方文章中给出,记得点赞收藏哦- 文章目录 电子考勤完整代码 项目简介 答题要求 附加功能 导入模 ...

  3. 用Python写了一个电子考勤系统

    项目简介 学校现在需要实现一个电子考勤系统,考虑到你们班已经学过大数据应用开发语言Python,准备让你们实现部分学生端考勤功能.经过和老师的沟通,你了解到: (1) 目前该系统已经被学长实现了部分功 ...

  4. 用 Python 写了一个电子考勤系统

    学校现在需要实现一个电子考勤系统,考虑到你们班已经学过大数据应用开发语言Python,准备让你们实现部分学生端考勤功能.经过和老师的沟通,你了解到: (1) 目前该系统已经被学长实现了部分功能,你们只 ...

  5. 我通过Python给我们班写了个电子考勤系统!室友为啥孤立我了?

    前言 今天美女导师突然找到我,我还以为要找我来一场师生恋呢.原来是她不知道从哪里听到我会一些编程语言,就过来问我能不能写一个电子考勤系统,就像上班要打卡一样,比如八点上课,十点下课,那就八点打上课卡, ...

  6. 用Python编写一个电子考勤系统

    实验项目简介 学校现在需要实现一个电子考勤系统,考虑到你们班已经学过大数据应用开发语言Python,准备让你们实现部分学生端考勤功能.经过和老师的沟通,你了解到: (1) 目前该系统已经被学长实现了部 ...

  7. 企业考勤管理系统python_用Python编写一个电子考勤系统!谁还敢迟到?

    学校现在需要实现一个电子考勤系统,考虑到你们班已经学过大数据应用开发语言Python,准备让你们实现部分学生端考勤功能.经过和老师的沟通,你了解到: (1) 目前该系统已经被学长实现了部分功能,你们只 ...

  8. python股票全套系统_熬了一晚上,小白用Python写了一个股票提醒系统

    码农小马七夕节去相亲了,见了一个不错的姑娘,长的很是甜美!聊着聊着很投缘!通过介绍人了解到,对方也很满意--想着自己单身多年的生活就要结束啦,心里满是欢喜,美美哒!可是突然想起年初还有几万块在股市里面 ...

  9. python写一个系统-熬了一晚上,小白用Python写了一个股票提醒系统

    码农小马七夕节去相亲了,见了一个不错的姑娘,长的非常甜美!聊着聊着很投缘!通过介绍人了解到,对方也很满意--想着自己单身多年的生活就要结束啦,心里满是欢喜,美美哒!但是突然想起年初还有几万块在股市里面 ...

最新文章

  1. 空值为0非空为1_万达广场4周年,1降到底!0元送万张杂技团门票、人气餐饮6.8折,这波周年庆我先锁为敬...
  2. vue组件通信大总结
  3. python实现的、带GUI界面电影票房数据可视化程序
  4. P1421 小玉买文具【入门题】
  5. 局域网远程访问时显示密码过期
  6. 搜狗输入法 linux 源码,1.下载搜狗输入法for linux源码包:
  7. 设置open_basedir防止跨站攻击
  8. 数显之家快讯:【SHIO世硕心语】2021年中国10大最赚钱的机会!
  9. centos7 mysql libssl_centos7.2安装mysql5.7.13及ssl主从复制
  10. 微型计算机显示器接口,微型计算机接口技术8-2LED显示器接口-Read.PPT
  11. excel取整函数_10个Excel实用技巧 | 附案例详解
  12. 美国贝勒大学计算机科学专业怎么样,美国贝勒大学怎么样
  13. 显著性目标检测SOD论文大盘点
  14. C++并查集算法(详细)
  15. 携程Android App插件化和动态加载实践
  16. 云南大学 计算机技术 调剂,云南大学调剂信息(全),希望对大家有所帮助!
  17. java斐波那契优化_用HashMap优化斐波那契数列 java算法
  18. 双向循环链表的头插法和尾插法
  19. 手机来电秀怎么开启_360手机卫士怎么设置来电秀
  20. 2022年奢侈品行业研究报告

热门文章

  1. 风控评分卡模型——逻辑回归
  2. SQL函数---SQL NOW()
  3. python图像检索
  4. 柯马机器人示教器编程_柯马COMAURacer3协作机器人维修示教器故障
  5. vue input判断值是扫码枪还是键盘输入
  6. 怎么获取网页高度、屏幕高度、滚动高度?
  7. CPMP、PMP及IPMP的全面比较
  8. 提高PLC编程能力的6种电路,新手必学!
  9. NCCloud OpenAPI扩展开发
  10. MATLAB程序设计与应用 3.1 特殊矩阵