0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

馬哥Linux運(yùn)維 ? 來(lái)源:CSDN技術(shù)社區(qū) ? 作者:王小王-123 ? 2022-11-22 09:24 ? 次閱讀

項(xiàng)目簡(jiǎn)介

學(xué)校現(xiàn)在需要實(shí)現(xiàn)一個(gè)電子考勤系統(tǒng),考慮到你們班已經(jīng)學(xué)過(guò)大數(shù)據(jù)應(yīng)用開(kāi)發(fā)語(yǔ)言Python,準(zhǔn)備讓你們實(shí)現(xiàn)部分學(xué)生端考勤功能。經(jīng)過(guò)和老師的溝通,你了解到:

(1) 目前該系統(tǒng)已經(jīng)被學(xué)長(zhǎng)實(shí)現(xiàn)了部分功能,你們只需要完成剩余功能即可,需要你們完成的功能會(huì)使用

#todo的形式進(jìn)行標(biāo)注, todo后面會(huì)列出這個(gè)地方的功能,形式如下。

ef54a8dc-69a1-11ed-8abf-dac502259ad0.png

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

ef685f30-69a1-11ed-8abf-dac502259ad0.png

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

ef8782ca-69a1-11ed-8abf-dac502259ad0.png

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

ef9c52fe-69a1-11ed-8abf-dac502259ad0.png

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

答題要求

在stu_info.csv文件末尾添加一行自己的信息,密碼隨意寫,名字和學(xué)號(hào)必須是自己

查看兩個(gè)Python文件中的todo注釋,添加合適代碼,最終提供添加的代碼。

測(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)入模塊

importcsv
importtime
student_infos=[]

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

defload_stu_info():
"""
加載學(xué)生信息
從stu_infos.csv文件中加載數(shù)據(jù)
無(wú)
"""
withopen(r"stu_infos.csv",encoding='utf-8-sig')asfile:
f_csv=csv.reader(file)
header=next(f_csv)
forrowinf_csv:
student_info={}
forindexinrange(3):
student_info[header[index]]=row[index]
student_infos.append(student_info)

登錄

deflogin():
"""
用戶使用學(xué)號(hào)和密碼進(jìn)行登錄
最多讓用戶登錄三次,如果連續(xù)三次都登錄失?。ㄓ脩裘蛘呙艽a錯(cuò)誤),只要密碼和用戶都正確表示登錄成功
登錄成功返回True和學(xué)號(hào),三次都登錄失敗返回False和None
"""
retry_time=0
whileretry_time

考勤記錄寫入

defadd(user_no):
forxinstudent_infos:
ifuser_no==x['no']:
name=x['name']
break
times=time.strftime("%Y-%m-%d%H:%M:%S",time.localtime())
choices=['出勤','遲到','請(qǐng)假','缺勤']
a=int(input("	該學(xué)生出勤情況:1-出勤	2-遲到	3-請(qǐng)假	4-缺勤:"))
ifa==1:
data=choices[0]
elifa==2:
data=choices[1]
elifa==3:
data=choices[2]
else:
data=choices[3]
withopen(r"attendance.csv",'a+',newline='',encoding='utf-8')asf:
wf=csv.writer(f)
wf.writerow([user_no,name,times,data])#寫入一行數(shù)據(jù)
print("{}同學(xué){}數(shù)據(jù)已經(jīng)寫入成功!操作時(shí)間是{}".format(name,data,times))

查詢考勤記錄

defselect():
student=[]
withopen(r"attendance.csv",encoding='utf-8-sig')asfile:
f_csv=csv.reader(file)
header=next(f_csv)
forrowinf_csv:
students={}
forindexinrange(4):
students[header[index]]=row[index]
student.append(students)
name=input("請(qǐng)輸入你需要查找的姓名:")
print("學(xué)號(hào)		姓名		操作時(shí)間		出勤狀態(tài)")
forainstudent:
ifa['name']==name:
print(a['no']+'	'+a['name']+'	'+a['time']+'		'+a['state'])
else:
print("無(wú)此人?。?!")
break

主函數(shù)main.py

fromstudent.stu_attendanceimport*
if__name__=='__main__':
load_stu_info()
success,stu_no=login()
print(stu_no)
ifsuccess:
print('登錄成功!')
add(stu_no)
q=int(input("你想要查詢出勤數(shù)據(jù)嗎?	yes(1)--no(0)"))
ifq==1:
select()
else:
print("歡迎下次登錄電子考勤系統(tǒng)")
else:
print('登錄失敗')

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

efaa55e8-69a1-11ed-8abf-dac502259ad0.pngf0b88fa4-69a1-11ed-8abf-dac502259ad0.pngf0c4184c-69a1-11ed-8abf-dac502259ad0.pngf0f3077e-69a1-11ed-8abf-dac502259ad0.png

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4797

    瀏覽量

    84727
  • 考勤系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    40

    瀏覽量

    11215

