Fundamentals 8 min read

Python Electronic Attendance System Tutorial with Complete Source Code

This article presents a step‑by‑step tutorial for building a Python‑based electronic attendance system, covering data loading from CSV files, user login, attendance recording, query functionality, and includes all required source code with usage instructions.

Python Programming Learning Circle
Python Programming Learning Circle
Python Programming Learning Circle
Python Electronic Attendance System Tutorial with Complete Source Code

This tutorial guides readers through creating a simple electronic attendance system using Python. The project assumes a CSV file stu_infos.csv containing student IDs, names, and passwords, and another CSV attendance.csv to store attendance records.

Module imports :

import csv<br/>import time<br/>student_infos = []

Loading student data – the load_stu_info() function reads stu_infos.csv , builds a list of dictionaries (one per student), and stores it in 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)

User login – the login() function allows up to three attempts, checking the entered ID and password against student_infos and returning a success flag and the student number:

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

Recording attendance – the add(user_no) function finds the student's name, asks the user to choose an attendance status, and appends a new row to attendance.csv :

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))

Querying attendance records – the select() function loads attendance.csv , prompts for a name, and prints all matching 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) – imports all functions, loads student data, performs login, records attendance, and optionally runs the query:

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('登录失败')

The article also includes screenshots of the program’s execution, a QR code for a free Python public‑course resource, and links to related Python tutorials, but the core educational content is the complete, runnable attendance‑system code and its step‑by‑step explanation.

command lineTutorialCSVfile-ioAttendance
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.