0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

马哥Linux运维 来源:CSDN技术社区 作者:王小王-123 2022-11-22 09:24 次阅读

项目简介

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

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

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

ef54a8dc-69a1-11ed-8abf-dac502259ad0.png

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

ef685f30-69a1-11ed-8abf-dac502259ad0.png

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

ef8782ca-69a1-11ed-8abf-dac502259ad0.png

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

ef9c52fe-69a1-11ed-8abf-dac502259ad0.png

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

答题要求

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

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

测试程序功能,提供程序运行截图。进行登录验证的时候使用自己的学号进行登录验证,并且需要测试如下2个分支:3次都登录失败的情况、登录成功后成功添加考勤数据。

附加功能

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

导入模块

importcsv
importtime
student_infos=[]

加载数据

defload_stu_info():
"""
加载学生信息
从stu_infos.csv文件中加载数据
无
"""
withopen(r"stu_infos.csv",encoding='utf-8-sig')asfile:
f_csv=csv.reader(file)
header=next(f_csv)
forrowinf_csv:
student_info={}
forindexinrange(3):
student_info[header[index]]=row[index]
student_infos.append(student_info)

登录

deflogin():
"""
用户使用学号和密码进行登录
最多让用户登录三次,如果连续三次都登录失败(用户名或者密码错误),只要密码和用户都正确表示登录成功
登录成功返回True和学号,三次都登录失败返回False和None
"""
retry_time=0
whileretry_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

考勤记录写入

defadd(user_no):
forxinstudent_infos:
ifuser_no==x['no']:
name=x['name']
break
times=time.strftime("%Y-%m-%d%H:%M:%S",time.localtime())
choices=['出勤','迟到','请假','缺勤']
a=int(input("	该学生出勤情况:1-出勤	2-迟到	3-请假	4-缺勤:"))
ifa==1:
data=choices[0]
elifa==2:
data=choices[1]
elifa==3:
data=choices[2]
else:
data=choices[3]
withopen(r"attendance.csv",'a+',newline='',encoding='utf-8')asf:
wf=csv.writer(f)
wf.writerow([user_no,name,times,data])#写入一行数据
print("{}同学{}数据已经写入成功!操作时间是{}".format(name,data,times))

查询考勤记录

defselect():
student=[]
withopen(r"attendance.csv",encoding='utf-8-sig')asfile:
f_csv=csv.reader(file)
header=next(f_csv)
forrowinf_csv:
students={}
forindexinrange(4):
students[header[index]]=row[index]
student.append(students)
name=input("请输入你需要查找的姓名:")
print("学号		姓名		操作时间		出勤状态")
forainstudent:
ifa['name']==name:
print(a['no']+'	'+a['name']+'	'+a['time']+'		'+a['state'])
else:
print("无此人!!!")
break

主函数main.py

fromstudent.stu_attendanceimport*
if__name__=='__main__':
load_stu_info()
success,stu_no=login()
print(stu_no)
ifsuccess:
print('登录成功!')
add(stu_no)
q=int(input("你想要查询出勤数据吗?	yes(1)--no(0)"))
ifq==1:
select()
else:
print("欢迎下次登录电子考勤系统")
else:
print('登录失败')

看看运行效果哟!

efaa55e8-69a1-11ed-8abf-dac502259ad0.pngf0b88fa4-69a1-11ed-8abf-dac502259ad0.pngf0c4184c-69a1-11ed-8abf-dac502259ad0.pngf0f3077e-69a1-11ed-8abf-dac502259ad0.png

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    54

    文章

    4763

    浏览量

    84338
  • 考勤系统
    +关注

    关注

    0

    文章

    40

    浏览量

    11193

