佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > 如何用Python編寫一個(gè)電子考勤系統(tǒng)

如何用Python編寫一個(gè)電子考勤系統(tǒng)

熱門標(biāo)簽:客戶服務(wù) 硅谷的囚徒呼叫中心 電話運(yùn)營(yíng)中心 企業(yè)做大做強(qiáng) 語(yǔ)音系統(tǒng) Win7旗艦版 百度AI接口 呼叫中心市場(chǎng)需求

實(shí)驗(yàn)項(xiàng)目簡(jiǎn)介

學(xué)?,F(xiàn)在需要實(shí)現(xiàn)一個(gè)電子考勤系統(tǒng),考慮到你們班已經(jīng)學(xué)過大數(shù)據(jù)應(yīng)用開發(fā)語(yǔ)言Python,準(zhǔn)備讓你們實(shí)現(xiàn)部分學(xué)生端考勤功能。經(jīng)過和老師的溝通,你了解到:
(1) 目前該系統(tǒng)已經(jīng)被學(xué)長(zhǎng)實(shí)現(xiàn)了部分功能,你們只需要完成剩余功能即可,需要你們完成的功能會(huì)使用
#todo的形式進(jìn)行標(biāo)注, todo后面會(huì)列出這個(gè)地方的功能,形式如下。

(2) 學(xué)生信息存儲(chǔ)在stu_infos.csv文件中,第一行是列名行,后面每一行都是一個(gè)學(xué)生的信息,包含學(xué)號(hào),姓名,密碼。內(nèi)容形式如下:

(3) 考勤記錄最終會(huì)被保存到attendance.csv文件中,第一行是列名行,后面每一行代表一個(gè)學(xué)生的考勤信息,包含學(xué)號(hào),姓名,時(shí)間,考勤狀態(tài)(只有出勤、遲到、請(qǐng)假、缺勤四種狀態(tài))。內(nèi)容格式如下:

(4) 學(xué)生信息需要首先被加載到student_infos列表中,student_info中的每個(gè)元素都是一個(gè)字典,字典中的鍵都是各自列名,而值則是每一行內(nèi)容,按照示例數(shù)據(jù)構(gòu)造出來的student_infos列表如下。

(5) 考勤系統(tǒng)老師端總共有兩個(gè)Python文件,一個(gè)main.py文件,該文件作為入口程序文件,實(shí)現(xiàn)主體框架,主體流程就是:加載數(shù)據(jù) 登錄 添加考勤數(shù)據(jù);一個(gè)stu_attendance.py文件,定義了數(shù)據(jù)加載、登錄等函數(shù)。

答題要求:
(1) 在stu_info.csv文件末尾添加一行自己的信息,密碼隨意寫,名字和學(xué)號(hào)必須是自己
(2) 查看兩個(gè)Python文件中的todo注釋,添加合適代碼,最終提供添加的代碼。
(3) 測(cè)試程序功能,提供程序運(yùn)行截圖。進(jìn)行登錄驗(yàn)證的時(shí)候使用自己的學(xué)號(hào)進(jìn)行登錄驗(yàn)證,并且需要測(cè)試如下2個(gè)分支:3次都登錄失敗的情況、登錄成功后成功添加考勤數(shù)據(jù)。

附加功能

添加一個(gè)查詢功能,輸入一個(gè)學(xué)生的姓名就可以獲取他的出勤數(shù)據(jù)信息

導(dǎo)入模塊

import csv
import time
student_infos = []

加載數(shù)據(jù)

def load_stu_info():
  """
  加載學(xué)生信息
  從stu_infos.csv文件中加載數(shù)據(jù)
  :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():
  """
  用戶使用學(xué)號(hào)和密碼進(jìn)行登錄
  最多讓用戶登錄三次,如果連續(xù)三次都登錄失敗(用戶名或者密碼錯(cuò)誤),只要密碼和用戶都正確表示登錄成功
  :return:登錄成功返回True和學(xué)號(hào),三次都登錄失敗返回False和None
  """
  retry_time = 0
  while retry_time  3:
    user_no = input('請(qǐng)輸入登錄賬號(hào):')
    password = input('請(qǐng)輸入密碼:')
    for i in student_infos:
      if i['no']==user_no and i['password']==password:
        return True,user_no
    print('用戶名或者密碼錯(cuò)誤?。。≌?qǐng)重新輸入。')
    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=['出勤','遲到','請(qǐng)假','缺勤']
  a=int(input("\t該學(xué)生出勤情況:1-出勤\t2-遲到\t3-請(qǐng)假\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])#寫入一行數(shù)據(jù)
    print("{}同學(xué){}數(shù)據(jù)已經(jīng)寫入成功!操作時(shí)間是{}".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("請(qǐng)輸入你需要查找的姓名:")
    print(" 學(xué)號(hào)\t\t姓名\t\t操作時(shí)間\t\t出勤狀態(tài)")
    for a in student:
      if a['name']==name:
        print(a['no']+'\t'+a['name']+'\t'+a['time']+'\t\t'+a['state'])
      else:
        print("無此人?。。?)
        break

主函數(shù)我就不給出了,有需要的可以自己編寫一下,如果需要可以私信我或者在這里下載數(shù)據(jù)集和源碼喲?。?!

點(diǎn)擊下載!

看看運(yùn)行效果喲!


每文一語(yǔ)

創(chuàng)作的思路來源于生活中細(xì)微的品味,勿驕勿躁,才是王道

到此這篇關(guān)于用Python編寫一個(gè)電子考勤系統(tǒng)的文章就介紹到這了,更多相關(guān)用Python編寫一個(gè)電子考勤系統(tǒng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • face++與python實(shí)現(xiàn)人臉識(shí)別簽到(考勤)功能
  • Python基于Opencv來快速實(shí)現(xiàn)人臉識(shí)別過程詳解(完整版)
  • 20行python代碼實(shí)現(xiàn)人臉識(shí)別
  • Python人臉識(shí)別第三方庫(kù)face_recognition接口說明文檔
  • 500行Python代碼打造刷臉考勤系統(tǒng)
  • python opencv人臉識(shí)別考勤系統(tǒng)的完整源碼

標(biāo)簽:山西 喀什 山西 濟(jì)南 安康 崇左 長(zhǎng)沙 海南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《如何用Python編寫一個(gè)電子考勤系統(tǒng)》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    汤原县| 繁峙县| 察雅县| 佳木斯市| 南丰县| 新乡市| 永平县| 南郑县| 兰考县| 新泰市| 恩施市| 阿拉善盟| 桐柏县| 商洛市| 南乐县| 和政县| 固始县| 城步| 柏乡县| 武功县| 卢氏县| 佛冈县| 那曲县| 大庆市| 乌审旗| 平潭县| 塔城市| 三穗县| 贵德县| 津市市| 黎平县| 柳州市| 灵璧县| 承德县| 河间市| 张家界市| 通榆县| 繁昌县| 永仁县| 汽车| 英德市|