人事管理系統(tǒng)的設(shè)計(jì)_第1頁
人事管理系統(tǒng)的設(shè)計(jì)_第2頁
人事管理系統(tǒng)的設(shè)計(jì)_第3頁
人事管理系統(tǒng)的設(shè)計(jì)_第4頁
人事管理系統(tǒng)的設(shè)計(jì)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

...wd......wd......wd...人事管理系統(tǒng)的設(shè)計(jì)摘要隨著計(jì)算機(jī)技術(shù)的飛速開展,計(jì)算機(jī)在企業(yè)管理中應(yīng)用的普及,利用計(jì)算機(jī)實(shí)現(xiàn)企業(yè)人事管理勢(shì)在必行。本系統(tǒng)結(jié)合公司實(shí)際的人事管理制度,經(jīng)過實(shí)際的需求分析,采用功能強(qiáng)大的VisualBasic6.0作為開發(fā)工具而開發(fā)出來的單機(jī)版人事管理系統(tǒng)。整個(gè)系統(tǒng)從符合操作簡(jiǎn)便、界面友好、靈活、實(shí)用、安全的要求出發(fā),完成人事管理的全過程,包括新進(jìn)員工參加時(shí)人事檔案的建設(shè)、老員工的轉(zhuǎn)出、職位等的變動(dòng)引起職工信息的修改、員工信息查詢、統(tǒng)計(jì)等人事管理工作以及新進(jìn)員的新增、老員工修改等管理工作。經(jīng)過實(shí)際使用證明,本文所設(shè)計(jì)的人事管理系統(tǒng)可以滿足公司人事管理方面的需要。關(guān)鍵詞:信息管理、人事管理、人事管理系統(tǒng)目錄第一章概述……………11、本課題的來源………12、本文的目的、內(nèi)容及作者主要奉獻(xiàn)………………1第二章開好發(fā)工具的選擇……………2第三章系統(tǒng)調(diào)研及可行性分析………61、系統(tǒng)調(diào)研……………62、可靠性分析概述……………………63、技術(shù)可行性分析……………………7第四章系統(tǒng)分析………81、系統(tǒng)需求分析…………92、數(shù)據(jù)流程圖…………9第五章系統(tǒng)總體設(shè)計(jì)………………101、功能描述……………102、系統(tǒng)操作流程圖……………………11第六章系統(tǒng)詳細(xì)設(shè)計(jì)………………121、數(shù)據(jù)庫設(shè)計(jì)…………122、系統(tǒng)主要界面………13第七章系統(tǒng)測(cè)試……………………161、測(cè)試舉例……………162、測(cè)試工程……………173、測(cè)試方法……………18附錄原程序清單…………………20第一章概述本課題的來源隨著計(jì)算機(jī)技術(shù)的飛速開展,計(jì)算機(jī)在企業(yè)管理中應(yīng)用的普及,利用計(jì)算機(jī)實(shí)現(xiàn)企業(yè)人事管理勢(shì)在必行。對(duì)于大中型企業(yè)來說,利用計(jì)算機(jī)支持企業(yè)高效率完成勞動(dòng)人事管理的日常事務(wù),是適應(yīng)現(xiàn)代企業(yè)制度要求、推動(dòng)企業(yè)勞動(dòng)人事管理走向科學(xué)化、標(biāo)準(zhǔn)化的必要條件;計(jì)算機(jī)管理所無法比較的優(yōu)點(diǎn)檢索迅速、查找方便、可靠性高、存儲(chǔ)量大、保密性好、壽命長(zhǎng)、成本低等。這些優(yōu)點(diǎn)能夠極大地提高人事管理的效率,也是企業(yè)的科學(xué)化、正規(guī)化管理,與世界接軌的重要條件。不同的企業(yè)具有不同的人事管理制度,這就決定了不同的企業(yè)需要不同的人事管理系統(tǒng)。2、本論文的目的、內(nèi)容及作者主要奉獻(xiàn)(1)目的:目前市面上流行的人事管理系統(tǒng)不少。但是,對(duì)于企、事業(yè)單位的人事管理系統(tǒng)來說,不需要大型的數(shù)據(jù)庫系統(tǒng)。只需要一個(gè)操作方便,功能實(shí)用,能滿足本中心對(duì)數(shù)據(jù)的管理及需求的系統(tǒng)。我們的目標(biāo)就是在于開發(fā)一個(gè)功能實(shí)用、操作方便,簡(jiǎn)單明了的人事管理系統(tǒng)。(2)內(nèi)容能夠錄入人事的基本資料,在操作上能夠完成諸如添加、修改、刪除、按各種條件進(jìn)展查詢、新用戶的設(shè)置及密碼修改等方面的工作,基本滿足人事日常業(yè)務(wù)的需要。(3)作者的主要奉獻(xiàn)本人獨(dú)立完成了此課題的研究與開發(fā),包括調(diào)研、分析、設(shè)計(jì)、編碼、測(cè)試、文檔編寫等內(nèi)容。第二章開發(fā)工具的選擇現(xiàn)在,市場(chǎng)上可以選購的應(yīng)用開發(fā)產(chǎn)品很多,流行的也有數(shù)十種。目前在我國市場(chǎng)上最為流行、使用最多、最為先進(jìn)的可用作企業(yè)級(jí)開發(fā)工具的產(chǎn)品有:Microsoft公司的VisualBasicMicrosoft公司的VisualCBorland公司的DelphiJava等等在目前市場(chǎng)上這些眾多的程序開發(fā)工具中,有些強(qiáng)調(diào)程語言的彈性與執(zhí)行效率;有些則偏重于可視化程序開發(fā)工具所帶來的便利性與效率的得高,各有各的優(yōu)點(diǎn)和特色,也滿足了不同用戶的需求。然而,語言的彈性和工具的便利性是密不可分的,只有便利的工具,卻沒有彈性的語言作支持,許多特殊化的處理動(dòng)作必需要消耗數(shù)倍的工夫來處理,使得原來所標(biāo)榜的效率提高的優(yōu)點(diǎn)失去了作用;相反,如果只強(qiáng)調(diào)程續(xù)語言的彈性,卻沒有便利的工具作配合,會(huì)使一些即使非常簡(jiǎn)單的界面處理動(dòng)作,也會(huì)嚴(yán)重地浪費(fèi)程序設(shè)計(jì)師的珍貴時(shí)間。作為數(shù)據(jù)庫系統(tǒng)的開發(fā),VisualBasic是一個(gè)非常理想選擇。數(shù)據(jù)庫是MIS中的重要支持技術(shù),在MIS開發(fā)過程中,若何選擇數(shù)據(jù)庫管理是一個(gè)重要的問題,目前,數(shù)據(jù)庫產(chǎn)品較多,每種產(chǎn)品都具有各自的特點(diǎn)和適用范圍,因此,在選擇數(shù)據(jù)庫時(shí),應(yīng)考慮數(shù)據(jù)庫應(yīng)用的特點(diǎn)及適用范圍,本系統(tǒng)選用的數(shù)據(jù)庫語言VisualBasic語言,該開發(fā)工具具有很多長(zhǎng)處:VisualBasic是一種可視化的、面對(duì)對(duì)象和條用事件驅(qū)動(dòng)方式的構(gòu)造化高級(jí)程序設(shè)計(jì),可用于開發(fā)Windows環(huán)境下的種類應(yīng)用程序。它簡(jiǎn)單易學(xué)、效率高,且功能強(qiáng)大,可以與Windows的專業(yè)開發(fā)工具SDK相媲美,而且程序開發(fā)人員不必具有C/C++編程根基。在VisualBasic環(huán)境下,利用事件驅(qū)動(dòng)的編程機(jī)制、新穎易用的可視化設(shè)計(jì)工具,使用Windows內(nèi)部的應(yīng)用程序接口(API)函數(shù),以及動(dòng)態(tài)鏈接庫(DLL)、動(dòng)態(tài)數(shù)據(jù)交換(DDE)、對(duì)象的鏈接與嵌入(OLE)、開放式數(shù)據(jù)訪問(ODBC)等技術(shù),可以高效、快速地開發(fā)出Windows環(huán)境下功能強(qiáng)大、圖形界面豐富的應(yīng)用軟件系統(tǒng)??偟膩碚f,VisualBasic具有以下特點(diǎn):可視化編程:用傳統(tǒng)程序設(shè)計(jì)語言設(shè)計(jì)程序時(shí),都是通過編寫程序代碼來設(shè)計(jì)用戶界面,在設(shè)計(jì)過程中看不到界面的實(shí)際顯示效果,必須編譯后運(yùn)行程序才能觀察。如果對(duì)界面的效果不滿意,還要回到程序中修改。有時(shí)候,這種編程-編譯-修改的操作可能要反復(fù)屢次,大大影響了軟件開發(fā)效率。VisualBasic提供了可視化設(shè)計(jì)工具,把Windows界面設(shè)計(jì)的復(fù)雜性“封裝〞起來,開發(fā)人員不必為界面設(shè)計(jì)而編寫大量程序代碼。只需要按設(shè)計(jì)要求的屏幕布局,用系統(tǒng)提供的工具,在屏幕上畫出各種“部件〞,即圖形對(duì)象,并設(shè)置這些圖形對(duì)象的屬性。VisualBasic自動(dòng)產(chǎn)生界面設(shè)計(jì)代碼,程序設(shè)計(jì)人員只需要編寫實(shí)現(xiàn)程序功能的那局部代碼,從而可以大大提高程序設(shè)計(jì)的效率。面向?qū)ο蟮某绦蛟O(shè)計(jì)4.0版以后的VisualBasic支持面向?qū)ο蟮某绦蛟O(shè)計(jì),但它與一般的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言(C++)不完全一樣。在一般的面向?qū)ο蟪绦蛟O(shè)計(jì)語言中,對(duì)象由程序代碼和數(shù)據(jù)組成,是抽象的概念;而VisualBasic則是應(yīng)用面向?qū)ο蟮某绦蛟O(shè)計(jì)方法(OOP),把程序和數(shù)據(jù)封裝起來作為一個(gè)對(duì)象,并為每個(gè)對(duì)象賦予應(yīng)有的屬性,使對(duì)象成為實(shí)在的東西。在設(shè)計(jì)對(duì)象時(shí),不必編寫建設(shè)和描述每個(gè)對(duì)象的程序代碼,而是用工具畫在界面上,VisualBasic自動(dòng)生成對(duì)象的程序代碼并封裝起來。每個(gè)對(duì)象以圖形方式顯示在界面上,都是可視的。構(gòu)造化程序設(shè)計(jì)語言VisualBasic是在BASIC語言的根基上開展起來的,具有高級(jí)程序設(shè)計(jì)語言的語句構(gòu)造,接近于自然語言和人類的邏輯思維方式。VisualBasic語句簡(jiǎn)單易懂,其編輯器支持彩色代碼,可自動(dòng)進(jìn)展語法錯(cuò)誤檢查,同時(shí)具有功能強(qiáng)大且使用靈活的調(diào)試器和編譯器。VisualBasic是解釋型語言,在輸入代碼的同時(shí),解釋系統(tǒng)將高級(jí)語言分解翻譯成計(jì)算機(jī)可以識(shí)別的機(jī)器指令,并判斷每個(gè)語句的語法錯(cuò)誤。在設(shè)計(jì)VisualBasic程序的過程中,隨時(shí)可以運(yùn)行程序,而在整個(gè)程序設(shè)計(jì)好之后,可以編譯生成可執(zhí)行文件(.EXE),脫離VisualBasic環(huán)境,直接在Windows環(huán)境下運(yùn)行。事件驅(qū)動(dòng)編程機(jī)制VisualBasic通過事件來執(zhí)行對(duì)象的操作。一個(gè)對(duì)象可能會(huì)產(chǎn)生多個(gè)事件,每個(gè)事件都可以通過一段程序來響應(yīng)。例如,命令按鈕是一個(gè)對(duì)象,當(dāng)用戶單擊該按鈕時(shí),將產(chǎn)生一個(gè)“單擊〞(CLICK)事件,而在產(chǎn)生該事件時(shí)將執(zhí)行一段程序,用來實(shí)現(xiàn)指定的操作。在用VisualBasic設(shè)計(jì)大型應(yīng)用軟件時(shí),不必建設(shè)具有明顯開場(chǎng)和完畢的程序,而是編寫假設(shè)干個(gè)微小的子程序,即過程。這些過程分別面向不同的對(duì)象,由用戶操作引發(fā)某個(gè)事件來驅(qū)動(dòng)完成某種特定的功能,或者由事件驅(qū)動(dòng)程序調(diào)用通用過程來執(zhí)行指定的操作,這樣可以方便編程人員,提高效率。訪問數(shù)據(jù)庫VisualBasic具有強(qiáng)大的數(shù)據(jù)庫管理功能,利用數(shù)據(jù)控件和數(shù)據(jù)庫管理窗口,可以直接建設(shè)或處理MicrosoftAccess格式的數(shù)據(jù)庫,并提供了強(qiáng)大的數(shù)據(jù)存儲(chǔ)和檢索功能。同時(shí),VisualBasic還能直接編輯和訪問其他外部數(shù)據(jù)庫,如DBASE,F(xiàn)oxPro,Paradox等,這些數(shù)據(jù)庫格式都可以用VisualBasic編輯和處理。VisualBasic提供開放式數(shù)據(jù)連接,即ODBC功能,可通過直接訪問或建設(shè)連接的方式使用并操作后臺(tái)大型網(wǎng)絡(luò)數(shù)據(jù)庫,如SQLServer,Oracle等。在應(yīng)用程序中,可以使用構(gòu)造化查詢語言SQL數(shù)據(jù)標(biāo)準(zhǔn),直接訪問服務(wù)器上的數(shù)據(jù)庫,并提供了簡(jiǎn)單的面向?qū)ο蟮膸觳僮髦噶詈投嘤脩魯?shù)據(jù)庫訪問的加鎖機(jī)制和網(wǎng)絡(luò)數(shù)據(jù)庫的SQL的編程技術(shù),為單機(jī)上運(yùn)行的數(shù)據(jù)庫提供了SQL網(wǎng)絡(luò)接口,以便在分布式環(huán)境中快速而有效地實(shí)現(xiàn)客戶/服務(wù)器(client/server)方案。動(dòng)態(tài)數(shù)據(jù)交換(DDE)利用動(dòng)態(tài)數(shù)據(jù)交換(DynamicDataExchange)技術(shù),可以把一種應(yīng)用程序中的數(shù)據(jù)動(dòng)態(tài)地鏈接到另一種應(yīng)用程序中,使兩種完全不同的應(yīng)用程序建設(shè)起一條動(dòng)態(tài)數(shù)據(jù)鏈路。當(dāng)原始數(shù)據(jù)變化時(shí),可以自動(dòng)更新鏈接的數(shù)據(jù)。VisualBasic提供了動(dòng)態(tài)數(shù)據(jù)交換的編程技術(shù),可以在應(yīng)用程序中與其他Windows應(yīng)用程序建設(shè)動(dòng)態(tài)數(shù)據(jù)交換,在不同的應(yīng)用程序之間進(jìn)展通信。對(duì)象的鏈接與嵌入(OLE)對(duì)象的鏈接與嵌入(OLE)將每個(gè)應(yīng)用程序都看作是一個(gè)對(duì)象(object),將不同的對(duì)象鏈接(link)起來,再嵌入(embed)某個(gè)應(yīng)用程序中,從而可以得到具有聲音、影像、圖像、動(dòng)畫、文字等各種信息的集合式的文件。OLE技術(shù)是Microsoft公司對(duì)象技術(shù)的戰(zhàn)略,它把多個(gè)應(yīng)用程序合為一體,將每個(gè)應(yīng)用程序看作是一個(gè)對(duì)象進(jìn)展鏈接和嵌入,是一種應(yīng)用程序一體化的技術(shù)。利用OLE技術(shù),可以方便地建設(shè)復(fù)合式文檔(compounddocument),這種文檔由來自多個(gè)不同應(yīng)用程序的對(duì)象組成,文檔中的每個(gè)對(duì)象都與原來的應(yīng)用程序相聯(lián)系,并可執(zhí)行與原來應(yīng)用程序完全一樣的操作。動(dòng)態(tài)鏈接庫(DLL)VisualBasic是一種高級(jí)程序設(shè)計(jì)語言,不具備低級(jí)語言的功能,對(duì)訪問機(jī)器硬件的操作不太容易實(shí)現(xiàn)。但它可以通過動(dòng)態(tài)鏈接庫技術(shù)將C/C++或匯編語言編寫的程序參加到VisualBasic應(yīng)用程序中,可以像調(diào)用內(nèi)部函數(shù)一樣調(diào)用其他語言編寫的函數(shù)。此外,通過動(dòng)態(tài)鏈接庫,還可以調(diào)用Windows應(yīng)用程序接口(API)函數(shù),實(shí)現(xiàn)SDK所具有的功能。第三章系統(tǒng)調(diào)研及可行性分析3.1系統(tǒng)調(diào)研正式開發(fā)管理信息系統(tǒng)之前進(jìn)展調(diào)研是非常必要的,其必要性主要表現(xiàn)在以下幾個(gè)方面?!?〕明確用戶的要求,以根據(jù)調(diào)查結(jié)果進(jìn)展可行性分析,確認(rèn)系統(tǒng)的開發(fā)是否可行?!?〕提出新系統(tǒng)的人員并不都是系統(tǒng)研究人員,有些人對(duì)于其功能和處理數(shù)據(jù)的方法沒有明確的認(rèn)識(shí)。它們只是根據(jù)自己業(yè)務(wù)工作的需要提出了要求,系統(tǒng)開發(fā)人員要對(duì)此進(jìn)展詳細(xì)的調(diào)查和分析,確認(rèn)用戶的要求可以通過現(xiàn)有的計(jì)算機(jī)技術(shù)實(shí)現(xiàn),保證開發(fā)的管理信息系統(tǒng)的功能與用戶提出的要求相吻合。〔3〕企業(yè)的現(xiàn)行系統(tǒng)可能是手工系統(tǒng),也可能是使用和計(jì)算機(jī)的系統(tǒng),無論是何種情況,都要詳細(xì)地調(diào)查現(xiàn)行系統(tǒng)中信息處理的具體情況,系統(tǒng)內(nèi)部功能構(gòu)造,以便設(shè)計(jì)出一個(gè)合理的、好的新系統(tǒng)邏輯模型,為新系統(tǒng)的設(shè)計(jì)工作打好根基,保證整個(gè)系統(tǒng)開發(fā)的質(zhì)量。總之,必要對(duì)現(xiàn)行系統(tǒng)進(jìn)展詳細(xì)的調(diào)查,明確用戶需求,保證開發(fā)的新系統(tǒng)的功能與用戶的要求相吻合,防止消耗大量的人力、物力、財(cái)力,新系統(tǒng)的開發(fā)卻失敗的悲劇發(fā)生。3.2可行性分析概述可行性分析是在用戶的要求和系統(tǒng)調(diào)研的根基上進(jìn)展的,對(duì)新系統(tǒng)的開發(fā)從社會(huì)、技術(shù)、經(jīng)濟(jì)、管理等方面進(jìn)展分析,并得出新系統(tǒng)的開發(fā)工作可行、不可行、需要修改、追加投資、暫緩開發(fā)、分步實(shí)施等方案和結(jié)論,最后完成可行性分析。可行性分析一般可定義為:可行性分析是在建設(shè)的前期對(duì)工程工程的一種考察和鑒定,對(duì)擬議中的工程進(jìn)展全面與綜合的技術(shù)、經(jīng)濟(jì)能力的調(diào)查,判斷它是否可行。(1)可行性分析階段的主要工作包括以下幾個(gè)方面:①新系統(tǒng)目標(biāo)可行性分析:分析新系統(tǒng)的目標(biāo)是否符合企業(yè)的現(xiàn)狀和開展的需要。②社會(huì)可行性分析:社會(huì)可行性分析主要是指管理信息系統(tǒng)的開發(fā)是否符合國家法律、下策,是否能夠與社會(huì)大系統(tǒng)實(shí)現(xiàn)良好的對(duì)接。③技術(shù)可行性分析:技術(shù)可行性分析是根據(jù)新系統(tǒng)的目標(biāo)來衡量是否具備所需要的技術(shù),包括系統(tǒng)開發(fā)人員數(shù)量和水平,硬件方面,軟件方面及其它應(yīng)用技術(shù)。④經(jīng)濟(jì)可行性分析經(jīng)濟(jì)可行性分析主要是對(duì)開發(fā)新系統(tǒng)所投入的資金與系統(tǒng)投入使用后所帶來的經(jīng)濟(jì)效益進(jìn)展比較,確認(rèn)新系統(tǒng)是否會(huì)給企業(yè)帶來一定的經(jīng)濟(jì)效益。⑤管理可行性分析:管理可行性分析主要是分析企業(yè)現(xiàn)行的管理體制和企業(yè)領(lǐng)導(dǎo)是否具有現(xiàn)代化的管理意識(shí)和管理水平。3.3技術(shù)可行性分析技術(shù)可行性分析主要包括四個(gè)方面:目前有關(guān)的技術(shù)能否支持所開發(fā)的新系統(tǒng);新系統(tǒng)開發(fā)人員的數(shù)量和水平,即人力資源;硬件和軟件資源。〔1〕技術(shù)支持:首先根據(jù)新系統(tǒng)的目標(biāo),考慮目前有關(guān)的技術(shù)能否支持所開發(fā)的新系統(tǒng)。這里討論的技術(shù)必須是已經(jīng)普遍使用的,而不是待研究的或正在研究的?!?〕硬件資源:開發(fā)管理信息系統(tǒng)所需的硬件資源包含以下兩個(gè)方面:系統(tǒng)開發(fā)人員在管理信息系統(tǒng)的開發(fā)過程中所需要的計(jì)算機(jī)設(shè)備及其有關(guān)的外部設(shè)備;管理信息系統(tǒng)開發(fā)成功投入使用后,使用單位所應(yīng)具備的計(jì)算機(jī)設(shè)備及其有關(guān)的外圍設(shè)備。對(duì)硬件資源進(jìn)展可行性分析時(shí)主要考慮計(jì)算機(jī)的主機(jī)內(nèi)存、類型、功能、聯(lián)網(wǎng)能力、安全保護(hù)措施以及輸入/輸出設(shè)備,外存儲(chǔ)器和聯(lián)網(wǎng)數(shù)據(jù)通信設(shè)備的配置、功能、效率等指標(biāo)是否符合系統(tǒng)方案設(shè)計(jì)要求,同時(shí)還要考慮計(jì)算機(jī)的性能/價(jià)格比。〔3〕軟件資源軟件資源的可行性分析主要考慮以下幾點(diǎn)是否滿足用戶的要求:①操作系統(tǒng)的選擇;②編譯系統(tǒng)的選擇;③數(shù)據(jù)庫管理系統(tǒng)的選擇;④高級(jí)編程語言的選擇;⑤漢字處理系統(tǒng)的選擇;⑥應(yīng)用軟件包的選擇。本系統(tǒng)在開發(fā)前,與中心的領(lǐng)導(dǎo)和有關(guān)的操作人員密切溝通,認(rèn)真聽取他們的意見,并吸收他們的積極觀點(diǎn),使本系統(tǒng)的開發(fā)在相當(dāng)大的程度上具有一定的先進(jìn)性和合理性。第四章系統(tǒng)分析4.1系統(tǒng)需求分析系統(tǒng)分析是開發(fā)管理信息系統(tǒng)的關(guān)鍵性階段,是一個(gè)從不斷認(rèn)識(shí)和逐步細(xì)化的過程,是下一階段的工作根基,是為下一階段進(jìn)展物理方案設(shè)計(jì)、解決“若何做〞提供依據(jù),基關(guān)鍵性主要表達(dá)在“理解需求〞和“表達(dá)需求〞兩方面。通過對(duì)現(xiàn)行系統(tǒng)的詳細(xì)調(diào)研,主要是從系統(tǒng)的角度理解用戶的需要,確定新系統(tǒng)的綜合要求,并提出這些需求的實(shí)現(xiàn)條件以及需求應(yīng)到達(dá)的標(biāo)準(zhǔn),也就是確定新系統(tǒng)要做什么,做到什么程度。這些需求包括:〔1〕功能需求。確定新系統(tǒng)應(yīng)做什么,這是最主要的需求。〔2〕性能需求。給出所開發(fā)的新系統(tǒng)的技術(shù)性能指標(biāo),包括存儲(chǔ)容量限制、運(yùn)行時(shí)間限制、安全保密性等。〔3〕環(huán)境需求。這是對(duì)系統(tǒng)運(yùn)行以及所處環(huán)境的要求。例如,在硬件方面采用什么機(jī)型、有什么硬件設(shè)備等;在軟件方面,采用什么支持系統(tǒng)運(yùn)行的系統(tǒng)軟件〔指操作系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)〕?!?〕未來需求。這類要求是指目前不屬于系統(tǒng)開發(fā)的范圍,但將來隨著外界環(huán)境的變化以及系統(tǒng)的開展可能會(huì)提出的要求。了解這類要求的目的是在開發(fā)過程中,可對(duì)系統(tǒng)將來可能的擴(kuò)展與修改做準(zhǔn)備。一旦需要時(shí),就比較容易進(jìn)展補(bǔ)充和修改了。4.2數(shù)據(jù)流程圖數(shù)據(jù)流程圖是描述系統(tǒng)邏輯模型的主要工具,通過幾個(gè)特定的符號(hào),可以綜合地反映出信息在系統(tǒng)中的使用、加工處理、傳遞、存儲(chǔ)的整體情況。數(shù)據(jù)流程圖是系統(tǒng)構(gòu)造化分析行之有效的工具,它抽象地描述了系統(tǒng)數(shù)據(jù)處理的情況,但卻無法表達(dá)各個(gè)處理的詳細(xì)內(nèi)容,因此還要對(duì)數(shù)據(jù)流程圖中出現(xiàn)的數(shù)據(jù)流和處理等做進(jìn)一步的補(bǔ)充說明,這就是數(shù)據(jù)字典和變換邏輯說明。數(shù)據(jù)流圖人事主管人事主管員工基本信息員工基本信息工資管理假條信息檔案管理管理員工資管理假條信息檔案管理管理員會(huì)計(jì)員會(huì)計(jì)員圖4。1系統(tǒng)數(shù)據(jù)流圖第五章系統(tǒng)總體設(shè)計(jì)5.1.功能描述:該信息管理系統(tǒng)可以在Windows2000Server平臺(tái)上運(yùn)行,開發(fā)工具采用VisualBasic語言開發(fā)。其工作流程為:用戶登錄通過權(quán)限判斷,普通用戶不能瀏覽、閱讀和查詢信息,指定用戶可以操作,可以進(jìn)展信息錄入、修改和刪除的操作。系統(tǒng)的主要功能特點(diǎn)有:(1)系統(tǒng)登錄表單該表單的功能是在系統(tǒng)被訪問之前,要對(duì)進(jìn)入系統(tǒng)的用戶進(jìn)展安全性檢查,防止非法用戶進(jìn)展系統(tǒng)破壞數(shù)據(jù)及威脅系統(tǒng)安全,防止不必要的損失。只有合法的用戶在輸入正確的密碼前方可進(jìn)入系統(tǒng)。(2)主界面在該界面窗口中,共有文件、數(shù)據(jù)、關(guān)于等所有系統(tǒng)功能,用戶可以操作菜單的方式快捷地使用系統(tǒng)。(3)更改密碼:使用本表單可以方便地修改用戶的密碼,以防密碼泄露后對(duì)數(shù)據(jù)的安全性造成威脅。5.2系統(tǒng)操作流程圖:錯(cuò)誤信息系統(tǒng)主界面錯(cuò)誤信息系統(tǒng)主界面系統(tǒng)登錄界面系統(tǒng)登錄界面系統(tǒng)管理系統(tǒng)管理輸入操作員及密碼輸入操作員及密碼數(shù)據(jù)庫檢查密碼錯(cuò)誤數(shù)據(jù)庫檢查密碼錯(cuò)誤密碼正確密碼正確功能界面功能界面功能處理功能處理圖5-1系統(tǒng)操作流程圖第六章系統(tǒng)詳細(xì)設(shè)計(jì)6.1數(shù)據(jù)庫設(shè)計(jì)〔1〕職工信息數(shù)據(jù)表:字段字段名類型寬度小數(shù)位索引排序Nulls1職工編號(hào)數(shù)值型11否2姓名字符型20否3身份證號(hào)字符型18否4民族字符型10否5性別字符型4否6出生日期字符型20否7畢業(yè)學(xué)校字符型20否8學(xué)歷字符型20否9部門字符型20否10職稱字符型20否11上司字符型20否12字符型20否13EMAIL字符型20否14EDIT數(shù)值型11否15EDITTIME日期型8否16備注備注型50否〔2〕請(qǐng)假信息數(shù)據(jù)表:字段字段名類型寬度小數(shù)位索引排序Nulls1假條編號(hào)字符型6否2職工編號(hào)數(shù)值型11否3起始日期字符型20否4中止日期字符型20否5天數(shù)數(shù)值型6否6原由字符型50否7狀態(tài)字符型20否8批準(zhǔn)人字符型20否9EDIT數(shù)值型11否10EDITTIME日期型8否11備注備注型10否〔3〕員工工資數(shù)據(jù)表:字段字段名類型寬度小數(shù)位索引排序Nulls1工資編號(hào)字符型50否2職工編號(hào)數(shù)值型11否3年份數(shù)值型6否4月份數(shù)值型6否5基本工資數(shù)值型11否6加班工資數(shù)值型11否7交通補(bǔ)助數(shù)值型11否8總工資數(shù)值型11否9考勤扣除數(shù)值型11否10保險(xiǎn)扣除數(shù)值型11否11扣稅數(shù)值型11否12總扣除數(shù)值型11否13實(shí)際工資數(shù)值型11否14EDIT數(shù)值型11否15EDITTIME日期型8否16備注備注型10否6.2系統(tǒng)主要界面設(shè)計(jì)因?yàn)槿耸沦Y料管理牽涉到個(gè)人隱私及公司密秘等多方面因素,所以一定要保密,并有專人管理,使用前身份確認(rèn)就顯得非常重要,故在運(yùn)行前要進(jìn)展管理權(quán)限確認(rèn).以防止他人無意或惡意篡改.(圖6-1)圖6-1主界面圖其中登記表的界面如下:圖6-2登記表的界面密碼的修改:圖6-3密碼的修改界面登陸成功界面:圖6-4登陸成功界面查詢界面:圖6-5查詢界面第七章系統(tǒng)測(cè)試為了確保本系統(tǒng)能夠正常運(yùn)行,需要在發(fā)布之后做一次較全面的測(cè)試。現(xiàn)將具體操作及過程舉例說明如下:7.1測(cè)試舉例〔1〕.測(cè)試用戶登陸是否成功:翻開人事管理系統(tǒng),在“用戶名〞里填入root,“密碼〞框里我們填入root作為用戶登錄密碼。填寫完成點(diǎn)擊“確定〞按鈕,將會(huì)出現(xiàn)操作程序頁面,即該用戶已經(jīng)登陸成功了。再運(yùn)行程序,會(huì)有提示頁面出現(xiàn):程序已經(jīng)運(yùn)行,不能再次裝載!〔2〕.測(cè)試其他用戶是否能夠登錄:翻開人事管理系統(tǒng)登錄頁面,輸入任意密碼,點(diǎn)擊“登錄〞按鈕。將出現(xiàn)密碼出錯(cuò)提示頁面。然后點(diǎn)“確定〞返回人事管理系統(tǒng)登錄頁面?!?〕.測(cè)試編輯功能是否成功:編輯功能:在登錄成功之后,即可進(jìn)入相應(yīng)的管理頁面,點(diǎn)擊“編輯〞,即出現(xiàn)編輯頁面,即可以修改和刪除員工的個(gè)人信息資料。最后保存。〔4〕.測(cè)試查詢功能是否成功:查詢功能:在登錄成功之后,點(diǎn)擊“查詢〞,在彈出的文本框,在里面輸入想要查找的資料,點(diǎn)擊“查詢〞按鈕,成功即可出現(xiàn)結(jié)果頁面,頁面內(nèi)顯示查詢出來的員工資料內(nèi)容,表示測(cè)試成功?!?〕.用戶登出系統(tǒng)的測(cè)試:在管理操作已全部完成,需要退出程序的時(shí)候,在系統(tǒng)頁面“系統(tǒng)設(shè)置〞下拉菜單的有一個(gè)“退出〞的選項(xiàng),點(diǎn)擊之后便可退出。也可以點(diǎn)“關(guān)閉〞退出?!?〕.測(cè)試密碼更改:在以超級(jí)用戶登錄的情況下,在程序中打密碼設(shè)置,彈出文本框,顯示用戶列表。可以添加新的普通用戶,也可以刪除和制止普通用戶使用程序。在以普通用戶登陸情況下,翻開密碼設(shè)置選項(xiàng),系統(tǒng)會(huì)提示該用戶為普通用戶,只可以修改自己的密碼。經(jīng)過以上各項(xiàng)的測(cè)試,證明本系統(tǒng)完全可以正常運(yùn)行,至此測(cè)試成功!7.2測(cè)試工程在MIS開發(fā)過程中采用了多種措施保證軟件質(zhì)量,但是實(shí)際開發(fā)過程中還是不可防止地會(huì)產(chǎn)生過失,系統(tǒng)中通??赡茈[藏著錯(cuò)誤和缺陷,不經(jīng)周密測(cè)試的系統(tǒng)投入運(yùn)行,將會(huì)造成難以想象的后果,因此系統(tǒng)測(cè)試是MIS開發(fā)過程中為保證軟件質(zhì)量必須進(jìn)展的工作。大量統(tǒng)計(jì)資料說明,系統(tǒng)測(cè)試的工作量往往占MIS開發(fā)總工作量的40%以上。因此,我們必須重視測(cè)試工作。由于程序中隱藏的缺陷只在特定的環(huán)境下才有可靠顯露,系統(tǒng)缺陷通常是由于對(duì)某些特定情況考慮不周造成的。因此測(cè)試不是為了說明程序正確;成功的測(cè)試也不是沒有發(fā)現(xiàn)錯(cuò)誤的測(cè)試。有意義的軟件測(cè)試應(yīng)該是從“破壞〞軟件系統(tǒng)的角度出發(fā),精心設(shè)計(jì)最有可以暴露程序系統(tǒng)缺陷的測(cè)試方案。因此軟件測(cè)試的目標(biāo)應(yīng)該是以盡可能少的代價(jià)和時(shí)間找出軟件系統(tǒng)中潛在的錯(cuò)誤和缺陷。從產(chǎn)品角度看,測(cè)試方案中的測(cè)試工程包括軟件構(gòu)造中的分系統(tǒng)層、子系統(tǒng)層、功能模塊層、程序模塊層中的各類模塊,從測(cè)試本身看,分為單元測(cè)試,組合測(cè)試,確認(rèn)測(cè)試等。測(cè)試對(duì)象是隨不同階段而異的,最基本、最初的測(cè)試是單元測(cè)試,后面的組合測(cè)試、確認(rèn)測(cè)試都是以被測(cè)過的模塊作為測(cè)試對(duì)象的。(1)單元測(cè)試:?jiǎn)卧獪y(cè)試也稱模塊測(cè)試或程序測(cè)試,單元測(cè)試是對(duì)每個(gè)模塊單獨(dú)進(jìn)展的,驗(yàn)證模塊接口與設(shè)計(jì)說明書是否一致,對(duì)模塊的所有主要處理路徑進(jìn)展測(cè)試且與預(yù)期的構(gòu)造進(jìn)展對(duì)照,還要對(duì)所有錯(cuò)誤處理路徑進(jìn)展測(cè)試。對(duì)源碼進(jìn)展審查,對(duì)照設(shè)計(jì)說明書,表態(tài)地檢查源程序是否符合功能的邏輯要求,是進(jìn)展單元測(cè)試前的重要工作工。單元測(cè)試一般是由程序員完成,也稱程序調(diào)試。(2)組合測(cè)試組合測(cè)試也稱集成測(cè)試或子系統(tǒng)測(cè)試,通常采用自頂向下測(cè)試和自底向上測(cè)試兩種測(cè)試方法。組合測(cè)試的對(duì)象是指已經(jīng)通過單元測(cè)試的模塊,不是對(duì)零散模塊進(jìn)展單個(gè)測(cè)試,而是用系統(tǒng)化的方法裝配和測(cè)試軟件系統(tǒng),是一個(gè)嚴(yán)格的過程,必須認(rèn)真地進(jìn)展,其方案的產(chǎn)生和單元模塊測(cè)試的完成日期要協(xié)調(diào)起來,這種測(cè)試應(yīng)在系統(tǒng)目標(biāo)機(jī)上進(jìn)展,造成系統(tǒng)應(yīng)用的環(huán)境條件,除了開發(fā)局部工程負(fù)責(zé)人參加以外,還應(yīng)該有相應(yīng)系統(tǒng)的用戶參加,給評(píng)審員進(jìn)展演示。(3)確認(rèn)測(cè)試確認(rèn)測(cè)試是對(duì)通過組合測(cè)試的軟件進(jìn)展的,這些軟件已經(jīng)存于系統(tǒng)目標(biāo)設(shè)備的介質(zhì)上,確認(rèn)測(cè)試的目的是說明軟件是可以工作的,并且符合“軟件需求說明書〞中規(guī)定的全部功能和性能要求。確認(rèn)測(cè)試是按照這些要求定出的“確認(rèn)測(cè)試方案〞進(jìn)展的。測(cè)試工作是由一個(gè)獨(dú)立的組織進(jìn)展,而且測(cè)試要從用戶的角度出發(fā)。(4)系統(tǒng)測(cè)試系統(tǒng)測(cè)試是對(duì)整體性能的測(cè)試,主要解決各子系統(tǒng)之間的數(shù)據(jù)通信和數(shù)據(jù)共享問題以及檢測(cè)系統(tǒng)是否到達(dá)用戶的實(shí)際要求,系統(tǒng)測(cè)試的依據(jù)是系統(tǒng)分析報(bào)告。系統(tǒng)測(cè)試應(yīng)在系統(tǒng)的整個(gè)范圍內(nèi)進(jìn)展,這種測(cè)試不只對(duì)軟件進(jìn)展,而是對(duì)構(gòu)成系統(tǒng)的硬、軟件一起進(jìn)展。系統(tǒng)測(cè)試與建構(gòu)同時(shí)進(jìn)展或略慢。系統(tǒng)測(cè)試需要確認(rèn)從頭到尾的功能正常才算完成,應(yīng)當(dāng)盡量防止系統(tǒng)測(cè)試延到工程末尾進(jìn)展。(5)用戶驗(yàn)收測(cè)試在系統(tǒng)測(cè)試完成后,進(jìn)展用戶的驗(yàn)收測(cè)試,它是用戶在實(shí)際應(yīng)用環(huán)境中所進(jìn)展的真實(shí)數(shù)據(jù)測(cè)試。在具體的測(cè)試中,一般應(yīng)遵循以下原則:由程序設(shè)計(jì)者之外的人進(jìn)展測(cè)試;測(cè)試用例應(yīng)由兩局部組成:輸入數(shù)據(jù)和預(yù)期輸出結(jié)果;應(yīng)選用不合理的輸入數(shù)據(jù)與非法輸入測(cè)試;不僅要檢驗(yàn)程序是否實(shí)現(xiàn)預(yù)期功能,還應(yīng)檢查程序是否做了不應(yīng)該做的工作;集中測(cè)試容易出錯(cuò)的程序模塊;對(duì)程序修改以后,必須重新進(jìn)展測(cè)試。7.3測(cè)試方法一般來說,對(duì)程序測(cè)試有兩種測(cè)試方法:如果已經(jīng)知道了軟件系統(tǒng)應(yīng)具有的功能,可通過測(cè)試來對(duì)每個(gè)功能是否都能正常使用;如果知道程序的內(nèi)部工作過程,可以通過測(cè)試來檢測(cè)程序內(nèi)部是否按照規(guī)格說明書的規(guī)定正常進(jìn)展。前一種方法稱為黑盒測(cè)試,后一種方法稱為白盒子測(cè)試。黑盒測(cè)試又稱為功能測(cè)試,白盒子測(cè)試又稱為構(gòu)造測(cè)試。經(jīng)過幾個(gè)月的設(shè)計(jì),因?yàn)闀r(shí)間和任務(wù)的性質(zhì)的關(guān)系,沒有完全按照上述的測(cè)試方法進(jìn)展系統(tǒng)的測(cè)試,但經(jīng)過一些簡(jiǎn)單的步驟的測(cè)試,證明本系統(tǒng)具有相當(dāng)程序的穩(wěn)定性。附錄源程序清單OptionExplicitDimBupdataAsBooleanDimiAsIntegerPrivateSubCmbdegree_Click()IfCmbdegree.Text="定制"ThenFrmTable.ShowCmbdegree.ListIndex=0EndIfEndSubPrivateSubCmbdepart_Click()IfCmbdepart.Text="定制"ThenFrmTable.ShowCmbdepart.ListIndex=0EndIfEndSubPrivateSubCmdAddNew_Click()IfCmdAddNew.Caption="添加"ThenCmdAddNew.Caption="確認(rèn)"CmdDel.Enabled=FalseCmdOK.Enabled=FalseDataA.ReadOnly=FalseFori=1To12IfTxt(i).Text=""ThenTxt(i).Text=0'DataA.Recordset.Fields(i)=0NextiDataA.Recordset.AddNewTxt(0).Locked=FalseIfFrmMain.cutable="employee"ThenDataA.Recordset.Fields(13)=frmLogin.EmploIDDataA.Recordset.Fields(14)=NowIfOpsex(0)ThenDataA.Recordset.Fields(4)="男"ElseDataA.Recordset.Fields(4)="女"EndIfDataA.Recordset.Fields(7)=Cmbdegree.TextDataA.Recordset.Fields(8)=Cmbdepart.TextElseIfFrmMain.cutable="leave"ThenDataA.Recordset.Fields(8)=frmLogin.EmploIDDataA.Recordset.Fields(9)=NowElseDataA.Recordset.Fields(13)=frmLogin.EmploIDDataA.Recordset.Fields(14)=NowEndIfTxt(0).SetFocusElse'OKIfTxt(0).Text=""ThenMsgBox"不可以為空"Txt(0).SetFocusExitSubEndIfFori=1To12IfTxt(i).Text=""ThenTxt(i).Text=0'DataA.Recordset.Fields(i)=0NextiIfFrmMain.cutable="employee"ThenDataB.Recordset.FindFirst"職工編號(hào)="+Txt(0).TextIfNotDataB.Recordset.NoMatchThenMsgBox"職員編號(hào)重復(fù)"Txt(0).Text=""Txt(0).SetFocusExitSubEndIfElseIfFrmMain.cutable="leave"ThenDataB.Recordset.FindFirst"假條編號(hào)="+Txt(0).TextIfNotDataB.Recordset.NoMatchThenMsgBox"假條編號(hào)重復(fù)"Txt(0).Text=""Txt(0).SetFocusExitSubEndIfElseFori=4To10IfNotIsNumeric(Txt(i).Text)ThenMsgBox"notanumber"Txt(i).SetFocusExitSubEndIfNextiDataB.Recordset.FindFirst"工資編號(hào)="+Txt(0).TextIfNotDataB.Recordset.NoMatchThenMsgBox"工資編號(hào)重復(fù)"Txt(0).Text=""Txt(0).SetFocusExitSubEndIfEndIfDataA.Recordset.UpdateDataA.Recordset.MoveLastFrmMain.DataA.RefreshFrmMain.DataB.RefreshDataB.RefreshCmdAddNew.Caption="添加"CmdDel.Enabled=TrueCmdOK.Enabled=TrueEndIfEndSubPrivateSubCmdCacel_Click()IfCmdAddNew.Caption="確認(rèn)"ThenDataA.Recordset.CancelUpdateEndIfFrmMain.Enabled=TrueFrmMain.SetFocusUnloadMeFrmMain.DataA.RefreshIfFrmMain.cutable="employee"ThenFrmMain.DBGA.Columns("性別").Button=TrueFrmMain.DBGA.Columns("學(xué)歷").Button=TrueFrmMain.DBGA.Columns("部門").Button=TrueEndIfEndSubPrivateSubCmdDel_Click()DataA.ReadOnly=FalseDataA.Recordset.DeleteDataA.Recordset.MoveNextIfDataA.Recordset.EOFThenDataA.Recordset.MoveLastEndIfFrmMain.DataA.RefreshEndSubPrivateSubcmdOK_Click()IfTxt(0).Text=""ThenMsgBox"不可以為空"Txt(0).SetFocusExitSubEndIfBupdata=FalseDataA.Recordset.EditIfFrmMain.cutable="leave"ThenDataA.Recordset.Fields(8)=frmLogin.EmploIDDataA.Recordset.Fields(9)=NowElseIfFrmMain.cutable="employee"ThenDataA.Recordset.Fields(13)=frmLogin.EmploIDDataA.Recordset.Fields(14)=NowIfOpsex(0)ThenDataA.Recordset.Fields(4)="男"ElseDataA.Recordset.Fields(4)="女"EndIfDataA.Recordset.Fields(7)=Cmbdegree.TextDataA.Recordset.Fields(8)=Cmbdepart.TextDataA.Recordset.Fields(13)=frmLogin.EmploIDDataA.Recordset.Fields(14)=NowElseFori=4To10IfNotIsNumeric(Txt(i).Text)ThenMsgBox"notanumber"Txt(i).SetFocusExitSubEndIfNextiDataA.Recordset.Fields(13)=frmLogin.EmploIDDataA.Recordset.Fields(14)=NowEndIfFori=1To12IfTxt(i).Text=""ThenTxt(i).Text=0'DataA.Recordset.Fields(i)=0NextiDataA.Recordset.UpdateFrmMain.DataA.RefreshDataB.RefreshEndSubPrivateSubDataA_Validate(ActionAsInteger,SaveAsInteger)IfAction=11AndBupdataThenSave=0EndIfEndSubPrivateSubLab_Click(IndexAsInteger)EndSubPrivateSubTxt_KeyPress(IndexAsInteger,KeyAsciiAsInteger)If(KeyAscii<48OrKeyAscii>57)AndKeyAscii<>vbKeyBackAndIndex=0ThenKeyAscii=0ExitSubEndIfIfFrmMain.cutable="leave"AndIndex=1ThenIf(KeyAscii<48OrKeyAscii>57)AndKeyAscii<>vbKeyBackThenKeyAscii=0ExitSubEndIfEndIfIfFrmMain.cutable="salary"ThenIfIndex<=3ThenIf(KeyAscii<48OrKeyAscii>57)AndKeyAscii<>vbKeyBackThenKeyAscii=0ExitSubEndIfEndIfIfIndex=13ThenExitSubIf(KeyAscii<48OrKeyAscii>57)AndKeyAscii<>vbKeyBackAndKeyAscii<>46ThenKeyAscii=0ExitSubEndIfEndIfEndSubPrivateSubTxt_change(IndexAsInteger)IfBupdata=FalseThenBupdata=TrueIfFrmMain.cutable="salary"ThenIfTxt(Index).Text=""ThenExitSubIfIndex>=4AndIndex<=6ThenTxt(7).Text=Val(Txt(4).Text)+Val(Txt(5).Text)+Val(Txt(6).Text)Txt(12).Text=Val(Txt(7).Text)-Val(Txt(11).Text)EndIfIfIndex>=8AndIndex<=10ThenTxt(11).Text=Val(Txt(8).Text)+Val(Txt(9).Text)+Val(Txt(10).Text)Txt(12).Text=Val(Txt(7).Text)-Val(Txt(11).Text)EndIfEndIfEndSubPrivateSubForm_Load()DataA.DatabaseName=App.Path+"\sm.mdb"DataB.DatabaseName=App.Path+"\sm.mdb"DataA.Caption=FrmMain.cutableDataA.RecordSource="select*from"+FrmMain.cutableDataB.RecordSource="select*from"+FrmMain.cutableDataA.RefreshTxt(0).Locked=True'IfFrmMain.DBGA.Row=0ThenExitSubIfFrmMain.cutable="employee"Then'employeeFori=0To12Lab(i).Caption=DataA.Recordset.Fields(i).NameNextiTxt(0).DataField=DataA.Recordset.Fields(0).NameTxt(1).DataField=DataA.Recordset.Fields(1).NameTxt(2).DataField=DataA.Recordset.Fields(2).NameTxt(3).DataField=DataA.Recordset.Fields(3).NameTxt(4).Visible=FalseTxt(5).DataField=DataA.Recordset.Fields(5).NameTxt(6).DataField=DataA.Recordset.Fields(6).NameTxt(7).Visible=FalseTxt(8).Visible=FalseTxt(9).DataField=DataA.Recordset.Fields(9).NameTxt(10).DataField=DataA.Recordset.Fields(10).NameTxt(11).DataField=DataA.Recordset.Fields(11).NameTxt(12).DataField=DataA.Recordset.Fields(12).NameTxt(13).DataField=DataA.Recordset.Fields(15).NameIfFrmMain.cuAp>-1ThenDataA.Recordset.Move(FrmMain.cuAp)ElseDataA.Recordset.MoveFirstEndIfIfDataA.Recordset.Fields(4)="男"ThenOpsex(0).Value=TrueElseOpsex(1).Value=TrueEndIf'設(shè)置lsdegree的顯示項(xiàng)Fori=0ToFrmMain.LsDegree.ListCount-2Cmbdegree.AddItemFrmMain.LsDegree.List(i)IfFrmMain.LsDegree.List(i)=DataA.Recordset.Fields(7)ThenCmbdegree.ListIndex=iEndIfNextiIfCmbdegree.ListIndex=-1ThenCmbdegree.AddItemDataA.Recordset.Fields(7)Cmbdegree.ListIndex=Cmbdegree.ListCount-1EndIfCmbdegree.AddItem"定制"'設(shè)置lsdepart的顯示項(xiàng)Fori=0ToFrmMain.LsDepart.ListCount-2Cmbdepart.AddItemFrmMain.LsDepart.List(i)IfFrmMain.LsDepart.List(i)=DataA.Recordset.Fields(8)ThenCmbdepart.ListIndex=iEndIfNextiIfCmbdepart.ListIndex=-1ThenCmbdepart.AddItemDataA.Recordset.Fields(8)Cmbdepart.ListIndex=Cmbdepart.ListCount-1EndIfCmbdepart.AddItem"定制"'設(shè)置完畢ElseIfFrmMain.cutable="leave"Then'leaveTxt(7).Visible=TrueCmbdegree.Visible=FalseCmbdepart.Visible=FalseFrame1.Visible=FalseFori=8To12Lab(i).Visible=FalseTxt(i).Visible=FalseNextiFori=0To7Lab(i).Caption=DataA.Recordset.Fields(i).NameTxt(i).DataField=DataA.Recordset.Fields(i).NameNextiTxt(13).DataField=DataA.Recordset.Fields(10).NameIfFrmMain.cuAp>-1ThenDataA.Recordset.Move(FrmMain.cuAp)ElseDataA.Recordset.MoveFirstEndIfElse'salaryFrame1.Visible=FalseCmbdegree.Visible=FalseCmbdepart.Visible=FalseFori=0To12Lab(i).Caption=DataA.Recordset.Fields(i).NameTxt(i).DataField=DataA.Recordset.Fields(i).NameNextiTxt(13).DataField=DataA.Recordset.Fields(15).NameTxt(7).Locked=TrueTxt(11).Locked=TrueTxt(12).Locked=TrueIfFrmMain.cuAp>-1ThenDataA.Recordset.Move(FrmMain.cuAp)ElseDataA.Recordset.MoveFirstEndIfEndIfEndSubPrivateSubForm_Unload(CancelAsInteger)FrmMain.Enabled=TrueFrmMain.SetFocusUnloadMeFrmMain.DataB.RefreshEndSubOptionExplicitConstMxUser=100PublicEmploIDAsIntegerPublicCurUserAsStringPublicCurIdAsStringPublicCurPswAsStringDimuser(MxUser),pws(MxUser),state(MxUser),Emplo(MxUser)AsStringPrivateSubForm_Load()DimiAsIntegerIfApp.PrevInstanceThenMsgBox("程序已經(jīng)運(yùn)行,不能再次裝載。"),vbExclamationUnloadMeEndIf'本段代碼用于判定本程序是否已經(jīng)裝載于內(nèi)存中,以防止程序的多重啟動(dòng)i=0OpenApp.Path+"\user.ini"ForInputAs#1DoWhileNotEOF(1)Input#1,user(i),pws(i),state(i),Emplo(i)Ifstate(i)="A"ThenCombo1.AddItemuser(i)EndIfi=i+1LoopClose#1Combo1.ListIndex=1'在窗口裝載階段讀取用戶設(shè)置文件獲取用戶信息并裝載于用戶列表框中EndSubPrivateSubCmdCancel_Click()UnloadMeEndEndSubPrivateSubcmdOK_Click()IftxtPassword=pws(Combo1.ListIndex)ThenCurId=Combo1.ListIndexEmploID=Emplo(CurId)CurUser=user(CurId)CurPsw=pws(CurId)Me.Hide'LoadFrmMainFrmMain.ShowElseMsgBox"InvalidPassword,tryagain!",,"Login"txtPassword.SetFocusSendKeys"{Home}+{End}"EndIfEndSubPrivateSubForm_Unload(CancelAsInteger)UnloadMeEndEndSubOptionExplicitPubliccuTabChAsBooleanPubliccutableAsStringPubliccuApAsInteger'當(dāng)前指針位置DimiAsIntegerPublicPwinAsStringPublicSubshowemployee()DataA.RecordSource="select*fromemployee"DataA.RefreshDBGA.Columns("性別").Button=TrueDBGA.Columns("學(xué)歷").Button=TrueDBGA.Columns("部門").Button=TrueFori=0To2Mtab(i).Checked=FalseNextiMtab(0).Checked=Truecutable="employee"cuTabCh=TrueEndSubPublicSubshowleave()DataA.RecordSource="select*fromleave"DataA.RefreshFori=0To2Mtab(i).Checked=FalseNextiMtab(1).Checked=Truecutable="leave"cuTabCh=TrueEndSubPublicSubshowsalary()DataA.RecordSource="select*fromsalary"DataA.RefreshFori=0To2Mtab(i).Checked=FalseNextiMtab(2).Checked=Truecutable="salary"cuTabCh=TrueEndSubPrivateSubForm_Load()Dimfil,tbcount,iAsIntegerDimTbstr(50),Tbnam(50)AsStringDataA.DatabaseName=App.Path+"\sm.mdb"DataB.DatabaseName=App.Path+"\sm.mdb"DataB.RecordSource="select*fromemployee"CallshowemployeeIfDir(App.Path+"\table.ini")=""ThenLsDegree.AddItem"定制"LsDepart.AddItem"定制"Elsefil=FreeFile()OpenApp.Path+"\table.ini"ForInputAs#filDoWhileNotEOF(fil)Input#fil,Tbnam(i),Tbstr(i)i=i+1LoopClose#filtbcount=iFori=0TotbcountIfTbnam(i)="lsdegree"ThenLsDegree.AddItemTbstr(i)ElseIfTbnam(i)="lsdepart"ThenLsDepart.AddItemTbstr(i)EndIfNextiLsDegree.AddItem"定制"LsDepart.AddItem"定制"EndIfEndSubPrivateSubForm_Unload(CancelAsInteger)EndEndSubPrivateSubDBGA_ButtonClick(ByValColIndexAsInteger)DimCoAsColumnSetCo=DBGA.Columns(ColIndex)SelectCaseColIndexCase4Lssex.Left=DBGA.Left+Co.Left+Co.WidthLssex.Top=DBGA.Top+DBGA.RowTop(DBGA.Row)Lssex.Visible=TrueLssex.ZOrder0Lssex.SetFocusCase7'degreeLsDegree.Left=DBGA.Left+Co.Left+Co.WidthLsDegree.Top=DBGA.Top+DBGA.RowTop(DBGA.Row)LsDegree.Visible=TrueLsDegree.ZOrder0LsDegree.SetFocusCase8'departmentLsDepart.Left=DBGA.Left+Co.Left+Co.WidthLsDepart.Top=DBGA.Top+DBGA.RowTop(DBGA.Row)LsDepart.Visible=TrueLsDepart.ZOrder0LsDepart.SetFocusEndSelectEndSubPrivateSubDBGA_HeadClick(ByValColIndexAsInteger)DBGA.ClearSelColsEndSubPrivateSubDBGA_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=2ThenFrmMain.PopupMenuMpEndIfEndSubPrivateSubDBGA_RowColChange(LastRowAsVariant,ByValLastColAsInteger)cuAp=DataA.Recordset.AbsolutePositionIfcuAp>-1ThenDataB.Recordset.FindFirst"職工編號(hào)="+CStr(DataA.Recordset.Fields("職工編號(hào)"))IfDataB.Recordset.NoMatchThenLab.Caption="沒有此職員"ElseWithDataB.RecordsetLab.Caption="工號(hào):"+CStr(.Fields(0))+"姓名:"+CStr(.Fields(1))+"性別:"+CStr(.Fields(4))+"部門:"+CStr(.Fields(8))+"職位:"+CStr(.Fields(9))+":"+CStr(.Fields(11))EndWithEndIfEndIfEndSubPrivateSubLsDegree_Click()IfLsDegree.Text="定制"ThenFrmTable.ShowElseDataA.Recordset.EditDataA.Recordset.Fields(7)=LsDegree.TextDataA.Recordset.Fields(13)=CStr(frmLogin.CurId)DataA.Recordset.Fields(14)=CStr(Now)DataA.Recordset.UpdateDataB.RefreshEndIfEndSubPrivateSubLsDepart_Click()IfLsDepart.Text="定制"ThenFrmTable.ShowElseDataA.Recordset.EditDataA.Recordset.Fields(8)=LsDepart.TextDataA.Recordset.Fields(13)=CStr(frmLogin.CurId)DataA.Recordset.Fields(14)=CStr(Now)DataA.Recordset.UpdateDataB.RefreshEndIfEndSubPrivateSubLssex_Click()DataA.Recordset.EditDataA.Recordset.Fields(4)=Lssex.TextDataA.Recordset.Fields(13)=CStr(frmLogin.CurId)DataA.Recordset.Fields(14)=CStr(Now)DataA.Records

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論