




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、PAGE 廣西大學(xué)數(shù)學(xué)(shxu)與信息科學(xué)學(xué)院數(shù)據(jù)庫開發(fā)(kif)與應(yīng)用課程設(shè)計報告(bogo)題目 : 企業(yè)考勤管理系統(tǒng) 班 級: 信息與計算科學(xué)121學(xué) 號: 1211100 xxx 姓 名: xxxxx 日 期: 二一四年六月 一、 背景(bijng)與意義(yy)考勤(koqn)管理系統(tǒng)是企業(yè)單位管理系統(tǒng)中最重要的信息。通過員工考勤考核管理,反映員工在一定階段的工作成績。而我國眾多的企業(yè)都是采用傳統(tǒng)的手工方式記錄企業(yè)員工每日的出勤情況,這種方式繁瑣易錯,準(zhǔn)確性、透明度、實時性差,受人為因素影響過大,增加了企業(yè)的人力資源成本。隨著現(xiàn)代科技的進步,利用信息和計算機技術(shù)來進行企業(yè)員工考勤的
2、管理也成為現(xiàn)代化企業(yè)運作必不可少的一部分。一個企業(yè)對其職工的正常上下班、延時工作及加班工作進行考勤,通過報表的形式輸出,合理調(diào)整員工工作安排,用計算機對考勤數(shù)據(jù)進行統(tǒng)計分析處理,得到我們所需要的各種統(tǒng)計報表和考勤原始數(shù)據(jù),方便了企業(yè)對員工的管理。因此,開發(fā)一個合適的、高質(zhì)量的、界面友好、易于操作的企業(yè)考勤管理系統(tǒng)進行企業(yè)員工的考勤管理,對企業(yè)的長遠發(fā)展有重大的意義。本考勤管理系統(tǒng)的開發(fā),是為了規(guī)范企業(yè)中考勤的管理工作,為考勤管理部門提供一套高效、快捷的應(yīng)用軟件。使用計算機進行考勤信息的處理,具有如下優(yōu)點:及時信息交流,改善管理質(zhì)量通過本系統(tǒng)對考勤信息的規(guī)范管理,可以及時掌握員工的信息,也能讓員
3、工及時了解部門主管發(fā)布的通知信息。方便查詢,提高工作效率。 二、需求(xqi)分析本系統(tǒng)要實現(xiàn)的功能模塊主要有:基本信息設(shè)置(shzh)模塊、檔案管理模塊、審批模塊、查詢模塊、考勤記錄模塊、匯總統(tǒng)計模塊和系統(tǒng)管理模塊。要求提供數(shù)據(jù)輸入、輸出(shch)和整理功能,滿足日常工作的需要;具有查詢、統(tǒng)計等功能,方便用戶快捷使用和管理信息,提高工作效率;采用一定的安全保護措施,應(yīng)分有不同的使用權(quán)限,保證系統(tǒng)的實用性;具有系統(tǒng)備份和恢復(fù)功能,使系統(tǒng)使用者能容易進行維護,同時軟件功能完整、運行穩(wěn)定、界面友好、操作簡便。1. 對功能的規(guī)定針對企業(yè)的考勤管理業(yè)務(wù),本系統(tǒng)要實現(xiàn)以下功能:基本信息設(shè)置擁有對系統(tǒng)中
4、的基本信息,包括:部門信息、員工職稱信息、請假類型信息、加班類型信息、出差類型信息的添加、修改、刪除、查詢等操作的功能,當(dāng)大量新的信息需要錄入時,可以通過EXCEL表格導(dǎo)入方式實現(xiàn),同時也可將相應(yīng)信息分別導(dǎo)出到EXCEL表格中。檔案管理擁有對系統(tǒng)中的員工信息、考勤制度信息、通知信息進行增加、修改、刪除、查詢等操作的功能。在錄入員工信息時,輸入員工的身份證號,進行回車操作即可自動填充員工性別,年齡,身份屬地,生日信息。當(dāng)有大量新的員工信息、通知信息需要錄入時,可以通過EXCEL表格導(dǎo)入方式實現(xiàn),同時也可將相應(yīng)信息導(dǎo)出到EXCEL表格中。審批管理擁有對系統(tǒng)中的請假信息、加班信息、出差信息進行審批的
5、功能。查詢出相應(yīng)的記錄,對該記錄進行審批,審批通過則說明該條請假記錄生效,否則為無效記錄。此功能只有考勤主管和部門主管有操作權(quán)限。查詢管理擁有對系統(tǒng)中員工信息、企業(yè)考勤制度、出勤信息、請假信息、加班信息、出差信息進行查詢的功能??梢园凑諉T工編號,姓名,部門名等條件對員工具體信息進行模糊(m hu)/精確查詢??记谟涗浌芾?gunl)擁有對企業(yè)員工中的出勤信息、請假信息、加班信息、出差信息進行增加、修改、刪除、查詢等操作,同時具有將相應(yīng)信息導(dǎo)出到EXCEL表格中的功能。其中只有可以(ky)對出勤信息進行操作,當(dāng)有大量員工考勤相關(guān)信息需要錄入時,只有考勤管理員可以通過EXCEL表格導(dǎo)入方式實現(xiàn)。匯
6、總統(tǒng)計管理擁有對考勤情況進行統(tǒng)計以及報表查看的功能。選擇某一時間段,可對該時間段員工的考勤信息進行統(tǒng)計,其中只有審核通過的請假記錄,加班記錄,出差記錄能夠參與到考勤情況統(tǒng)計中??梢詫y(tǒng)計過的考勤情況通過報表來查看到具體信息。系統(tǒng)管理擁有密碼修改、用戶管理、系統(tǒng)初始化、數(shù)據(jù)備份/恢復(fù)、日志查看的功能。密碼修改供當(dāng)前登錄用戶修改自己的密碼,修改時需要對新密碼提供二次輸入校對。用戶管理提供用戶的添加,修改,刪除,用戶名使用的是員工的編號。系統(tǒng)初始化將系統(tǒng)中的數(shù)據(jù)都刪除,初始化前需對系統(tǒng)中的數(shù)據(jù)進行備份。數(shù)據(jù)備份/恢復(fù)擁有對系統(tǒng)中的數(shù)據(jù)進行備份和恢復(fù)的功能。日志查看擁有對使用本系統(tǒng)的用戶的登錄及退出信
7、息進行查看的功能,以維護系統(tǒng)的正常操作。2. 對性能的規(guī)定為保證本系統(tǒng)能夠長期、安全、穩(wěn)定、可靠、高效的運行,系統(tǒng)須滿足以下性能要求:實用性:本系統(tǒng)應(yīng)能夠系統(tǒng),便捷,快速的實現(xiàn)對員工作休時間的管理,從而保障企業(yè)的高效運營。操作簡單:本系統(tǒng)應(yīng)適用于不同計算機水平的使用者,系統(tǒng)的操作盡可能簡單易行。技術(shù)先進:產(chǎn)品的系統(tǒng)設(shè)計和開發(fā)應(yīng)緊跟計算機的發(fā)展潮流(choli),產(chǎn)用目前較先進的設(shè)計思想,利用最先進的開發(fā)技術(shù)和開發(fā)工具。安裝使用簡便(jinbin):服務(wù)器端安裝簡潔明了,客戶機無需再裝任何軟件,可直接使用。適應(yīng)性和可擴充(kuchng)性:應(yīng)能廣泛使用與不同的企業(yè),開發(fā)過程中,應(yīng)充分考慮可擴充問
8、題。3. 數(shù)據(jù)管理能力的要求為保證企業(yè)使用本系統(tǒng)中數(shù)據(jù)的完整性,須滿足以下數(shù)據(jù)管理要求:盡可能減少故障的發(fā)生,保障好數(shù)據(jù)的備份,數(shù)據(jù)的備份采用數(shù)據(jù)庫服務(wù)器的備份功能實現(xiàn)。當(dāng)系統(tǒng)發(fā)生故障時,當(dāng)重新啟動的時候,系統(tǒng)能夠正常運行,若有數(shù)據(jù)遺失,能夠通過備份來還原。要保證數(shù)據(jù)的安全性,只有授權(quán)的人員才能進入系統(tǒng)進行相應(yīng)的操作。發(fā)現(xiàn)有錯誤的數(shù)據(jù),及時地進行修改。系統(tǒng)總體(zngt)分析與設(shè)計1. 解決方案為企業(yè)中的員工分別分配一個用戶號和密碼(m m)及相應(yīng)角色,員工可用該用戶名和密碼登錄進入企業(yè)考勤管理系統(tǒng)。不同的角色對應(yīng)有不同的使用權(quán)限:普通員工可以進入系統(tǒng)可以對各類信息進行查詢,錄入自己的請假,加
9、班及出差的記錄,對考勤的統(tǒng)計報表進行查看以及對自己的登錄密碼進行修改;部門主管除擁有普通員工所有權(quán)限外,還可對員工信息,通知信息進行添加,修改,刪除的操作,對員工輸入的請假,加班,出差記錄進行審批,對員工某一階段的考勤進行統(tǒng)計;考勤管理員除擁有普通員工所有權(quán)限外,還可對企業(yè)的考勤制度進行設(shè)置,對員工的出勤信息進行錄入或?qū)耄瑫r也可對員工的請假,加班及出差記錄進行批量導(dǎo)入;考勤主管具有系統(tǒng)的完全管理權(quán)限,要定期對系統(tǒng)進行檢查和備份,以維護系統(tǒng)的安全。 系統(tǒng)設(shè)計分八個模塊:主菜單模塊,登錄模塊,檔案管理(gunl)模塊,審批管理模塊,查詢管理模塊,考勤記錄管理模塊,匯總統(tǒng)計管理模塊和系統(tǒng)管理模塊
10、。具體的功能結(jié)構(gòu)圖如圖1-1所示。圖3-1 企業(yè)考勤管理系統(tǒng)功能結(jié)構(gòu)圖本系統(tǒng)(xtng)采用Delphi技術(shù),以及SQL Server數(shù)據(jù)管理技術(shù)進行主要的設(shè)計,數(shù)據(jù)庫用SQL Server進行設(shè)計和管理。系統(tǒng)使用分三種(sn zhn)角色,包括:員工,考勤管理員,部門主管,考勤主管。體現(xiàn)各角色的使用權(quán)限的功能結(jié)構(gòu)圖如圖1-2。圖3-2 體現(xiàn)各角色(ju s)使用權(quán)限的功能結(jié)構(gòu)圖2. 數(shù)據(jù)庫設(shè)計(shj)Personal(員工(yungng)信息表)員工信息表主要(zhyo)存放員工的基本信息,具體字段信息如表3-1。表3-1 員工信息表字段名稱類型長度碼說明Pno員工編號CHAR14PKP+
11、日期+序號Pname姓名VARCHAR10Not nullDno部門編號CHAR14FKNot nullPTno職務(wù)編號CHAR14FKNot nullIDCard身份證CHAR18ShuDi身份屬地CHAR20Sex性別CHAR2Age年齡INT-Birth生日DATE-Tel電話號碼VARCHAR20Photo相片VARBINARY50PersonalType(職稱表)職稱表主要存放員工職稱信息,被員工信息表所調(diào)用,具體字段信息如表4-9。表4-9 職稱表字段名稱類型長度碼說明PTno職稱編號CHAR14PKPT+序號PTname職稱名稱VARCHAR20Not nullDepartmen
12、t(部門信息表)部門信息表主要存放(cnfng)部門基本信息,提供給員工信息表調(diào)用,具體字段信息如表4-10。表4-10 部門(bmn)信息表字段名稱類型長度碼說明Dno部門編號CHAR14PKD+序號Dname部門名稱VARCHAR20Not nullIntroduce部門簡介VARCHAR100Attendance(考勤記錄表)考勤記錄表主要存放(cnfng)員工日常的出勤信息,具體字段信息如表4-11。表4-11 考勤記錄表字段名稱類型長度碼說明Ano記錄編號CHAR14PKA+日期+序號Pno員工編號CHAR14FKNot nullInOut出入情況CHAR2Not nullATime
13、時間DATETIME-Not nullOverwork(加班記錄表)加班記錄表主要存放員工日常加班的記錄信息,只有主管審批通過后才能生效,才能進行相應(yīng)的加班統(tǒng)計,具體字段信息見表4-12。表4-12 加班記錄表字段名稱類型長度碼說明Ono記錄編號CHAR14PKO+日期+序號Pno員工編號CHAR14FKNot nullStartTime開始時間DATETIME-EndTime結(jié)束時間DATETIME-OTno加班類型編號CHAR14FKNot nullAPProval審核結(jié)果CHAR1OverworkType(加班(ji bn)類型表)加班類型表主要存放加班類型信息,提供給加班記錄表調(diào)用(d
14、ioyng),具體字段信息如表4-13。表4-13 加班(ji bn)類型表字段名稱類型長度碼說明OTno加班類型編號CHAR14PKOT+序號OTname加班類型名VARCHAR20Not nullErrand(出差記錄表)出差記錄表主要存放出差記錄信息,只有主管審批通過后才能生效,才能進行相應(yīng)的出差統(tǒng)計,具體字段如表4-14。表4-14 出差記錄表字段名稱類型長度碼說明Eno記錄編號CHAR14PKE+日期+序號Pno員工編號CHAR14FKNot nullStartTime開始時間DATETIME-EndTime結(jié)束時間DATETIME-Place出差地點VARCHAR20ETno出差類
15、型編號CHAR14FKNot nullAPProval審核結(jié)果CHAR1ErrandType(出差類型表)出差類型表主要存放加班類型信息,提供給出差記錄表調(diào)用,具體字段信息如表4-15。表4-15 出差類型表字段名稱類型長度碼說明ETno出差類型編號CHAR14PKET+序號ETname出差類型名VARCHAR20Not nullLeave(請假(qng ji)記錄表)請假記錄表主要存放(cnfng)請假記錄信息,只有主管審批(shnp)通過后才能生效,才能進行相應(yīng)的請假統(tǒng)計,具體字段如表4-16。表4-16 請假記錄表字段名稱類型長度碼說明Lno記錄編號CHAR14PKL+日期+序號Pno員
16、工編號CHAR14FKNot nullStartTime開始時間DATETIME-EndTime結(jié)束時間DATETIME-LTno請假類型編號CHAR14FKNot nullDemo情況說明VARCHAR100APProval審核結(jié)果CHAR1LeaveType(請假類型表)請假類型表主要存放加班類型信息,提供給請假記錄表調(diào)用,具體字段信息如表4-17。表4-17 請假類型表字段名稱類型長度碼說明LTno請假類型編號CHAR14PKLT+序號LTname請假類型名VARCHAR20Not nullAttendanceCount(出勤情況統(tǒng)計表)出勤情況統(tǒng)計表主要記錄的是員工出勤,請假,加班,出
17、差的一些統(tǒng)計信息,提供給企業(yè)管理著進行查看,具體字段信息如表4-18。表4-18 出勤(ch qn)情況統(tǒng)計表字段名稱類型長度碼說明ACno記錄編號CHAR14PKG+日期+序號Pno員工編號CHAR14FKNot nullARno制度編號CHAR14FKNot nullYearMonth年月CHAR7Not nullShouldTime應(yīng)工作時間INT-小時ActualTime實際工作時間INT-小時LeaveTime累計請假時間INT-半天OverworkTime累計加班時間INT-小時ErrandTime累計出差時間INT-半天Late遲到次數(shù)SMALLINT-次LateTime遲到時間
18、累計INT-小時Early早退次數(shù)SMALLINT-次EarlyTime早退時間累計INT-小時Absence曠工次數(shù)SMALLINT-次AbsenceTime曠工時間累計INT-小時Logdb(日志(rzh)信息表)日志信息表主要記錄的是企業(yè)中的員工登錄到系統(tǒng)(xtng)以及退出系統(tǒng)的信息,具體字段信息如表4-19。表4-19 日志信息表字段名稱類型長度碼說明Logno日志編號INT-PK自動編號Uno用戶編號CHAR14FKNot nullLoginTime登錄時間DATETIME-LogoutTime退出時間DATETIME-Userdb(用戶(yngh)信息表)用戶信息表主要存儲用戶的
19、信息,其中員工編號作為用戶名進行登錄(dn l),密碼默認(rèn)為123456,同時也定義了用戶的角色(ju s),具體字段信息如表4-20。表4-20 用戶信息表字段名稱類型長度碼說明Uno用戶編號CHAR14PKU+日期+序號Pno員工編號CHAR14FKNot nullAuthority角色CHAR2Passwd密碼VARCHAR20默認(rèn)為123456ARegulation(考勤制度表)考勤制度表主要存儲的是企業(yè)的考勤制度,具體字段信息如表4-21。表4-21 考勤制度表字段名稱類型長度碼說明ARno制度編號CHAR14PKAR+序號ComeTime上午上班時間TIME-Not nullGoo
20、ffTimepm上午下班時間TIME-Not nullComeTimepm下午上班時間TIME-Not nullGooffTime下午下班時間TIME-Not nullAmemo考勤制度VARCHAR10000ShuDi(屬地表)屬地表主要存儲的是身份證前6位所對應(yīng)的屬地名稱的信息,錄入員工數(shù)據(jù)中身份證數(shù)據(jù)時快速得出員工性別,年齡,身份屬地,生日信息,減小因手工輸入產(chǎn)生的信息錯誤概率,具體字段信息如表4-22。表4-22 屬地表字段名稱類型長度碼說明ID編號CHAR6PKNot nullBM屬地編號CHAR14Not nullDQ屬地名稱VARCHAR30Not nullNotice(通知(t
21、ngzh)表)通知表主要存儲的是企業(yè)中的一些通知信息(xnx),具體字段信息如表4-23。表4-23 通知(tngzh)表字段名稱類型長度碼說明Nno 通知編號CHAR14PKN+日期+序號NTime通知時間Datetime-Title 通知標(biāo)題VARCHAR30Not nullContent 通知內(nèi)容CHAR5000四、系統(tǒng)(xtng)的實現(xiàn)1. 界面設(shè)計系統(tǒng)設(shè)計中的界面設(shè)計不同于一般的平面設(shè)計,擁有自身的設(shè)計特征。網(wǎng)頁(wn y)設(shè)計應(yīng)時刻圍繞“信息(xnx)傳達”這一主題來進行。界面力求清晰、準(zhǔn)確、有力地傳達信息。本系統(tǒng)主要采用的的界面模板主要包括:登錄界面、主菜單界面、基本信息設(shè)置界面
22、、檔案管理界面、查詢管理界面、考勤記錄管理界面、審核管理界面、匯總統(tǒng)計界面、系統(tǒng)管理設(shè)置界面。 (1). 登錄界面運行本系統(tǒng)后,出現(xiàn)如圖4-1的登錄界面,輸入用戶名和密碼,選擇用戶角色,點擊“登錄”按鈕,如果輸入的信息不正確,會有“用戶名或密碼錯誤,請檢查!”的錯誤提醒 ,如果三次登陸錯誤,會有“你無權(quán)使用本系統(tǒng)!”的錯誤提醒,即每次登錄,最多允許有三次登錄錯誤的機會。當(dāng)所有信息都輸入正確后,可以登錄到主界面,不用的用戶角色進入的主界面中的功能菜單不同。登錄界面允許效果圖如圖4-1。4-1 登錄(dn l)界面(2). 主菜單(ci dn)界面用戶(yngh)登錄后,可進入到如圖4-2的主菜單
23、界面,在主菜單界面中,用戶可以看到企業(yè)中發(fā)布的通知信息,這有利于讓企業(yè)中的員工盡可能快而全面地掌握企業(yè)中消息的動態(tài)。主菜單界面如圖4-2圖4-2 主菜單界面(3).查詢管理界面在主菜單上點擊查詢菜單下的“請假情況查詢”,即可進入到如下圖4-3請假情況查詢界面,在界面中輸入員工號或員工姓名、部門名稱、請假類型等信息,以及選擇時間范圍的信息,即可進行組合查詢以及模糊查詢。其他信息的查詢功能跟此功能基本一致,在此不再贅述。請假情況查詢界面如圖4-3。圖4-3 請假情況查詢(chxn)界面(4). 信息管理界面(jimin)信息管理界面(jimin)包括:基本信息設(shè)置界面(圖4-4)、檔案管理界面(圖
24、4-5)、考勤記錄管理界面(圖4-6)。點擊信息管理界面中的“添加”按鈕,相應(yīng)的記錄信息將自動編號,在輸入相應(yīng)信息即可。以員工信息管理為例,點擊“添加”按鈕,編號處將自動填充,編號規(guī)則為::“P+年月日+001”,輸入省份證號后,回車即可得出性別、年齡、省份屬地、生日等信息,在部門的編輯框處雙擊,即可得出企業(yè)中的部門信息,選擇相應(yīng)的部門,則可在該編輯框中得出相應(yīng)的部門編號,也可手動輸入正確的部門編號,職稱的填寫方式和部門的填寫方式相同,再相應(yīng)地填寫其他信息,點擊保存,如果信息填寫無誤,會有“保存成功!”的提示,添加信息完成。同時也可選中相應(yīng)的員工信息,對其進行刪除操作。也可導(dǎo)入/導(dǎo)出Excel
25、表格。其他信息管理的功能跟此功能類似,不再贅述。檔案管理界面如圖4-4。圖4-4 檔案管理界面(jimin)圖4-5 基礎(chǔ)信息設(shè)置(shzh)界面圖4-6 考勤記錄管理(gunl)界面(5). 審批(shnp)界面在主菜單上點擊(din j)查詢菜單下的“出差審批”,即可進入到出差審批界面,如圖4-7。查詢出相應(yīng)的員工出差信息,覺得員工的出差信息無誤后即可進行審批,點擊“確定”按鈕后,會出現(xiàn)“審批完成!”的提示。出差審批界面如圖4-7。圖4-7 審批(shnp)界面(6). 統(tǒng)計(tngj)界面在主菜單上點擊(din j)查詢菜單下的“出差審批”,即可進入到出差審批界面,如圖4-8。選擇需要統(tǒng)
26、計的起始時間,點擊統(tǒng)計,即可得到員工考勤情況的統(tǒng)計表(統(tǒng)計的信息包括:應(yīng)工作時間(小時),實際工作時間(小時),累計請假時間(半天),累計加班時間(小時),累計出差時間(半天),遲到次數(shù)(次),遲到時間累計(小時),早退次數(shù)(次),早退時間累計(小時),曠工次數(shù)(次),曠工時間累計(小時)。統(tǒng)計需要一些時間,進度條會顯示統(tǒng)計的進度。統(tǒng)計界面如圖4-8。圖4-8 統(tǒng)計界面系統(tǒng)(xtng)實現(xiàn)關(guān)鍵技術(shù)(1). 添加數(shù)據(jù)(shj)時自動編號運行系統(tǒng)時,當(dāng)需要(xyo)新增信息時,點擊“添加”按鈕,即可進行自動對記錄的ID進行編號,以實現(xiàn)編號的規(guī)范性。添加數(shù)據(jù)時自動編號的代碼如下:自定義函數(shù):根據(jù)原來
27、編號bh,構(gòu)造新編號:年月日+3位序列。function xbh(bh:string):string;var d0,d1,c : string; begin d0:=copy(bh,2,8);/取8位日期數(shù)碼 c:=copy(bh,10,3);/取最后3位數(shù)碼 d1:=formatdatetime(yyyymmdd,now);/獲取當(dāng)天日期 if d0 d1 then / 如果不是同一天 bh:=d1+ 001/構(gòu)造當(dāng)天第一個編號 else begin c:=00+inttostr(strtoint(c)+1);/在原來基礎(chǔ)上加1 bh:=d1+copy(c,length(c)-2,3);/構(gòu)
28、造編號:日期+3位整數(shù) end; xbh:= bh; end;(2). 員工(yungng)信息管理中“添加(tin ji)”按鈕的點擊(din j)事件代碼。procedure TDanganForm.SpeedButton1Click(Sender: TObject);var bm:string;begin if adotable1.IsEmpty then bm:=P+formatdatetime(yyyymmdd,now)+ 001/構(gòu)造第一個編號 else begin adotable1.Last; bm:=adotable1Pno;/ 讀取數(shù)據(jù)表末尾記錄的編號 bm:=P+xbh(
29、bm); end; adotable1.Append;/在表尾添加新紀(jì)錄 DBedit11.Text:=bm;/在編輯框中填寫新編號 DBGrid2.Fields0.Text:=bm;/在表格框中填寫新編號 DBedit12.SetFocus;/將光標(biāo)移到填寫姓名框end;員工信息添加為例,效果如圖4-9。圖4-9 員工信息添加(tin ji)頁面(3). 輸入身份證號回車顯示(xinsh)其他相關(guān)信息運行系統(tǒng),添加員工信息時,輸入身份證號,回車即可顯示(xinsh)該身份證號對應(yīng)員工的身份屬地、性別、年齡及生日信息。使用此功能減小了錄入信息的人員因失誤輸入錯誤信息的概率,保證了信息的正確性。
30、運行效果圖如圖5-1所示,具體代碼如下:1. 身份證號對應(yīng)編輯框回車事件代碼。procedure TDanganForm.DBEdit13KeyPress(Sender: TObject; var Key: Char);const W:array 1.18 of integer = (7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1); /位權(quán) A:array 0.10 of char = (1,0,x,9,8,7,6,5,4,3,2); /校驗碼Var i, j, S: integer; NewID, shud: string; da:Tdatetime; kk:b
31、oolean;begin kk:= (key=#8) or (key=#13) or (key=x) or (key=X) or (key=#48) and (key=#57); if not kk then key:=#0; /鍵盤輸入過濾(gul)掉非身份證號碼 if key=#13 then begin NewID:= DBedit13.Text; /1. 檢查(jinch)長度 if Length(NewID) 18 then begin messageDlg(輸入(shr)的數(shù)字不是18位,請重新輸入!,mtError,mbOK,0); DBedit13.SetFocus; exit
32、; end; /2.檢查屬地 ADOquery1.close; ADOquery1.Parameters.ParamByName(sd).Value:= copy(NewID,1,6); /給動態(tài)SQL語句賦值 ADOquery1.open; /打開,查詢記錄 if ADOquery1.RecordCount=0 then /如果找不到sd相同的記錄 begin MessageDlg(前面六位數(shù)字無效,請檢查!,mtinformation,mbok,0); DBedit13.SetFocus; exit; end else shud :=ADOquery1.FieldByName(DQ).Va
33、lue; /獲取(huq)屬地/3. 檢查(jinch)年年份 i:=strtoint(copy(NewID,7,4); /獲取(huq)年份 if ( i2020) then begin MessageDlg(年份號碼無效,請檢查!,mtinformation,mbok,0); DBedit13.SetFocus; exit; end ; j:=strtoint(copy(NewID,11,2); /獲取月份 if ( j12) then begin MessageDlg(月份號碼無效,請檢查!,mtinformation,mbok,0); DBedit13.SetFocus; exit;
34、end ; s:=strtoint(copy(NewID,13,2); if ( s31) then begin MessageDlg(日數(shù)號碼無效,請檢查!,mtinformation,mbok,0); DBedit13.SetFocus; exit; end ; da:= EncodeDate(i,j,s); /構(gòu)造生日 /4. 檢查校驗碼 s:= 0; for i:=1 to 17 do begin j:= StrToInt(NewIDi) * Wi; s:= s + j; end; s:= s mod 11; if NewID18=X then NewID18:=x; /將大寫字母X變
35、成小寫字母x if NewID18AS then begin messageDlg(校驗碼錯!請重新(chngxn)輸入!,mtError,mbOK,0); showmessagefmt(校驗碼錯!應(yīng)該(ynggi)是%s!請重新輸入!,AS); DBedit13.SetFocus; exit; end; /5. 填寫(tinxi)證件的詳細信息 ADOTable1.Edit; DBedit16.Text :=shud; /屬地 DBedit17.Text :=formatdatetime(ddddd,da); /生日 DBedit18.Text :=formatdatetime(yy,dat
36、e-da); /年齡 if NewID17 in 1,3,5,7,9 then /以下是判別性別 DBedit15.Text :=男 else DBedit15.Text :=女; end;end;(4). 導(dǎo)出EXCEL表格 運行系統(tǒng)時,可以對系統(tǒng)中的相應(yīng)數(shù)據(jù)信息導(dǎo)出到excel表格中,方便用戶使用相應(yīng)的數(shù)據(jù)信息。1. 將某個數(shù)據(jù)表導(dǎo)出成Excel表的通用函數(shù)function ExportDBGrid(DBGrid: TDBGrid; SheetName: string): boolean;/直接保存(bocn),不顯示EXCELVarc, r, i, j: integer;app: Ole
37、variant;TempFileName, ResultFileName: string;begintry result := True; app := CreateOLEObject(Excel.application); app.WorkBooks.Add(xlWBatWorkSheet); except Application.MessageBox(Excel沒有(mi yu)正確安裝!,警告,MB_OK); result := False; exit; end; mainForm.SaveDialog1.DefaultExt:=xls; mainForm.SaveDialog1.Fil
38、eName := SheetName; if mainForm.SaveDialog1.Execute then TempFileName := mainForm.SaveDialog1.FileName else Exit; app.Workbooks.add; app.Visible := false; Screen.Cursor := crHourGlass; DBGrid.DataSource.DataSet.First; c := DBGrid.DataSource.DataSet.FieldCount; r := DBGrid.DataSource.DataSet.RecordCo
39、unt; Application.ProcessMessages; for i := 0 to c - 1 do app.cells(1, 1 + i) := DBGrid.DataSource.DataSet.Fieldsi.DisplayLabel; for j := 1 to r do begin for i := 0 to c - 1 do app.cells(j + 1, 1 + i) := DBGrid.DataSource.DataSet.Fieldsi.AsString; DBGrid.DataSource.DataSet.Next; end; ResultFileName :
40、= TempFileName; if ResultFileName = then ResultFileName := 數(shù)據(jù)(shj)導(dǎo)出; if FileExists(TempFileName) then DeleteFile(TempFileName); app.Activeworkbook.saveas(TempFileName); app.Activeworkbook.close(false); app.quit; app := unassigned;end;調(diào)用(dioyng)導(dǎo)出Excel數(shù)據(jù)的函數(shù),“導(dǎo)出Excel表格(biog)”按鈕的點擊事件代碼。procedure TDang
41、anForm.SpeedButton5Click(Sender: TObject);begin try Screen.Cursor := crHourGlass; /將鼠標(biāo)成沙漏狀 main.ExportDBGrid(DBGrid2,); /調(diào)用函數(shù)導(dǎo)出數(shù)據(jù) finally Screen.Cursor := crDefault; /回復(fù)鼠標(biāo)原狀 end;end;(5).導(dǎo)入EXCEL表格運行系統(tǒng)時,當(dāng)需要新增大量數(shù)據(jù)時,可以通過導(dǎo)入Excel表格實現(xiàn)批量增加的操作(cozu)。注意:需要導(dǎo)入的Excel表格中的數(shù)據(jù)一定要與數(shù)據(jù)表中的數(shù)據(jù)類型一致,否則會出現(xiàn)導(dǎo)入失敗的情況。導(dǎo)入Excel表格中數(shù)
42、據(jù)的代碼如下:procedure TDanganForm.SpeedButton9Click(Sender: TObject); var oe:variant; str:string; i,j,n:integer; begin if opendialog1.Execute then opendialog1.DefaultExt:=xls; str:=opendialog1.FileName; oe:=CreateOleObject(Excel.Application); oe.workbooks.open(str); /連接(linji)所選定的Excel表 n:=oe.Worksheets1
43、.UsedRange.Rows.Count; /求工作(gngzu)表 sheet1中已有數(shù)據(jù)的行數(shù) tryfor i:=2 to n do /從Excel表第2行開始,逐行讀入(假設(shè)第一行為表頭) begin ADoTable2.Append; /添加空記錄 for j:=1 to ADOTable2.fieldcount do ADOTable2.Fieldsj-1.Value:=oe.worksheets1.cellsi,j.value; end; ADoTable2.Refresh; showmessage(導(dǎo)入完畢); except showmessage(數(shù)據(jù)庫錯誤或有重復(fù)編號,請
44、檢查); end;end;(6). 組合(zh)查詢配合模糊查詢組合查詢配合模糊查詢能夠滿足查詢的各種需求。本系統(tǒng)中多處都實現(xiàn)了組合查詢以及(yj)模糊查詢。以查詢請假記錄為例,代碼如下:1. 查詢(chxn)請假記錄,“查詢”按鈕的事件代碼。procedure TSelectForm.SpeedButton3Click(Sender: TObject);var sqlstr: string; begdate: string; enddate: string;begin if ComboBox2.Text then begin begdate := datetostr(DateTimePick
45、er3.date) ; enddate := datetostr(DateTimePicker4.date); if combobox2.Text=在.日 then sqlstr := select * from Leave_Per_D where StarTime=+ begdate + and StarTime +datetostr(DateTimePicker3.date+1) + and Pno like %+ edit4.text + % and Pname like %+ edit10.Text + % and Dname like %+ edit9.Text + % and LT
46、name like %+ edit17.Text + % else if combobox2.Text=在.前 then sqlstr := select * from Leave_Per_D where StarTime=+ begdate + and Pno like %+ edit4.text + % and Pname like %+ edit10.Text + % and Dname like %+ edit9.Text + % and LTname like %+ edit17.Text + % else if combobox2.Text=在.間 then sqlstr := s
47、elect * from Leave_Per_D where StarTime=+ begdate + and StarTime= + enddate + and Pno like %+ edit4.text + % and Pname like %+ edit10.Text + % and Dname like %+ edit9.Text + % and LTname like %+ edit17.Text + %; end else sqlstr := select * from Leave_Per_D where Pno like %+ edit4.text + % and Pname
48、like %+ edit10.Text + % and Dname like %+ edit9.Text + % and LTname like %+ edit17.Text + %; ADOQuery2.Close; ADOQuery2.SQL.Clear; ADOQuery2.SQL.Add(sqlstr); ADOQuery2.open;end;查詢(chxn)效果如圖4-10。圖4-10 請假(qng ji)查詢效果圖(7). 匯總(huzng)統(tǒng)計運行本系統(tǒng)時,選擇需要統(tǒng)計的起始時間,點擊統(tǒng)計,即可得到員工考勤情況的統(tǒng)計表(統(tǒng)計的信息包括:應(yīng)工作時間(小時),實際工作時間(小時),累
49、計請假時間(半天),累計加班時間(小時),累計出差時間(半天),遲到次數(shù)(次),遲到時間累計(小時),早退次數(shù)(次),早退時間累計(小時),曠工次數(shù)(次),曠工時間累計(小時)。具體代碼如下:“統(tǒng)計(tngj)”按鈕事件(shjin)代碼。procedure THuizForm.SpeedButton2Click(Sender: TObject);var bm,Pno,ARno:string; /保存(bocn)員工號 i,j,n,counter:integer; /用于循環(huán)和計數(shù) Time:Array0.3of TTime; /保存上下班時間 /Hour:array0.1of double;
50、 /保存上下午工作時間 /a: double; Hour:array0.1of integer; a: integer; StartTime,EndTime:TDate; /保存始末時間TimeStamp,Late_Time,Early_Time,Work_Start,Work_end:TDateTime;/保存中間判斷時間 Late,Early,Absent,Leave,Errand:Boolean;/保存判斷結(jié)果 WorkHour,OverHour,LeaveHDay,ErrandHDay,LateTime,EarlyTime,AbsentTime,ActualTime:Integer;/
51、保存時間間隔長度 LateTimes,EarlyTimes,AbsentTimes:SmallInt; Temp:String;begin Time0:= strtotime(DanganForm.ADOTable4ComeTime); Time1:= strtotime(DanganForm.ADOTable4GooffTimepm); Time2:= strtotime(DanganForm.ADOTable4ComeTimepm); Time3:= strtotime(DanganForm.ADOTable4GooffTime); Hour0:=Round(Time1-Time0)*24
52、); /上午(shngw)工作時間 Hour1:=Round(Time3-Time2)*24); /下午(xiw)工作時間 a:=Hour0+Hour1; /一天(y tin)工作時間 ARno:= DanganForm.ADOTable4ARno; StartTime:=DateTimePicker1.Date; EndTime:=DateTimePicker2.Date; begin /提取員工列表 T_person.Filtered:=True; T_person.Open; n:=T_person.RecordCount; i:=0; Gauge1.Progress:=0; T_per
53、son.First; while not T_person.Eof do begin /獲取出勤記錄 Pno:=T_personPno; Q_attend.Close; Q_attend.Parameters.ParamValuesPno:=Pno; Q_attend.Parameters.ParamValuesSTARTTIME:=StartTime; Q_attend.Parameters.ParamValuesENDTIME:=EndTime+1; Q_attend.Open; Q_attend.First; /初始化 WorkHour:=0; LeaveHDay:=0; ErrandH
54、Day:=0; LateTimes:=0; LateTime:=0; EarlyTime:=0; AbsentTime:=0; EarlyTimes:=0; AbsentTimes:=0; ActualTime:=0; OverHour:=0; TimeStamp:=StartTime; while TimeStampEndTime+0.1 do begin if (DayOfWeek(TimeStamp)1) and (DayOfWeek(TimeStamp)7) then begin ActualTime:=ActualTime+a; for j:=0 to 1 do /遍歷(bin l)
55、班次 begin Late_Time:=TimeStamp+Time2*j; Early_Time:=TimeStamp+Time2*j+1; /判斷是否(sh fu)請假 Q_leave.Close; Q_leave.Parameters.ParamValuesPno:=Pno; Q_leave.Parameters.ParamValuesSTARTTIME:=Late_Time; Q_leave.Parameters.ParamValuesENDTIME:=Early_Time; Q_leave.Open; Leave:=(Q_leave.RecordCount0); /判斷是否(sh f
56、u)出差 Q_errand.Close; Q_errand.Parameters.ParamValuesPno:=Pno; Q_errand.Parameters.ParamValuesSTARTTIME:=Late_Time; Q_errand.Parameters.ParamValuesENDTIME:=Early_Time; Q_errand.Open; errand:=(Q_leave.RecordCount0); if leave then /請假(qng ji) Inc(LeaveHDay) else if errand then /出差(ch chi) begin Inc(Err
57、andHDay); WorkHour:=WorkHour+Hourj; end else /正常(zhngchng)上班 begin Work_start:=Late_Time; Work_end:=Early_Time; Late:=True; Absent:=False; /判斷是否遲到 while (not Q_attend.Eof) and (Q_attendIOTime=Late_Time) do begin Late:=(Q_attendInOut=O); Q_attend.Next; end; /判斷是否曠工 if Late then begin if (not Q_attend
58、.Eof) and (Q_attendIOTimeEarly_Time) then begin Work_start:=Q_attendIOTime; /記錄遲到(chdo)時間LateTime:=LateTime+Round(Work_Start-Late_Time)*24); end else Absent:=True; AbsentTime:=AbsentTime+Round(Early_Time-Late_Time)*24); end; Early:=False; /判斷(pndun)是否早退 while (not Q_attend.Eof) and (Q_attendIOTimeEa
59、rly_Time) do begin Early:=(Q_attendInOut=O); if Early then begin Work_end:=Q_attendIOTime; EarlyTime:=EarlyTime+Round(Early_Time-Late_Time)*24); end else Work_end:=Early_Time; Q_attend.Next; end; if Absent then Inc(AbsentTimes) else begin if Late then Inc(LateTimes); if Early then Inc(EarlyTimes); W
60、orkHour:=WorkHour+Round(Work_end-Work_start)*24); /計算實際工作(gngzu)時間 end; end;/一個班次(bnc)判斷結(jié)束 end; /下一班次(bnc) end;/是否休息日 TimeStamp:=TimeStamp+1;/推進一天 end; /后一天考勤 /統(tǒng)計加班時間 Q_overtime.Close; Q_overtime.Parameters.ParamValuesPno:=Pno; Q_overtime.Parameters.ParamValuesSTARTTIME:=StartTime; Q_overtime.Parame
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《七 小小運動會:7、6加幾》(教案)-一年級上冊數(shù)學(xué) 青島版
- 五年級下冊數(shù)學(xué)教案-4.2 分?jǐn)?shù)加減法的簡算 ︳西師大版
- 勞動合同管理臺賬(2025年版)
- 二年級下冊數(shù)學(xué)教案-4.1 《長方形和正方形的特征》 ︳西師大版
- 一年級上冊數(shù)學(xué)教案-4 14,15減幾 ︳西師大版
- 二年級下冊數(shù)學(xué)教案-租船3 北師大版
- 模擬試卷一(原卷版+解析版)-三年級語文上學(xué)期期末全真模擬卷(部編版五四制)
- 人教版三年級上冊期末考試數(shù)學(xué)試卷-
- 《十一月四日風(fēng)雨大作》歷年中考古詩欣賞試題匯編(截至2023年)
- 2025屆黑龍江佳木斯一中高三上學(xué)期五調(diào)地理試題及答案
- 新人教版五年級下冊數(shù)學(xué)(新插圖) 練習(xí)二 教學(xué)課件
- 磚數(shù)量自動計算、換算表
- 【課題】《中學(xué)道德與法治法治意識培養(yǎng)策略的研究》中期檢查表
- 《十萬個為什么》推進課(小學(xué)課件)
- 發(fā)展?jié)h語初級綜合1:第28課《長城有八千八百五十多公里》
- YY/T 1619-2018牙科學(xué)種植體系統(tǒng)及相關(guān)過程的術(shù)語
- GB/T 18838.1-2002涂覆涂料前鋼材表面處理噴射清理用金屬磨料的技術(shù)要求導(dǎo)則和分類
- GA/T 1162-2014法醫(yī)生物檢材的提取、保存、送檢規(guī)范
- 紅金大氣商務(wù)風(fēng)領(lǐng)導(dǎo)歡迎會PPT通用模板
- 例談小組合作學(xué)習(xí)在小學(xué)英語教學(xué)中的有效開展(講座)課件
- 產(chǎn)品質(zhì)量法培訓(xùn)講義課件
評論
0/150
提交評論