今天给大家分享一个比较有意思的Python应用,用 Python 写了一个电子考勤系统,源码已在文章全部给出,记得点赞收藏哦~

文章目录

  • 项目简介
  • 技术交流
    • 答题要求
    • 附加功能
  • 导入模块
  • 加载数据
  • 登录
  • 考勤记录写入
  • 查询考勤记录
  • 主函数main.py

项目简介

学校现在需要实现一个电子考勤系统,考虑到你们班已经学过大数据应用开发语言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文件,定义了数据加载、登录等函数。

技术交流

技术要学会分享、交流,不建议闭门造车。

本文技术由粉丝群小伙伴推荐分享。源码、数据、技术交流提升,均可加交流群获取,群友已超过3000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。

方式①、添加微信号:dkl88191,备注:来自CSDN +技术交流
方式②、微信搜索公众号:Python学习与数据挖掘,后台回复:加群

答题要求

  1. 在stu_info.csv文件末尾添加一行自己的信息,密码随意写,名字和学号必须是自己

  2. 查看两个Python文件中的todo注释,添加合适代码,最终提供添加的代码。

  3. 测试程序功能,提供程序运行截图。进行登录验证的时候使用自己的学号进行登录验证,并且需要测试如下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("\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))

查询考勤记录

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

看看运行效果哟!

从零开发一个非常有意思的 Python 项目:电子考勤系统相关推荐

  1. 如何从零开发一个低代码平台,有哪些成熟技术组件可用

    目前国内主流的低代码开发平台有:宜搭.云程.简道云.明道云.氚云.伙伴云.道一云.JEPaaS.华炎魔方.搭搭云.JeecgBoot .RuoYi等.这些平台各有优劣势,定位也不同,用户可以根据自己需 ...

  2. 视频教程-从零开发一个iOS企业级项目实战之我的云音乐视频 教程-iOS

    从零开发一个iOS企业级项目实战之我的云音乐视频 教程 任苹蜻,爱学啊创始人 & CEO,曾就职于某二车手公司担任Android工程师后离职创办爱学啊,我们的宗旨是:人生苦短,我们只做好课!熟 ...

  3. 通过python各种开源库,开发一个适合大部分公司测试项目框架,确定名字AutoTestProjects

    通过python各种开源库,开发一个适合大部分公司测试项目框架,确定名字AutoTestProjects 一,简介 1.目前市场上的框架一般都需要码农进行编写,对测试小白非常的不友好,而且现在整个IT ...

  4. 适合新手:从零开发一个IM服务端(基于Netty,有完整源码)

    本文由"yuanrw"分享,博客:juejin.im/user/5cefab8451882510eb758606,收录时内容有改动和修订. 0.引言 站长提示:本文适合IM新手阅读 ...

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

    今天给大家分享一个比较有意思的Python应用,用 Python 写了一个电子考勤系统,源码已在文章全部给出,记得点赞收藏哦- 项目简介 学校现在需要实现一个电子考勤系统,考虑到你们班已经学过大数据应 ...

  6. 耗时半年,用 Python 写了一个电子考勤系统

    今天给大家分享一个比较有意思的 Python 应用,用 Python 写了一个电子考勤系统,源码获取在下方文章中给出,记得点赞收藏哦- 文章目录 电子考勤完整代码 项目简介 答题要求 附加功能 导入模 ...

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

    今天给大家分享一个比较有意思的Python应用,用 Python 写了一个电子考勤系统,源码已在文章全部给出,记得点赞收藏哦- 项目简介 学校现在需要实现一个电子考勤系统,考虑到你们班已经学过大数据应 ...

  8. 目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还会延误抢救时机。某医院打算开发一个以计算机为中心的患者监护系统,请用数据流图描述下面系统的业务流程。

    目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还会延误抢救时机.某医院打算开发一个以计算机为中心的患者监护系统,请用数据流图描述下面系统的业务流程(画出两 ...

  9. 用Python编写一个电子考勤系统

    实验项目简介 学校现在需要实现一个电子考勤系统,考虑到你们班已经学过大数据应用开发语言Python,准备让你们实现部分学生端考勤功能.经过和老师的沟通,你了解到: (1) 目前该系统已经被学长实现了部 ...

最新文章

  1. 我与前端之间不得不说的三天两夜之javaScript
  2. boost::pfr::for_each_field相关的测试程序
  3. [BUUCTF-pwn]——jarvisoj_level3_x64
  4. 设置secureCRT中vim的字体颜色
  5. -bash: mysql: command not found解决方法(zabbix监控mysql失败)
  6. 2022年2月插电混动保值率TOP5:比亚迪车型上榜量第一
  7. Spring学习总结(8)——25个经典的Spring面试问答
  8. PyInstaller 生成exe文件
  9. invoke 魔术_PHP常用魔术方法(__invoke魔术方法)
  10. 基于遥感图像的船舶目标识别技术
  11. 数据--第33课 - 树课后练习
  12. 多看系统kindle最新版_更新到最新版微信后,我要吹爆这一功能!
  13. 高德 android 百度转高德,记一次百度和高德经纬度互转(不是你想的那样)
  14. 云计算学习之路——Nginx流量控制
  15. 价格行为交易策略:锤子十字线,Fakey,内部日烛线
  16. 如何用计算机求特征值特征向量,利用QR算法求解矩阵的特征值和特征向量
  17. 让人心疼的12句话。。哪句说到你的痛了?
  18. Centos7系或中标麒麟ifconfig/ip addr无法显示ip地址的详细解决方法
  19. 分光器尺寸及光损耗计算
  20. Android 10.0相关权限的变更(使用WiFi Direct必须打开定位)

热门文章

  1. 科技爱好者周刊:第 79 期
  2. vscode 添加用户代码片段(快速生成 vue 模板)
  3. 使用Drozer对Android四大组件进行测试
  4. 天正服务器不显示,天正菜单无法显示怎么办?
  5. 基于STM32的机器人控制仿真
  6. Winusb WinUsb_SetPipePolicy函数的使用
  7. python年份天干地支代码_Python------天干地支纪年及星座计算
  8. 案例 局部获取坐标位置 和全局获取坐标位置
  9. Linux Debian: 命令行连接 wifi 配置,解决在DELL戴尔和Thinkpad联想上Wicd找不到无线网问题 (用 ifup 或 nmcli )
  10. ORACLE优化器RBO与CBO介绍总结