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⽂件,定义了数据加载、登录等函数。
答题要求:
(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 = ader(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 = ader(file)
header = next(f_csv)
for row in f_csv:
students = {}
for index in range(4):
students[header[index]] = row[index]
student.append(students)
best of me
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
主函数我就不给出了,有需要的可以⾃⼰编写⼀下,如果需要可以私信我或者在这⾥下载数据集和源码哟点击下载
看看运⾏效果哟!
每⽂⼀语
创作的思路来源于⽣活中细微的品味,勿骄勿躁,才是王道