原文標(biāo)題:用 Python 寫了一個(gè)電子考勤系統(tǒng)

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FPGA 的考勤系統(tǒng)

    本帖最后由 wang; 于 2012-10-31 22:45 編輯 《基于FPGA的考勤系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)》 我是這么個(gè)想法 FPGA控制 做
    發(fā)表于 10-31 22:39

    LPC2000芯片設(shè)計(jì)個(gè)考勤機(jī)。。求幫助

    LPC2000設(shè)計(jì)個(gè)考勤機(jī),功能包括:1、具有IC卡讀寫功能2、將考勤信息通過(guò)RS485傳到本地電腦3、將
    發(fā)表于 10-31 20:02

    【Aworks申請(qǐng)】基于致遠(yuǎn)電子AWorks開(kāi)發(fā)板的指紋考勤系統(tǒng)

    相信我在嵌入式設(shè)計(jì)這條路上直走下去項(xiàng)目描述:利用致遠(yuǎn)電子AWorks開(kāi)發(fā)板設(shè)計(jì)個(gè)指紋考勤系統(tǒng)
    發(fā)表于 06-30 23:43

    【STM32F411 Nucleo試用體驗(yàn)】報(bào)告4------python寫了個(gè)最簡(jiǎn)單的串口通信程序

    python寫了個(gè)最簡(jiǎn)單的串口通信程序,其實(shí)是為下步寫上位機(jī)作準(zhǔn)備,因?yàn)榍懊鏇](méi)有學(xué)過(guò)
    發(fā)表于 08-19 23:11

    基于指紋模板的考勤系統(tǒng)設(shè)計(jì)

    引言  正規(guī)、科學(xué)的現(xiàn)代企業(yè)管理制度是創(chuàng)造個(gè)高效益、高速發(fā)展的優(yōu)秀企業(yè)的必要條件,人事考勤制度是企業(yè)管理制度的重要組成部分??茖W(xué)地管理考勤不僅可以保證各項(xiàng)經(jīng)營(yíng)管理計(jì)劃得以落實(shí),而且
    發(fā)表于 11-13 16:14

    如何利用52單片機(jī)制作打卡考勤+測(cè)溫一體系統(tǒng)

    52單片機(jī)制作打卡考勤+測(cè)溫一體系統(tǒng)(含后端管理平臺(tái))技術(shù)要求python+flask+tcp基礎(chǔ)(管理系統(tǒng)后端代碼)angular(管理系統(tǒng)
    發(fā)表于 12-02 07:36

    人臉考勤系統(tǒng)設(shè)計(jì)方案

    人臉考勤系統(tǒng),是將先進(jìn)的人臉識(shí)別技術(shù)應(yīng)用到考勤領(lǐng)域的個(gè)成功產(chǎn)品。
    發(fā)表于 08-18 09:38 ?1.2w次閱讀
    人臉<b class='flag-5'>考勤</b><b class='flag-5'>系統(tǒng)</b>設(shè)計(jì)方案

    個(gè)python腳本看透Linux程序?qū)?kù)的依賴

    我今天寫了個(gè)小小的python程序,可以在完全不看源代碼的情況下,分析a如果調(diào)用b.so的時(shí)候,會(huì)引用b.so的哪些函數(shù)。
    的頭像 發(fā)表于 12-24 13:44 ?3167次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>python</b>腳本看透Linux程序?qū)?kù)的依賴

    CSDN為所有感興趣的開(kāi)發(fā)者提供了個(gè)探討和學(xué)習(xí)Python的契機(jī)

    (部情景幽默劇)。兩年后,Python一個(gè)版本終于問(wèn)世,Guido C 語(yǔ)言寫了編譯器,并能調(diào)用 C 庫(kù)。它還包括類、函數(shù)、異常
    的頭像 發(fā)表于 03-10 10:03 ?2812次閱讀

    Python寫的個(gè)電影推薦系統(tǒng)的程序和工程文件資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是Python寫的個(gè)電影推薦系統(tǒng)的資料免費(fèi)下載。
    發(fā)表于 05-31 08:00 ?1次下載
    <b class='flag-5'>用</b><b class='flag-5'>Python</b>寫的<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>電影推薦<b class='flag-5'>系統(tǒng)</b>的程序和工程文件資料免費(fèi)下載

    如何使用Python編寫個(gè)桌面軟件系統(tǒng)?步驟有哪些

    建議直接python編寫個(gè)網(wǎng)頁(yè)服務(wù)器,然后就在本機(jī)瀏覽器來(lái)使用。
    的頭像 發(fā)表于 01-25 12:08 ?4870次閱讀

    使用AVR微控制器構(gòu)建個(gè)生物識(shí)別考勤系統(tǒng)

    在這個(gè)項(xiàng)目中,我們將使用 AVR 微控制器構(gòu)建個(gè)生物識(shí)別考勤系統(tǒng)取代人工考勤程序。該系統(tǒng)將更加
    發(fā)表于 08-24 15:49 ?667次閱讀
    使用AVR微控制器構(gòu)建<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>生物識(shí)別<b class='flag-5'>考勤</b><b class='flag-5'>系統(tǒng)</b>

    基于RFID的智能考勤系統(tǒng)

    電子發(fā)燒友網(wǎng)站提供《基于RFID的智能考勤系統(tǒng).zip》資料免費(fèi)下載
    發(fā)表于 02-02 16:21 ?6次下載
    基于RFID的智能<b class='flag-5'>考勤</b><b class='flag-5'>系統(tǒng)</b>

    如何構(gòu)建個(gè)基于RFID的考勤系統(tǒng)?

    在這篇文章中,我們將構(gòu)建個(gè)基于RFID的考勤系統(tǒng),該系統(tǒng)可以記錄給定時(shí)間窗口內(nèi) 12 名學(xué)生/教職員工的出勤情況,該
    的頭像 發(fā)表于 07-27 10:30 ?1103次閱讀
    如何構(gòu)建<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>基于RFID的<b class='flag-5'>考勤</b><b class='flag-5'>系統(tǒng)</b>?

    Python失寵!Hugging FaceRust新寫了個(gè)ML框架

    Pytorch 框架是 Python 編寫的,API 也是基于 Python 的,這讓用戶上手開(kāi)發(fā)會(huì)非???。另外,Python 本身就是
    的頭像 發(fā)表于 08-11 16:24 ?667次閱讀
    <b class='flag-5'>Python</b>失寵!Hugging Face<b class='flag-5'>用</b>Rust新<b class='flag-5'>寫了</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>ML框架