企業(yè)考勤管理系統(tǒng)的設(shè)計(jì)說(shuō)明書_第1頁(yè)
企業(yè)考勤管理系統(tǒng)的設(shè)計(jì)說(shuō)明書_第2頁(yè)
企業(yè)考勤管理系統(tǒng)的設(shè)計(jì)說(shuō)明書_第3頁(yè)
企業(yè)考勤管理系統(tǒng)的設(shè)計(jì)說(shuō)明書_第4頁(yè)
企業(yè)考勤管理系統(tǒng)的設(shè)計(jì)說(shuō)明書_第5頁(yè)
已閱讀5頁(yè),還剩50頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

廣西大學(xué)數(shù)學(xué)與信息科學(xué)學(xué)院《數(shù)據(jù)庫(kù)開(kāi)發(fā)與應(yīng)用》課程設(shè)計(jì)報(bào)告題目:公司考勤管理系統(tǒng)班級(jí):信息與計(jì)算科學(xué)121學(xué)號(hào):1211100xxx姓名:xxxxx日期:六月一、背景與意義考勤管理系統(tǒng)是公司單位管理系統(tǒng)中最重要的信息。通過(guò)員工考勤考核管理,反映員工在一定階段的工作成績(jī)。而我國(guó)眾多的公司都是采用傳統(tǒng)的手工方式記錄公司員工每日的出勤情況,這種方式繁瑣易錯(cuò),準(zhǔn)確性、透明度、實(shí)時(shí)性差,受人為因素影響過(guò)大,增長(zhǎng)了公司的人力資源成本。隨著現(xiàn)代科技的進(jìn)步,運(yùn)用信息和計(jì)算機(jī)技術(shù)來(lái)進(jìn)行公司員工考勤的管理也成為現(xiàn)代化公司運(yùn)作必不可少的一部分。一個(gè)公司對(duì)其職工的正常上下班、延時(shí)工作及加班工作進(jìn)行考勤,通過(guò)報(bào)表的形式輸出,合理調(diào)整員工工作安排,用計(jì)算機(jī)對(duì)考勤數(shù)據(jù)進(jìn)行記錄分析解決,得到我們所需要的各種記錄報(bào)表和考勤原始數(shù)據(jù),方便了公司對(duì)員工的管理。因此,開(kāi)發(fā)一個(gè)合適的、高質(zhì)量的、界面和諧、易于操作的公司考勤管理系統(tǒng)進(jìn)行公司員工的考勤管理,對(duì)公司的長(zhǎng)遠(yuǎn)發(fā)展有重大的意義。本考勤管理系統(tǒng)的開(kāi)發(fā),是為了規(guī)范公司中考勤的管理工作,為考勤管理部門提供一套高效、快捷的應(yīng)用軟件。使用計(jì)算機(jī)進(jìn)行考勤信息的解決,具有如下優(yōu)點(diǎn):及時(shí)信息交流,改善管理質(zhì)量通過(guò)本系統(tǒng)對(duì)考勤信息的規(guī)范管理,可以及時(shí)掌握員工的信息,也能讓員工及時(shí)了解部門主管發(fā)布的告知信息。方便查詢,提高工作效率。二、需求分析本系統(tǒng)要實(shí)現(xiàn)的功能模塊重要有:基本信息設(shè)立模塊、檔案管理模塊、審批模塊、查詢模塊、考勤記錄模塊、匯總記錄模塊和系統(tǒng)管理模塊。規(guī)定提供數(shù)據(jù)輸入、輸出和整理功能,滿足平常工作的需要;具有查詢、記錄等功能,方便用戶快捷使用和管理信息,提高工作效率;采用一定的安全保護(hù)措施,應(yīng)分有不同的使用權(quán)限,保證系統(tǒng)的實(shí)用性;具有系統(tǒng)備份和恢復(fù)功能,使系統(tǒng)使用者能容易進(jìn)行維護(hù),同時(shí)軟件功能完整、運(yùn)營(yíng)穩(wěn)定、界面和諧、操作簡(jiǎn)便。1.對(duì)功能的規(guī)定針對(duì)公司的考勤管理業(yè)務(wù),本系統(tǒng)要實(shí)現(xiàn)以下功能:基本信息設(shè)立擁有對(duì)系統(tǒng)中的基本信息,涉及:部門信息、員工職稱信息、請(qǐng)假類型信息、加班類型信息、出差類型信息的添加、修改、刪除、查詢等操作的功能,當(dāng)大量新的信息需要錄入時(shí),可以通過(guò)EXCEL表格導(dǎo)入方式實(shí)現(xiàn),同時(shí)也可將相應(yīng)信息分別導(dǎo)出到EXCEL表格中。檔案管理?yè)碛袑?duì)系統(tǒng)中的員工信息、考勤制度信息、告知信息進(jìn)行增長(zhǎng)、修改、刪除、查詢等操作的功能。在錄入員工信息時(shí),輸入員工的身份證號(hào),進(jìn)行回車操作即可自動(dòng)填充員工性別,年齡,身份屬地,生日信息。當(dāng)有大量新的員工信息、告知信息需要錄入時(shí),可以通過(guò)EXCEL表格導(dǎo)入方式實(shí)現(xiàn),同時(shí)也可將相應(yīng)信息導(dǎo)出到EXCEL表格中。審批管理?yè)碛袑?duì)系統(tǒng)中的請(qǐng)假信息、加班信息、出差信息進(jìn)行審批的功能。查詢出相應(yīng)的記錄,對(duì)該記錄進(jìn)行審批,審批通過(guò)則說(shuō)明該條請(qǐng)假記錄生效,否則為無(wú)效記錄。此功能只有考勤主管和部門主管有操作權(quán)限。查詢管理?yè)碛袑?duì)系統(tǒng)中員工信息、公司考勤制度、出勤信息、請(qǐng)假信息、加班信息、出差信息進(jìn)行查詢的功能??梢园凑諉T工編號(hào),姓名,部門名等條件對(duì)員工具體信息進(jìn)行模糊/精確查詢。考勤記錄管理?yè)碛袑?duì)公司員工中的出勤信息、請(qǐng)假信息、加班信息、出差信息進(jìn)行增長(zhǎng)、修改、刪除、查詢等操作,同時(shí)具有將相應(yīng)信息導(dǎo)出到EXCEL表格中的功能。其中只有可以對(duì)出勤信息進(jìn)行操作,當(dāng)有大量員工考勤相關(guān)信息需要錄入時(shí),只有考勤管理員可以通過(guò)EXCEL表格導(dǎo)入方式實(shí)現(xiàn)。匯總記錄管理?yè)碛袑?duì)考勤情況進(jìn)行記錄以及報(bào)表查看的功能。選擇某一時(shí)間段,可對(duì)該時(shí)間段員工的考勤信息進(jìn)行記錄,其中只有審核通過(guò)的請(qǐng)假記錄,加班記錄,出差記錄可以參與到考勤情況記錄中。可以對(duì)記錄過(guò)的考勤情況通過(guò)報(bào)表來(lái)查看到具體信息。系統(tǒng)管理?yè)碛忻艽a修改、用戶管理、系統(tǒng)初始化、數(shù)據(jù)備份/恢復(fù)、日記查看的功能。密碼修改供當(dāng)前登錄用戶修改自己的密碼,修改時(shí)需要對(duì)新密碼提供二次輸入校對(duì)。用戶管理提供用戶的添加,修改,刪除,用戶名使用的是員工的編號(hào)。系統(tǒng)初始化將系統(tǒng)中的數(shù)據(jù)都刪除,初始化前需對(duì)系統(tǒng)中的數(shù)據(jù)進(jìn)行備份。數(shù)據(jù)備份/恢復(fù)擁有對(duì)系統(tǒng)中的數(shù)據(jù)進(jìn)行備份和恢復(fù)的功能。日記查看擁有對(duì)使用本系統(tǒng)的用戶的登錄及退出信息進(jìn)行查看的功能,以維護(hù)系統(tǒng)的正常操作。2.對(duì)性能的規(guī)定為保證本系統(tǒng)可以長(zhǎng)期、安全、穩(wěn)定、可靠、高效的運(yùn)營(yíng),系統(tǒng)須滿足以下性能規(guī)定:實(shí)用性:本系統(tǒng)應(yīng)可以系統(tǒng),便捷,快速的實(shí)現(xiàn)對(duì)員工作休時(shí)間的管理,從而保障公司的高效運(yùn)營(yíng)。操作簡(jiǎn)樸:本系統(tǒng)應(yīng)合用于不同計(jì)算機(jī)水平的使用者,系統(tǒng)的操作盡也許簡(jiǎn)樸易行。技術(shù)先進(jìn):產(chǎn)品的系統(tǒng)設(shè)計(jì)和開(kāi)發(fā)應(yīng)緊跟計(jì)算機(jī)的發(fā)展潮流,產(chǎn)用目前較先進(jìn)的設(shè)計(jì)思想,運(yùn)用最先進(jìn)的開(kāi)發(fā)技術(shù)和開(kāi)發(fā)工具。安裝使用簡(jiǎn)便:服務(wù)器端安裝簡(jiǎn)潔明了,客戶機(jī)無(wú)需再裝任何軟件,可直接使用。適應(yīng)性和可擴(kuò)充性:應(yīng)能廣泛使用與不同的公司,開(kāi)發(fā)過(guò)程中,應(yīng)充足考慮可擴(kuò)充問(wèn)題。3.數(shù)據(jù)管理能力的規(guī)定為保證公司使用本系統(tǒng)中數(shù)據(jù)的完整性,須滿足以下數(shù)據(jù)管理規(guī)定:盡也許減少故障的發(fā)生,保障好數(shù)據(jù)的備份,數(shù)據(jù)的備份采用數(shù)據(jù)庫(kù)服務(wù)器的備份功能實(shí)現(xiàn)。當(dāng)系統(tǒng)發(fā)生故障時(shí),當(dāng)重新啟動(dòng)的時(shí)候,系統(tǒng)可以正常運(yùn)營(yíng),若有數(shù)據(jù)遺失,可以通過(guò)備份來(lái)還原。要保證數(shù)據(jù)的安全性,只有授權(quán)的人員才干進(jìn)入系統(tǒng)進(jìn)行相應(yīng)的操作。發(fā)現(xiàn)有錯(cuò)誤的數(shù)據(jù),及時(shí)地進(jìn)行修改。系統(tǒng)總體分析與設(shè)計(jì)1.解決方案為公司中的員工分別分派一個(gè)用戶號(hào)和密碼及相應(yīng)角色,員工可用該用戶名和密碼登錄進(jìn)入公司考勤管理系統(tǒng)。不同的角色相應(yīng)有不同的使用權(quán)限:普通員工可以進(jìn)入系統(tǒng)可以對(duì)各類信息進(jìn)行查詢,錄入自己的請(qǐng)假,加班及出差的記錄,對(duì)考勤的記錄報(bào)表進(jìn)行查看以及對(duì)自己的登錄密碼進(jìn)行修改;部門主管除擁有普通員工所有權(quán)限外,還可對(duì)員工信息,告知信息進(jìn)行添加,修改,刪除的操作,對(duì)員工輸入的請(qǐng)假,加班,出差記錄進(jìn)行審批,對(duì)員工某一階段的考勤進(jìn)行記錄;考勤管理員除擁有普通員工所有權(quán)限外,還可對(duì)公司的考勤制度進(jìn)行設(shè)立,對(duì)員工的出勤信息進(jìn)行錄入或?qū)?,同時(shí)也可對(duì)員工的請(qǐng)假,加班及出差記錄進(jìn)行批量導(dǎo)入;考勤主管具有系統(tǒng)的完全管理權(quán)限,要定期對(duì)系統(tǒng)進(jìn)行檢查和備份,以維護(hù)系統(tǒng)的安全。系統(tǒng)設(shè)計(jì)分八個(gè)模塊:主菜單模塊,登錄模塊,檔案管理模塊,審批管理模塊,查詢管理模塊,考勤記錄管理模塊,匯總記錄管理模塊和系統(tǒng)管理模塊。具體的功能結(jié)構(gòu)圖如圖1-1所示。圖3-1公司考勤管理系統(tǒng)功能結(jié)構(gòu)圖本系統(tǒng)采用Delphi技術(shù),以及SQLServer數(shù)據(jù)管理技術(shù)進(jìn)行重要的設(shè)計(jì),數(shù)據(jù)庫(kù)用SQLServer進(jìn)行設(shè)計(jì)和管理。系統(tǒng)使用分三種角色,涉及:?jiǎn)T工,考勤管理員,部門主管,考勤主管。體現(xiàn)各角色的使用權(quán)限的功能結(jié)構(gòu)圖如圖1-2。圖3-2體現(xiàn)各角色使用權(quán)限的功能結(jié)構(gòu)圖2.數(shù)據(jù)庫(kù)設(shè)計(jì)Personal(員工信息表)員工信息表重要存放員工的基本信息,具體字段信息如表3-1。表3-1員工信息表字段名稱類型長(zhǎng)度碼說(shuō)明Pno員工編號(hào)CHAR14PKP+日期+序號(hào)Pname姓名VARCHAR10NotnullDno部門編號(hào)CHAR14FKNotnullPTno職務(wù)編號(hào)CHAR14FKNotnullIDCard身份證CHAR18ShuDi身份屬地CHAR20Sex性別CHAR2Age年齡INT-Birth生日DATE-Tel電話號(hào)碼VARCHAR20Photo相片VARBINARY50PersonalType(職稱表)職稱表重要存放員工職稱信息,被員工信息表所調(diào)用,具體字段信息如表4-9。表4-9職稱表字段名稱類型長(zhǎng)度碼說(shuō)明PTno職稱編號(hào)CHAR14PKPT+序號(hào)PTname職稱名稱VARCHAR20NotnullDepartment(部門信息表)部門信息表重要存放部門基本信息,提供應(yīng)員工信息表調(diào)用,具體字段信息如表4-10。表4-10部門信息表字段名稱類型長(zhǎng)度碼說(shuō)明Dno部門編號(hào)CHAR14PKD+序號(hào)Dname部門名稱VARCHAR20NotnullIntroduce部門簡(jiǎn)介VARCHAR100Attendance(考勤登記表)考勤登記表重要存放員工平常的出勤信息,具體字段信息如表4-11。表4-11考勤登記表字段名稱類型長(zhǎng)度碼說(shuō)明Ano記錄編號(hào)CHAR14PKA+日期+序號(hào)Pno員工編號(hào)CHAR14FKNotnullInOut出入情況CHAR2NotnullATime時(shí)間DATETIME-NotnullOverwork(加班登記表)加班登記表重要存放員工平常加班的記錄信息,只有主管審批通過(guò)后才干生效,才干進(jìn)行相應(yīng)的加班記錄,具體字段信息見(jiàn)表4-12。表4-12加班登記表字段名稱類型長(zhǎng)度碼說(shuō)明Ono記錄編號(hào)CHAR14PKO+日期+序號(hào)Pno員工編號(hào)CHAR14FKNotnullStartTime開(kāi)始時(shí)間DATETIME-EndTime結(jié)束時(shí)間DATETIME-OTno加班類型編號(hào)CHAR14FKNotnullAPProval審核結(jié)果CHAR1OverworkType(加班類型表)加班類型表重要存放加班類型信息,提供應(yīng)加班登記表調(diào)用,具體字段信息如表4-13。表4-13加班類型表字段名稱類型長(zhǎng)度碼說(shuō)明OTno加班類型編號(hào)CHAR14PKOT+序號(hào)OTname加班類型名VARCHAR20NotnullErrand(出差登記表)出差登記表重要存放出差記錄信息,只有主管審批通過(guò)后才干生效,才干進(jìn)行相應(yīng)的出差記錄,具體字段如表4-14。表4-14出差登記表字段名稱類型長(zhǎng)度碼說(shuō)明Eno記錄編號(hào)CHAR14PKE+日期+序號(hào)Pno員工編號(hào)CHAR14FKNotnullStartTime開(kāi)始時(shí)間DATETIME-EndTime結(jié)束時(shí)間DATETIME-Place出差地點(diǎn)VARCHAR20ETno出差類型編號(hào)CHAR14FKNotnullAPProval審核結(jié)果CHAR1ErrandType(出差類型表)出差類型表重要存放加班類型信息,提供應(yīng)出差登記表調(diào)用,具體字段信息如表4-15。表4-15出差類型表字段名稱類型長(zhǎng)度碼說(shuō)明ETno出差類型編號(hào)CHAR14PKET+序號(hào)ETname出差類型名VARCHAR20NotnullLeave(請(qǐng)假登記表)請(qǐng)假登記表重要存放請(qǐng)假記錄信息,只有主管審批通過(guò)后才干生效,才干進(jìn)行相應(yīng)的請(qǐng)假記錄,具體字段如表4-16。表4-16請(qǐng)假登記表字段名稱類型長(zhǎng)度碼說(shuō)明Lno記錄編號(hào)CHAR14PKL+日期+序號(hào)Pno員工編號(hào)CHAR14FKNotnullStartTime開(kāi)始時(shí)間DATETIME-EndTime結(jié)束時(shí)間DATETIME-LTno請(qǐng)假類型編號(hào)CHAR14FKNotnullDemo情況說(shuō)明VARCHAR100APProval審核結(jié)果CHAR1LeaveType(請(qǐng)假類型表)請(qǐng)假類型表重要存放加班類型信息,提供應(yīng)請(qǐng)假登記表調(diào)用,具體字段信息如表4-17。表4-17請(qǐng)假類型表字段名稱類型長(zhǎng)度碼說(shuō)明LTno請(qǐng)假類型編號(hào)CHAR14PKLT+序號(hào)LTname請(qǐng)假類型名VARCHAR20NotnullAttendanceCount(出勤情況登記表)出勤情況登記表重要記錄的是員工出勤,請(qǐng)假,加班,出差的一些記錄信息,提供應(yīng)公司管理著進(jìn)行查看,具體字段信息如表4-18。表4-18出勤情況登記表字段名稱類型長(zhǎng)度碼說(shuō)明ACno記錄編號(hào)CHAR14PKG+日期+序號(hào)Pno員工編號(hào)CHAR14FKNotnullARno制度編號(hào)CHAR14FKNotnullYearMonth年月CHAR7NotnullShouldTime應(yīng)工作時(shí)間INT-小時(shí)ActualTime實(shí)際工作時(shí)間INT-小時(shí)LeaveTime累計(jì)請(qǐng)假時(shí)間INT-半天OverworkTime累計(jì)加班時(shí)間INT-小時(shí)ErrandTime累計(jì)出差時(shí)間INT-半天Late遲到次數(shù)SMALLINT-次LateTime遲屆時(shí)間累計(jì)INT-小時(shí)Early早退次數(shù)SMALLINT-次EarlyTime早退時(shí)間累計(jì)INT-小時(shí)Absence曠工次數(shù)SMALLINT-次AbsenceTime曠工時(shí)間累計(jì)INT-小時(shí)Logdb(日記信息表)日記信息表重要記錄的是公司中的員工登錄到系統(tǒng)以及退出系統(tǒng)的信息,具體字段信息如表4-19。表4-19日記信息表字段名稱類型長(zhǎng)度碼說(shuō)明Logno日記編號(hào)INT-PK自動(dòng)編號(hào)Uno用戶編號(hào)CHAR14FKNotnullLoginTime登錄時(shí)間DATETIME-LogoutTime退出時(shí)間DATETIME-Userdb(用戶信息表)用戶信息表重要存儲(chǔ)用戶的信息,其中員工編號(hào)作為用戶名進(jìn)行登錄,密碼默認(rèn)為‘123456’,同時(shí)也定義了用戶的角色,具體字段信息如表4-20。表4-20用戶信息表字段名稱類型長(zhǎng)度碼說(shuō)明Uno用戶編號(hào)CHAR14PKU+日期+序號(hào)Pno員工編號(hào)CHAR14FKNotnullAuthority角色CHAR2Passwd密碼VARCHAR20默認(rèn)為‘123456’ARegulation(考勤制度表)考勤制度表重要存儲(chǔ)的是公司的考勤制度,具體字段信息如表4-21。表4-21考勤制度表字段名稱類型長(zhǎng)度碼說(shuō)明ARno制度編號(hào)CHAR14PKAR+序號(hào)ComeTime上午上班時(shí)間TIME-NotnullGooffTimepm上午下班時(shí)間TIME-NotnullComeTimepm下午上班時(shí)間TIME-NotnullGooffTime下午下班時(shí)間TIME-NotnullAmemo考勤制度VARCHAR10000ShuDi(屬地表)屬地表重要存儲(chǔ)的是身份證前6位所相應(yīng)的屬地名稱的信息,錄入員工數(shù)據(jù)中身份證數(shù)據(jù)時(shí)快速得出員工性別,年齡,身份屬地,生日信息,減小因手工輸入產(chǎn)生的信息錯(cuò)誤概率,具體字段信息如表4-22。表4-22屬地表字段名稱類型長(zhǎng)度碼說(shuō)明ID編號(hào)CHAR6PKNotnullBM屬地編號(hào)CHAR14NotnullDQ屬地名稱VARCHAR30NotnullNotice(告知表)告知表重要存儲(chǔ)的是公司中的一些告知信息,具體字段信息如表4-23。表4-23告知表字段名稱類型長(zhǎng)度碼說(shuō)明Nno告知編號(hào)CHAR14PKN+日期+序號(hào)NTime告知時(shí)間Datetime-Title告知標(biāo)題VARCHAR30NotnullContent告知內(nèi)容CHAR5000四、系統(tǒng)的實(shí)現(xiàn)1.界面設(shè)計(jì)系統(tǒng)設(shè)計(jì)中的界面設(shè)計(jì)不同于一般的平面設(shè)計(jì),擁有自身的設(shè)計(jì)特性。網(wǎng)頁(yè)設(shè)計(jì)應(yīng)時(shí)刻圍繞“信息傳達(dá)”這一主題來(lái)進(jìn)行。界面力求清楚、準(zhǔn)確、有力地傳達(dá)信息。本系統(tǒng)重要采用的的界面模板重要涉及:登錄界面、主菜單界面、基本信息設(shè)立界面、檔案管理界面、查詢管理界面、考勤記錄管理界面、審核管理界面、匯總記錄界面、系統(tǒng)管理設(shè)立界面。

