【Python】基于人臉識別的考勤系統 [PC端部分]
一、專案簡介
本專案編程語言Python3.6,編程工具pycharm,其他工具QT Designer、Navicat,表單資訊保存在本地MySQL資料庫中,人臉識別演算法主要用的OpenCV,
目前,已實作以下功能:
--------------------------------------------------------------------
一、【管理系統主界面】
1、管理系統主界面實作相對布局,
(一)輸入部分
1、考勤班級:限制輸入8位考勤班級編號,
2、考勤課程:限制輸入中文/數字/大寫字母,
3、考勤地點:
2.1 教學樓:限制四選一:“仁智/同和/浦江/厚學”,
2.2 教室號:限制輸入大寫字母/數字/“-”,最大長度6位,
4、禁止請假:
3.1 單選框,默認不選中,
3.2 選中且確定后,"個人請假"按鈕不開放,
5、"確定"按鈕:
5.1 確認班級/課程/地點的輸入合法性,不合法,則清空輸入框內容,
5.1 確認該班級當天是否有該課程的教學計劃,不存在,則彈出提示框,
5.2 檢測“禁止請假”復選框選中狀態,
5.2 重繪Lcd/“已簽到人員”表格/“遲到/請假人員”表格,
5.3 鎖定輸入框和復選框,解鎖前禁止編輯,
5.4 開放“考勤簽到”“個人請假”功能,
6、“解鎖”按鈕:
6.1 “確認”前,“解鎖”按鈕無法點擊,
6.2 “確認”后,“解鎖”按鈕開放,
6.3 點擊事件:--->跳轉至“管理員權限驗證頁面”,
(二)顯示部分
1、表格控制元件:“已簽到人員”和“遲到/請假人員”,
1.1 已簽到人員:2位學號-中文姓名-簽到時間,
1.2 遲到/請假人員:狀態-2位學號-姓名-簽到時間,
2、Lcd控制元件:"應到/已到/請假"人數,
(三)按鈕部分
1、“考勤簽到”:
1.1 Qlabel顯示攝像頭視頻,
1.2 人臉檢測--->框出人臉,列印身份--->每15幀人臉檢測影像保存一次--->三次檢測結果一致--->二次驗證,用戶本人確認--->通過后重繪資料庫表單/界面表格/LCD控制元件--->關閉視窗,
1.3 資料庫:錄入資訊--->執行"簽到狀態判別"函式:判別當天該課程所有的簽到時間對應的簽到狀態---(簽到狀態:未驗證-“0”,成功-“1”,遲到-“2”,請假-“3”)
2、“個人請假”:
1.1 Qlabel顯示攝像頭視頻,
1.2 人臉檢測--->框出人臉,列印身份--->每15幀人臉檢測影像保存一次--->三次檢測結果一致--->二次驗證,用戶本人確認--->通過后重繪資料庫表單/界面表格/LCD控制元件--->關閉視窗,
1.3 資料庫:錄入資訊--->執行"簽到狀態判別"函式:判別當天該課程所有的簽到時間對應的簽到狀態---(簽到狀態:未驗證-“0”,成功-“1”,遲到-“2”請假-“3”)
3、“登錄/注冊”--->跳轉至“登錄/注冊”頁面,
4、“退出程式”--->關閉整個系統頁面,
(四)【管理員權限驗證頁面】【一級子頁面】【QDialog類】
1、頁面采用絕對布局,
2、賬號、密碼輸入框:輸入無限制,
3、登錄:
3.1 驗證通過,解鎖成功,關閉本視窗,回傳主界面,
3.2 驗證失敗,關閉本視窗,回傳主界面,
4、退出:關閉本視窗,回傳主界面,
--------------------------------------------------------------------
二、【登錄注冊界面】---->(登錄頁面\注冊頁面)
1、登錄注冊頁面均采用絕對布局,禁止用戶放縮界面大小,
2、登錄界面初次加載時,加載上次登錄時的選框狀態和用戶資訊,
3、登錄注冊頁面輸入框均設定提示資訊,優化用戶體驗,
(一)登錄界面
1、用戶名:限制輸入數字和英文,
2、密碼:限制輸入長度6-10位,首字母大寫,密碼組成字母數字,
3、記住用戶名:
3.1 可單獨勾選,
3.2 勾選時,下次加載登錄頁面時自動加載上次登錄用戶名,
3.3 本地.pkl檔案保存上次登錄“用戶名”,
3.4 “登錄”按鈕被點擊時,保存選項框選中狀態,
4、記住密碼:
4.1 勾選時,“記住用戶名”也被標記勾選,
4.2 勾選時,下次加載登錄頁面時自動加載上次登錄的用戶名和密碼,
4.3 本地.pkl檔案保存上次登錄的“用戶名和密碼”,
4.4“登錄”按鈕被點擊時,保存選項框選中狀態,
5、自動登錄:
4.1“登錄”按鈕被點擊時,保存選項框選中狀態,
4.2 彈出登錄頁面時,自動加載資訊,
6、“注冊”按鈕--->跳轉至注冊界面,
7、登錄按鈕:
7.1 驗證管理員身份,跳轉至管理員界面,
7.2 驗證用戶身份,跳轉至用戶界面,
7.2.1 檢索前8位班級編號
A. 未檢索到該“班級編號”表單,檢索班級管理表單,
a. 班級管理表單中存在該班級詞條,則新建該“班級編號”的表單,提示前往注冊,
b. 班級管理表單中不存在,提示聯系管理員,
7.2.2 存在該班級編號的表單,驗證用戶設定的密碼,
(二)注冊界面
1、用戶ID:輸入限制為數字,
2、用戶密碼:
2.1 輸入限制為6到10位數字字母,首字母大寫,
2.2 首次輸入明文顯示,焦點轉移后掩碼顯示,
3、重復密碼:
3.1 首次輸入明文顯示,焦點轉移后掩碼顯示,
3.2 焦點轉移后驗證兩次輸入密碼的合法性,不合法則清空密碼輸入框內內容,
3.2.1 密碼長度6到10位,
3.2.2 兩次密碼的一致性,
4、姓名:限制輸入中文,
5、英文名:限制輸入英文,用于人臉識別列印出身份判定結果,
6、性別:“男/女”二選一選項框,
7、以上表單均填入資訊后,開放“注冊”按鈕,
8、注冊功能:
8.1 檢索“用戶ID”前8位班級編號的表單,
8.2 不存在,則檢索班級管理表單,存在詞條,則新建該“班級編號”表單(某班級的首位注冊用戶),
8.3 存在,則驗證“班級管理”內設定的該班級用戶的資訊格式,
8.4 格式合法,則用戶資訊錄入該“班級編號”表單,提示注冊成功,
--------------------------------------------------------------------
三、【管理員界面】---->(班級管理\課表管理\統計分析)
1、目前僅設定單一管理員權限賬號,
2、全頁面實作支持相對布局,
(一)班級管理頁面:【一級子頁面】
1、表單未全部填寫時,“保存設定”按鈕無法點擊,
2、所帶班級:限制輸入專業簡稱(2位中文)+數字(4位),
3、班級編號:限制輸入8位純數字,
4、班級人數:限制輸入長度3位數,
5、用戶ID-Num:限制二選一,
5.1 “僅固定ID”:用戶注冊時限制前8位班級編號,尾號數字不限,
5.2 “固定ID-Num”:用戶注冊時限制尾號數字小于等于“班級人數”,
6、簽到開始時間:開放三選一設定,上課“前20\15\10分鐘”,
7、簽到結束時間:開放二選一設定,下課“前5\0分鐘”,
8、保存設定時:
8.1 點擊后,檢索資料庫是否存在‘lessontable’,不存在,則新建該表單并完成初始化,
8.2 檢查是否存在同編號班級資料,如無(有)班級資料,新建(覆寫)表單資料,
9、查看班級:【二級子頁面】
9.1 頁面支持相對布局,
9.2 表格顯示欄位:“班級編號”“班級名稱”“班級人數”
“Id格式”“簽到開始時間”“簽到結束時間”,
9.3 表格資料以“班級編號”為主鍵,升序排列,
9.4 頁面彈出時重繪一次,支持“手動重繪”表格資料,
9.5 支持班級管理表單“匯出表格”至本地Excel檔案,Excel檔案名--->“classtable”,
9.6 支持以“班級編號”為索引,洗掉表格中的整行資料,
【注】以上功能資料處理均基于資料庫表單操作實作,
(二)課表管理頁面:【一級子頁面】
1、課程名稱限制輸入:中文/英文/數字,
2、班級編號限制輸入:8位純數字,
3、開課結課時間限制:開課時間不得晚于結課時間,日歷彈出顯示,
4、上課下課時間限制:上課時間不得早于下課時間,日歷彈出顯示,
5、課程設定周課表:開放多選框“周一/周二/周三/周四/周五/周六/周日”,
6、輸入框、復選框未全部有資料填寫時,“保存設定”按鈕無法點擊,
6.1 點擊后,檢索資料庫是否存在‘lessontable’,不存在,則新建該表單并完成初始化,
7、查看課表:【二級子頁面】
7.1 頁面支持相對布局
7.2 表格顯示欄位:“班級編號”“課程名稱”“開課日期”“結課日期”
“一周課表”“上課時間”“下課日期”,
7.3 表格資料以“班級編號”“課程名稱”為聯合主鍵,升序排列,
7.3 頁面彈出時重繪一次,支持“手動重繪”表格資料,
7.4 支持班級管理表單“匯出表格”至本地Excel檔案,Excel檔案名--->“lessontable”,
7.5 支持以“‘班級編號課程名稱’”為聯合主鍵,洗掉表格中的整行資料,并同步修改到資料庫,
(三)統計分析頁面:【一級子頁面】
1、“查詢班級-必填”:
1.1 限制輸入:8位出數字,
1.2 有輸入時,開放“查詢”“重繪”按鈕,
2、“查詢課程-選填”限制輸入:中文/英文/數字,12位,
3、“查詢日期-選填”:
3.1 初始顯示“2000/1/1”,輸入日期不為“2000/1/1”時有效,
4、郵箱地址:正則運算式匹配,能覆寫大部分郵箱地址格式的檢測,
5、發送至郵箱:
5.1 發件郵箱默認為QQ郵箱,需要郵箱開啟SMTP服務設定,
5.2 支持自動匯入用戶本地TXT檔案保存的“賬號-16位授權碼”,
5.3 “發件郵箱"" 授權碼”各單行保存到“./autoLoginFile”檔案下的“QMailSMTP.txt”內,
5.4 單擊執行一次“發送至郵箱”后,上述檔案夾內生成“QMailSMTP.pkl”檔案后,即可洗掉“QMailSMTP.txt”檔案,
--------------------------------------------------------------------
四、【用戶界面】---->(個人資訊\班級課表\簽到日志)
1、實作用戶身份判別,根據登錄用戶加載不同表單資料功能,
2、全頁面實作支持相對布局,
(一)個人資訊頁面:【一級子頁面】
1、班級編號:彈出頁面時,自動加載,用戶不可修改,
2、班級人數:彈出頁面時,自動加載,用戶不可修改,
3、個人ID:彈出頁面時,自動加載,用戶不可修改,
4、重置密碼:
4.1 密碼1:輸入時明文顯示,滑鼠焦點轉移后掩碼顯示,
4.2 密碼2:輸入時掩碼顯示,
4.3 密碼輸入限制:首位限制大寫字母,限制長度6-10位,密碼組成限制英文、數字,
4.4 密碼輸入框未全部填寫時,“重置密碼”按鈕無法點擊,
4.5 密碼1|2提示框警告場合:長度非法,兩次輸入不一致,
5、注銷賬號:支持用戶注銷賬號,洗掉賬號所有簽到記錄,
5.1 洗掉關聯的簽到記錄【功能未激活】
5.2 注銷操作前用戶須再次確定,
6、更新面部資料:
6.1 打開攝像頭,檢測人臉,拍攝30張圖片后關閉攝像視窗,
6.2 該“班級編號”表單內該用戶的面部資料錄入標志位“checked”置“是”,
6.3 自動重新訓練該班級的“人臉檢測樣本”,
8、更換頭像:
8.1 打開攝像頭,空格鍵按下時拍攝用戶面部影像,
8.2 文本框內居中顯示,彩色影像,
8.3 關閉攝像頭后,立即更新頭像QLabel內容,
(二)班級課表頁面:【一級子頁面】
1、班級編號:初次加載頁面時,自動加載,
2、課表表格:
2.1 顯示欄位:“班級編號”“課程名稱”“開課日期”“結課日期”
“一周課表”“上課時間”“下課日期”,
2.2 同步顯示資料庫資料lessontable表單內容,
2.3 支持“匯出表格”到本地Excel,Excel檔案名--->“班級編號_lessontable”,
3、支持“手動重繪”表格資料,
(三)簽到日志:【一級子頁面】
1、表格控制元件:“簽到日志”“遲到記錄”,
2、LCD顯示控制元件:“出勤次數”“遲到次數”“請假次數”“出勤率”,
3、支持“匯出表格”到本地Excel,Excel檔案名--->“用戶學號__signdata”,
3、支持手動重繪表格資料,
--------------------------------------------------------------------
二、系統前端設計
“管理員權限驗證”和登錄注冊頁面由于布局相對固定,所以自己手敲的,其他布局因為程序中經常要變動,所以借助了QT Designer,
(一)系統主界面
1、主視窗
(1)初始頁面

