Python Electronic Attendance System Tutorial with Full Source Code and Assignment Instructions
This article presents a step‑by‑step tutorial for building a Python‑based electronic attendance system, describing required CSV data files, outlining student assignment tasks, providing complete source code for loading data, login, attendance recording, query functions, and a main driver script.
Project Overview
The article introduces a Python electronic attendance system project for students, explaining that the school needs a system to record attendance and that the class has already learned Python, so they are asked to implement the remaining student‑side functionality.
Data Files
Student information is stored in stu_infos.csv (columns: student number, name, password). Attendance records are saved in attendance.csv (columns: student number, name, timestamp, status – one of present, late, leave, absent).
Assignment Requirements
Add a row with your own information to stu_infos.csv (use your real name and student number).
Locate the #todo comments in the two Python files and implement the missing code, then provide the added code.
Test the program: log in with your student number, demonstrate three consecutive login failures, and show a successful login followed by adding an attendance record.
Additional Feature
Implement a query function that, given a student's name, retrieves and displays all of their attendance records.
Code Modules
Import Modules
import csv
import time
student_infos = []Load Data
def load_stu_info():
"""
Load student information from stu_infos.csv
"""
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)Login
def login():
"""
User login with student number and password, up to three attempts.
Returns (True, student_no) on success, otherwise (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, NoneAdd Attendance Record
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))Query Attendance Records
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("无此人!!!")
breakMain Program (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('登录失败')Demonstration
The article includes screenshots showing the program’s execution results.
Promotional QR Code
At the end of the article a QR code is provided for readers to obtain free Python learning resources, which is promotional but unrelated to the core tutorial.
Python Programming Learning Circle
A global community of Chinese Python developers offering technical articles, columns, original video tutorials, and problem sets. Topics include web full‑stack development, web scraping, data analysis, natural language processing, image processing, machine learning, automated testing, DevOps automation, and big data.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.