




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
論緒 11.1應(yīng)用背景 11.2開(kāi)發(fā)工具的選擇 1VisualC++6.0簡(jiǎn)介 1運(yùn)用VisualC++編程的理由 2面對(duì)對(duì)象的應(yīng)用服務(wù)層設(shè)計(jì) 21.3論文的工作介紹 32系統(tǒng)總體設(shè)計(jì) 42.1
系統(tǒng)需求分析 42.2
系統(tǒng)概要設(shè)計(jì) 52.2.1
系統(tǒng)結(jié)構(gòu)設(shè)計(jì) 52.2.2
數(shù)據(jù)庫(kù)設(shè)計(jì) 72.3
系統(tǒng)具體設(shè)計(jì) 143系統(tǒng)應(yīng)用程序設(shè)計(jì) 163.1
系統(tǒng)程序框架的組成 163.2登錄認(rèn)證對(duì)話框的實(shí)現(xiàn) 173.3
主對(duì)話框窗體功能的實(shí)現(xiàn) 183.4
上班時(shí)間設(shè)置窗體功能的實(shí)現(xiàn) 193.5
考勤修改窗體功能的實(shí)現(xiàn) 203.6添假出勤記錄屬性頁(yè)的實(shí)現(xiàn) 213.7加班記錄屬性頁(yè)功能的實(shí)現(xiàn) 223.8請(qǐng)假和出差屬性頁(yè)功能的實(shí)現(xiàn) 233.9考勤統(tǒng)計(jì)模塊功能的實(shí)現(xiàn) 254系統(tǒng)開(kāi)發(fā)總結(jié) 264.1結(jié)束語(yǔ) 264.2參考文獻(xiàn) 264.3致謝 265附錄 281緒論1.1應(yīng)用背景隨著經(jīng)濟(jì)的發(fā)展,企業(yè)的規(guī)模不斷擴(kuò)大,人員流淌日趨頻繁,人員出入考勤管理的工作量也隨之增加,以往的人工處理方式對(duì)于員工許多的企業(yè)來(lái)說(shuō)就顯得力不從心,利用現(xiàn)代計(jì)算機(jī)技術(shù)可使考勤人員管理從繁重的勞動(dòng)中解脫出來(lái),特殊是對(duì)于人員出勤檔案的查詢可做到更剛好,更精確。便利員工的出勤統(tǒng)計(jì)狀況等各方面的工作??记谥贫仁敲總€(gè)企業(yè)單位所必需的,計(jì)算機(jī)的出現(xiàn)使員工出勤狀況的記錄和統(tǒng)計(jì)工作變的特別簡(jiǎn)潔。通過(guò)開(kāi)發(fā)一個(gè)企業(yè)企業(yè)員工管理系統(tǒng),可使企業(yè)員工的出勤管理工作系統(tǒng)化,規(guī)范化和自動(dòng)化,從而達(dá)到全面提高企業(yè)員工考勤管理效率的目的。1.2開(kāi)發(fā)工具的選擇本系統(tǒng)是在VC++6.0開(kāi)發(fā)環(huán)境下,采納Dialogbased的應(yīng)用程序框架。由一個(gè)主對(duì)話框和若干個(gè)功能對(duì)話框組成。系統(tǒng)采納microsoftoffice中的Access2000來(lái)設(shè)計(jì)數(shù)據(jù)庫(kù),再連接數(shù)據(jù)源。1.2.1VisualC++6.0簡(jiǎn)介
VisualC++6.0是Microsoft公司開(kāi)發(fā)的基于C/C++的集成開(kāi)發(fā)工具,它是VisualStudio中功能最為強(qiáng)大、代碼效率最高的開(kāi)發(fā)工具。
VisualC++6.0和以前的版本相比有了多方面的改進(jìn)。它的編譯器、調(diào)試器、連接器、編輯器、資源編輯器都有所加強(qiáng),在編輯器中還供應(yīng)了自動(dòng)語(yǔ)句生勝利能,編輯器會(huì)像VisualBasic一樣自動(dòng)提示函數(shù)的參數(shù)、對(duì)象的成員。另外,VisualC++6.0還供應(yīng)了許多向?qū)?。MFC供應(yīng)了一些新的類,供應(yīng)了更強(qiáng)大的數(shù)據(jù)訪問(wèn)功能。
用戶可利用VisualC++6.0以兩種方式編寫(xiě)Win32應(yīng)用程序,一種方式是基于WindowsAPI的C編程方式,另一種是基于MFC的C++編程方式。C編程方式是傳統(tǒng)的、久經(jīng)考驗(yàn)的編程方式,代碼的效率較高,但開(kāi)發(fā)難度和開(kāi)發(fā)的工作量大。C++編程方式代碼運(yùn)行效率相對(duì)較低,但開(kāi)發(fā)難度小、開(kāi)發(fā)工作量小、源代碼效率高。C編程方式的用戶己經(jīng)很少,本書(shū)將以C++編程方式向用戶介紹利用VisualC++6.0的程序設(shè)計(jì)。運(yùn)用VisualC++編程的理由VisualC++的集成開(kāi)發(fā)環(huán)境供應(yīng)了一個(gè)快速的框架,很大地提高了編程效率,但是,要真正駕馭VisualC++6.0,還必需對(duì)C/C+語(yǔ)言編程有深化地了解,理解MFC庫(kù)和Windows下的編程方法.在Windows下編程,通常是調(diào)用WindowsAPI得以實(shí)現(xiàn).VisualC++6.0將大量地WindowsAPI以C++格式進(jìn)行封裝,通MPFC方式供應(yīng)應(yīng)開(kāi)發(fā)人員,大大簡(jiǎn)化了開(kāi)發(fā)人員地編程工作,供應(yīng)了工作效率.因而,要學(xué)好VisualC++,MFC地駕馭是關(guān)鍵.VisualC++6.0中,我們可以運(yùn)用MFC完成大多熟地工作,也可以干脆調(diào)用WindowsAPI完成一些底層地開(kāi)發(fā).用VisualC++6.0開(kāi)發(fā)的程序代碼簡(jiǎn)練,運(yùn)行速度快.VisualC++6.0中,供應(yīng)了兩個(gè)功能強(qiáng)大的編程工具:AppWizard和ClassWizard.利用VisualC++6.0的AppWizard可以在很短的時(shí)間內(nèi)創(chuàng)建出Windows應(yīng)用程序的框架;二ClassWizard,則可以在應(yīng)用程序框架之上快速增加新的類,成員變量和函數(shù),使Windows編程得以快速實(shí)現(xiàn),兩者結(jié)合,讓W(xué)indows下的編程變得特別簡(jiǎn)潔.面對(duì)對(duì)象的應(yīng)用服務(wù)層設(shè)計(jì)N層的應(yīng)用軟件系統(tǒng),由于其眾多的優(yōu)點(diǎn),已經(jīng)成為典型的軟件系統(tǒng)架構(gòu),也已經(jīng)為廣闊開(kāi)發(fā)人員所熟知。在一個(gè)典型的三層應(yīng)用軟件系統(tǒng)中,應(yīng)用系統(tǒng)通常被劃分成以下三個(gè)層次:數(shù)據(jù)庫(kù)層、應(yīng)用服務(wù)層和用戶界面層。如下圖所示:本系統(tǒng)也是采納三層應(yīng)用服務(wù)設(shè)計(jì),分別是數(shù)據(jù)庫(kù)層、應(yīng)用服務(wù)層和用戶界面層,分三層逐步綻開(kāi)具體的設(shè)計(jì)。1.3論文的工作介紹緒論部分介紹了本系統(tǒng)的應(yīng)用背景以及對(duì)數(shù)據(jù)庫(kù)開(kāi)發(fā)工具的選擇。其次章是本文的主體,依據(jù)軟件工程的要求,從需求分析起先,經(jīng)過(guò)概要設(shè)計(jì)最終到具體設(shè)計(jì),完成對(duì)整個(gè)系統(tǒng)的設(shè)計(jì)。
第三章依據(jù)其次章的設(shè)計(jì)結(jié)果利用Access2000和VisualC++6.0進(jìn)行了具體的窗體和應(yīng)用程序設(shè)計(jì)。
總結(jié)部分介紹了設(shè)計(jì)體會(huì)和編程體會(huì),并指出了系統(tǒng)設(shè)計(jì)中的不足和改進(jìn)的方向3系統(tǒng)總體設(shè)計(jì)
軟件系統(tǒng)的總體設(shè)計(jì)大約要經(jīng)驗(yàn)可行性分析和項(xiàng)目開(kāi)發(fā)安排,需求分析,概要設(shè)計(jì),具體設(shè)計(jì),編碼,測(cè)試以及維護(hù)等七個(gè)階段??尚行苑治龊晚?xiàng)目開(kāi)發(fā)安排在前面已經(jīng)敘述,下面所要做的是進(jìn)行軟件需求分析,概要設(shè)計(jì)和具體設(shè)計(jì)。編碼過(guò)程將在下一節(jié)論述,而測(cè)試和維護(hù)過(guò)程不在本文敘及.3.1
系統(tǒng)需求分析在經(jīng)過(guò)前一階段的分析之后,我確定了我的開(kāi)發(fā)課題為企業(yè)員工考勤管理系統(tǒng)。現(xiàn)在所要做的是要精確定義系統(tǒng)必需做什么以及系統(tǒng)必需具備的功能。
軟件需求分析中我采納結(jié)構(gòu)化分析方法(structuredanalysis,簡(jiǎn)稱sa),sa是面對(duì)數(shù)據(jù)流進(jìn)行需求分析的方法,像全部的軟件分析方法(如面對(duì)對(duì)象分析方法、idef方法等等)一樣,sa也是一種建?;顒?dòng),它運(yùn)用簡(jiǎn)潔易讀的符號(hào),依據(jù)軟件內(nèi)部數(shù)據(jù)傳遞、變換的關(guān)系,自頂向下逐層分解,描繪滿意功能要求的軟件模型。
在系統(tǒng)中我采納數(shù)據(jù)流圖(dfd)這種半形式化的描述方式表達(dá)需求。它是一種功能模型,以圖形的方式描繪數(shù)據(jù)在系統(tǒng)中流淌和處理的過(guò)程,只反映系統(tǒng)必需完成的邏輯功能。它有四種基本圖形符號(hào):
◆→:箭頭,表示數(shù)據(jù)流;
◆〇:圓或橢圓,表示加工;
◆═:雙杠,表示數(shù)據(jù)存儲(chǔ);
◆□:方框,表示數(shù)據(jù)的源點(diǎn)或終點(diǎn)。,頂層流圖僅包含一個(gè)員工,它代表被開(kāi)發(fā)系統(tǒng),它的輸入流是該系統(tǒng)的輸入數(shù)據(jù)了,輸出流是該系統(tǒng)的輸出數(shù)據(jù);底層流圖是指其加工不須要再做分解的數(shù)據(jù)流圖,中間層流圖表示對(duì)其上層父圖的細(xì)化,它的每一步操作可能接著細(xì)化成子圖。出勤的原始記錄主要來(lái)源于考勤機(jī),并且以固定格式保存在數(shù)據(jù)庫(kù)中??记诠芾硐到y(tǒng)的任務(wù)是如何處理這些數(shù)據(jù).系統(tǒng)的數(shù)據(jù)流程如下:
通過(guò)以上的數(shù)據(jù)流圖之后,我們已大體地了解了系統(tǒng)的功能和目標(biāo),接下來(lái)所要做的就是系統(tǒng)功能模塊的劃分和數(shù)據(jù)庫(kù)的設(shè)計(jì),也就是系統(tǒng)的概要設(shè)計(jì)。3.2
系統(tǒng)概要設(shè)計(jì)在軟件需求分析階段,搞清晰了軟件“做什么”的問(wèn)題,形成了目標(biāo)系統(tǒng)的邏輯模型?,F(xiàn)在我們所要做的就是要把軟件“做什么”的邏輯模型變換為“怎么做”的物理模型,即著手實(shí)現(xiàn)軟件的需求。首先,我們須要描述的是系統(tǒng)的總的體系結(jié)構(gòu)。2.2.1
系統(tǒng)結(jié)構(gòu)設(shè)計(jì)系統(tǒng)的概要設(shè)計(jì)中最重要的就是系統(tǒng)的模塊化。模塊化是指解決一個(gè)困難問(wèn)題時(shí)自項(xiàng)向下逐層把軟件系統(tǒng)劃分成若干個(gè)模塊的過(guò)程。每個(gè)模塊完成一個(gè)特定的功能,全部的模塊按某種方法組織起來(lái),成為一個(gè)整體,完成整個(gè)系統(tǒng)所要求的功能。
將系統(tǒng)劃分為多個(gè)模塊是為了降低軟件系統(tǒng)的困難性,提高可讀性、可維護(hù)性,但模塊的劃分不能是隨意的,應(yīng)盡量保持其獨(dú)立性。也就是說(shuō),每個(gè)模塊只完成系統(tǒng)要求的獨(dú)立的子功能,并且和其他模塊的聯(lián)系最少且接口簡(jiǎn)潔,即盡量做到高內(nèi)聚低耦合,提高模塊的獨(dú)立性,為設(shè)計(jì)高質(zhì)量的軟件結(jié)構(gòu)奠定基礎(chǔ)。
在系統(tǒng)的概要設(shè)計(jì)中我采納結(jié)構(gòu)化設(shè)計(jì)(structuredesign,簡(jiǎn)稱sd),sd以需求分析階段產(chǎn)生的數(shù)據(jù)流圖dfd為基礎(chǔ),按肯定的步驟映射成軟件結(jié)構(gòu)。我首先將整個(gè)系統(tǒng)化分為幾個(gè)小問(wèn)題,小模塊,在系統(tǒng)中,我設(shè)計(jì)了上下班時(shí)間設(shè)置、出勤記錄管理、和考勤統(tǒng)計(jì)管理3個(gè)小模塊。然后,進(jìn)一步細(xì)分模塊,添加細(xì)微環(huán)節(jié)。比如,出勤記錄管理我又將其分為添加修改出勤管理、加班管理、請(qǐng)假管理;出差管理(即是代理出勤管理)等等。
以下就是系統(tǒng)的結(jié)構(gòu)圖:(在這里為了表達(dá)便利我將結(jié)構(gòu)圖分開(kāi)來(lái)表達(dá)。)出勤統(tǒng)計(jì)狀況出勤狀況記錄考勤管理系統(tǒng)
出勤統(tǒng)計(jì)狀況出勤狀況記錄考勤管理系統(tǒng)在得到系統(tǒng)的第一層功能模塊圖后,經(jīng)過(guò)進(jìn)一步地細(xì)化,得一系統(tǒng)的子功能模塊圖:出勤狀況出勤狀況記錄出差狀況記錄添加出勤狀況請(qǐng)假狀況記錄加班狀況記錄2.2.2
數(shù)據(jù)庫(kù)設(shè)計(jì)
1
、er圖設(shè)計(jì)
在系統(tǒng)設(shè)計(jì)的起先,我首先考慮的是如何用數(shù)據(jù)模型來(lái)數(shù)據(jù)庫(kù)的結(jié)構(gòu)和語(yǔ)義,以對(duì)現(xiàn)實(shí)世界進(jìn)行抽象。目前廣泛運(yùn)用的數(shù)據(jù)模型可分為兩種類型,一種是獨(dú)立于計(jì)算機(jī)系統(tǒng)的“概念數(shù)據(jù)模型”,如“實(shí)體聯(lián)系模型”;另一種是干脆面對(duì)數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)的“結(jié)構(gòu)數(shù)據(jù)模型”。在本系統(tǒng)中我采納“實(shí)體聯(lián)系模型”(er模型)來(lái)描述數(shù)據(jù)庫(kù)的結(jié)構(gòu)和語(yǔ)義,以對(duì)現(xiàn)實(shí)世界進(jìn)行第一次抽象。er模型干脆從現(xiàn)實(shí)世界抽象出實(shí)體類型及實(shí)體間聯(lián)系,然后用er圖來(lái)表示數(shù)據(jù)模型。它有兩個(gè)明顯的優(yōu)點(diǎn):接近于人的思維,簡(jiǎn)潔理解;和計(jì)算機(jī)無(wú)關(guān),用戶簡(jiǎn)潔接受。但er模型只能說(shuō)明實(shí)體間語(yǔ)義的聯(lián)系,不能進(jìn)一步說(shuō)明具體的數(shù)據(jù)結(jié)構(gòu),它只是數(shù)據(jù)庫(kù)設(shè)計(jì)的第一步。
er圖是直觀表示概念模型的工具,它有四個(gè)基本成分:
◆矩形框,表示實(shí)體類型(考慮問(wèn)題的對(duì)象)。
◆菱形框,表示聯(lián)系類型(實(shí)體間的聯(lián)系)。
◆橢圓形框,表示實(shí)體類型和聯(lián)系類型的屬性。對(duì)于關(guān)鍵碼的屬性,在屬性名下劃一橫線。
◆直線,聯(lián)系類型和其涉及的實(shí)體類型之間以直線連接。
本系統(tǒng)為企業(yè)員工考勤管理,主要管理員工的出勤、請(qǐng)假、出差和加班等事項(xiàng)。系統(tǒng)依據(jù)須要可以記錄出勤人員的信息,同時(shí)還須要了解員工的請(qǐng)假、出差和加班等的記錄狀況。依據(jù)考勤管理的實(shí)際狀況,考慮了多方面的因素以后,確定系統(tǒng)的er圖。
考勤管理系統(tǒng)的E-R圖如圖所示
在該數(shù)據(jù)庫(kù)中,我們?cè)O(shè)計(jì)了六個(gè)實(shí)體,分別是員工、出勤管理、加班管理、請(qǐng)假管理;出差管理,月度考勤統(tǒng)計(jì)管理。在本系統(tǒng)中員工是核心,也是基本,沒(méi)有了員工其它的也就沒(méi)有什么意義了。員工記錄的添加是考慮到出勤記錄問(wèn)題,也就是說(shuō),在出勤管理的實(shí)際運(yùn)用中,須要記錄每個(gè)員工的具體狀況這樣才便利月度的統(tǒng)計(jì),特殊是由于員工的工資要按工作時(shí)的多少發(fā)放,所以在設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí),,員工記錄這一實(shí)體特別重要。通過(guò)這一個(gè)er圖我們可以比較清晰地了解員工工作時(shí)間的多少,及其具體的狀況,從員工的出勤到請(qǐng)假,加班等狀況的勤奮狀況及其員工的素養(yǎng),同時(shí)也可以為以后的查詢或核對(duì)供應(yīng)肯定有用的信息。
下面就是各實(shí)體及聯(lián)系類型的屬性即數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì),所以考勤管理系統(tǒng)的E-R圖轉(zhuǎn)換為關(guān)系表為:?jiǎn)T工(員工號(hào),員工密碼,權(quán)限,姓名)出勤記錄(員工號(hào),記錄編號(hào),出入狀態(tài),出入時(shí)間)加班記錄(員工號(hào),記錄編號(hào),加班時(shí)間,日期)請(qǐng)假記錄(員工號(hào),記錄編號(hào),起始時(shí)間,結(jié)束時(shí)間,緣由)出差記錄(員工號(hào),記錄編號(hào),起始時(shí)間,結(jié)束時(shí)間,具體描述)因?yàn)槊恳粋€(gè)基本表關(guān)系都是完全依靠且沒(méi)有傳遞依靠,所以關(guān)系達(dá)到3NF范式2、數(shù)據(jù)庫(kù)表格設(shè)計(jì)
在完成系統(tǒng)的er圖之后,須要將er模型轉(zhuǎn)化為關(guān)系模型,也就是說(shuō),要設(shè)計(jì)出數(shù)據(jù)庫(kù)所須要的表格。在這里,我選用的是關(guān)系數(shù)據(jù)庫(kù)。因?yàn)殛P(guān)系數(shù)據(jù)庫(kù)中的二維表格可以很清晰地描述數(shù)據(jù)之間的聯(lián)系。
我在系統(tǒng)中定義的表格都嚴(yán)格地依據(jù)范式的思想和要求去完成,數(shù)據(jù)庫(kù)中的全部表格都達(dá)到了三范式的要求。依據(jù)系統(tǒng)er圖,針對(duì)本系統(tǒng)的特點(diǎn),在對(duì)所搜集的數(shù)據(jù)進(jìn)行規(guī)范化之后,定義了如下六張表格,分別是ATTENDANCE出勤記錄表,LEAVE請(qǐng)假記錄表,OVERTIME加班記錄表,ERRAND出差記錄表,員工及密碼信息表。通過(guò)對(duì)這六張表格的操作可以較好地完成系統(tǒng)設(shè)計(jì)的各項(xiàng)功能,六張表格之間有著不同程度的聯(lián)系。ATTENDANCE出勤記錄表字段名稱
數(shù)據(jù)類型
說(shuō)明
person
文本
員工編號(hào)
in_out
文本
出入狀況
io_time
日期/時(shí)間
出入時(shí)間
圖1ATTENDANCE出勤記錄表出勤記錄表主要用于記錄員工出入狀況和時(shí)間的具體信息,包括記錄號(hào)、員工、出入狀況和時(shí)間、各類信息,它即是該數(shù)據(jù)庫(kù)的主表,是系統(tǒng)主界面的主要內(nèi)容。
在該表中員工編號(hào)是主鍵,出入狀況和時(shí)間為其屬性成員。做為備注有一點(diǎn)說(shuō)明,我的數(shù)據(jù)庫(kù)中備注的數(shù)據(jù)類型是文本,而不是備注類型,主要考慮到該字段的長(zhǎng)度并不大,而且在VisualC++中文本數(shù)據(jù)類型的處理也比較便利一點(diǎn)。
圖2LEAVE請(qǐng)假記錄表字段名稱數(shù)據(jù)類型
說(shuō)明
person
文本
員工編號(hào)
start_time
日期/時(shí)間
假期起先時(shí)間
end_time
日期/時(shí)間
假期結(jié)束時(shí)間
reason文本
請(qǐng)假緣由
LEAVE請(qǐng)假記錄表主要是記錄員工的請(qǐng)假狀況,請(qǐng)假的起先時(shí)間和結(jié)束時(shí)間,以便利以后員工的統(tǒng)計(jì)狀況。圖3OVERTIME加班記錄表person
文本
員工編號(hào)
work_hours
數(shù)字加班時(shí)間
work_date
日期/時(shí)間
加班日期
OVERTIME加班記錄表主要是記錄員工的加班時(shí)間長(zhǎng)度和日期如圖3所示。圖4ERRAND出差記錄表person
文本
員工編號(hào)
start_time
日期/時(shí)間
假期起先時(shí)間
end_time
日期/時(shí)間
假期結(jié)束時(shí)間
discription文本
具體描述ERRAND出差記錄表主要是記錄員工的出差起始時(shí)間/結(jié)束時(shí)間和具體描述。圖5PERSON員工信息表
字段名稱
數(shù)據(jù)類型
說(shuō)明Person文本
員工編號(hào)passwd文本
密碼
authority文本
用戶權(quán)限
name文本員工姓名sex
文本性別
birthday
日期/時(shí)間
生日
job
文本
職務(wù)edu_level
文本
受教化程度specialty文本
專業(yè)技能address文本
家庭住址tel文本聯(lián)系電話
PERSON員工信息表員工信息表主要用于記錄有關(guān)員工的各類信息,包括姓名、職稱、誕生日期、聯(lián)系電話、聯(lián)系地址等。它主要用來(lái)為系統(tǒng)供應(yīng)員工的有關(guān)信息,因?yàn)樵谙到y(tǒng)中,出勤管理、加班管理、請(qǐng)假管理;出差管理,月度考勤統(tǒng)計(jì)管理操作均和員工有著肯定的聯(lián)系,須要查找有關(guān)此項(xiàng)記錄有關(guān)的員工信息
等都要用到這個(gè)表。圖6COUNTER信息表字段名稱
數(shù)據(jù)類型
說(shuō)明Counter_value數(shù)字計(jì)數(shù)值Descrtption文本描述COUNTER信息表主要是記錄員工的統(tǒng)計(jì)工作。圖7DEPARTMENT信息表字段名稱
數(shù)據(jù)類型
說(shuō)明Name文本部門名稱Manager文本部門經(jīng)理Intro備注簡(jiǎn)介
DEPARTMENT信息表主要是記錄員工部門里面的各種信息。圖8ATTENDANCE—STAT信息表字段名稱
數(shù)據(jù)類型
說(shuō)明Year_month文本統(tǒng)計(jì)月份Person文本員工號(hào)Work_hour數(shù)字累計(jì)工作時(shí)間Over_hour數(shù)字累計(jì)加班時(shí)間Leave_hour數(shù)字累計(jì)請(qǐng)假時(shí)間Errand_hday數(shù)字累計(jì)出差時(shí)間Late_times數(shù)字遲到次數(shù)Early_times數(shù)字早退次數(shù)Absent_times數(shù)字曠工次數(shù)ATTENDANCE—STAT信息表主要用于記錄有關(guān)統(tǒng)計(jì)的具體信息,主要是按月度來(lái)統(tǒng)計(jì)包括員工的工作時(shí)間、加班時(shí)間,累計(jì)請(qǐng)假時(shí)間,累計(jì)出差時(shí)間,遲到和早退的次數(shù)等信息。通過(guò)以上設(shè)計(jì)已經(jīng)完成了系統(tǒng)的概要設(shè)計(jì),當(dāng)我們有了系統(tǒng)的功能模塊圖和數(shù)據(jù)庫(kù)之后,就須要著手去實(shí)現(xiàn)每一個(gè)模塊,為每一個(gè)功能設(shè)計(jì)程序流程圖,這也就是系統(tǒng)的具體設(shè)計(jì)。
3.3
系統(tǒng)具體設(shè)計(jì)在前面的概要設(shè)計(jì)中,已將系統(tǒng)劃分為多個(gè)模塊,并將它們依據(jù)肯定的原則組裝起來(lái),同時(shí)確定了每個(gè)功能及模塊之間的外部接口?,F(xiàn)在所要做的就是確定每個(gè)模塊具體執(zhí)行過(guò)程,也可以說(shuō)是“過(guò)程設(shè)計(jì)”。
由前一階段產(chǎn)生的系統(tǒng)功能模塊圖,我為系統(tǒng)的主要部分設(shè)計(jì)了如下程序模塊圖:
通過(guò)以上步驟,基本上完成了對(duì)整個(gè)系統(tǒng)的總體設(shè)計(jì),接下來(lái)所要做的就是軟件的編碼工作。3系統(tǒng)應(yīng)用程序設(shè)計(jì)3.1
系統(tǒng)程序框架的組成本實(shí)例采納dialogbased的應(yīng)用程序框架.由一個(gè)主對(duì)話框和若干個(gè)功能對(duì)話框組成,其中功能對(duì)話框登陸對(duì)話框和上下班時(shí)間設(shè)置對(duì)話框都是非模態(tài)對(duì)話框用AppWizard生成程序框架,加入數(shù)據(jù)庫(kù)支持.在MFCAppWizar-Step1中選擇DialogBased選項(xiàng),其余均采納缺省配置.本程序數(shù)據(jù)庫(kù)的操作是通過(guò)MFC的ODBC類實(shí)現(xiàn)的,為了運(yùn)用ODBC類,須要在stdafx.h中加入#include“afxdb.h”一行.因本程序只需連接一個(gè)數(shù)據(jù)庫(kù),所以定義了一個(gè)CDatadase型的全局變量db,一次性打開(kāi)和關(guān)閉數(shù)據(jù)庫(kù),便利程序的編寫(xiě).數(shù)據(jù)庫(kù)的打開(kāi)在登錄認(rèn)證對(duì)話框中.在主程序結(jié)束前關(guān)閉數(shù)據(jù)庫(kù),因此在App類的ExitInstance()函數(shù)中加入以下代碼;if(db.Isopen())db.Close();運(yùn)用全局?jǐn)?shù)據(jù)庫(kù)變量db,須要在其他地方運(yùn)用他的文件中加入以下語(yǔ)句:ExternDatabasedb;為了訪問(wèn)數(shù)據(jù)庫(kù)中的表格,本程序從CRecordset中派生8個(gè)類,分別用于封裝所需訪問(wèn)的表格,如下列圖表所示.這些類通過(guò)RFX(RecordFieldExchange)機(jī)制將成員變量也表格中的字段值聯(lián)系起來(lái),通過(guò)訪問(wèn)成員變量可以訪問(wèn)當(dāng)前記錄中字段的值.CRecordset派生類在Acess數(shù)據(jù)庫(kù)中對(duì)應(yīng)的表格:CRecordset表格CAttendanceRSATTENDANCE出勤記錄表CCounterRSCOUNTER計(jì)數(shù)器表CdepattRSDEPARTMENT部門信息表CerrandRSERRAND出差記錄表CerrandRSCLeaveRSCOvertimeRSOVERTIME加班記錄表CPersonRSPERSON員工個(gè)人信息表CStatRSATTENDANCE_STAT月度考勤統(tǒng)計(jì)表3.2登錄認(rèn)證對(duì)話框的實(shí)現(xiàn)首先在限制面板中建立ODBC數(shù)據(jù)源,數(shù)據(jù)源名稱為MISDB,運(yùn)行程序Attendance.exe,進(jìn)入登陸界面(界面一)。用戶名為HONG,密碼為123。登陸窗口對(duì)話框,包括三個(gè)輸入框和兩個(gè)按鈕。主要控件類型,ID和對(duì)應(yīng)的成員變量及說(shuō)明見(jiàn)見(jiàn)表。登陸窗口對(duì)話框的封裝類為CLoginDlg。界面一:登錄認(rèn)對(duì)話框其中兩個(gè)Button采納了缺省ID,即IDOK和IDCANCEL,其中對(duì)IDOK的點(diǎn)擊加了登錄代碼,CLoginDlg類須要用到加密類,為了保證統(tǒng)一,加密類運(yùn)用了CCrypt類,須要在cpp文件開(kāi)頭加入#include“CCrypt”一行。另外,為了運(yùn)用全局變量數(shù)據(jù)庫(kù)變量db,須要在cpp文件開(kāi)頭加入下面的語(yǔ)句:externCDatabasedb;變更"登錄人事管理系統(tǒng)"字體的類型為華文彩云和須要在OnInitDialog()添加下面的代碼。BOOLCLoginDlg::OnInitDialog(){ CDialog::OnInitDialog(); m_font.CreatePointFont(180,"華文彩云",NULL);GetDlgItem(IDC_STATIC_LOGINTEXT)->SetFont(&m_font,true); //如數(shù)據(jù)庫(kù)為打開(kāi)狀態(tài),則關(guān)閉 if(db.IsOpen())db.Close();}在用戶的“登陸”按鈕功能實(shí)現(xiàn)的代碼在voidCLoginDlg::OnOK()函數(shù)中見(jiàn)附錄最侯為了先運(yùn)行登錄認(rèn)證對(duì)話框,還需在App類的InitInstance()函數(shù)中加代碼://顯示登錄對(duì)話框 CLoginDlgLoginDlg; if(LoginDlg.DoModal()!=IDOK)returnFALSE;3.3
主對(duì)話框窗體功能的實(shí)現(xiàn)用戶登錄后即顯示主對(duì)話框窗口,主對(duì)話框包括5個(gè)按鈕,分別實(shí)現(xiàn)5項(xiàng)功能,封裝主對(duì)話框的類是CAttendanceDlg,主要界面及說(shuō)明如下:界面二:主對(duì)話框在CAttendanceDlg中定義以下成員變量:CBrushm_brush; CStatDlg*m_pStatDlg;CAttDlg*m_pAttDlg; CFontm_font; //變更標(biāo)題字體類型 m_font.CreatePointFont(180,"華文彩云",NULL); GetDlgItem(IDC_STATIC_HEAD)->SetFont(&m_font,true); //初始化對(duì)話框指針為空m_pAttDlg=NULL; m_pStatDlg=NULL;對(duì)話框中的5個(gè)按鈕的功能主要就是顯示相應(yīng)的功能對(duì)話框.。各按鈕的功能主要是顯示相應(yīng)的功能對(duì)話框。各按鈕的事務(wù)處理代碼見(jiàn)附錄。 3.4
上班時(shí)間設(shè)置窗體功能的實(shí)現(xiàn)點(diǎn)擊“設(shè)置”進(jìn)入界面三設(shè)置上下班時(shí)間。在界面三中,你可以修改上下班時(shí)間,點(diǎn)擊“修改”,設(shè)置的時(shí)間會(huì)記錄到配置文件“workplan.ini”中。假如配置文件不存在,上下班時(shí)間就被設(shè)定為程序中的默認(rèn)值。界面三:上班時(shí)間設(shè)置窗體公司的上下班時(shí)間相當(dāng)固定,而且須要在統(tǒng)計(jì)時(shí)頻繁運(yùn)用,所以不須要保存在數(shù)據(jù)庫(kù)中.本例采納標(biāo)準(zhǔn)的INI設(shè)置文件來(lái)保存這些數(shù)據(jù);“修改”按鈕的BN_CLICKEN事務(wù)處理程序用于保存當(dāng)前的設(shè)置.“復(fù)原默認(rèn)設(shè)置”按鈕的BN_CLICKED事務(wù)處理程序用于復(fù)原原來(lái)的設(shè)置.這個(gè)函數(shù)也同時(shí)被OnInitDialog()函數(shù)引用,以實(shí)現(xiàn)初始化操作.OnWorkplanReset()函數(shù)則存放復(fù)原默認(rèn)設(shè)置按鈕的碼3.5
考勤修改窗體功能的實(shí)現(xiàn)考勤修改對(duì)話框主要用來(lái)人工輸入出勤狀況.假如考勤機(jī)出現(xiàn)問(wèn)題,這個(gè)功能剛好彌補(bǔ)數(shù)據(jù).同時(shí)加班,請(qǐng)假,出差的記錄都須要通過(guò)這個(gè)對(duì)話框來(lái)輸入.對(duì)話框的布局如下圖所示.為了區(qū)分不同的輸入,在對(duì)話框中嵌入了CPropertySheet和4個(gè)CPropertyPage,4個(gè)CPropertyPage分別放置出勤,加班,請(qǐng)假和出差記錄的修改界面.4個(gè)界面共用一個(gè)查詢條件設(shè)置,下圖中下方的空白界面即是用來(lái)放置CPropertySheet和CPropertyPage的,考勤修改對(duì)話框的封裝類是CAttDlg。對(duì)話框界面如下:界面四在對(duì)話框中嵌入了CPropertySheet和4個(gè)CPropertyPage,就須要定義類的變量CPage1m_Page1(出勤頁(yè)),CPage2m_Page2(加班頁(yè)),CPage3m_Page3(請(qǐng)假頁(yè)),CPage4m_Page4(出差頁(yè)),和CPropertySheetm_Sheet。然后修改它的初始化函數(shù)BOOLCAttDlg::OnInitDialog()的代碼,見(jiàn)附錄。在輸入員工號(hào)時(shí),須要?jiǎng)偤脵z索員工姓名,以確定設(shè)置的條件有效.通過(guò)ClassWizard加入處理IDC_EDT_SEEKPERSONID的EN_CHANGE消息處理的函數(shù)OnChangeEdtSeekpersonid()。3.6添假出勤記錄屬性頁(yè)的實(shí)現(xiàn)再加入一個(gè)對(duì)話框資源將其封裝類設(shè)為CPropertyPage他的繼承類為CPage1,對(duì)話框的界面如下界面五在界面五中,可以檢索或修改出勤記錄。檢索考勤記錄:在“記錄檢索條件”中,選中“時(shí)間范圍”復(fù)選框,輸入時(shí)間范圍,或選中“員工”復(fù)選框,輸入員工號(hào),在右邊的文本框中會(huì)自動(dòng)顯示員工號(hào)對(duì)應(yīng)的員工名字,然后點(diǎn)擊“按條件檢索”,在“出勤記錄列表”中會(huì)顯示出選定時(shí)間范圍或員工的出勤記錄。:添加記錄:在“添加記錄”中輸入出入時(shí)間,出入狀況,部門縮寫(xiě)(輸入后右邊會(huì)顯示部門名稱),員工號(hào)(輸入后右邊會(huì)顯示員工名字)。點(diǎn)擊“全部員工”把全部員工每人一條出勤記錄添加到數(shù)據(jù)庫(kù)并在出勤列表中顯示,點(diǎn)擊“部門員工”為該部門的每位員工添加一條出勤記錄到數(shù)據(jù)庫(kù)并在出勤列表中顯示,點(diǎn)擊“單個(gè)員工”為該員工添加一條出勤記錄到數(shù)據(jù)庫(kù)并在出勤列表中顯示。下面的進(jìn)度條會(huì)顯示添加記錄的進(jìn)度。刪除記錄:在“出勤記錄列表”中選定記錄編號(hào),然后點(diǎn)擊“刪除所選記錄”,把記錄從列表和數(shù)據(jù)庫(kù)中刪除。他的屬性頁(yè)面的初始化函數(shù)為OnInitDialog()。為了更新列表框內(nèi)容,編寫(xiě)的UpdateList()函數(shù)調(diào)用此函數(shù)可使列表框顯示給定的數(shù)據(jù)表格,當(dāng)輸入部門編號(hào)時(shí),自動(dòng)檢索部門名稱.他的實(shí)現(xiàn)函數(shù)為OnChangeEdtDepartid()。在輸入員工號(hào)時(shí),也須要?jiǎng)偤脵z索員工姓名,以確定設(shè)置的條件有效,在函數(shù)OnChangeEdtPersonid()中實(shí)現(xiàn)。添加部門和全體員工出勤記錄的過(guò)程最終客分解為添加單個(gè)員工記錄的過(guò)程.通過(guò)添加出勤記錄函數(shù)IO_Add(CStringstrPersonID)實(shí)現(xiàn)。添加記錄的3個(gè)按鈕的處理程序分別調(diào)用以上的函數(shù)。:OnBtnAddall()為添加全部員工出勤記錄,OnBtnAdddepart()為追加部門員工考勤記錄,OnBtnAddperson()為追加單個(gè)員工考勤記錄。3.7加班記錄屬性頁(yè)功能的實(shí)現(xiàn)這個(gè)屬性頁(yè)的創(chuàng)建以上面的添假出勤記錄屬性頁(yè)的創(chuàng)建類似,封裝類都為CPropertyPage類他的繼承類為CPage2,對(duì)話框的界面如下。同時(shí)也要對(duì)他的初始化函數(shù)OnInitDialog(),UpdateList()函數(shù),OnChangeEdtOvertimePersonid()略做修改。添加按鈕的實(shí)現(xiàn)如下函數(shù)為OnBtnOvertimeAdd(),下面的“刪除所以記錄”按鈕和”按條件檢索”按鈕的功能和添加修改出勤記錄中的相應(yīng)按鈕功能類似,代碼不再重復(fù)出現(xiàn),可見(jiàn)源程序界面六3.8請(qǐng)假和出差屬性頁(yè)功能的實(shí)現(xiàn)這兩個(gè)屬性爺?shù)膭?chuàng)建基本相同,請(qǐng)假記錄的封裝類為CPropertyPage繼承的CPage3類,出差記錄的封裝類為CPropertyPage繼承的CPage4類界面的初始化,列表的更新,員工姓名的
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五土地承包合同行政協(xié)議性質(zhì)
- 2024中國(guó)煤炭開(kāi)發(fā)有限責(zé)任公司招聘2人筆試參考題庫(kù)附帶答案詳解
- 七下期中試卷英語(yǔ)及答案
- 七年級(jí)測(cè)驗(yàn)試卷及答案
- 5G通信設(shè)備2025年份四月技術(shù)參數(shù)變更處理合同細(xì)則
- 浙江路面頂管施工方案
- 2025版高中地理分層訓(xùn)練進(jìn)階沖關(guān)1.4地域文化與人口含解析湘教版必修2
- 2024年高考數(shù)學(xué)一輪復(fù)習(xí)考點(diǎn)題型課下層級(jí)訓(xùn)練61n次獨(dú)立重復(fù)試驗(yàn)與二項(xiàng)分布含解析
- 換壁紙施工方案
- 2025年份2月份企業(yè)年會(huì)獎(jiǎng)品車輛稅務(wù)申報(bào)合同
- 拔高卷-2021-2022學(xué)年七年級(jí)語(yǔ)文下學(xué)期期中考前必刷卷(福建專用)(考試版)
- CNAS-SC175:2024 基于ISO IEC 2000-1的服務(wù)管理體系認(rèn)證機(jī)構(gòu)認(rèn)可方案
- 《汶川縣全域旅游發(fā)展總體規(guī)劃(2021-2030)》
- 《心肺復(fù)蘇及電除顫》課件
- 世界精神衛(wèi)生日班會(huì)課件
- 瓶裝液化氣送氣工培訓(xùn)
- 臨床藥物治療學(xué)知到智慧樹(shù)章節(jié)測(cè)試課后答案2024年秋湖南中醫(yī)藥大學(xué)
- 2024年新能源充電站租賃合同
- 9.2溶解度(第1課時(shí)飽和溶液不飽和溶液)+教學(xué)設(shè)計(jì)-2024-2025學(xué)年九年級(jí)化學(xué)人教版(2024)下冊(cè)
- 中建塔吊基礎(chǔ)設(shè)計(jì)與施工專項(xiàng)方案
- DB32-T 4545-2023 海岸線分類與調(diào)查技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論