前言:本站為你精心整理了畢業員工信息管理范文,希望能為你的創作提供參考價值,我們的客服老師可以幫助你提供個性化的參考范文,歡迎咨詢。
摘要
本文通過用VB6.0編寫員工信息管理系統,利用軟件工程原理,采用面向對象的編程方法,其開發主要包括后臺數據庫的建立和維護以及前端應用程序的開發兩個方面,實現了員工信息管理的自動化和信息化.
本文還簡單介紹了VB6.0軟件的界面及操作方法。簡要介紹了窗體的制作過程,程序的編寫,添加,最后的編譯過程。并且敘述了作者在軟件開發過程中的心得體會。
關鍵詞:員工信息管理數據庫統計
目錄
第一章引言3
第二章系統分析4
2.1開發背景4
2.2需求分析4
2.3概要5
2.4系統要求5
第三章開發方法8
3.1系統開發方法概述8
3.2結構化生命周期法簡介8
3.3快速原型法簡介9
3.4本系統開發方法的選擇10
第四章開發平臺和工具11
4.1開發平臺的選擇11
4.2開發工具的選擇11
4.2.1開發語言介紹11
第五章系統規劃和分析12
5.1系統的可行性分析12
5.2系統的詳細調查12
5.3系統邏輯模型的提出13
第六章系統設計13
6.1系統流程圖16
6.2數據庫設計16
6.3系統主界面設計.......…………………………………………….19
6.4登陸窗體設計.......……………………………………………….19
6.5各主要模塊設計.19
6.5.1基礎設置模塊設計.......................................................24
6.5.2員工管理模塊設計……………………………………….27
6.5.3請假管理模塊設計……………………………………….29
6.5.4系統幫助模塊設計……………………………….………31
第七章編譯生成應用程序.…………………………………………...37
設計小結………………………………………………………..39參考文獻………………………………………………………...40
第一章引言
本軟件使用MicrosoftBasic6.0進行編寫。數據庫技術的產生與發展源于對于數據的組織和管理。數據庫技術是數據管理的技術,它隨著數據管理任務的需要而產生于20世紀60年代中期。這是一門綜合性技術,涉及操作系統,數據結構,算法設計和程序設計等知識。數據庫技術的基本思想是對數據實行集中,統一,獨立的管理,用戶可以最大限度的共享數據資源。
數據庫系統實際上是一個應用系統,它是在計算機硬,軟件系統支持下,由用戶,數據庫管理系統,存儲在存儲設備上的數據和數據庫應用程序構成的數據處理系統。數據庫系統是由數據,數據庫管理系統,應用程序,用戶組成。
數據庫的特點:1.實現數據共享2.實現數據獨立3.減少了數據冗余度4.避免了數據不一致性5.加強了對數據的保護。
數據庫應用系統(DATABASEAPPLICATIONSYSTEMSDBAS)
1.管理信息系統
2.開放式信息服務系統
一個數據庫應用系統通常是由數據庫和應用程序兩部分組成,它們是在數據庫管理系統支持下設計和開發出來的。
第二章系統分析
2.1開發背景
隨著我國市場經濟的快速發展和信息化水平的不斷提高,如何利用先進的管理手段,提高企業員工信息管理的水平,是當今社會所面臨的一個課題。提高企業管理水平,必須全方位地提高企業管理意識。只有高標準、高質量的管理才能滿足企業的發展需求。面對信息時代的挑戰,利用高科技手段來提高企業員工信息管理無疑是一條行之有效的途徑。在某種意義上,信息與科技在企業管理與現代化建設中顯現出越來越重要的地位。員工管理方面的信息化與科學化,已成為現代化生活水平步入高臺階的重要標志。
2.2需求分析
利用計算機實現員工信息管理勢在必行。對于企業來說,利用計算機支持企業高效率完成員工信息管理的日常事務,是適應現代企業制度要求、推動企業勞動型管理走向科學化、規范化的必要條件;而員工信息管理是一項瑣碎、復雜而又十分細致的工作,員工信息錄入,員工信息管理,信息查詢,請假等管理,一般不允許出錯,如果實行手工操作,須手工填制大量的表格,這就會耗費工作人員大量的時間和精力,計算機進行這項工作的管理,不僅能夠保證各項信息準確無誤、快速輸出,同時計算機具有手工管理所無法比擬的優點.例如:檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等。這些優點能夠極大地提高企業管理的效率,也是企業的科學化、正規化管理,與世界接軌的重要條件。
2.3概要
VisualBasic是美國微軟公司的第一個編程工具和系統開發的第一個產品,VisualBasic以優良的性能、較強的系統開發功能、完美的視覺界面和簡單易學的特點,已經贏得了全世界廣大用戶的偏愛。VisualBasic的編程環境包含了快速有效的開發功能,尤其是數據窗口這一方便而簡潔操縱數據庫的智能化對象,使系統的開發更人性化,操作更簡便。
作為管理信息系統的開發,VisualBasic是一個非常理想選擇。VisualBasic是一種可視化的、面對對象和條用事件驅動方式的結構化高級程序設計,可用于開發Windows環境下的種類應用程序。它簡單易學、效率高,且功能強大,可以與Windows的專業開發工具SDK相媲美,而且程序開發人員不必具有C/C++編程基礎。在VisualBasic環境下,利用事件驅動的編程機制、新穎易用的可視化設計工具,使用Windows內部的應用程序接口(API)函數,以及動態鏈接庫(DLL)、動態數據交換(DDE)、對象的鏈接與嵌入(OLE)、開放式數據訪問(ODBC)等技術,可以高效、快速地開發出Windows環境下功能強大、圖形界面豐富的應用軟件系統。
2.4系統要求
一、硬件要求:
1486/DX66Mhz以上CPU
2內存16M以上(使用WindowsNT需要32M以上內存)
3硬盤容量1GB以上(典型安裝需要128MB硬盤空間,完全安裝須要147MB硬盤空間,外加Microsoft開發者文檔67MB硬盤空間)
4EGA以上分辨率的顯示器.
5一個CD-ROM驅動器
6鼠標或其它定點設備
二、軟件要求
1操作系統應使用MicrosoftWindows95及以上版本,或者使用MicrosoftWindowsNT3.51或者更高版本.
2安裝有IE4.0或以上版本的瀏覽器.
第三章系統開發方法
3.1系統開發方法概述
建立一個管理信息系統,是一項復雜的軟件工程的實施。近30多年來,軟件工程發展成為新科學,至今已經成為IT產業的重要支柱。一開始,人們往往使用手工作坊式的軟件開發方法,靠個人的力量編寫各種小型程序;但是隨著計算機硬件技術的飛速發展,計算機軟件在各個領域中的作用日益突出,那種多年來被人們沿用的手工作坊式的開發方法,已經在軟件產品的質量、成本及開發時間等方面無法滿足需求。
3.2結構化生命周期法簡介
結構化生命周期法是一種傳統的管理信息系統開發方法,其基本思想是把整個系統開發過程分成若干個階段,每個階段進行若干活動,每項活動應用一系列標準、規范、方法和技術,完成一個或多個任務,形成符合給定規范的產品。
采用結構化生命周期法開發管理信息系統時,應遵循的主要原則:
(一)用戶參與的原則
(二)“先邏輯后物理”的原則
(三)“自頂向下”的原則
(四)工作成果描述(主要指文檔)標準化的原則
其具體開發步驟可分為以下四步:
(一)系統規劃
(二)系統開發
1、系統分析
.系統初步調查
.系統可行性研究
.現行系統的詳細調查
.新系統邏輯方案的提出
2、系統設計
.系統總體結構設計
.系統總體功能設計
.系統總體物理結構設計
.系統詳細設計
.數據庫設計
.代碼設計
.輸入輸出設計
3、系統實施
.程序設計
.系統測試
(三)系統的運行及維護
(四)系統評價
3.3快速原型法簡介
快速原型法是80年展起來的,旨在縮短開發周期,提高開發效率和用戶對系統的滿意程度。其基本思想是在系統開發的初期,盡快構造出系統的原型,使用戶能及早地運行這個系統原型,通過使用它、熟悉它,受到啟發并取得經驗,然后對系統的目標和功能提出更精確、具體的要求,研制人員據此逐漸修改和完善原型,使它滿足用戶的需求,最后完成系統的開發。該方法大大提高了系統開發效率,彌補了結構化生命周期法開發時間長的缺陷。
通常采用原型法需以下四個階段:
(一)明確用戶的基本要求
(二)研制系統的原型
(三)使用、評價系統原型
(四)修改和完善原型
3.4本系統開發方法的選擇
基于以上開發方法的優劣和本系統的實際情況,本系統總體上采用結構化生命周期法進行系統規則、系統分析和系統設計,但在系統實施階段采用原型法。
第四章開發平臺和開發工具
開發平臺的選擇
考慮到本系統的性能要求,和現有的條件,我們選擇了WINDOWS2000中文版作為開發、測試和運行的平臺。因為WINDOWS操作系統是目前應用最廣的操作系統,它以全新的圖形界面,簡單快捷的操作方式,支持多媒體功能等特點而成為軟件發展的流行趨勢,選用它作為開發平臺,易于功能的擴展和軟件升級。
4.2開發工具的選擇
針對目前世界上流行的大量軟件和開發工具,經過認真分析其優缺點,結合員工信息管理系統的需要和目前的硬件環境,我們選用微軟WINDOWS平臺下的VisualBasic6.0(簡寫為VB6.0)作為軟件開發工具。
4.2.1開發語言介紹
現在,市場上可以選購的應用開發產品很多,流行的也有數十種。目前在我國市場上最為流行、使用最多、最為先進的可用作做作企業級開發工具的產品有:
Microsoft公司的VisualBasic
Microsoft公司的VisualC
Borland公司的Delphi
Powersoft公司的PowerBulider
Java等等
在目前市場上這些眾多的程序開發工具中,有些強調編程語言的彈性與執行效率;有些則偏重于可視化程序開發工具所帶來的便利性與效率的得高,各有各的優點和特色,也滿足了不同用戶的需求。然而,語言的彈性和工具的便利性是密不可分的,只有便利的工具,卻沒有彈性的語言作支持,許多特殊化的處理動作必需要耗費數倍的工夫來處理,使得原來所標榜的效率提高的優點失去了作用;相反,如果只強調編程語言的彈性,卻沒有便利的工具作配合,會使一些即使非常簡單的界面處理動作,也會嚴重地浪費程序設計師的寶貴時間。
作為數據庫系統的開發,VisualBasic是一個非常理想選擇。數據庫是MIS中的重要支持技術,在MIS開發過程中,如何選擇數據庫管理是一個重要的問題,目前,數據庫產品較多,每種產品都具有各自的特點和適用范圍,因此,在選擇數據庫時,應考慮數據庫應用的特點及適用范圍,本系統選用的數據庫語言VisualBasic語言,該開發工具具有很多長處:
VisualBasic是一種可視化的、面對對象和條用事件驅動方式的結構化高級程序設計,可用于開發Windows環境下的種類應用程序。它簡單易學、效率高,且功能強大,可以與Windows的專業開發工具SDK相媲美,而且程序開發人員不必具有C/C++編程基礎。在VisualBasic環境下,利用事件驅動的編程機制、新穎易用的可視化設計工具,使用Windows內部的應用程序接口(API)函數,以及動態鏈接庫(DLL)、動態數據交換(DDE)、對象的鏈接與嵌入(OLE)、開放式數據訪問(ODBC)等技術,可以高效、快速地開發出Windows環境下功能強大、圖形界面豐富的應用軟件系統。
總的來說,VisualBasic具有以下特點:
可視化編程:
用傳統程序設計語言設計程序時,都是通過編寫程序代碼來設計用戶界面,在設計過程中看不到界面的實際顯示效果,必須編譯后運行程序才能觀察。如果對界面的效果不滿意,還要回到程序中修改。有時候,這種編程-編譯-修改的操作可能要反復多次,大大影響了軟件開發效率。VisualBasic提供了可視化設計工具,把Windows界面設計的復雜性“封裝”起來,開發人員不必為界面設計而編寫大量程序代碼。只需要按設計要求的屏幕布局,用系統提供的工具,在屏幕上畫出各種“部件”,即圖形對象,并設置這些圖形對象的屬性。VisualBasic自動產生界面設計代碼,程序設計人員只需要編寫實現程序功能的那部分代碼,從而可以大大提高程序設計的效率。
面向對象的程序設計
4.0版以后的VisualBasic支持面向對象的程序設計,但它與一般的面向對象的程序設計語言(C++)不完全相同。在一般的面向對象程序設計語言中,對象由程序代碼和數據組成,是抽象的概念;而VisualBasic則是應用面向對象的程序設計方法(OOP),把程序和數據封裝起來作為一個對象,并為每個對象賦予應有的屬性,使對象成為實在的東西。在設計對象時,不必編寫建立和描述每個對象的程序代碼,而是用工具畫在界面上,VisualBasic自動生成對象的程序代碼并封裝起來。每個對象以圖形方式顯示在界面上,都是可視的。
結構化程序設計語言
VisualBasic是在BASIC語言的基礎上發展起來的,具有高級程序設計語言的語句結構,接近于自然語言和人類的邏輯思維方式。VisualBasic語句簡單易懂,其編輯器支持彩色代碼,可自動進行語法錯誤檢查,同時具有功能強大且使用靈活的調試器和編譯器。
VisualBasic是解釋型語言,在輸入代碼的同時,解釋系統將高級語言分解翻譯成計算機可以識別的機器指令,并判斷每個語句的語法錯誤。在設計VisualBasic程序的過程中,隨時可以運行程序,而在整個程序設計好之后,可以編譯生成可執行文件(.EXE),脫離VisualBasic環境,直接在Windows環境下運行。
事件驅動編程機制
VisualBasic通過事件來執行對象的操作。一個對象可能會產生多個事件,每個事件都可以通過一段程序來響應。例如,命令按鈕是一個對象,當用戶單擊該按鈕時,將產生一個“單擊”(CLICK)事件,而在產生該事件時將執行一段程序,用來實現指定的操作。
在用VisualBasic設計大型應用軟件時,不必建立具有明顯開始和結束的程序,而是編寫若干個微小的子程序,即過程。這些過程分別面向不同的對象,由用戶操作引發某個事件來驅動完成某種特定的功能,或者由事件驅動程序調用通用過程來執行指定的操作,這樣可以方便編程人員,提高效率。
訪問數據庫
VisualBasic具有強大的數據庫管理功能,利用數據控件和數據庫管理窗口,可以直接建立或處理MicrosoftAccess格式的數據庫,并提供了強大的數據存儲和檢索功能。同時,VisualBasic還能直接編輯和訪問其他外部數據庫,如dBASE,FoxPro,Paradox等,這些數據庫格式都可以用VisualBasic編輯和處理。
VisualBasic提供開放式數據連接,即ODBC功能,可通過直接訪問或建立連接的方式使用并操作后臺大型網絡數據庫,如SQLServer,Oracle等。在應用程序中,可以使用結構化查詢語言SQL數據標準,直接訪問服務器上的數據庫,并提供了簡單的面向對象的庫操作指令和多用戶數據庫訪問的加鎖機制和網絡數據庫的SQL的編程技術,為單機上運行的數據庫提供了SQL網絡接口,以便在分布式環境中快速而有效地實現客戶/服務器(client/server)方案。
動態數據交換(DDE)
利用動態數據交換(DynamicDataExchange)技術,可以把一種應用程序中的數據動態地鏈接到另一種應用程序中,使兩種完全不同的應用程序建立起一條動態數據鏈路。當原始數據變化時,可以自動更新鏈接的數據。VisualBasic提供了動態數據交換的編程技術,可以在應用程序中與其他Windows應用程序建立動態數據交換,在不同的應用程序之間進行通信。
對象的鏈接與嵌入(OLE)
對象的鏈接與嵌入(OLE)將每個應用程序都看作是一個對象(object),將不同的對象鏈接(link)起來,再嵌入(embed)某個應用程序中,從而可以得到具有聲音、影像、圖像、動畫、文字等各種信息的集合式的文件。OLE技術是Microsoft公司對象技術的戰略,它把多個應用程序合為一體,將每個應用程序看作是一個對象進行鏈接和嵌入,是一種應用程序一體化的技術。利用OLE技術,可以方便地建立復合式文檔(compounddocument),這種文檔由來自多個不同應用程序的對象組成,文檔中的每個對象都與原來的應用程序相聯系,并可執行與原來應用程序完全相同的操作。
動態鏈接庫(DLL)
VisualBasic是一種高級程序設計語言,不具備低級語言的功能,對訪問機器硬件的操作不太容易實現。但它可以通過動態鏈接庫技術將C/C++或匯編語言編寫的程序加入到VisualBasic應用程序中,可以像調用內部函數一樣調用其他語言編寫的函數。此外,通過動態鏈接庫,還可以調用Windows應用程序接口(API)函數,實現SDK所具有的功能
第五章系統的規劃與分析
5.1系統的可行性分析
經濟可行性分析
本系統開發簡單但要耗去一定的時間,所用的開發工具和軟件都差不多是免費的。而且,由于系統能夠在未來較長的一段時期內穩定地發揮作用,這對于企業的辦公自動化管理,節省企業的人力、物力資源等都有很大的幫助。由此可見在,開發此系統在經濟上是完全可行的。
2.1.2操作可行性分析
如今的計算機已經走進千家萬戶,硬件成本的下降,導致計算機購買成本的降低.我的這套系統是利用自己的計算機加微軟的集成開發環境MicrosoftVisualBasic6.0作為軟件的開發平臺,使開發出來的系統有友好的用戶界面、有良好的安全性設置、有詳細的操作說明書,這樣更使各類用戶很快地掌握系統的使用方法,操作友好因此在操作上是可行的.
2.1.3技術可行性分析
從目前IT業界比較流行的數據庫開發、管理軟件來看,對于比較簡單的中小型數據庫,VB和Windows2000Server以及MicrosoftACCESS2000的結合無疑是在實際應用中較為成功的一種解決方案。為用戶提供了業界軟件開發一直堅持的非常友好、操作簡單的用戶界面、完善強大的數據庫操作功能和簡潔明了的數據庫接口。所以技術實行起來相對會容易。
2.2現有系統的分析
有關員工管理系統的軟件市面上有不少,企業的員工也試用過一些,但總覺得不是很好用,不能完全滿足我們的要求,所以都放棄用這些軟件了,改為每次輸入數據后,用手工更改數據庫,隨著企業的發展,員工數據量越來越大,用手工操作就很麻煩了,所以,迫切希望有一套完全適合企業員工信息管理應用的軟件,以減輕公司員工的工作負擔。
另一方面由于這類軟件大多數是單機版的,現在也有不少是網絡版的,但大部份都是在本地網絡上運行的。而管理業務人員是在外面跑業務,想知道某員工的最新情況,都要打電話回公司問,這就造成很大的不便。因此系統的開發方向應當是面向網絡版的員工信息管理系統開發.這點在今后的學習中將不斷完善.
2.3系統的安全性分析
安全系統的需求定義:
1)系統提供用戶登錄功能(進行用戶身份驗證),并且用戶名和用戶編號是唯一的。用戶在登錄界面上填寫任意的用戶名和用戶密碼(中文或英文);系統提供登錄過程中的出錯處理機制和操作成功處理機制。
2)系統對非法用戶具有警告功能,例:一用戶表中不存在的用戶企圖登錄系統,系統應該要求用戶輸入合法用戶名和用戶密碼,并警告用戶的操作。
5.2系統的詳細調查
我選擇做《員工信息管理系統》的目標是:應用于某企業進行員工信息管理,使其擁有一個可操作的業務平臺,提高員工管理水平,挖掘潛在資源(如客戶資源,降低費用,節約成本等)。當然,如果稍加改動,也許還會適合其他行業使用。
具體為:
1、要用戶界面要友好,使用方便,容錯能力強,適應各種水平的用戶。
2、系統安全性要高,需要有密碼保護
3、能大量減少不必要的資源,善用現有資源來開發。
5.3系統邏輯模型的提出
為了實現管理信息系統的計算機化,僅僅用文字來描述信息的流動和存儲還遠遠不夠,還要進一步調查分析舍去物質流,抽象出信息流,繪制出數據流程圖,并對各種數據的屬性和各項處理功能進行詳細分析。系統分析的主要成果是系統的邏輯模型。本系統主要是以數據流圖、數據字典和E-R圖為主要描述工具來勾畫系統的概貌。
數據流圖(DFD,dataflowdiagram)是描述數據處理過程的有力工具。數據流圖從數據傳遞和加工的角度,以圖形的方式刻畫數據流從輸入到輸出的移動變換過程。
數據流圖的基本圖形元素有4種:
為了使數據流圖便于在計算機上輸入和輸出,免去畫曲線、斜線和圓的因難,現在將會用另一種比較合理及更清晰的方法進行分析。
5.3.1數據詞典
數據詞典(DataDictionary,DD)是結構化分析方法的另一個工具,它與數據流圖配合,能清楚地表達數據處理的要求。數據流圖給出系統組成及其內部各元素相互間的關系,但未說明數據元素的具體含意。數據詞典的任務是對于數據流圖中出現的所有命名元素,包括數據流、加工、數據文件,以及數據的源、匯點等,在數據詞典中作為一個詞條加以定義,使得每一個圖形元素的名字都有一個確切的解釋。
首先說明各符號的代表的意義:
⊿=被定義為;
⊿+與;(如,x=a+b,表示x由a和b組成)
⊿[...|...]或;(如,x=[a,b],x=[a|b],表示x由a或由b組成)
⊿{...}重復;(如,x={a},表示x由0個或多個a組成)
如列舉用戶登錄模塊的定義如下:
用戶登錄模塊
◎用戶登錄的定義格式:
用戶名=[{字母},{數字}]
用戶=管理員
密碼=[{字母},{數字}]
用戶驗證表=用戶名+密碼
另一種方式是以E-R圖來描述數據之間的關聯.
如系統用戶表的E-R圖如下:
系統用戶表E-R圖
第六章系統的設計
6.1系統流程圖
6.2數據庫的設計
通過對該系統的研究,將系統數據Employeemanage分為以下幾個表.DepartList,Edulevel,Employees,JobList,LeavelList,LeavelStatus,LeavelType,MarrageStatus,OperatorList,Plitics,TitalList等幾個表.各表的具體設計結構如下:
DepartList表
Edulevel表:
Employees表:
JobList表:
LeavelList表:
LeavelStatus表
LeavelType表:
MarrageStatus表:
OperatorList表
Plitics表
TitalList表
6.3系統主界面的設計
其系統主界面設計運行效果圖如下:
6.4登錄窗體的設計
其運行效果圖如下:
其具體的設計如下:
新建一個窗體.在窗體上放上二個label控件,一個TextBox控件,一個Combo1控件,二個CommandButton控件.其屬性的設置比較簡單,請參照上面的窗體中的文字顯視.我們具體分析一下確定按鈕的源碼,如下:
PrivateSubcmdOK_Click()
DimstrSqlAsString
strSql="Oper_ID="&"''''"&dcmbOperName.BoundText&"''''"
IfNot(rctOperatorList.EOFAndrctOperatorList.BOF)Then
rctOperatorList.Find(strSql)
IfNot(rctOperatorList.EOFOrrctOperatorList.BOF)Then
IfTrim(rctOperatorList.Fields("Oper_Pass"))=Trim(txtOperPass.Text)Then
OperaterName=Trim(dcmbOperName.Text)''''記錄當前用戶
frmMain.Show''''顯示主窗體
UnloadMe
ExitSub
Else
logintestCount=logintestCount+1
IflogintestCount>=3Then
MsgBox"您已經登錄三次都失敗,系統關閉",vbInformation+vbOKOnly,"非法用戶"
UnloadMe
ExitSub
Else
txtOperPass.SetFocus
EndIf
EndIf
Else
logintestCount=logintestCount+1
IflogintestCount>=3Then
MsgBox"您已經登錄三次都失敗,系統關閉",vbInformation+vbOKOnly,"非法用戶"
UnloadMe
ExitSub
Else
txtOperPass.SetFocus
EndIf
EndIf
Else
MsgBox"數據庫中沒有操作用戶數據",vbCritical+vbOKOnly,"系統錯誤"
UnloadMe
ExitSub
EndIf
EndSub
6.5各主要模塊的設計
基礎設置模塊的設計
1.基礎單元設置
其窗體的命令按鈕源碼實現如下:
增加按鈕的源碼:
PrivateSubtblTitel_ButtonClick(ByValButtonAsMSComctlLib.Button)
SelectCaseButton.Key
Case"add"
flexTitel.Row=flexTitel.Rows-1''''移到最后一行
flexTitel.Col=0''''稱到最后一行的第一列
flexTitel.RowSel=flexTitel.Rows-1''''選定一行
flexTitel.ColSel=flexTitel.Cols-1''''選定所有列
IfflexTitel.Rows>7Then
flexTitel.TopRow=flexTitel.Rows-7
EndIf
tblTitel.Buttons("delete").Enabled=False
tblTitel.Buttons("add").Enabled=False
rctTitelList.AddNew
flexTitel.Enabled=False
txtTitelId.SetFocus
保存按鈕的源碼如下:
PrivateSubIniGrid(ByValflexGridAsMSHFlexGrid)
flexGrid.Clear
WithflexGrid
.Cols=3
.Rows=2
.FixedCols=0
.FixedRows=1
.SelectionMode=flexSelectionByRow
.TextMatrix(0,1)="編號"
SelectCase.Name
Case"flexDepart"
.TextMatrix(0,2)="部門名稱"
Case"flexEdu"
.TextMatrix(0,2)="學歷名稱"
Case"flexJob"
.TextMatrix(0,2)="職務名稱"
Case"flexTitel"
.TextMatrix(0,2)="職稱名稱"
Case"flexPli"
.TextMatrix(0,2)="政治面貌"
Case"flexLt"
.TextMatrix(0,2)="請假類型"
Case"flexLs"
.TextMatrix(0,2)="銷假標志"
Case"flexMs"
.TextMatrix(0,2)="婚姻狀況"
EndSelect
.ScrollBars=flexScrollBarVertical
.GridLines=flexGridNone
.GridLinesFixed=flexGridNone
''''.AllowBigSelection=True
.AllowUserResizing=flexResizeNone.ColWidth(0)=1
.ColWidth(1)=1000
.ColWidth(2)=5410
.ColAlignment(1)=3
.ColAlignment(2)=0
.ColAlignmentFixed(1)=3
.FillStyle=flexFillSingle
.ScrollTrack=True
.Row=1
.Col=0
.RowSel=1
.ColSel=.Cols-1EndWith
EndSub
PrivateSubshowdata(ByValRecordsetAsADODB.Recordset,ByValflexGridAsMSHFlexGrid)
DimiAsInteger
DimjAsInteger
IfRecordset.RecordCount>0Then
Recordset.MoveFirst
WithflexGrid.Row=1
WhileNotRecordset.EOF
.Rows=.Rows+1
Fori=1ToRecordset.Fields.Count
.Col=i
If(.RowMod2)=0Then
.CellBackColor=&HF4D3A6
Else
.CellBackColor=vbWhite
EndIf
.Text=Recordset.Fields(i-1)Nexti
.Row=.Row+1
Recordset.MoveNext
Wend
''''.Col=1.Row=1
.Col=0
.RowSel=1
.ColSel=.Cols-1
''''.Row=1EndWith
EndIf
EndSub
PrivateSubIniGridstyle()
EndSub
PrivateSubGetRecordIdName(ByValflexAsMSHFlexGrid,lngRecordIdAsVariant,strRecordNameAsString)
Ifflex.Row<>0Then
Ifflex.TextMatrix(flex.Row,1)<>EmptyThen
lngRecordId=flex.TextMatrix(flex.Row,1)
strRecordName=flex.TextMatrix(flex.Row,2)
Else
lngRecordId=-1
strRecordName=Empty
EndIf
EndIf
EndSub
PrivateSubPicture1_Click()
EndSub
PrivateFunctionSavetoRecords(ByValrctSaveAsADODB.Recordset,ByValfirstField_valueAsVariant,ByValsecondField_valueAsString)AsBoolean
OnErrorGoToSave_Error
rctSave.Fields(0).Value=firstField_value
rctSave.Fields(1).Value=secondField_value
rctSave.Update
SavetoRecords=True
ExitFunction
Save_Error:
IfErr.Number<>0Then
rctSave.CancelUpdate
SavetoRecords=False
MsgBox"錯誤代碼:"&Err.Number&vbCrLf&_
"錯誤描述:"&Err.Description,vbCritical+vbOKOnly,"保存記錄失敗"
Else
SavetoRecords=True
EndIf
EndFunction
刪除按鈕的代碼描述:
PublicFunctionRecordDelete(ByValrstDeleteAsADODB.Recordset,ByValstrOptionAsLong)AsBoolean
If(rstDelete.EOF=True)Or(rstDelete.BOF=True)Then
RecordDelete=False
ExitFunction
EndIf
OnErrorGoToDelete_error
rstDelete.DeletestrOption
rstDelete.Update
RecordDelete=True
rstDelete.Update
Delete_error:
IfErr.Number<>0Then
rstDelete.CancelUpdate
RecordDelete=False
MsgBox"錯誤代碼:"&Err.Number&vbCrLf&_
"錯誤描述:"&Err.Description,vbCritical+vbOKOnly,"刪除錯誤"
Else
RecordDelete=True
rstDelete.Update
EndIf
EndFunction
操作員管理窗體運行如下:
其工具欄銨鈕的設計參考基礎單元設置
6.5.2員工管理模塊的設計
其員工管理窗體的運行界面如下:
增加記錄源碼分析如下:
PrivateSubtblEmployees_ButtonClick(ByValButtonAsMSComctlLib.Button)
SelectCaseButton.Key
Case"add"
''''rctEmployees.AddNew
IfflexEmployees.Rows>2Then
flexEmployees.Row=flexEmployees.Rows-1
flexEmployees.Col=0
flexEmployees.RowSel=flexEmployees.Rows-1
flexEmployees.ColSel=flexEmployees.Cols-1
IfflexEmployees.Rows>15Then
flexEmployees.TopRow=flexEmployees.Rows-15
EndIf
EndIf
frmEmpAdd.Caption="新增記錄"
frmEmpAdd.cmdPrevious.Visible=False
frmEmpAdd.cmdNext.Visible=False
frmEmpAdd.cmdAdd.Visible=False
frmEmpAdd.ShowvbModal
Case"delete"
IfstrEmpFirstFieldValue<>EmptyThen
IfMsgBox("您確定要刪除此條記錄嗎?",vbQuestion+vbYesNo,"刪除記錄")=vbYesThen
IffrmUnit.RecordDelete(rctEmployees,adAffectCurrent)=TrueThen
frmEmployees.flexEmployees.Redraw=False
CallIniGrid(flexEmployees)
Callshowdata(rctEmployees,flexEmployees)
frmEmployees.flexEmployees.Redraw=True
EndIf
EndIf
EndIf
Case"modify"
IfstrEmpFirstFieldValue<>EmptyThen
frmEmpAdd.Caption="修改記錄"
CallfrmEmpAdd.IniFromAdd(rctEmployees)
frmEmpAdd.cmdAdd.Visible=False
frmEmpAdd.cmdCancel.Visible=False
frmEmpAdd.ShowvbModal
EndIf
Case"exit"
UnloadMe
EndSelect
EndSub
打印按鈕的源碼如下:
PrivateSubtlbPrint_ButtonClick(ByValButtonAsMSComctlLib.Button)
IfExcuteSql(rctQueryEmployeesWithID,"select*fromQueryEmployeesWithID")=TrueThen
rctQueryEmployeesWithID.Filter=rctEmployees.Filter
SetdrptEmployees.DataSource=rctQueryEmployeesWithID
EndIf
IfrctQueryEmployeesWithID.RecordCount<=0Then
MsgBox"沒有合適的記錄",vbInformation+vbOKOnly,"打印信息"
ExitSub
EndIf
SelectCaseButton.Key
Case"Preview"
drptEmployees.ShowvbModal
Case"print"
OnErrorGoToError_on_print
drptEmployees.PrintReportFalse''''不顯示窗口
ExitSub
Error_on_print:
MsgBox"錯誤代碼:"&Err.Number&_
"錯誤描述:"&Err.Description,vbCritical+vbOKOnly,"打印錯誤"
EndSelect
EndSub
員工查詢窗運行如下:
其中查詢按鈕的源碼分析如下:
PrivateSubcmdOK_Click()
SelectCasestbQuery.Tab
Case0
IfcmbQueryItem.ListIndex<>3And_
cmbQueryItem.ListIndex<>4And_
cmbQueryItem.ListIndex<>5And_
cmbQueryItem.ListIndex<>6And_
cmbQueryItem.ListIndex<>7Then
IfTrim(txtQueryValue.Text)=EmptyThen
MsgBox"查詢內容不能為空",vbInformation+vbOKOnly,"查詢數據"
ExitSub
Else
FieldValue=Trim(txtQueryValue.Text)
IfcmbQueryItem.ListIndex=2Then
IfTrim(txtQueryValue.Text)="男"Then
FieldValue=1
Else
IfTrim(txtQueryValue.Text)="女"Then
FieldValue=0
Else
MsgBox"輸入錯誤!",vbCritical+vbOKOnly,"查詢數據"
ExitSub
EndIf
EndIf
strFilter=FieldName&"="&FieldValue
Else
IfchkLike.Value=1ThenstrFilter=FieldName&"like"&"''''"&"%"&FieldValue&"%"&"''''"
Else
strFilter=FieldName&"="&"''''"&FieldValue&"''''"
EndIf
EndIf
EndIf''''endifTrim(txtQueryValue.Text)=Empty
Else
FieldValue=dcmbItemValue.BoundText
IfcmbQueryItem.ListIndex=7Then
strFilter=FieldName&"="&FieldValue
Else
strFilter=FieldName&"="&"''''"&FieldValue&"''''"
EndIf
EndIf
Case1
Operater=Combo1.List(Combo1.ListIndex)
strFilter=FieldName&""&Operater&""&"''''"&dtpDateValue.Value&"''''"
EndSelect
''''MsgBoxstrFilter
rctEmployees.Filter=strFilter
frmEmployees.flexEmployees.Redraw=False
CallfrmEmployees.IniGrid(frmEmployees.flexEmployees)
CallfrmEmployees.showdata(rctEmployees,frmEmployees.flexEmployees)
frmEmployees.flexEmployees.Redraw=True
EndSub
6.5.3請假管理模塊的設計
其中請假管理中的修改記錄窗體運行如下:
其中保存按鈕的源碼如下:
PrivateSubcmdSave_Click()
DimEmp_IDAsVariant
DimEmp_NameAsVariant
DimEmp_SexAsVariant
DimDepart_IDAsVariant
DimJob_IDAsVariant
DimTitel_IDAsVariant
DimE_IDAsVariant
DimP_IDAsVariant
DimMS_IDAsVariant
DimEmp_ID_cordAsVariant
DimEmp_birthdayAsVariant
DimEmp_Attend_timeAsVariant
DimEmp_Join_timeAsVariant
DimEmp_mobile_numAsVariant
DimEmp_Tel_numAsVariant
DimEmp_AddressAsVariant
DimEmp_MemoAsVariant
DimEmp_name_charAsVariant
DimvtempdataAsString
IftxtEmpID.Text=EmptyThen
MsgBox"工作證號不能為空!",vbInformation,"數據不完整"
txtEmpID.SetFocus
ExitSub
Else
IftxtEmpName.Text=EmptyThen
MsgBox"員工姓名不能為空!",vbInformation,"數據不完整"
txtEmpName.SetFocus
ExitSub
Else
IfLeft(mskEmpBirth.Text,1)<>""Then
IfInStr(mskEmpBirth.Text,"")>0Then
MsgBox"日期格式填寫不完整!",vbInformation,"數據不完整"
mskEmpBirth.SetFocus
ExitSub
Else
Emp_birthday=CDate(mskEmpBirth.Text)
EndIf
EndIf
IfLeft(mskEmpAttendTime.Text,1)<>""Then
IfInStr(mskEmpAttendTime.Text,"")>0Then
MsgBox"日期格式填寫不完整!",vbInformation,"數據不完整"
mskEmpAttendTime.SetFocus
ExitSub
Else
IfLeft(mskEmpBirth.Text,1)<>""Then
IfCDate(mskEmpAttendTime.Text)<=CDate(mskEmpBirth.Text)Then
MsgBox"員工參加工作日期不能小于或等于員工的出生日期",vbInformation,"輸入日期錯誤"
mskEmpAttendTime.SetFocus
ExitSub
Else
Emp_Attend_time=CDate(mskEmpBirth.Text)
EndIf
EndIf
EndIf
EndIf
IfLeft(mskJOinTime.Text,1)<>""Then
IfInStr(mskJOinTime.Text,"")>0Then
MsgBox"日期格式填寫不完整!",vbInformation,"數據不完整"
mskJOinTime.SetFocus
ExitSub
Else
IfLeft(mskEmpBirth.Text,1)<>""Then
IfCDate(mskJOinTime.Text)<=CDate(mskEmpBirth.Text)Then
MsgBox"員工加入本單位日期不能小于或等于員工的出生日期",vbInformation,"輸入日期錯誤"
mskJOinTime.SetFocus
ExitSub
EndIf
EndIf
IfLeft(mskEmpAttendTime.Text,1)<>""Then
IfCDate(mskJOinTime.Text)<CDate(mskEmpAttendTime.Text)Then
MsgBox"員工加入本單位日期不能小于員工的參加工作日期",vbInformation,"輸入日期錯誤"
mskJOinTime.SetFocus
ExitSub
EndIf
EndIf
Emp_Join_time=CDate(mskJOinTime.Text)
EndIf
EndIf
EndIf
EndIf
IftxtEmpChr.Text=EmptyThen
MsgBox"員工字首拼音十分重要,不能為空!",vbInformation,"數據不完整"
txtEmpChr.SetFocus
ExitSub
EndIf
IftxtEmp_ID_cord.Text<>EmptyAndLen(txtEmp_ID_cord.Text)<15Then
MsgBox"身份證號必須是大于或等于15位,小于18位!",vbInformation,"無效的身份證號"
txtEmp_ID_cord.SetFocus
ExitSub
EndIf
Emp_ID=Trim(txtEmpID.Text)
Emp_Name=Trim(txtEmpName.Text)
Emp_Sex=cmbEmpSex.ListIndex
IfTrim(txtEmp_ID_cord.Text)<>EmptyThen
Emp_ID_cord=Trim(txtEmp_ID_cord.Text)
EndIf
IfTrim(txtEmpMobil.Text)<>EmptyThen
Emp_mobile_num=Trim(txtEmpMobil.Text)
EndIf
IfTrim(txtEmpTel.Text)<>EmptyThen
Emp_Tel_num=Trim(txtEmpTel.Text)
EndIf
IfTrim(txtEmpAddr.Text)<>EmptyThen
Emp_Address=Trim(txtEmpAddr.Text)
EndIf
IfTrim(txtEmpMemo.Text)<>EmptyThen
Emp_Memo=Trim(txtEmpMemo.Text)
EndIf
Emp_name_char=Trim(txtEmpChr.Text)
IfTrim(cmbDepartID.Text)<>EmptyThen
vtempdata=Trim(cmbDepartID.Text)
Depart_ID=frmEmployees.RecordSetFindItem(rctDepartList,"Depart_Name",vtempdata,0)
EndIf
IfTrim(cmbEmpMs.Text)<>EmptyThen
vtempdata=Trim(cmbEmpMs.Text)
MS_ID=frmEmployees.RecordSetFindItem(rctMarriageStatus,"MS_Name",vtempdata,0)
EndIf
IfTrim(cmbEmpPs.Text)<>EmptyThen
vtempdata=Trim(cmbEmpPs.Text)
P_ID=Trim(frmEmployees.RecordSetFindItem(rctPlitics,"P_Name",vtempdata,0))
EndIf
IfTrim(cmbEmpEdu.Text)<>EmptyThen
vtempdata=Trim(cmbEmpEdu.Text)
E_ID=Trim(frmEmployees.RecordSetFindItem(rctEdulevel,"E_Name",vtempdata,0))
EndIf
IfTrim(cmbEmpJob.Text)<>EmptyThen
vtempdata=Trim(cmbEmpJob.Text)
Job_ID=Trim(frmEmployees.RecordSetFindItem(rctJobList,"Job_Name",vtempdata,0))
EndIf
IfTrim(cmbEmpTitel.Text)<>EmptyThen
vtempdata=Trim(cmbEmpTitel.Text)
Titel_ID=Trim(frmEmployees.RecordSetFindItem(rctTitelList,"Titel_Name",vtempdata,0))
EndIf
''''下面是寫入數據庫
''''MsgBox"noerror"
IffrmEmpAdd.Caption="新增記錄"Then
rctEmployees.AddNew
EndIf
IfSaveEmployeesRecords(rctEmployees,Emp_ID,Emp_Name,Emp_Sex,Depart_ID,Job_ID,Titel_ID,E_ID,P_ID,MS_ID,Emp_ID_cord,Emp_birthday,Emp_Attend_time,Emp_Join_time,Emp_mobile_num,Emp_Tel_num,Emp_Address,Emp_Memo,Emp_name_char)=TrueThen
IffrmEmpAdd.Caption="新增記錄"Then
CallfrmEmpAddClear
EndIf
''''frmEmployees.flexEmployees.Redraw=False
''''CallfrmEmployees.IniGrid(frmEmployees.flexEmployees)
''''CallfrmEmployees.showdata(rctEmployees,frmEmployees.flexEmployees)
''''frmEmployees.flexEmployees.Redraw=True
MsgBox"保存記錄成功",vbInformation,"保存記錄"
EndIf
EndSub
請假查詢窗體運行如下:
窗體源碼如下:
PrivateSubmnuLeavelQuery_Click()
frmLeavel.tblEmployees.Buttons("add").Visible=False
frmLeavel.tblEmployees.Buttons("delete").Visible=False
frmLeavel.tblEmployees.Buttons("modify").Visible=False
frmLeavel.tlbPrint.Left=30
frmLeavel.tlbExit.Left=frmLeavel.tlbPrint.Width
frmLeavel.Caption="請假查詢"
frmLeavel.ShowvbModal,Me
EndSub
6.5.4幫助管理模塊的設計
該模塊不涉及到代碼的編寫故不作描述
第七章主菜單的設計與系統的編譯發行
1系統主菜單的設計
在實際的系統設計中,菜單可分為兩種類型,即下拉式菜單和彈出式菜單,下拉式菜單系統中,一般有一個主菜單,其中包括若干個選擇項.主菜單單的每一項又可下拉出下一級子菜單.這樣用一個個的窗口的形式彈出在屏幕上,它是通過菜單編輯器建立,其步驟如下:
1)選取要建立菜單的窗體
2)從“工具”菜單中,選取“菜單編輯器”建立如下圖所示的系統主菜單:
可以看出菜單系統的建立比較直觀,因此不作重點描述
一個典型的數據庫應用程序由數據結構,操作界面,查詢選項和報表打印等組成。在設計應用程序時,應仔細考慮每個組件提供的功能以及與其他組件之間的關系。設計好的功能模塊制作完畢后,單擊全編譯執行在確認無誤后,單擊文件菜單下的生成工程得到一個.EXE的可執行程序.到此一個完整的系統設計完成.
結論
在剛剛開始學習數據庫的時候,對很多細節很沒有概念。特別是對窗體的作用還有過程的概念的掌握,理解不準確。通過老師的幫助才慢慢的有了一點體會。對書本的學習完成以后,開始著手對數據庫系統開始制作,開始對系統的需求分析不足,造成多次重做。在對表單的制作過程中,對窗體的尺寸的把握,對各個控件尺寸的把握是比較困難的,各個控件在表單中的布局也非常重要。在本系統中,程序主界面和登陸界面的制作是比較困難的。表單制作完成后就是對控件編程,其中要注意程序編寫時的細節,格式,命令的拼寫,運用的合理性等等都要進行分析。
總的來說,做完一個數據庫的收獲不僅僅是技術上的,對事情的宏觀的控制有了更深的看法。
致謝
感謝老師在設計中的指導和關懷,并且感謝所有同學對我的支持。
參考文獻
參考文獻:
1、馬力VisualBasic6.0簡明教程機械工業出版社2001年8月
2、劉韜駱娟何旭洪VisualBasic6.0數據庫系統開發實例導航人民郵電出版社2004.4月
3、程序員雜志2002年合訂本電子工業出版社
4、王小平,曹立明.遺傳算法-理論、應用與軟件實現.西安:西安交通大學出版社,