項目簡介
學校現(xiàn)在需要實現(xiàn)一個電子考勤系統(tǒng),考慮到你們班已經(jīng)學過大數(shù)據(jù)應用開發(fā)語言Python,準備讓你們實現(xiàn)部分學生端考勤功能。經(jīng)過和老師的溝通,你了解到:
(1) 目前該系統(tǒng)已經(jīng)被學長實現(xiàn)了部分功能,你們只需要完成剩余功能即可,需要你們完成的功能會使用
#todo的形式進行標注, todo后面會列出這個地方的功能,形式如下。
(2) 學生信息存儲在stu_infos.csv文件中,第一行是列名行,后面每一行都是一個學生的信息,包含學號,姓名,密碼。內容形式如下:
(3) 考勤記錄最終會被保存到attendance.csv文件中,第一行是列名行,后面每一行代表一個學生的考勤信息,包含學號,姓名,時間,考勤狀態(tài)(只有出勤、遲到、請假、缺勤四種狀態(tài))。內容格式如下:
(4) 學生信息需要首先被加載到student_infos列表中,student_info中的每個元素都是一個字典,字典中的鍵都是各自列名,而值則是每一行內容,按照示例數(shù)據(jù)構造出來的student_infos列表如下。
(5) 考勤系統(tǒng)老師端總共有兩個Python文件,一個main.py文件,該文件作為入口程序文件,實現(xiàn)主體框架,主體流程就是:加載數(shù)據(jù) 登錄 添加考勤數(shù)據(jù);一個stu_attendance.py文件,定義了數(shù)據(jù)加載、登錄等函數(shù)。
答題要求
在stu_info.csv文件末尾添加一行自己的信息,密碼隨意寫,名字和學號必須是自己
查看兩個Python文件中的todo注釋,添加合適代碼,最終提供添加的代碼。
測試程序功能,提供程序運行截圖。進行登錄驗證的時候使用自己的學號進行登錄驗證,并且需要測試如下2個分支:3次都登錄失敗的情況、登錄成功后成功添加考勤數(shù)據(jù)。
附加功能
添加一個查詢功能,輸入一個學生的姓名就可以獲取他的出勤數(shù)據(jù)信息
導入模塊
importcsv importtime student_infos=[]
加載數(shù)據(jù)
defload_stu_info(): """ 加載學生信息 從stu_infos.csv文件中加載數(shù)據(jù) 無 """ 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(): """ 用戶使用學號和密碼進行登錄 最多讓用戶登錄三次,如果連續(xù)三次都登錄失敗(用戶名或者密碼錯誤),只要密碼和用戶都正確表示登錄成功 登錄成功返回True和學號,三次都登錄失敗返回False和None """ retry_time=0 whileretry_time3: ????????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
考勤記錄寫入
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=['出勤','遲到','請假','缺勤'] a=int(input(" 該學生出勤情況:1-出勤 2-遲到 3-請假 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("{}同學{}數(shù)據(jù)已經(jīng)寫入成功!操作時間是{}".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("請輸入你需要查找的姓名:") print("學號 姓名 操作時間 出勤狀態(tài)") forainstudent: ifa['name']==name: print(a['no']+' '+a['name']+' '+a['time']+' '+a['state']) else: print("無此人!!!") 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('登錄失敗')
看看運行效果喲!
審核編輯:湯梓紅
-
python
+關注
關注
56文章
4807瀏覽量
85039 -
考勤系統(tǒng)
+關注
關注
0文章
41瀏覽量
11248
原文標題:用 Python 寫了一個電子考勤系統(tǒng)
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
FPGA 的考勤系統(tǒng)
STM32的便攜式手機藍牙考勤機系統(tǒng)設計
【Aworks申請】基于致遠電子AWorks開發(fā)板的指紋考勤系統(tǒng)
【STM32F411 Nucleo試用體驗】報告4------用python寫了一個最簡單的串口通信程序
基于指紋模板的考勤系統(tǒng)設計
如何利用52單片機制作打卡考勤+測溫一體系統(tǒng)
CSDN為所有感興趣的開發(fā)者提供了一個探討和學習Python的契機
用Python寫的一個電影推薦系統(tǒng)的程序和工程文件資料免費下載
![<b class='flag-5'>用</b><b class='flag-5'>Python</b>寫的<b class='flag-5'>一</b><b class='flag-5'>個</b>電影推薦<b class='flag-5'>系統(tǒng)</b>的程序和工程文件資料免費下載](https://file.elecfans.com/web1/M00/95/19/pIYBAFzwzjGAVLfYAAbIEfauekk387.png)
如何使用Python編寫一個桌面軟件系統(tǒng)?步驟有哪些
使用AVR微控制器構建一個生物識別考勤系統(tǒng)
![使用AVR微控制器構建<b class='flag-5'>一</b><b class='flag-5'>個</b>生物識別<b class='flag-5'>考勤</b><b class='flag-5'>系統(tǒng)</b>](https://file.elecfans.com/web2/M00/64/2D/poYBAGMF1-GAdvdcAAF-L3u-wkQ912.png)
Python失寵!Hugging Face用Rust新寫了一個ML框架
![<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'>個</b>ML框架](https://file1.elecfans.com/web2/M00/90/37/wKgZomTV8HCAfM1uAAApgIdKw5g843.png)
評論