Fundamentals 8 min read

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.

Python Programming Learning Circle
Python Programming Learning Circle
Python Programming Learning Circle
Python Electronic Attendance System Tutorial with Full Source Code and Assignment Instructions

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, None

Add 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("无此人!!!")
            break

Main 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.

pythonCSVfile-ioAttendanceBeginner
Python Programming Learning Circle
Written by

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.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.