- 主界面的布局設計借鑒了這位博主的一篇博文,
- (其中,“很多待完善功能”幫助了我打開了很多功能拓展的思路)
- 基于人臉識別的考勤系統:Python3 + Qt5 + OpenCV3 + OpenFace + MySQL.
(2)保存設定/解鎖輸入

(3)考勤簽到

(4)個人請假

2、管理員權限驗證頁面
(1)基礎頁面

(2)基礎頁面

(二)登錄/注冊頁面
各個頁面的小操作太多,錄了上面的幾個小視頻后就不想錄了…饒了我吧…/doge


(三)管理員頁面
1、班級管理頁面
(1)基礎頁面

(2)查看班級頁面

2、課表管理頁面
(1)基礎頁面

(2)查看課表頁面

3、統計分析頁面
(1)基礎頁面

(2)查詢 + 打包發送本地Excel到目標郵箱


(四)用戶頁面
(1)登錄跳轉

(1)個人資訊頁面

(1)班級課表頁面

(1)簽到日志頁面

三、資料庫設計
本地安裝的MySQL版本號為 8.0.23,除錯程序中,使用的是Navicat進行諸如“查看表單是否插入成功”等除錯作業的,
MySQL和Navicat的安裝教程CSDN上就有很多,我就不介紹了,直接貼出一些有用的鏈接吧,
1、MySQL相關
(1)我的MySQL版本號

