用Python写了一个电子考勤系统!
用Python写了一个电子考勤系统!
gh_1d7504e4dee1
回复关键字 `156` 领取神秘礼包!专注于Python、Pycharm注册码、Pycharm教程、爬虫、数据分析、大数据、人工智能等技术分享。
今天给大家分享一个比较有意思的Python应用,用 Python 写了一个电子考勤系统,源码已在文章全部给出,记得点赞收藏哦~
点击领取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 =
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(
" 该学生出勤情况:1-出勤 2-迟到 3-请假 4-缺勤:"
))
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(
" 学号 姓名 操作时间 出勤状态"
)
for
a
in
student:
if
a[
’name’
]==name:
print(a[
’no’
]+
’ ’
+a[
’name’
]+
’ ’
+a[
’time’
]+
’ ’
+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(
"你想要查询出勤数据吗? yes(1)--no(0)"
))
if
q==
1
:
select
()
else
:
print
(
"欢迎下次登录电子考勤系统"
)
else
:
print
(
’登录失败’
)
看看运行效果哟!
程序员技术交流群
扫码进群记得备注: 城市、昵称和技术方向 。
阅读更多
-
Python制作进度条,原来有这么多方法 -
【Pycharm教程】在 PyCharm 中使用 requirements.txt. -
PyCharm连接MySQL数据库竟然如此简单!
-
2023年血糖新标准公布,不是3.9-6.1,快来看看你的血糖正常吗? 2023-02-07
-
2023年各省最新电价一览!8省中午执行谷段电价! 2023-01-03
-
GB 55009-2021《燃气工程项目规范》(含条文说明),2022年1月1日起实施 2021-11-07
-
PPT导出高分辨率图片的四种方法 2022-09-22
-
2023年最新!国家电网27家省级电力公司负责人大盘点 2023-03-14
-
全国消防救援总队主官及简历(2023.2) 2023-02-10
-
盘点 l 中国石油大庆油田现任领导班子 2023-02-28
-
我们的前辈!历届全国工程勘察设计大师完整名单! 2022-11-18
-
关于某送变电公司“4·22”人身死亡事故的快报 2022-04-26
