首页 > 行业资讯 > 用Python写了一个电子考勤系统!

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

时间:2022-11-23 来源: 浏览:

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

点击关注 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 ( ’登录失败’ )

看看运行效果哟!

程序员技术交流群

扫码进群记得备注: 城市、昵称和技术方向

  阅读更多

  1. Python制作进度条,原来有这么多方法
  2. 【Pycharm教程】在 PyCharm 中使用 requirements.txt.
  3. PyCharm连接MySQL数据库竟然如此简单!

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