(2)MySQL相關安裝指導
這3個教程我都看了一下,相互對照著弄的,一遍過,但好像都沒完全完整地照某一個教程單獨地弄,(/doge)
- 詳細完整MySQL8.0.23安裝教程.
- MySQL8.0.22安裝及配置(超詳細).
- MySQL 8.0.19安裝教程(windows 64位).
2、Navicat相關
看的安裝(PouJie)教程好像是這個,
- Navicat Premium 12安裝與激活(親測已成功激活).
版本是Navicat Premium 12,我上傳了一個有Navicat Premium 12安裝包的壓縮包,省的你們再去官網下載安裝包了,
- Navicat Premium 12.
遇到了一次Navicat顯示中文亂碼的問題,后續解決了,(我印象中好像是在設定里編碼改成“auto”好像/doge)
- 解決在Navicat中,中文顯示’???'亂碼問題.
3、表單相關
(1)表單初始化說明

以下所有表單在程式中都實作了自動檢索和初始化所需要的表單,
各位后續下載了代碼,運行前,只需要 確保本地存在一個名為’mytest’的資料庫 就行了,
哦,對了,代碼中資料庫的驗證密碼是"jixinye",如果本地之前不存在MySQL資料庫,安裝的時候可以直接設定密碼為"jixinye",這樣省的在到程式里去改pymysql的連接引數了,/doge
(2)表單說明(舉例說明,其他情況類推)
-
“班級編號 ”:14021702
- 保存一個班級的學生資訊,

