員工考勤信息管理設(shè)計(jì)和實(shí)現(xiàn)
發(fā)布時(shí)間:2020-07-27 來源: 思想?yún)R報(bào) 點(diǎn)擊:
員工考勤信息管理的設(shè)計(jì)和實(shí)現(xiàn)
1. 系統(tǒng)描述
1.1 問題說明 本試驗(yàn)要求是設(shè)計(jì)員工考勤管理系統(tǒng),,本系統(tǒng)作用是用于企業(yè)員工管理,解決人 工考勤面對龐大數(shù)據(jù)量的弊病.該系統(tǒng)側(cè)重于員工考勤信息管理和員工考勤信息的登記與查詢。本系統(tǒng)使用的開發(fā)工具是開發(fā)程序,通過已編制好的程序,完 成對員工信息的輸入、輸出、插入、刪除操作,以及員工遲到、早退考勤信息 的登記和查詢,完善企業(yè)管理現(xiàn)代化,方便管理人員統(tǒng)計(jì),考核員工出勤情況, 方便員工管理部門查詢,考核員工的出勤率,準(zhǔn)確地掌握員工出勤情況和相關(guān) 資料,有效管理、掌握員工各項(xiàng)情況. 1.2 功能需求 本試驗(yàn)要求實(shí)實(shí)現(xiàn)員工考勤管理系統(tǒng),本系統(tǒng)包括的基本功能有: 1.2.1 員工信息的管理 1.2.2 員工信息的統(tǒng)計(jì) 1.2.3 員工考勤信息的管理和查詢 1.3 數(shù)據(jù)需求 本系統(tǒng)為完成所要求功能需要的數(shù)據(jù)包括 : 1.3.1 員工,姓名,部門 1.3.2 員工遲到,早退情況 1.3.3 在一定期間里員工遲到,早退次數(shù) 2. 系統(tǒng)設(shè)計(jì)
2.1 內(nèi)存數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) 系統(tǒng)各實(shí)體可用以下關(guān)系表示:
員工(,姓名,部門)
考勤(,姓名,遲到,早退,日期)
統(tǒng)計(jì)(,姓名,遲到次數(shù),早退次數(shù),期間 2.2 數(shù)據(jù)文件設(shè)計(jì) 2.2.1.存儲(chǔ)員工信息的文件 :
文件名:1 文件內(nèi)容:
日期 姓名 部門 …. ….. ….. 例:
2010 3
1 姓名
部門
11 張三 安保部
12 李四 安保部 2.2.2.存儲(chǔ)員工考勤信息的文件 :
文件名:由日期經(jīng)過變換后得到。變換方式:
。1)給整個(gè)系統(tǒng)設(shè)置一個(gè)基準(zhǔn)日期 基準(zhǔn)日期:一段時(shí)期內(nèi)的起始日期,通常規(guī)定為一個(gè)月的 1 號,考勤所記錄的是基準(zhǔn)日期之后的考勤信息. (2)考勤記錄的日期與基準(zhǔn)日期相差的天數(shù)加 1。由以上變換可得:基準(zhǔn)日期的考勤的文件名為“1”。
2.2.3.存儲(chǔ)考勤一段時(shí)期的統(tǒng)計(jì)信息的文件 :
文件名:管理員自己輸入。文件內(nèi)容:
起始日期 終止日期 姓名 遲到次數(shù) 早退次數(shù) … …. … … 例如:
2010 4 1 2010 6 30
姓名 遲到次數(shù) 早退次數(shù)
11 張三 1
2 12 李四 2
0 各文件之間的關(guān)系:
考勤文件是按照當(dāng)天的員工信息文件的順序依次記錄。在此把請假等排除在外不考慮。
2.3 代碼設(shè)計(jì) 設(shè)計(jì)代碼主要包括: () 第一次輸入員工信息 ()
專門用于讀取存儲(chǔ)員工信息的文件的函數(shù)()
專門用于向存儲(chǔ)員工信息的文件中寫函數(shù)() 輸出員工信息 ( ) 添加員工信息 ( ) 刪除員工信息 () 管理員工信息總函數(shù)
( ) 計(jì)算日期對應(yīng)的文件名 () 記錄每天每個(gè)員工的考勤情況 () 統(tǒng)計(jì)所有員工某段時(shí)間的考勤情況,把統(tǒng)計(jì)結(jié)果輸入文件中 () 查詢某一天的考勤情況 () 查詢一段連續(xù)時(shí)間的考勤情況 () 查詢的總函數(shù) () 考勤管理的總函數(shù) 2.4 程序代碼 "" <> <> <> "" <> 30
最大員工數(shù)員工信息結(jié)構(gòu)體 { ; [20]; [20]; }; 日期結(jié)構(gòu)體 { ; ; ; }; 考勤結(jié)構(gòu)體 { ; ; ; [20]; ; }; 統(tǒng)計(jì)表結(jié)構(gòu)體 { ; ; ; [20]; }; 0; 記錄員工的人數(shù)
1; 涉及插入,輸出函數(shù)的聯(lián)合操作時(shí)某些位置是否調(diào)用(“”) []; {2012,1,1}; 基準(zhǔn)日期 () 第一次輸入員工信息,相當(dāng)于初始化 { (""); *1,*2; ; 1("1","w"); 2("2","w"); ("\t\t\t\t 員 工 信 息 \n"); ("\n\t\t\t\\t 姓名\t 部門\n\t\t\t\t"); (1,"\t\t\t\t
輸入員工信息\n"); (1,"\n\t\t\t\\t 姓名\t 部門\n"); (""); (0) { []; (""); ;
} (1); (2); } (1,"\t\t\t\\\\n"); (2,"\\\n"); ("\t\t\t\t"); (""); () 專門用于讀存儲(chǔ)員工信息的文件的函數(shù) { *; 0; ((("2","r"))) {
(,""[][], []);
} (()) {
} ; (" \n"); (1);
;
(); } 專門用于向存儲(chǔ)員工信息的文件中寫函數(shù) () { i; *1,*2; 1("1",""); 2("2",""); (1 2) { (" \n"); (1); } (1,"\t\t\t\t 輸入員工信息\n"); ("\n\t\t\t\\t 姓名\t 部門\n"); (0<) {
} (1); (2); } (1,"\t\t\t\\\\n"[i][i][i]); (2,"\\\n"[i][i][i]); 輸出員工信息 () { i; ; ; [20]; (""); (); 讀員工信息文件("\n\t\t\t\t\t 輸出員工信息\n"); ("\n\t1.輸出全體員工信息\t"); ("2.按姓名輸出員工信息\t"); ("3.按輸出員工信息\t"); ("4.按部門員工信息\t"); ("5.返回主菜單\n"); ("\n\t 請選擇(1~5):\t"); : (""); (<1 >5) {
("\t 輸入錯(cuò)誤,請重輸:\t"); ; } () { (1): { ("\t\t\\t 姓名\t 部門\n"); (0<) ("\t\t\\\\n"[i][i][i]);
} (2): { ;
("\t\t\t 輸入姓名:"); (""); ("\t\t\\t 姓名\t 部門\n"); (0<)
[i]);
; } (3): { (([i])0) ("\t\t\\\\n"[i][i]. ("\t\t\t 輸入:"); (""); ("\t\t\\t 姓名\t 部門\n"); (0<) {
[i]);
} ; } (4): { ([i]) {
}
("\t\t\\\\n"[i][i],
; ("\t\t\t 輸入部門:"); (""); ("\t\t\\t 姓名\t 部門\n");
[i]);
}
} (5):
} (""); (0<)
;
;
(([i])0)
("\t\t\\\\n"[i][i], 添加員工信息 ( ) 有新員工加入時(shí),插入 { i; (""); (); 讀文件 ; ([i]>) {
} [i]; ; (); (0)
} [i][1]; ;
(""); 刪除員工信息 ( ) 員工辭職,退休等時(shí),刪除員工信息,數(shù)組方式存儲(chǔ)的線性表的刪除操作 { i; j; (); 讀文件 (""); (0<)
(<)
; (); (0) ([i]) ;
[j][1];
(""); }
() 管理員工信息總函數(shù) { ; ; ; ("\n\t\t\t\t\t 員工信息管理\n"); ("\n\t1.輸入員工信息\t"); ("2.輸出員工信息\t"); ("3.插入員工信息\t"); ("4.刪除員工\t"); ("5.返回主菜單\n"); ("\n\t 請選擇(1~5):\t"); : (""); (<1 >6) { ("\t 輸入錯(cuò)誤,請重輸:\t"); ; } () { (1): {
} (2): {
} (3): {
} (); ;
(); ;
("\t\t\t 插入新員工信息\n"); ("\t\t\t 請輸入員工的:\n\t\t\\t 姓名\t 部門\n"); ("\t\t\t"); (""); (); ;
(4): {
} (5):
} }
("\t\t\t
刪除員工信息\n"); ("\t 請輸入要?jiǎng)h除的員工:\t"); (""); (); ;
; 計(jì)算日期對應(yīng)的文件名,相當(dāng)于哈希函數(shù),以一年內(nèi)為界,一年以天計(jì)算 ( ) { i; 0; () 1;
{ (1<)
(i) {
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
28;
31;
30;
31;
30;
31;
31;
30;
31;
30; } ; } ; } 記錄每天每個(gè)員工的考勤情況 () { i; ; ; ; ; [20]; [40]; 零時(shí)存放某一天的考勤文件的文件名 *; 指向某一天的考勤文件的指針 ; (""); (); ("\n\t\t\t\t 考勤記錄\n"); ("\n\t\t 日期:"); (""); (); (, 10); 轉(zhuǎn)換成 (,""); (,"w"); (,"\\\n"); ("\n\t\\t 姓名\t 遲到\t 早退\n"); (,"\t 姓名\t 遲到\t 早退\n"); (0<) 對所有的員工打考勤,并寫入對應(yīng)的文件中 { [i]; ([i]); ("\n\t\\\t"); (""); (,"\\\\n"); } (,"\n"); (); (""); } 統(tǒng)計(jì)所有員工某段時(shí)間的考勤情況,把統(tǒng)計(jì)結(jié)果輸入文件中 ()
{ i; j; 0; 0; 標(biāo)識,用于判斷一個(gè)從文件中讀入的新記錄是否在存中存在, 如果不存在則新分配內(nèi)存,否則追加在已有的記錄上 ; ; ; 判斷是否保存 [40]; 零時(shí)存放某一天的考勤文件的文件 ; ; ; [20]; [20]; [20]; [20]; *; 指向某一天的考勤文件的指針 ; 統(tǒng)計(jì)的起始日期,最終日期,只能統(tǒng)計(jì)連續(xù)一段時(shí)間的考勤 ; ; 存儲(chǔ)零時(shí)的 [30]; 存儲(chǔ)每個(gè)員工的遲到,早退次數(shù)的信息 (0<30) {
} (""); [i]0; [i]0; ("\t\t\t 統(tǒng)計(jì)員工考勤\n"); ("\n\t 請輸入起止日期\n"); ("\n\t\t 起始日期:"); (""); ("\n\t\t 終止日期:"); (""); (); (); (<) { (, 10); 轉(zhuǎn)換成 (,""); (,"r"); (,""); () {
(,""[k][k][k][k]);
} (()) {
; } ;
{ (()) {
);
(0<) {
(,"",
([j]) {
} ("\n"); } (); }
} (0) {
} 0;
}
[k]; ([k]); [k]; [k]; ; 1; (1)
(1)
;
[j];
[j]; ("\n\t\t 考勤統(tǒng)計(jì)\n"); ("\\t 姓名\t 遲到次數(shù)\t 早退次數(shù)\n"); (0<) ("\\\\t\\n"[j][j][j][j]); ("\t\t\t 是否保存():\t");
(); ("y") {
("請輸入文件名;\t"); (""); (,"w"); (,"\t 考勤統(tǒng)計(jì)\n"); (,"\t 姓名\t 遲到次數(shù)\t 早退次數(shù)\n"); (0<)
[j][j]);
}
} ("");
(); (,"\\\t\\n"[j][j], 查詢某一天的考勤情況 () {
; *; ("");
; ; 0; 判斷記錄是否為空 ; ; [20]; [20]; [20]; [20]; [20]; ; ("\t\t\t 查詢某一天的考勤\n"); ("\n\t 請輸入日期:\t"); (""); (); (, 10); 轉(zhuǎn)換成 (,""); (,"r"); (,""); ("\n\t1.查詢?nèi)w員工考勤\t"); ("2.按查詢\t"); ("3.按姓名查詢\t"); ("4.返回主菜單\n");
("\n\t 請選擇(1~4):\t"); : (""); (<1 >4) { ("\t 輸入錯(cuò)誤,請重輸:\t"); ; } () { (1): { ("\t\t\\t 姓名\t 遲到\t 早退\n"); (()) {
} ; } (2): { (,""); ("\t\t\\\\\n"); ("\t 請輸入:\t"); (""); ("\t\t\\t 姓名\t 遲到\t 早退\n"); (()) {
);
} (0) (,""); () { 1;
; }
("\t\t\\\\\n",
; } (3): { ("\t 對不起,沒有此 的員工,謝謝!\n"); ("\t 請輸入姓名:\t"); ("");
("\t\t\\t 姓名\t 遲到\t 早退\n"); (()) {
);
} (0) { (,""); (()0) {
; }
1; ("\t\t\\\\\n",
} (); (""); }
} ; } (4): ; ("\t 對不起,沒有此姓名的員工,謝謝!\n"); 查詢一段連續(xù)時(shí)間的考勤情況 () { ; i; k; 0; ; ;
; *; (""); [20]; [20]; [20]; [20]; [20]; ; ("\t\t\t\t\t 查詢某一段時(shí)間的考勤\n"); ("\n\t 請輸入起止日期\n");
("\n\t\t 起始日期:"); (""); ("\n\t\t 終止日期:"); (""); (); (); ("\n\t1.查詢?nèi)w員工考勤\t"); ("2.按查詢\t"); ("3.按姓名查詢\t"); ("4.返回主菜單\n"); ("\n\t 請選擇(1~4):\t"); : (""); (<1 >4) { ("\t 輸入錯(cuò)誤,請重輸:\t"); ; } () { (1): { (<) {
);
);
(, 10); 轉(zhuǎn)換成 (,""); (,"r"); (,"",
("\t\t\\\\n\t\t\\\\\n",
); ("\t\t\\\\\n", );
} ; } (2): { (()) {
} ();
(,"",
("\n\t 請輸入:\t"); (""); ("\t\t\\t 姓名\t 遲到\t 早退\n"); (<) { (, 10); 轉(zhuǎn)換成 (,""); (,"r"); (,"\", ); (()) {
("\t\t\\\\\n", ); (,""); () { 1;
} }
} (3): {
} (0)
; ();
("\t 對不起,沒有此的員工,謝謝!\n"); ("\n\t 請輸入姓名:\t"); (""); ("\t\t\\t 姓名\t 遲到\t 早退\n"); (<) { (, 10); 轉(zhuǎn)換成 (,""); (,"r"); (,"", ); 存放每個(gè)文件開頭的相同信息 (()) { (,"");
(()0) { 1;
("\t\t\\\\\n", );
} (0)
} } ();
} (""); }
; } (4): ; ("\t 對不起,沒有此姓名的員工,謝謝!\n"); 查詢的總函數(shù) () { ; (""); ("\t\t\t\t\t 查詢員工考勤\n"); ("\n\t1.查詢某一天的考勤\t"); ("\t2.查詢一段時(shí)間的考勤\t"); ("\t3.返回主菜單\n"); ("\n\t 請選擇(1~3):\t"); : (""); (<1 >3) { ("\t 輸入錯(cuò)誤,請重輸:\t"); ; } () { (1): {
} (2): {
} (); ;
(); ;
(3): { ; } } } 考勤管理的總函數(shù) () { ; ("\n\t\t\t\t\t 考勤信息管理\n"); ("\n\t1.考勤記錄\t"); ("2.考勤統(tǒng)計(jì)\t"); ("3.考勤查詢\t"); ("4.返回主菜單\n"); ("\n\t 請選擇(1~4):\t"); : (""); (<1 >4) { ("\t 輸入錯(cuò)誤,請重輸:\t"); ; } () { (1): {
} (2): {
} (3): {
} (4):
} } (); ;
(); ;
(); ;
;
主函數(shù) () { ; ; : (""); ("\n\t\t\t 歡迎使用員工考勤管理系統(tǒng)\n"); ("\t 菜單:\n"); ("\t\t1.員工信息管理\t\t"); ("2.考勤管理\t"); ("3.退出系統(tǒng)\n"); ("\n\t 請輸入菜單選項(xiàng)(1~3):\t"); (""); (<1 >3) { ("\t 輸入錯(cuò)誤,請重輸:\t"); ; } () { (1): { (""); (); ;
} (2): { ;
(""); (); ;
} (3): { ;
(""); ("\n\t\t\t\t 你真的要退出嗎()?\t"); (); ("y") { ("\n\t\t\t\t 感謝使用本系統(tǒng)!\n\n\t\t\t\t 再見!\n"); (1);
}
; } } 0; } 3. 系統(tǒng)測試
進(jìn)入員工考勤管理系統(tǒng)界面為 : 進(jìn)入員工信息管理模塊:
進(jìn)入輸入員工信息模塊,要分別輸入員工的,姓名,部門等基本信息
輸入員工信息,并將其存儲(chǔ)
進(jìn)入輸出員工模塊,會(huì)按要求輸出員工的基本信息
輸出已有的員工信息
按姓名輸出員工信息
按員工輸出員工信息
按部門輸出員工信息
插入員工信息
插入員工后,輸出變更后的員工信息
進(jìn)入員工考勤管理界面 :
進(jìn)入員工考勤記錄模塊,可記錄員工考勤情況
進(jìn)入員工考勤統(tǒng)計(jì)模塊,可統(tǒng)計(jì)在一定時(shí)間內(nèi)員工的考勤狀況
進(jìn)入員工考勤查詢模塊,可查詢員工考勤情況
4. 設(shè)計(jì)的體會(huì)和心得
4.1 設(shè)計(jì)的不足 程序沒有對輸入的所有信息進(jìn)行檢查,比如日期的月份要在 1-12 之間,每
月的天數(shù);還有遲到、早退只能用 1 或者 0 表示,而不能是其它數(shù)據(jù),只有正確的輸入才能使程序正確運(yùn)行. 對于考勤信息只能查詢某一天或者某一段連續(xù)的期間的考勤,而不能隨機(jī)查詢不連續(xù)的記錄.在程序的編寫過程中由于水平有限,因此雖然實(shí)現(xiàn)了如下功能:1.員工基本信息管理;2.員工考勤信息管理。但由于代碼不夠優(yōu)化,導(dǎo)致程序運(yùn)行過慢,操作界面也不夠人性化 . 4.2 心得和體會(huì) 本次試驗(yàn)的主要目的的編寫員工考勤管理系統(tǒng),由于情況較為復(fù)雜,因此將其功能拆分為員工基本信息管理和員工考勤信息管理,在員工基本信息管理中實(shí)現(xiàn)了員工信息的輸入,輸出,插入,刪除.在考勤管理系統(tǒng)中實(shí)現(xiàn)員工考勤的查詢功能. 由于功能較多較為復(fù)雜,因此代碼編寫也較為困難,在查閱大量資料和在同學(xué)幫助下完成這次試驗(yàn),,在程序中實(shí)現(xiàn)程序的循環(huán)連續(xù)的操作,文件的讀寫操作,讓我有了很大的進(jìn)步,還有數(shù)據(jù)結(jié)構(gòu)中線性表的插入、刪除操作等知識的應(yīng)用有了很大的提高。相信這次試驗(yàn)對于我以后的學(xué)習(xí)有很大好處.
熱點(diǎn)文章閱讀