原文标题:用 Python 写了一个电子考勤系统

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FPGA 的考勤系统

    本帖最后由 wang; 于 2012-10-31 22:45 编辑 《基于FPGA的考勤系统的设计与实现》 我是这么想法 FPGA控制 做
    发表于 10-31 22:39

    LPC2000芯片设计考勤机。。求帮助

    LPC2000设计考勤机,功能包括:1、具有IC卡读写功能2、将考勤信息通过RS485传到本地电脑3、将
    发表于 10-31 20:02

    【Aworks申请】基于致远电子AWorks开发板的指纹考勤系统

    相信我在嵌入式设计这条路上直走下去项目描述:利用致远电子AWorks开发板设计指纹考勤系统
    发表于 06-30 23:43

    【STM32F411 Nucleo试用体验】报告4------python写了最简单的串口通信程序

    python写了最简单的串口通信程序,其实是为下步写上位机作准备,因为前面没有学过
    发表于 08-19 23:11

    基于指纹模板的考勤系统设计

    引言  正规、科学的现代企业管理制度是创造高效益、高速发展的优秀企业的必要条件,人事考勤制度是企业管理制度的重要组成部分。科学地管理考勤不仅可以保证各项经营管理计划得以落实,而且
    发表于 11-13 16:14

    如何利用52单片机制作打卡考勤+测温一体系统

    52单片机制作打卡考勤+测温一体系统(含后端管理平台)技术要求python+flask+tcp基础(管理系统后端代码)angular(管理系统
    发表于 12-02 07:36

    人脸考勤系统设计方案

    人脸考勤系统,是将先进的人脸识别技术应用到考勤领域的成功产品。
    发表于 08-18 09:38 1.2w次阅读
    人脸<b class='flag-5'>考勤</b><b class='flag-5'>系统</b>设计方案

    python脚本看透Linux程序对库的依赖

    我今天写了小小的python程序,可以在完全不看源代码的情况下,分析a如果调用b.so的时候,会引用b.so的哪些函数。
    的头像 发表于 12-24 13:44 3109次阅读
    <b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>python</b>脚本看透Linux程序对库的依赖

    CSDN为所有感兴趣的开发者提供了探讨和学习Python的契机

    (部情景幽默剧)。两年后,Python一个版本终于问世,Guido C 语言写了编译器,并能调用 C 库。它还包括类、函数、异常
    的头像 发表于 03-10 10:03 2767次阅读

    Python写的电影推荐系统的程序和工程文件资料免费下载

    本文档的主要内容详细介绍的是Python写的电影推荐系统的资料免费下载。
    发表于 05-31 08:00 1次下载
    <b class='flag-5'>用</b><b class='flag-5'>Python</b>写的<b class='flag-5'>一</b><b class='flag-5'>个</b>电影推荐<b class='flag-5'>系统</b>的程序和工程文件资料免费下载

    如何使用Python编写桌面软件系统?步骤有哪些

    建议直接python编写网页服务器,然后就在本机浏览器来使用。
    的头像 发表于 01-25 12:08 4810次阅读

    使用AVR微控制器构建生物识别考勤系统

    在这个项目中,我们将使用 AVR 微控制器构建生物识别考勤系统取代人工考勤程序。该系统将更加
    发表于 08-24 15:49 624次阅读
    使用AVR微控制器构建<b class='flag-5'>一</b><b class='flag-5'>个</b>生物识别<b class='flag-5'>考勤</b><b class='flag-5'>系统</b>

    基于RFID的智能考勤系统

    电子发烧友网站提供《基于RFID的智能考勤系统.zip》资料免费下载
    发表于 02-02 16:21 6次下载
    基于RFID的智能<b class='flag-5'>考勤</b><b class='flag-5'>系统</b>

    如何构建基于RFID的考勤系统

    在这篇文章中,我们将构建基于RFID的考勤系统,该系统可以记录给定时间窗口内 12 名学生/教职员工的出勤情况,该
    的头像 发表于 07-27 10:30 1012次阅读
    如何构建<b class='flag-5'>一</b><b class='flag-5'>个</b>基于RFID的<b class='flag-5'>考勤</b><b class='flag-5'>系统</b>?

    Python失宠!Hugging FaceRust新写了ML框架

    Pytorch 框架是 Python 编写的,API 也是基于 Python 的,这让用户上手开发会非常快。另外,Python 本身就是
    的头像 发表于 08-11 16:24 623次阅读
    <b class='flag-5'>Python</b>失宠!Hugging Face<b class='flag-5'>用</b>Rust新<b class='flag-5'>写了</b><b class='flag-5'>一</b><b class='flag-5'>个</b>ML框架