- 保存一個班級的學生資訊,
-
“班級編號_signdata ”:14021702_signdata
- 保存一個班級的學生的簽到資料,

- 保存一個班級的學生的簽到資料,
-
“classtable”表單
- 保存所有班級的基本屬性,

- 保存所有班級的基本屬性,
-
“lessontable”表單
- 保存所有班級的教學計劃的基本屬性,

- 保存所有班級的教學計劃的基本屬性,
(3)匯出表格:保存至本地目錄下的Excel檔案

四、后續下載后需要更改的引數
(1)資料庫的連接密碼
-
程式中pymysql的連接密碼為:jixinye
- 程式中所有“jixinye”詞條統一替換成"%s"(你的本地資料庫密碼)
(2)用戶頁面的“發送至郵箱”功能
- 專案目錄
.
/
d
e
m
o
1
/
a
u
t
o
L
o
g
i
n
F
i
l
e
./demo1/autoLoginFile
./demo1/autoLoginFile下初始狀態應該是只有 “auto.pkl”、“login.pkl”和“QMailSMTP.txt”檔案,
- 各位小伙伴,只需要在 “QMailSMTP.txt”中分別寫上自己的QQ郵箱地址和16位SMTP授權碼,保存退出,
- 在管理員頁面運行一次“發送至郵箱”,本地出現“QMailSMTP.pkl”檔案后,就可以洗掉自己的“QMailSMTP.txt”了,