(1).登錄界面運(yùn)營(yíng)本系統(tǒng)后,出現(xiàn)如圖4-1的登錄界面,輸入用戶名和密碼,選擇用戶角色,點(diǎn)擊“登錄”按鈕,假如輸入的信息不對(duì)的,會(huì)有“用戶名或密碼錯(cuò)誤,請(qǐng)檢查!”的錯(cuò)誤提醒,假如三次登陸錯(cuò)誤,會(huì)有“你無(wú)權(quán)使用本系統(tǒng)!”的錯(cuò)誤提醒,即每次登錄,最多允許有三次登錄錯(cuò)誤的機(jī)會(huì)。當(dāng)所有信息都輸入對(duì)的后,可以登錄到主界面,不用的用戶角色進(jìn)入的主界面中的功能菜單不同。登錄界面允許效果圖如圖4-1。4-1登錄界面(2).主菜單界面用戶登錄后,可進(jìn)入到如圖4-2的主菜單界面,在主菜單界面中,用戶可以看到公司中發(fā)布的告知信息,這有助于讓公司中的員工盡也許快而全面地掌握公司中消息的動(dòng)態(tài)。主菜單界面如圖4-2圖4-2主菜單界面(3).查詢管理界面在主菜單上點(diǎn)擊查詢菜單下的“請(qǐng)假情況查詢”,即可進(jìn)入到如下圖4-3請(qǐng)假情況查詢界面,在界面中輸入員工號(hào)或員工姓名、部門名稱、請(qǐng)假類型等信息,以及選擇時(shí)間范圍的信息,即可進(jìn)行組合查詢以及模糊查詢。其他信息的查詢功能跟此功能基本一致,在此不再贅述。請(qǐng)假情況查詢界面如圖4-3。圖4-3請(qǐng)假情況查詢界面(4).信息管理界面信息管理界面涉及:基本信息設(shè)立界面(圖4-4)、檔案管理界面(圖4-5)、考勤記錄管理界面(圖4-6)。點(diǎn)擊信息管理界面中的“添加”按鈕,相應(yīng)的記錄信息將自動(dòng)編號(hào),在輸入相應(yīng)信息即可。以員工信息管理為例,點(diǎn)擊“添加”按鈕,編號(hào)處將自動(dòng)填充,編號(hào)規(guī)則為::“P+年月日+001”,輸入省份證號(hào)后,回車即可得出性別、年齡、省份屬地、生日等信息,在部門的編輯框處雙擊,即可得出公司中的部門信息,選擇相應(yīng)的部門,則可在該編輯框中得出相應(yīng)的部門編號(hào),也可手動(dòng)輸入對(duì)的的部門編號(hào),職稱的填寫方式和部門的填寫方式相同,再相應(yīng)地填寫其他信息,點(diǎn)擊保存,假如信息填寫無(wú)誤,會(huì)有“保存成功!”的提醒,添加信息完畢。同時(shí)也可選中相應(yīng)的員工信息,對(duì)其進(jìn)行刪除操作。也可導(dǎo)入/導(dǎo)出Excel表格。其他信息管理的功能跟此功能類似,不再贅述。檔案管理界面如圖4-4。圖4-4檔案管理界面圖4-5基礎(chǔ)信息設(shè)立界面圖4-6考勤記錄管理界面(5).審批界面在主菜單上點(diǎn)擊查詢菜單下的“出差審批”,即可進(jìn)入到出差審批界面,如圖4-7。查詢出相應(yīng)的員工出差信息,覺(jué)得員工的出差信息無(wú)誤后即可進(jìn)行審批,點(diǎn)擊“擬定”按鈕后,會(huì)出現(xiàn)“審批完畢!”的提醒。出差審批界面如圖4-7。圖4-7審批界面(6).記錄界面在主菜單上點(diǎn)擊查詢菜單下的“出差審批”,即可進(jìn)入到出差審批界面,如圖4-8。選擇需要記錄的起始時(shí)間,點(diǎn)擊記錄,即可得到員工考勤情況的登記表(記錄的信息涉及:應(yīng)工作時(shí)間(小時(shí)),實(shí)際工作時(shí)間(小時(shí)),累計(jì)請(qǐng)假時(shí)間(半天),累計(jì)加班時(shí)間(小時(shí)),累計(jì)出差時(shí)間(半天),遲到次數(shù)(次),遲屆時(shí)間累計(jì)(小時(shí)),早退次數(shù)(次),早退時(shí)間累計(jì)(小時(shí)),曠工次數(shù)(次),曠工時(shí)間累計(jì)(小時(shí)))。記錄需要一些時(shí)間,進(jìn)度條會(huì)顯示記錄的進(jìn)度。記錄界面如圖4-8。圖4-8記錄界面系統(tǒng)實(shí)現(xiàn)關(guān)鍵技術(shù)(1).添加數(shù)據(jù)時(shí)自動(dòng)編號(hào)運(yùn)營(yíng)系統(tǒng)時(shí),當(dāng)需要新增信息時(shí),點(diǎn)擊“添加”按鈕,即可進(jìn)行自動(dòng)對(duì)記錄的ID進(jìn)行編號(hào),以實(shí)現(xiàn)編號(hào)的規(guī)范性。添加數(shù)據(jù)時(shí)自動(dòng)編號(hào)的代碼如下:自定義函數(shù):根據(jù)本來(lái)編號(hào)bh,構(gòu)造新編號(hào):年月日+3位序列。functionxbh(bh:string):string;vard0,d1,c:string;begind0:=copy(bh,2,8); //取8位日期數(shù)碼c:=copy(bh,10,3); //取最后3位數(shù)碼d1:=formatdatetime('yyyymmdd',now); //獲取當(dāng)天日期ifd0<>d1then //假如不是同一天bh:=d1+'001' //構(gòu)造當(dāng)天第一個(gè)編號(hào)elsebeginc:='00'+inttostr(strtoint(c)+1); //在本來(lái)基礎(chǔ)上加1bh:=d1+copy(c,length(c)-2,3); //構(gòu)造編號(hào):日期+3位整數(shù)end;xbh:=bh;end;(2).員工信息管理中“添加”按鈕的點(diǎn)擊事件代碼。procedureTDanganForm.SpeedButton1Click(Sender:TObject);varbm:string;beginifadotable1.IsEmptythenbm:='P'+formatdatetime('yyyymmdd',now)+'001' //構(gòu)造第一個(gè)編號(hào)elsebeginadotable1.Last;bm:=adotable1['Pno']; //讀取數(shù)據(jù)表末尾記錄的編號(hào)bm:='P'+xbh(bm);end;adotable1.Append; //在表尾添加新紀(jì)錄DBedit11.Text:=bm; //在編輯框中填寫新編號(hào)DBGrid2.Fields[0].Text:=bm; //在表格框中填寫新編號(hào)DBedit12.SetFocus; //將光標(biāo)移到填寫姓名框end;員工信息添加為例,效果如圖4-9。圖4-9員工信息添加頁(yè)面(3).輸入身份證號(hào)回車顯示其他相關(guān)信息運(yùn)營(yíng)系統(tǒng),添加員工信息時(shí),輸入身份證號(hào),回車即可顯示該身份證號(hào)相應(yīng)員工的身份屬地、性別、年齡及生日信息。使用此功能減小了錄入信息的人員因失誤輸入錯(cuò)誤信息的概率,保證了信息的對(duì)的性。運(yùn)營(yíng)效果圖如圖5-1所示,具體代碼如下:1.身份證號(hào)相應(yīng)編輯框回車事件代碼。procedureTDanganForm.DBEdit13KeyPress(Sender:TObject;varKey:Char);constW:array[1..18]ofinteger=(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);//位權(quán)A:array[0..10]ofchar=('1','0','x','9','8','7','6','5','4','3','2');//校驗(yàn)碼Vari,j,S:integer;NewID,shud:string;da:Tdatetime;kk:boolean;beginkk:=(key=#8)or(key=#13)or(key='x')or(key='X')or(key>=#48)and(key<=#57);ifnotkkthenkey:=#0;//鍵盤輸入過(guò)濾掉非身份證號(hào)碼ifkey=#13thenbeginNewID:=DBedit13.Text;//1.檢查長(zhǎng)度ifLength(NewID)<>18thenbeginmessageDlg('輸入的數(shù)字不是18位,請(qǐng)重新輸入!',mtError,[mbOK],0);DBedit13.SetFocus;exit;end;//2.檢查屬地ADOquery1.close;ADOquery1.Parameters.ParamByName('sd').Value:=copy(NewID,1,6); //給動(dòng)態(tài)SQL語(yǔ)句賦值A(chǔ)DOquery1.open;//打開(kāi),查詢記錄ifADOquery1.RecordCount=0then//假如找不到sd相同的記錄beginMessageDlg('前面六位數(shù)字無(wú)效,請(qǐng)檢查!',mtinformation,[mbok],0);DBedit13.SetFocus;exit;endelseshud:=ADOquery1.FieldByName('DQ').Value;//獲取屬地//3.檢查年年份i:=strtoint(copy(NewID,7,4)); //獲取年份if(i<1900)or(i>2023)thenbeginMessageDlg('年份號(hào)碼無(wú)效,請(qǐng)檢查!',mtinformation,[mbok],0);DBedit13.SetFocus;exit;end;j:=strtoint(copy(NewID,11,2)); //獲取月份if(j<1)or(j>12)thenbeginMessageDlg('月份號(hào)碼無(wú)效,請(qǐng)檢查!',mtinformation,[mbok],0);DBedit13.SetFocus;exit;end;s:=strtoint(copy(NewID,13,2));if(s<1)or(s>31)thenbeginMessageDlg('日數(shù)號(hào)碼無(wú)效,請(qǐng)檢查!',mtinformation,[mbok],0);DBedit13.SetFocus;exit;end;da:=EncodeDate(i,j,s); //構(gòu)造生日//4.檢查校驗(yàn)碼s:=0;fori:=1to17dobeginj:=StrToInt(NewID[i])*W[i];s:=s+j;end;s:=smod11;ifNewID[18]='X'thenNewID[18]:='x';//將大寫字母X變成小寫字母xifNewID[18]<>A[S]thenbeginmessageDlg('校驗(yàn)碼錯(cuò)!請(qǐng)重新輸入!',mtError,[mbOK],0);showmessagefmt('校驗(yàn)碼錯(cuò)!應(yīng)當(dāng)是%s!請(qǐng)重新輸入!',[A[S]]);DBedit13.SetFocus;exit;end;//5.填寫證件的具體信息ADOTable1.Edit;DBedit16.Text:=shud; //屬地DBedit17.Text:=formatdatetime('ddddd',da);//生日DBedit18.Text:=formatdatetime('yy',date-da);//年齡ifNewID[17]in['1','3','5','7','9']then //以下是判別性別DBedit15.Text:='男'elseDBedit15.Text:='女';end;end;(4).導(dǎo)出EXCEL表格運(yùn)營(yíng)系統(tǒng)時(shí),可以對(duì)系統(tǒng)中的相應(yīng)數(shù)據(jù)信息導(dǎo)出到excel表格中,方便用戶使用相應(yīng)的數(shù)據(jù)信息。1.將某個(gè)數(shù)據(jù)表導(dǎo)出成Excel表的通用函數(shù)functionExportDBGrid(DBGrid:TDBGrid;SheetName:string):boolean; //直接保存,不顯示EXCELVar c,r,i,j:integer;app:Olevariant;TempFileName,ResultFileName:string;begintryresult:=True;app:=CreateOLEObject('Excel.application');app.WorkBooks.Add(xlWBatWorkSheet);exceptApplication.MessageBox('Excel沒(méi)有對(duì)的安裝!','警告',MB_OK);result:=False;exit;end;mainForm.SaveDialog1.DefaultExt:='xls';mainForm.SaveDialog1.FileName:=SheetName;ifmainForm.SaveDialog1.ExecutethenTempFileName:=mainForm.SaveDialog1.FileNameelseExit;app.Workbooks.add;app.Visible:=false;Screen.Cursor:=crHourGlass;DBGrid.DataSource.DataSet.First;c:=DBGrid.DataSource.DataSet.FieldCount;r:=DBGrid.DataSource.DataSet.RecordCount;Application.ProcessMessages;fori:=0toc-1doapp.cells(1,1+i):=DBGrid.DataSource.DataSet.Fields[i].DisplayLabel;forj:=1tordobeginfori:=0toc-1doapp.cells(j+1,1+i):=DBGrid.DataSource.DataSet.Fields[i].AsString;DBGrid.DataSource.DataSet.Next;end;ResultFileName:=TempFileName;ifResultFileName=''thenResultFileName:='數(shù)據(jù)導(dǎo)出';ifFileExists(TempFileName)thenDeleteFile(TempFileName);app.Activeworkbook.saveas(TempFileName);app.Activeworkbook.close(false);app.quit;app:=unassigned;end;調(diào)用導(dǎo)出Excel數(shù)據(jù)的函數(shù),“導(dǎo)出Excel表格”按鈕的點(diǎn)擊事件代碼。procedureTDanganForm.SpeedButton5Click(Sender:TObject);begintryScreen.Cursor:=crHourGlass; //將鼠標(biāo)成沙漏狀main.ExportDBGrid(DBGrid2,'');//調(diào)用函數(shù)導(dǎo)出數(shù)據(jù)finallyScreen.Cursor:=crDefault; //回復(fù)鼠標(biāo)原狀end;end;(5).導(dǎo)入EXCEL表格運(yùn)營(yíng)系統(tǒng)時(shí),當(dāng)需要新增大量數(shù)據(jù)時(shí),可以通過(guò)導(dǎo)入Excel表格實(shí)現(xiàn)批量增長(zhǎng)的操作。注意:需要導(dǎo)入的Excel表格中的數(shù)據(jù)一定要與數(shù)據(jù)表中的數(shù)據(jù)類型一致,否則會(huì)出現(xiàn)導(dǎo)入失敗的情況。導(dǎo)入Excel表格中數(shù)據(jù)的代碼如下:procedureTDanganForm.SpeedButton9Click(Sender:TObject);varoe:variant;str:string;i,j,n:integer;beginifopendialog1.Executethenopendialog1.DefaultExt:='xls';str:=opendialog1.FileName;oe:=CreateOleObject('Excel.Application');oe.workbooks.open(str);//連接所選定的Excel表n:=oe.Worksheets[1].UsedRange.Rows.Count;//求工作表sheet1中已有數(shù)據(jù)的行數(shù)tryfori:=2tondo//從Excel表第2行開(kāi)始,逐行讀入(假設(shè)第一行為表頭)beginADoTable2.Append; //添加空記錄forj:=1toADOTable2.fieldcountdoADOTable2.Fields[j-1].Value:=oe.worksheets[1].cells[i,j].value;end;ADoTable2.Refresh;showmessage('導(dǎo)入完畢');exceptshowmessage('數(shù)據(jù)庫(kù)錯(cuò)誤或有反復(fù)編號(hào),請(qǐng)檢查');end;end;(6).組合查詢配合模糊查詢組合查詢配合模糊查詢可以滿足查詢的各種需求。本系統(tǒng)中多處都實(shí)現(xiàn)了組合查詢以及模糊查詢。以查詢請(qǐng)假記錄為例,代碼如下:1.查詢請(qǐng)假記錄,“查詢”按鈕的事件代碼。procedureTSelectForm.SpeedButton3Click(Sender:TObject);varsqlstr:string;begdate:string;enddate:string;beginifComboBox2.Text<>''thenbeginbegdate:=datetostr(DateTimePicker3.date);enddate:=datetostr(DateTimePicker4.date);ifcombobox2.Text='在...日'thensqlstr:='select*fromLeave_Per_DwhereStarTime>='''+begdate+'''andStarTime<'''+datetostr(DateTimePicker3.date+1)+'''andPnolike''%'+edit4.text+'%''andPnamelike''%'+edit10.Text+'%''andDnamelike''%'+edit9.Text+'%''andLTnamelike''%'+edit17.Text+'%'''elseifcombobox2.Text='在...前'thensqlstr:='select*fromLeave_Per_DwhereStarTime<='''+begdate+'''andPnolike''%'+edit4.text+'%''andPnamelike''%'+edit10.Text+'%''andDnamelike''%'+edit9.Text+'%''andLTnamelike''%'+edit17.Text+'%'''elseifcombobox2.Text='在...后'thensqlstr:='select*fromLeave_Per_DwhereStarTime>='''+begdate+'''andPnolike''%'+edit4.text+'%''andPnamelike''%'+edit10.Text+'%''andDnamelike''%'+edit9.Text+'%''andLTnamelike''%'+edit17.Text+'%'''elseifcombobox2.Text='在...間'thensqlstr:='select*fromLeave_Per_DwhereStarTime>='''+begdate+'''andStarTime<='''+enddate+'''andPnolike''%'+edit4.text+'%''andPnamelike''%'+edit10.Text+'%''andDnamelike''%'+edit9.Text+'%''andLTnamelike''%'+edit17.Text+'%''';endelsesqlstr:='select*fromLeave_Per_DwherePnolike''%'+edit4.text+'%''andPnamelike''%'+edit10.Text+'%''andDnamelike''%'+edit9.Text+'%''andLTnamelike''%'+edit17.Text+'%''';ADOQuery2.Close;ADOQuery2.SQL.Clear;ADOQuery2.SQL.Add(sqlstr);ADOQuery2.open;end;查詢效果如圖4-10。圖4-10請(qǐng)假查詢效果圖(7).匯總記錄運(yùn)營(yíng)本系統(tǒng)時(shí),選擇需要記錄的起始時(shí)間,點(diǎn)擊記錄,即可得到員工考勤情況的登記表(記錄的信息涉及:應(yīng)工作時(shí)間(小時(shí)),實(shí)際工作時(shí)間(小時(shí)),累計(jì)請(qǐng)假時(shí)間(半天),累計(jì)加班時(shí)間(小時(shí)),累計(jì)出差時(shí)間(半天),遲到次數(shù)(次),遲屆時(shí)間累計(jì)(小時(shí)),早退次數(shù)(次),早退時(shí)間累計(jì)(小時(shí)),曠工次數(shù)(次),曠工時(shí)間累計(jì)(小時(shí)))。具體代碼如下:“記錄”按鈕事件代碼。procedureTHuizForm.SpeedButton2Click(Sender:TObject);varbm,Pno,ARno:string; //保存員工號(hào)i,j,n,counter:integer; //用于循環(huán)和計(jì)數(shù)Time:Array[0..3]ofTTime; //保存上下班時(shí)間//Hour:array[0..1]ofdouble; //保存上下午工作時(shí)間//a:double;Hour:array[0..1]ofinteger;a:integer;StartTime,EndTime:TDate; //保存始末時(shí)間TimeStamp,Late_Time,Early_Time,Work_Start,Work_end:TDateTime;//保存中間判斷時(shí)間Late,Early,Absent,Leave,Errand:Boolean; //保存判斷結(jié)果WorkHour,OverHour,LeaveHDay,ErrandHDay,LateTime,EarlyTime,AbsentTime,ActualTime:Integer; //保存時(shí)間間隔長(zhǎng)度LateTimes,EarlyTimes,AbsentTimes:SmallInt;Temp:String;beginTime[0]:=strtotime(DanganForm.ADOTable4['ComeTime']);Time[1]:=strtotime(DanganForm.ADOTable4['GooffTimepm']);Time[2]:=strtotime(DanganForm.ADOTable4['ComeTimepm']);Time[3]:=strtotime(DanganForm.ADOTable4['GooffTime']);Hour[0]:=Round((Time[1]-Time[0])*24); //上午工作時(shí)間Hour[1]:=Round((Time[3]-Time[2])*24); //下午工作時(shí)間a:=Hour[0]+Hour[1]; //一天工作時(shí)間ARno:=DanganForm.ADOTable4['ARno'];StartTime:=DateTimePicker1.Date;EndTime:=DateTimePicker2.Date;begin//提取員工列表T_person.Filtered:=True;T_person.Open;n:=T_person.RecordCount;i:=0;Gauge1.Progress:=0;T_person.First;whilenotT_person.Eofdobegin//獲取出勤記錄Pno:=T_person['Pno'];Q_attend.Close;Q_attend.Parameters.ParamValues['Pno']:=Pno;Q_attend.Parameters.ParamValues['STARTTIME']:=StartTime;Q_attend.Parameters.ParamValues['ENDTIME']:=EndTime+1;Q_attend.Open;Q_attend.First;//初始化WorkHour:=0;LeaveHDay:=0;ErrandHDay:=0;LateTimes:=0;LateTime:=0;EarlyTime:=0;AbsentTime:=0;EarlyTimes:=0;AbsentTimes:=0;ActualTime:=0;OverHour:=0;TimeStamp:=StartTime;whileTimeStamp<EndTime+0.1dobeginif(DayOfWeek(TimeStamp)<>1)and(DayOfWeek(TimeStamp)<>7)thenbeginActualTime:=ActualTime+a;forj:=0to1do //遍歷班次beginLate_Time:=TimeStamp+Time[2*j];Early_Time:=TimeStamp+Time[2*j+1];//判斷是否請(qǐng)假Q(mào)_leave.Close;Q_leave.Parameters.ParamValues['Pno']:=Pno;Q_leave.Parameters.ParamValues['STARTTIME']:=Late_Time;Q_leave.Parameters.ParamValues['ENDTIME']:=Early_Time;Q_leave.Open;Leave:=(Q_leave.RecordCount>0);//判斷是否出差Q_errand.Close;Q_errand.Parameters.ParamValues['Pno']:=Pno;Q_errand.Parameters.ParamValues['STARTTIME']:=Late_Time;Q_errand.Parameters.ParamValues['ENDTIME']:=Early_Time;Q_errand.Open;errand:=(Q_leave.RecordCount>0);ifleavethen //請(qǐng)假Inc(LeaveHDay)elseiferrandthen //出差beginInc(ErrandHDay);WorkHour:=WorkHour+Hour[j];endelse //正常上班beginWork_start:=Late_Time;Work_end:=Early_Time;Late:=True;Absent:=False;//判斷是否遲到while(notQ_attend.Eof)and(Q_attend['IOTime']<=Late_Time)dobeginLate:=(Q_attend['InOut']='O');Q_attend.Next;end;//判斷是否曠工ifLatethenbeginif(notQ_attend.Eof)and(Q_attend['IOTime']<Early_Time)thenbeginWork_start:=Q_attend['IOTime']; //記錄遲屆時(shí)間LateTime:=LateTime+Round((Work_Start-Late_Time)*24);endelseAbsent:=True;AbsentTime:=AbsentTime+Round((Early_Time-Late_Time)*24);end;Early:=False;//判斷是否早退while(notQ_attend.Eof)and(Q_attend['IOTime']<Early_Time)dobeginEarly:=(Q_attend['InOut']='O');ifEarlythenbeginWork_end:=Q_attend['IOTime'];EarlyTime:=EarlyTime+Round((Early_Time-Late_Time)*24);endelseWork_end:=Early_Time;Q_attend.Next;end;ifAbsentthenInc(AbsentTimes)elsebeginifLatethenInc(LateTimes);ifEarlythenInc(EarlyTimes);WorkHour:=WorkHour+Round((Work_end-Work_start)*24);//計(jì)算實(shí)際工作時(shí)間end;end; //一個(gè)班次判斷結(jié)束end; //下一班次end; //是否休息日TimeStamp:=TimeStamp+1; //推動(dòng)一天end; //后一天考勤//記錄加班時(shí)間Q_overtime.Close;Q_overtime.Parameters.ParamValues['Pno']:=Pno;Q_overtime.Parameters.ParamValues['STARTTIME']:=StartTime;Q_overtime.Parameters.ParamValues['ENDTIME']:=EndTime;Q_overtime.Open;try//OverHour:=7;OverHour:=Q_overtime['SUM'];exceptOverHour:=0;end;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論