五、我的“待完善功能”/doge
(一)待補充功能
這是我畢設的一部分內容,起初的任務設定是在樹莓派上實作上述效果的,奈何樹莓派性能支棱不起來(效果不好),如果一開始就確定在PC端做的話,可以用深度學習來提升人臉識別的性能表現,也不用為了輕量而選擇用OpenCV來做了,
現在只是在PC端上實作了基于人臉識別的考勤功能,(我們還是得想辦法和樹莓派攀上點關系/doge)
目前我還沒有什么比較好的思路,各位小伙伴有什么好的建議的話,可以在評論區評論(萬分感激)!!
-
用socket在樹莓派和PC間進行視頻傳輸,PC判斷結果保存到本地資料庫,回傳簽到資訊至樹莓派??PC做一個上位機?
-
樹莓派拍照保存人臉資訊,一個班考勤簽到時每個人進門時拍張照片(一個學號一張照片),空閑時(無考勤任務)或者晚上22點時把圖片push到gitee倉庫,PC(服務器)22點半把圖片拉到本地進行判別??(但這就需要樹莓派和PC(服務器)定時進行資料庫班級表單資訊的同步)
- 如果是上述思路,可以用阿里云RDS資料庫和自建資料庫做主從同步,把資料庫從PC機上獨立出來,本地只在需要時從云上同步資料到本地,
-
我還沒想好怎么讓它和樹莓派發生關系…
(二)待完善功能
-
資料庫優化:
- 部署到云,如阿里云RDS資料庫,
- 結構優化:目前各個表間各自獨立,洗掉操作(如,用戶的“注銷賬號”)并不能同步洗掉所有表單的相關詞條內容,
-
整體架構:
-
軟體部署到服務器上,把目前的系統做成一個客戶端軟體,一些功能交由服務器去運行,
-
如用戶面部圖片的保存,客戶端-服務器-樹莓派三者間的資料傳輸等等,
-
-
活體檢測:因為因為用的OpenCV的Haar分類器做的人臉檢測,沒辦法做到活體檢測,是個缺陷,
-
更新面部資料:用戶面部資料的輸入除了在“用戶頁面”自己拍斬訓入,管理員想管理,只能到相應的班級面部資料檔案夾下去進行操作,(增刪查改之類的)
-
實際應用場景:可以用微信小程式或者用戶掃描二維碼來完成“用戶”的面部資料上傳作業,
- 考勤管理系統,應該是基于管理員視角的,用戶(學生)的流動性導致了移動端的小程式比PC端的操作頁面更有實際意義,(別杠,回宿舍再在PC上拍照上傳另算/doge)
-
畢竟不是計軟專業的,可能還有其他一些沒有考慮到的問題,希望相關專業的朋友在評論區提出一些專業性的意見,
六、對想上手的小白的學習建議
因為如果要做上位機可能還要進行修改,等我做完了樹莓派部分的功能,再把代碼開源吧,
就先推薦一些視頻課程吧,
-
Pymysql資料庫 Python操作資料庫如此的簡單.
- 這個大概了解就好了,我程式只用到一些基本的增刪查改,視圖、事務什么的都沒用到,多留意一下Navicat的使用方法,上手應該很快,
-
python高級進階教程-PyQt5部分.
- 這位UP主的好像有配置anaconda、pycharm、Qtdesigner的視頻,對小白很友好,
- Qt部分的視頻看到【010Qt網格布局XXXXXX】部分就可以上手做一些小的界面了,剩余的知識點可以等以后在自己的小專案中需要用到再學,
-
B站講的最好的opencv計算機視覺課程.
- B站有很多好的OpenCV的課程,大家各自挑著看看好了【別被上面這個標題唬住,up主自己取的,跟我沒關系】,
-
其他的好像就沒什么了…看上去也不是那么難…對吧
七、附個進度記錄,湊個字數吧,嘿嘿
-------------第4周-------------
【新增】
登錄頁面實作功能:
1、檢查是否存在已注冊用戶資料,如無用戶資料,提醒注冊,
2、登錄時檢查用戶ID及密碼,提示錯誤資訊:用戶不存在,密碼錯誤,
3、提供記住用戶名,用戶密碼,用戶自動登錄功能,并可以在三種模式下切換,
注冊頁面實作功能:
1、用戶注冊,保存注冊成功用戶資料,
2、檢驗用戶ID,ID只能為字母與數字,不允許中文或其他特殊字符,
3、檢查注冊用戶ID是否已存在,存在時拒絕注冊
【優化】
1、優化子視窗置前功能,實作子視窗非關閉狀態下,主視窗禁止操作,
2、優化人臉識別簽到功能,結果與本人相符保存輸出簽到資料,
-------------第5周-------------
【新增】
管理員界面:
1、新增班級管理、課表管理和資料分析3個子頁面布局,
2、新建本地MySQL資料庫存盤各表單資料,
3、初步完成班級管理頁面的組件與資料庫的互動設計,
【優化】
1、優化登錄頁面密碼的保存格式,
2、優化簽到資料的保存主鍵和存盤方式,
------>>>【后期-待整合】賬號密碼及簽到資料表單錄入資料庫,
-------------第6周-------------
【新增】
管理員界面:
1、“班級管理”頁面下新增“查看班級”子頁面,
2、“課表管理”頁面下新增“查看課表”子頁面,
班級管理頁面:
1、表單未全部填寫時,“保存設定”按鈕無法點擊,
2、所帶班級限制輸入:專業簡稱(2位中文)+數字(4位),
3、班級編號限制輸入:8位純數字,
2、保存設定時,檢查是否存在同編號班級資料,如無(有)班級資料,新建(覆寫)表單資料,
課表管理頁面:
1、表單、復選框未全部填寫時,“保存設定”按鈕無法點擊,
2、課程名稱限制輸入:中文/英文/數字,
3、班級編號限制輸入:8位純數字,
4、結課時間早于開課時間,下課時間早于上課時間,彈出警告框,
查看表單頁面:
1、打開頁面自動鏈接資料庫,重繪表格資料,
2、可匯出表格至同名Excel檔案,
------>>>【后期-待整合】多個Excel表格合并,并發送至管理員郵箱,
3、洗掉某行資料:存在,提示成功;未檢索到該資料,提示編號不存在,
【優化】
1、優化“班級管理”“課表管理”頁面的布局設計,
2、優化“班級管理”“課表管理”頁面與資料庫的互動體驗,
3、優化pyqt5與mysql的代碼耦合程度,
------>>>【后期-可擴展】進行阿里云RDS與本地自建MySQL進行主從同步,
-------------第7周-------------
【新增】
用戶界面:
1、新增“個人資訊”“班級課表”“簽到日志”子頁面,
個人資訊頁面:
1、根據登錄用戶顯示“班級編號”“班級人數”“個人ID”,
2、新增“重置密碼”“退出賬號”“注銷賬號”功能,
3、更新面部資料、顯示用戶頭像,【待完善】
班級課表頁面:
1、動態顯示當前班級課表的“班級編號”“班級課表”,
2、實作支持課表匯出Excel表格,
3、新增支持“手動重繪”表格資料,
4、“請假下次課”功能,【待完善】
簽到日志頁面:
1、新增“簽到記錄”“遲到記錄”表格控制元件,
2、新增“出勤次數”“遲到次數”“請假次數”“出勤率”Lcd顯示控制元件,
3、新增“手動重繪”按鈕控制元件,
邏輯需要與管理系統主界面同步,代碼邏輯還未完全確定,【待完善】
【優化】
1、優化“管理員-課表管理”頁面課表管理,
1.1 修復一個班級只能設定一門課程的bug,
2、優化“管理員”頁面布局,支持相對布局,
3、優化頁面跳轉體驗,實作多界面的跳轉,
4、優化登錄注冊界面表單的資料存盤方式,實作完全的“資料庫表單操作”,
-------------第8周-------------
【新增】
1、“用戶-個人資訊”頁面:
1.1 支持“更換用戶頭像”功能,
1.2 支持“更新面部資料”功能,
1.3 支持自動加載“訓練檢測資料樣本”功能,
2、“系統主頁面”:
---->完善了大部分功能邏輯
2.1 考勤班級:限制輸入8位班級編號,
2.2 考勤課程:限制輸入中文/數字/大寫字母,
2.3 考勤地點:限制輸入數字和“-”,6位,
2.4 支持“禁止請假”復選框,
2.5 支持“考勤簽到”“個人請假”功能,
2.6 支持重繪顯示:"應到""已到""請假"LCD/"已簽到人員""遲到請假人員"表格,
3、“注冊頁面”:
3.1 新增“用戶英文名”輸入框,
3.2 判斷用戶人臉資訊時,列印英文名,以顯示判定的身份結果,
4、“資料庫部分”:
4.1 班級成員表單:新增“英文名”欄位,
4.2 新增班級簽到資料表單:"'班級編號'_signdata",
【優化】
1、“用戶-個人資訊”頁面:
1.1 優化檢測樣本空間的選定,以班級為最小樣本空間,
1.2 優化訓練檢測樣本邏輯,用戶更新面部資料后自動訓練檢測樣本,
2、支持系統自動檢測/創建所有所需的表單:
2.1 課程計劃表單:“lessontable”,
2.2 班級管理表單:“classtable”,
2.2 班級成員表單:'班級編號',
2.3 班級簽到資料:"'班級編號'_signdata",
3、優化資料庫表單設計及表單間關聯結構,
4、“管理員-課表管理”頁面:-------->>>發現一邏輯隱患【待優化】
4.1 “比對‘開/結課日期’‘上/下課時間’部分”:
4.1.1 采用字串比對,未采用datetime類進行比對,【邏輯隱患】
-------------第9周-------------
【新增】
1、系統主頁面:
1.1 新增“解鎖”按鈕、“管理員權限驗證頁面”QDialog類,
1.2 "確認"后解鎖輸入權限需“驗證管理員權限”,
2、“管理員頁面”:--->“統計分析”子頁面
2.1 新增3個表格:簽到記錄、遲到記錄、請假記錄,
2.2 新增3個單行輸入框:查詢班級(必選)、查詢課程(選填)、查詢日期(選填),
2.3 支持重繪顯示表格,
2.4 支持“匯出表格”到本地Excel檔案,命名格式:"'班級編號'_signdata",
2.5 "郵箱地址":限制輸入,正則匹配絕大部分郵箱地址格式,
2.6 "發送至郵箱"支持打包發送本地Excel表格至郵箱,
2.7 支持重繪顯示表格,
3、“用戶頁面”:--->“簽到日志”子頁面
3.1 新增簽到記錄、遲到記錄表格,
3.2 支持LCD顯示出勤/遲到/請假次數、出勤率,
【優化】
1、系統主頁面:
1.1 優化視頻顯示方式,cv視窗轉Qlabel顯示視頻,
1.2 優化整體頁面:相對布局,
2、優化郵箱SMTP引數(寄件郵箱/授權碼)匯入方式,
2.1 支持程式自動讀取本地QMailSMTP.txt文本內容,
2.2 引數自動生成QMailSMTP.pkl檔案,用戶可自行洗掉原QMailSMTP.txt檔案,
各位小伙伴如果對某個已實作的功能感興趣或者有問題,可以在評論區留言,
時間允許的話,我會挑一些問題寫成博客分享,或者分享一些其他博主已有的解決方案的博文鏈接給大家,
小玩意,不會做,瞎寫的,別噴我,/doge /狗頭保命
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/282632.html
標籤:python
