VB+ACCESS2000開發(fā)的檔案管理系統(tǒng)【畢業(yè)論文】摘 要
近年來,,隨著企業(yè)彼此間的競爭日趨激烈,,信息技術(shù)在企業(yè)的發(fā)展中占據(jù)著越來越重要的地位。在企業(yè)的運輸生產(chǎn)中,檔案已成為企業(yè)運輸經(jīng)營中不可或缺的一部分,,為管理者進(jìn)行管理決策和進(jìn)行各種經(jīng)營活動提供了重要的依據(jù),在運輸生產(chǎn)中發(fā)揮了越來越重要的作用,。 檔案管理系統(tǒng)是一個企業(yè)單位不可缺少的部分,它的內(nèi)容對于企業(yè)的決策者和管理者來說都至關(guān)重要,,所以檔案管理系統(tǒng)能夠為用戶提供充足的信息和快捷的查詢手段,。用Visual Basic構(gòu)建的檔案管理系統(tǒng),能實現(xiàn)檔案的錄入,、修改,、查找、刪除,、統(tǒng)計,、查詢、預(yù)覽,、編輯,、打印、打印預(yù)覽,、取消,、刷新、視圖,、系統(tǒng)維護(hù),、幫助等功能,此外,,在程序中還設(shè)計了用戶登陸,,并設(shè)定了密碼,以確保本系統(tǒng)應(yīng)用的安全性,。本管理系統(tǒng)設(shè)計合理,、界面美觀、操作方便,、運行穩(wěn)定,、功能完備,為進(jìn)行現(xiàn)代化的檔案管理工作起到了重要作用,,具有較高的實用價值,。 關(guān)鍵詞: 數(shù)據(jù)庫 模塊 信息 數(shù)據(jù)源 目 錄 第一章 概述 ---------------------------------------------------------------------------------3 第二章 目標(biāo)分析和方案確定--------------------------------------------------------4 第三章 開發(fā)檔案管理系統(tǒng)的基本思路----------------------------------------6 3.1 使用VB6.0編寫代碼------------------------------------------------------6 3.2 使用Access2000建立數(shù)據(jù)庫-------------------------------------------6 3.3 用JET數(shù)據(jù)庫引擎訪問數(shù)據(jù)庫----------------------------------------6 第四章 Visual Basic 6.0編程語言概述----------------------------------------7 4.1 創(chuàng)建菜單欄--------------------------------------------------------------------7 4.2 創(chuàng)建工具欄--------------------------------------------------------------------7 4.3 建立幫助信息-----------------------------------------------------------------8 4.4 生成版本信息-----------------------------------------------------------------8 第五章 使用Access2000 實現(xiàn)關(guān)系型數(shù)據(jù)庫------------------------------9 5.1 數(shù)據(jù)庫的概念-----------------------------------------------------------------9 5.2 新建一個數(shù)據(jù)庫--------------------------------------------------------------9 5.3 修改已建的數(shù)據(jù)庫----------------------------------------------------------9 第六章 系統(tǒng)總體設(shè)計--------------------------------------------------------------------10 第七章 分模塊設(shè)計------------------------------------------------------------------------12 7.1檔案的系統(tǒng)維護(hù)---------------------------------------------------------------12 7.2檔案的版本和系統(tǒng)信息-----------------------------------------------------13 7.3檔案的錄入、編輯,、刪除,、刷新---------------------------------------17 7.4檔案的登陸和密碼設(shè)計-----------------------------------------------------24 7.5檔案的主界面------------------------------------------------------------------27 7.6檔案的查詢、預(yù)覽,、打印功能------------------------------------------28 7.7檔案的統(tǒng)計功能---------------------------------------------------------------31 7.8檔案的報表----------------------------------------------------------------------32 第八章 結(jié)束語--------------------------------------------------------------------------------34 附:主要參考文獻(xiàn)-------------------------------------------------------------------35 第一章 概述 近年來,,隨著企業(yè)彼此間的競爭日趨激烈,,信息技術(shù)在企業(yè)的發(fā)展中占據(jù)著越來越重要的地位,借助信息技術(shù)來獲取更快捷,、更高效,、更準(zhǔn)確的操作方式,發(fā)揮企業(yè)本身最大的競爭力以適應(yīng)快速變遷的商業(yè)環(huán)境,,逐漸成為不可避免的趨勢,。在企業(yè)的運輸生產(chǎn)中,檔案已成為企業(yè)運輸經(jīng)營中不可或缺的一部分,,為管理者進(jìn)行管理決策和進(jìn)行各種經(jīng)營活動提供了重要的依據(jù),,在運輸生產(chǎn)中發(fā)揮了越來越重要的作用。為方便,、高效,、快捷地適應(yīng)現(xiàn)代化檔案的需要,本論文應(yīng)用Visual Basic構(gòu)建了一個檔案管理系統(tǒng),,其中用到了數(shù)據(jù)庫的應(yīng)用,、建立、數(shù)據(jù)庫操作對象ADO,、數(shù)據(jù)報表設(shè)計等知識,。檔案管理系統(tǒng)是典型的信息管理系統(tǒng)(MIS),其開發(fā)主要包括后臺數(shù)據(jù)庫的建立和維護(hù)以及前端應(yīng)用程序的開發(fā)兩個方面,。對于前者要求建立起數(shù)據(jù)一致性和完整性強,、數(shù)據(jù)安全性好的庫。而對于后者則要求應(yīng)用程序功能完備,,易使用等特點,。用Visual Basic構(gòu)建的檔案管理系統(tǒng),主要能實現(xiàn)檔案的錄入,、修改,、查找、刪除,、統(tǒng)計,、查詢、編輯,、打印,、打印預(yù)覽、取消,、刷新,、視圖、系統(tǒng)維護(hù),、幫助等功能,,為保證用戶的安全性,,還設(shè)計了簡捷方便的用戶登陸和密碼修改。本管理系統(tǒng)設(shè) 計合理,、界面美觀,、操作方便、運行穩(wěn)定,、功能完備,,為進(jìn)行現(xiàn)代化的檔案管理工作起到了重要作用,具有較高的實用價值,。 第二章 目標(biāo)分析和方案確定 檔案管理系統(tǒng)是一個企業(yè)單位不可缺少的部分,它的內(nèi)容對于企業(yè)的決策者和管理者來說都至關(guān)重要,,所以檔案管理系統(tǒng)應(yīng)該能夠為用戶提供充足的信息和快捷的查詢手段,。但一直以來人們使用傳統(tǒng)人工的方式管理文件檔案,這種管理方式存在著許多缺點,,如:效率低,、保密性差,另外時間一長,,將產(chǎn)生大量的文件和數(shù)據(jù),,這對于查找、更新和維護(hù)都帶來了不少的困難,。 隨著科學(xué)技術(shù)的不斷提高,,計算機科學(xué)日漸成熟,其強大的功能已為人們深刻認(rèn)識,,它已進(jìn)入人類社會的各個領(lǐng)域并發(fā)揮著越來越重要的作用,。今天,計算機的價格已經(jīng)十分低廉,,性能卻有了長足的進(jìn)步,。它已經(jīng)被應(yīng)用于許多領(lǐng)域,計算機之所以如此流行的原因主要有以下幾個方面: 首先,,計算機可以代替人工進(jìn)行許多繁雜的勞動,; 其次,計算機可以節(jié)省許多資源,; 第三,,計算機可以大大的提高人們的工作效率; 第四,,計算機可以使敏感文檔更加安全,,等等。 在企業(yè)中用計算機管理檔案的意義:現(xiàn)在,,有很多企業(yè)的檔案管理水平還停留在紙介質(zhì)的基礎(chǔ)上,,這樣的機制已經(jīng)不能適應(yīng)時代的發(fā)展,,因為它浪費了許多人力和物力,在信息時代這種傳統(tǒng)的管理方法必然被計算機為基礎(chǔ)的信息管理所取代,。 作為計算機應(yīng)用的一部分,,使用計算機對檔案信息進(jìn)行管理,具有著手工管理所無法比擬的優(yōu)點,。例如:檢索迅速,、查找方便、可靠性高,、存儲量大,、保密性好、壽命長,、成本低等,。這些優(yōu)點能夠極大地提高學(xué)生檔案管理的效率,也是企業(yè)的科學(xué)化,、正規(guī)化管理,,與世界接軌的重要條件。 Visual Basic簡單易學(xué)且功能豐富,,是廣泛應(yīng)用的變成語言之一,,它的發(fā)展為編程人員提供了更廣泛的空間。為能夠迎合轉(zhuǎn)變快速的信息技術(shù),,越來越多的企業(yè)傾向于分布式的 管理需求,,提供分布式主從結(jié)構(gòu)環(huán)境的Microsoft SQL Server便成為相當(dāng)重要的核心角色,這個數(shù)據(jù)庫服務(wù)器運用了關(guān)系數(shù)據(jù)庫的技術(shù),,同時考慮到高效率數(shù)據(jù)庫管理的需求,,借助標(biāo)準(zhǔn)化的訪問環(huán)境,提高了和前端應(yīng)用環(huán)境輕松集成的能力,,以適應(yīng)各種企業(yè)組織在不同環(huán)境下的操作需求,。作為前端應(yīng)用程序開發(fā)環(huán)境的Visual Basic6.0,在數(shù)據(jù)來源的維護(hù),、數(shù)據(jù)訪問技術(shù),、國際網(wǎng)絡(luò)和企業(yè)內(nèi)部Intranet應(yīng)用程序等功能方面都有其獨到、先進(jìn)之處,。 我作為一個計算機應(yīng)用專業(yè)的??粕M谶@方面有所貢獻(xiàn),。我希望能用我所學(xué)的Visual Basic6.0編制出一個實用的程序來對企業(yè)的檔案進(jìn)行更有效,、快捷、方便的管理,因此,,我充分運用Visual Basic進(jìn)行了這套檔案管理系統(tǒng)的開發(fā),。 第三章 開發(fā)檔案管理系統(tǒng)的基本思路 3.1、編程環(huán)境的選擇 微軟公司的Visual Basic 6.0是Windows應(yīng)用程序開發(fā)工具,,使目前最為廣泛的,、易學(xué)易用的面向?qū)ο蟮拈_發(fā)工具。Visual Basic提供了大量的控件,,這些控件可用于設(shè)計界面和實現(xiàn)各種功能,,減少了編程人員的工作量,也簡化了界面設(shè)計過程,,從而有效的提高了應(yīng)用程序的運行效率和可靠性,。故而,實現(xiàn)本系統(tǒng)VB是一個相對較好的選擇,。 3.2,、關(guān)系型數(shù)據(jù)庫的實現(xiàn) Access2000 就是關(guān)系數(shù)據(jù)庫開發(fā)工具,數(shù)據(jù)庫能匯集各種信息以供查詢,、存儲和檢索,。Access 的優(yōu)點在于它能使用數(shù)據(jù)表示圖或自定義窗體收集信息,。數(shù)據(jù)表示圖提供了一種類似于 Excel 的電子表格,,可以使數(shù)據(jù)庫一目了然。另外,,Access 允許創(chuàng)建自定義報表用于打印或輸出數(shù)據(jù)庫中的信息,。Access也提供了數(shù)據(jù)存儲庫,可以使用桌面數(shù)據(jù)庫文件把數(shù)據(jù)庫文件置于網(wǎng)絡(luò)文件服務(wù)器,,與其他網(wǎng)絡(luò)用戶共享數(shù)據(jù)庫,。Access 是一種關(guān)系數(shù)據(jù)庫工具,關(guān)系數(shù)據(jù)庫是已開發(fā)的最通用的數(shù)據(jù)庫之一,。如上所述,,Access 作為關(guān)系數(shù)據(jù)庫開發(fā)具備了許多優(yōu)點,可以在一個數(shù)據(jù)包中同時擁有桌面數(shù)據(jù)庫的便利和關(guān)系數(shù)據(jù)庫的強大功能,。 3.3,、二者的結(jié)合(DBA) 微軟的JET數(shù)據(jù)庫引擎提供了與數(shù)據(jù)庫打交道的途徑,我們是通過它以及Visual Basic 來訪問數(shù)據(jù)庫并對其進(jìn)行各種操作,。Visual Basic,、Access以及其他微軟的軟件產(chǎn)品都是通過共用JET數(shù)據(jù)庫引擎,從而給用戶提供了豐富的數(shù)據(jù)類型,。 DATA 控件在數(shù)據(jù)庫中的信息與將信息顯示給用戶看的Visual Basic程序之間架起了一座橋梁,。我們可以設(shè)置DATA控件的各個屬性,告訴它要調(diào)用那個數(shù)據(jù)庫的哪個部分。缺省情況下,,DATA控件根據(jù)數(shù)據(jù)庫中的一個或多個數(shù)據(jù)表建立一個dynaset-type(動態(tài)集合)類型的記錄集合,。一個記錄集合是動態(tài)的也就意味著,當(dāng)原來的數(shù)據(jù)表中的容改變了以后,,該記錄集合中的記錄也會隨之改變,。DATA控件還提供了用來瀏覽不同記錄的各種跳轉(zhuǎn)按鈕。將DATA控件放置在窗體中之后,,我們還必須在該控件與要處理的數(shù)據(jù)庫之間建立聯(lián)系,。 第四章 Visual Basic 6.0編程語言概述 Visual Basic應(yīng)用程序基本的構(gòu)建塊是用戶所創(chuàng)建的對象,每一個對象都具有一些特性和行為(屬性,、事件和方法),。開發(fā)人員可以最有效利用所創(chuàng)建的每一個對象。使用應(yīng)用程序具有可通用性,、可擴(kuò)展性和強有力的功能,。 Visual Basic應(yīng)用由一系列對象組成,包括有函數(shù),、菜單,、結(jié)構(gòu)和數(shù)據(jù)窗口、用戶對象,、用戶事件等等,,對象中又包含若干控件如命令按鈕、單行編輯器等這些對象和控件都可在許多應(yīng)用中重復(fù)使用,。 4.1創(chuàng)建菜單欄 除此之外,,VB6.0還有以下一些重要功能。菜單是程序最重要的特性之一,,大多數(shù)程序都依賴一個定義良好的菜單使程序易于使用和維護(hù),,Visual Basic也提供了強大的創(chuàng)建菜單功能是程序更加標(biāo)準(zhǔn)。您可以使用Visual Basic的Applicaytion Wizard也可以使用Visual Basic的菜單編輯器建立菜單或者修改已經(jīng)存在的菜單,、控件,。其屬性及對象如下: 1. Align屬性定義工具條在窗休中的位置。 2. ToolTipText屬性是字符串類型,,定義控件的提示字符,。 3. Style屬性定義按鈕外觀。 4. ImageList屬性定義與數(shù)據(jù)條對應(yīng)的ImageList控件名,,該控件定義工具條按鈕顯示的圖像,。 5. HotImangeList屬性設(shè)置一個ImageList控件名,該控件定義按鈕獲得熱點時顯示的圖像,。 6. DisabledImageList屬性定義工具條按鈕無效時顯示的圖像,。 4.2創(chuàng)建工具欄 創(chuàng)建工具條主要利用ImageList和Toolbar控件,。創(chuàng)建時,先將ImageList添加到窗體上,,然后往其中添加一些圖片,,接著Toolbar控件添加到窗體上,再往Toolbar中插入一些命令按紐,,為他們添加上相應(yīng)圖片即可,。 4.3建立幫助信息 專業(yè)水平的軟件通常都帶有聯(lián)機幫助功能。無論寫出來的程序是要給大量的用戶使用,,還是僅僅局限于公司內(nèi)部有限的使用者,,我們都應(yīng)該為用戶提供詳細(xì)的、易于理解的聯(lián)機幫助文檔,。微軟的Help Workshop4.0是一套獨立于Visual Basic的用來協(xié)助我們創(chuàng)建,、運行于32位Windows操作系統(tǒng)下的幫助文件的工具。使用它可以為我們編寫的應(yīng)用程序生成一組幫助文件,。 4.4生成版本信息 為了使程序顯得更具有專業(yè)風(fēng)格,,首先可以在其中加入通常的應(yīng)用程序信息。這些信息包括公司名稱,、版本號,、修訂號以及其他類似信息。Visual Basic允許你使用APP對象來保存這些信息,,APP對象是一個預(yù)定義對象,,不需要在程序中創(chuàng)建它。APP對象的大多數(shù)屬性被應(yīng)用程序用來提供常規(guī)的信息,,通過使用這些APP提供的屬性,,可以在應(yīng)用程序和用戶之間交流重要信息,,在項目屬性框中可以設(shè)置它的屬性,。 第五章 使用Access2000實現(xiàn)關(guān)系型數(shù)據(jù)庫 5.1、數(shù)據(jù)庫的概念 數(shù)據(jù)庫是一種存儲數(shù)據(jù)并對數(shù)據(jù)進(jìn)行操作的工具,。數(shù)據(jù)庫的作用在于組織和表達(dá)信息,,簡而言之,數(shù)據(jù)庫就是信息集合,。計算機的數(shù)據(jù)庫可以分為兩類:非關(guān)系數(shù)據(jù)庫(flat-file)和關(guān)系數(shù)據(jù)庫(relational),。關(guān)系數(shù)據(jù)庫中包含了多個數(shù)據(jù)表的信息,數(shù)據(jù)庫含有各個不同部分的術(shù)語,,象記錄,、域等。 5.2,、新建一個數(shù)據(jù)庫 創(chuàng)建任何一個數(shù)據(jù)庫的第一步是仔細(xì)的規(guī)劃數(shù)據(jù)庫,,設(shè)計必須是靈活的、有邏輯的。創(chuàng)建一個數(shù)據(jù)庫結(jié)構(gòu)的過程被認(rèn)為是數(shù)據(jù)模型設(shè)計,。 1)標(biāo)識需要的數(shù)據(jù),; 2)收集被標(biāo)識的字段到表中; 3)標(biāo)識主關(guān)鍵字字段,; 4)繪制一個簡單的數(shù)據(jù)圖表,; 5)規(guī)范數(shù)據(jù); 6)標(biāo)識指定字段的信息,; 7)創(chuàng)建物理表,。 5.3、修改已建的數(shù)據(jù)庫 數(shù)據(jù)庫的修改分為:添加,、編輯和刪除記錄,。這三種操作均可由Visual Basic創(chuàng)建的程序來完成,下面的章節(jié)將詳細(xì)描述實現(xiàn)的具體方法,。 第六章 系統(tǒng)總體設(shè)計 根據(jù)設(shè)計方案,,本系統(tǒng)的結(jié)構(gòu)框圖為(如下所示): 本系統(tǒng)所實現(xiàn)的主要功能為: 可以進(jìn)行文本操作; 1. 錄入一個數(shù)據(jù)庫項目,; 2. 修改一個數(shù)據(jù)庫項目,; 3. 查找一個數(shù)據(jù)庫信息; 4. 刪除一個數(shù)據(jù)庫信息,; 5. 統(tǒng)計一個數(shù)據(jù)庫信息,; 6. 查詢一個數(shù)據(jù)庫信息; 7. 預(yù)覽一個數(shù)據(jù)庫信息,; 8. 編輯一個數(shù)據(jù)庫信息,; 9. 打印一個數(shù)據(jù)庫信息; 10. 打印預(yù)覽一個數(shù)據(jù)庫信息,; 11. 刷新一個數(shù)據(jù)庫信息,; 12. 取消一個數(shù)據(jù)庫信息。 根據(jù)實際數(shù)據(jù)操作流程,,本城西數(shù)據(jù)的ER圖為(根據(jù)數(shù)據(jù)流程勾畫,,下圖為示意圖):
用戶登錄 → 檔案的錄入→檔案的修改和查詢 →檔案的預(yù)覽和打印 本系統(tǒng)所采用的數(shù)據(jù)庫結(jié)構(gòu): 數(shù)據(jù)表:檔案表、用戶表,。根據(jù)系統(tǒng)的需要,,檔案表采用字段結(jié)構(gòu)為: 編號 標(biāo)題 發(fā)文部門 發(fā)文號 內(nèi)容 發(fā)文日期 字段類型 自動編號 字符 字符 字符 備注 日期 是否索引 是 否 否 否 否 否 登錄表結(jié)構(gòu)為:
編 號 用 戶 名 密 碼 第七章 分模塊設(shè)計 7.1、檔案的系統(tǒng)維護(hù): 為提高系統(tǒng)的安全性,,防止非法用戶進(jìn)入本系統(tǒng),,本系統(tǒng)設(shè)有用戶登陸界面,并設(shè)立密碼,,合法用戶可以在系統(tǒng)維護(hù)里面的用戶修改里面自行設(shè)立用戶名和密碼,,系統(tǒng)默認(rèn)用戶名為“admin”,,密碼為“1234”。系統(tǒng)的用戶密碼更改界面如下: Edit.frm ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬ Dim db As Connection Dim rs As Recordset Private Sub Command1_Click() On Error GoTo er If rs.State = adStateOpen Then rs.Close rs.Open "登錄", db, 1, 3 rs("用戶名") = Text1.Text rs("密碼") = Text2.Text rs.Update 'rs.Close MsgBox "修改成功,!", vbOKOnly + vbExclamation Unload Me Exit Sub er: MsgBox "有錯誤產(chǎn)生,!", vbOKOnly + vbExclamation End Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Form_Load() Text1.Text = login.user Text2.Text = login.password Set db = New Connection db.CursorLocation = adUseClient db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=database.mdb;" Set rs = New Recordset End Sub Private Sub Form_Unload(Cancel As Integer) If rs.State = adStateOpen Then rs.Close Set rs = Nothing db.Close Set db = Nothing End Sub 7.2、檔案的版本和系統(tǒng)信息 About.frm Option Explicit ' 注冊表關(guān)鍵字安全選項... Const READ_CONTROL = &H20000 Const KEY_QUERY_VALUE = &H1 Const KEY_SET_VALUE = &H2 Const KEY_CREATE_SUB_KEY = &H4 Const KEY_ENUMERATE_SUB_KEYS = &H8 Const KEY_NOTIFY = &H10 Const KEY_CREATE_LINK = &H20 Const KEY_ALL_ACCESS = KEY_QUERY_VALUE + KEY_SET_VALUE + _ KEY_CREATE_SUB_KEY + KEY_ENUMERATE_SUB_KEYS + _ KEY_NOTIFY + KEY_CREATE_LINK + READ_CONTROL ' 注冊表關(guān)鍵字 ROOT 類型... Const HKEY_LOCAL_MACHINE = &H80000002 Const ERROR_SUCCESS = 0 Const REG_SZ = 1 ' 獨立的空的終結(jié)字符串 Const REG_DWORD = 4 ' 32位數(shù)字 Const gREGKEYSYSINFOLOC = "SOFTWARE\Microsoft\Shared Tools Location" Const gREGVALSYSINFOLOC = "MSINFO" Const gREGKEYSYSINFO = "SOFTWARE\Microsoft\Shared Tools\MSINFO" Const gREGVALSYSINFO = "PATH" Private Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, ByRef phkResult As Long) As Long Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal lpData As String, ByRef lpcbData As Long) As Long Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long Private Sub cmdSysInfo_Click() Call StartSysInfo End Sub Private Sub cmdOK_Click() Unload Me End Sub Private Sub Form_Load() Me.Caption = "關(guān)于 " & App.Title lblVersion.Caption = "版本 " & App.Major & "." & App.Minor & "." & App.Revision lblTitle.Caption = App.Title Me.Width = 5820 Me.Height = 4035 End Sub Public Sub StartSysInfo() On Error GoTo SysInfoErr Dim rc As Long Dim SysInfoPath As String ' 試圖從注冊表中獲得系統(tǒng)信息程序的路徑及名稱... If GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFO, gREGVALSYSINFO, SysInfoPath) Then ' 試圖僅從注冊表中獲得系統(tǒng)信息程序的路徑... ElseIf GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFOLOC, gREGVALSYSINFOLOC, SysInfoPath) Then ' 已知32位文件版本的有效位置 If (Dir(SysInfoPath & "\MSINFO32.EXE") <> "") Then SysInfoPath = SysInfoPath & "\MSINFO32.EXE" ' 錯誤 - 文件不能被找到... Else GoTo SysInfoErr End If ' 錯誤 - 注冊表相應(yīng)條目不能被找到... Else GoTo SysInfoErr End If Call Shell(SysInfoPath, vbNormalFocus) Exit Sub SysInfoErr: MsgBox "此時系統(tǒng)信息不可用", vbOKOnly End Sub Public Function GetKeyValue(KeyRoot As Long, KeyName As String, SubKeyRef As String, ByRef KeyVal As String) As Boolean Dim i As Long ' 循環(huán)計數(shù)器 Dim rc As Long ' 返回代碼 Dim hKey As Long ' 打開的注冊表關(guān)鍵字句柄 Dim hDepth As Long ' Dim KeyValType As Long ' 注冊表關(guān)鍵字?jǐn)?shù)據(jù)類型 Dim tmpVal As String ' 注冊表關(guān)鍵字值的臨時存儲器 Dim KeyValSize As Long ' 注冊表關(guān)鍵自變量的尺寸 '------------------------------------------------------------ ' 打開 {HKEY_LOCAL_MACHINE...} 下的 RegKey '------------------------------------------------------------ rc = RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey) ' 打開注冊表關(guān)鍵字 If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError ' 處理錯誤... tmpVal = String$(1024, 0) ' 分配變量空間 KeyValSize = 1024 ' 標(biāo)記變量尺寸 '------------------------------------------------------------ ' 檢索注冊表關(guān)鍵字的值... '------------------------------------------------------------ rc = RegQueryValueEx(hKey, SubKeyRef, 0, _ KeyValType, tmpVal, KeyValSize) ' 獲得/創(chuàng)建關(guān)鍵字值 If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError ' 處理錯誤 If (Asc(Mid(tmpVal, KeyValSize, 1)) = 0) Then ' Win95 外接程序空終結(jié)字符串... tmpVal = Left(tmpVal, KeyValSize - 1) ' Null 被找到,從字符串中分離出來 Else ' WinNT 沒有空終結(jié)字符串... tmpVal = Left(tmpVal, KeyValSize) ' Null 沒有被找到, 分離字符串 End If '------------------------------------------------------------ ' 決定轉(zhuǎn)換的關(guān)鍵字的值類型... '------------------------------------------------------------ Select Case KeyValType ' 搜索數(shù)據(jù)類型... Case REG_SZ ' 字符串注冊關(guān)鍵字?jǐn)?shù)據(jù)類型 KeyVal = tmpVal ' 復(fù)制字符串的值 Case REG_DWORD ' 四字節(jié)的注冊表關(guān)鍵字?jǐn)?shù)據(jù)類型 For i = Len(tmpVal) To 1 Step -1 ' 將每位進(jìn)行轉(zhuǎn)換 KeyVal = KeyVal + Hex(Asc(Mid(tmpVal, i, 1))) ' 生成值字符,。 By Char,。 Next KeyVal = Format$("&h" + KeyVal) ' 轉(zhuǎn)換四字節(jié)的字符為字符串 End Select GetKeyValue = True ' 返回成功 rc = RegCloseKey(hKey) ' 關(guān)閉注冊表關(guān)鍵字 Exit Function ' 退出 GetKeyError: ' 錯誤發(fā)生后將其清除... KeyVal = "" ' 設(shè)置返回值到空字符串 GetKeyValue = False ' 返回失敗 rc = RegCloseKey(hKey) ' 關(guān)閉注冊表關(guān)鍵字 End Function 7.3、檔案的錄入,、編輯,、刪除、刷新 本部分程序主要是把車站的檔案錄入計算機數(shù)據(jù)庫檔案表里,,并提供編輯,、刪除等功能,能快捷,、高效地把用紙張記錄的檔案內(nèi)容用數(shù)字的形式存儲在計算機里,,適應(yīng)現(xiàn)代化的辦公系統(tǒng)的需要,以對信息進(jìn)行高效,、快速的查詢,、修改。系統(tǒng)的錄入界面如下: frm檔案 Dim WithEvents adoPrimaryRS As Recordset Dim mbChangedByCode As Boolean Dim mvBookMark As Variant Dim mbEditFlag As Boolean Dim mbAddNewFlag As Boolean Dim mbDataChanged As Boolean Private Sub Form_Load() Dim db As Connection Set db = New Connection db.CursorLocation = adUseClient db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=database.mdb;" Set adoPrimaryRS = New Recordset adoPrimaryRS.Open "select 標(biāo)題,發(fā)文部門,發(fā)文號,發(fā)文日期,錄入人,內(nèi)容 from 檔案", db, adOpenStatic, adLockOptimistic Dim oText As TextBox '綁定字段到窗體文本框 For Each oText In Me.txtFields Set oText.DataSource = adoPrimaryRS Next mbDataChanged = False End Sub Private Sub Form_Resize() On Error Resume Next lblStatus.Width = Me.Width - 1500 cmdNext.Left = lblStatus.Width + 700 cmdLast.Left = cmdNext.Left + 340 End Sub Private Sub Form_Unload(Cancel As Integer) Screen.MousePointer = vbDefault End Sub Private Sub adoPrimaryRS_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) '顯示記錄位置 lblStatus.Caption = "Record: " & CStr(adoPrimaryRS.AbsolutePosition) End Sub Private Sub adoPrimaryRS_WillChangeRecord(ByVal adReason As ADODB.EventReasonEnum, ByVal cRecords As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) 'This is where you put validation code 'This event gets called when the following actions occur Dim bCancel As Boolean Select Case adReason Case adRsnAddNew 'adStatus = adStatusCancel Case adRsnClose Case adRsnDelete Case adRsnFirstChange Case adRsnMove Case adRsnRequery Case adRsnResynch Case adRsnUndoAddNew Case adRsnUndoDelete Case adRsnUndoUpdate Case adRsnUpdate End Select If bCancel Then adStatus = adStatusCancel End Sub Private Sub cmdAdd_Click() On Error GoTo AddErr With adoPrimaryRS If Not (.BOF And .EOF) Then mvBookMark = .Bookmark End If .AddNew lblStatus.Caption = "Add record" mbAddNewFlag = True SetButtons False End With Exit Sub AddErr: MsgBox Err.Description End Sub Private Sub cmdDelete_Click() On Error GoTo DeleteErr With adoPrimaryRS .Delete .MoveNext If .EOF Then .MoveLast End With Exit Sub DeleteErr: MsgBox Err.Description End Sub Private Sub cmdRefresh_Click() 'This is only needed for multi user apps On Error GoTo RefreshErr adoPrimaryRS.Requery Exit Sub RefreshErr: MsgBox Err.Description End Sub Private Sub cmdEdit_Click() On Error GoTo EditErr lblStatus.Caption = "Edit record" mbEditFlag = True SetButtons False Exit Sub EditErr: MsgBox Err.Description End Sub Private Sub cmdCancel_Click() On Error Resume Next SetButtons True mbEditFlag = False mbAddNewFlag = False adoPrimaryRS.CancelUpdate If mvBookMark > 0 Then adoPrimaryRS.Bookmark = mvBookMark Else adoPrimaryRS.MoveFirst End If mbDataChanged = False End Sub Private Sub cmdUpdate_Click() On Error GoTo UpdateErr adoPrimaryRS.UpdateBatch adAffectAll If mbAddNewFlag Then adoPrimaryRS.MoveLast 'move to the new record End If mbEditFlag = False mbAddNewFlag = False SetButtons True mbDataChanged = False Exit Sub UpdateErr: MsgBox Err.Description End Sub Private Sub cmdClose_Click() Unload Me End Sub Private Sub cmdFirst_Click() On Error GoTo GoFirstError adoPrimaryRS.MoveFirst mbDataChanged = False Exit Sub GoFirstError: MsgBox Err.Description End Sub Private Sub cmdLast_Click() On Error GoTo GoLastError adoPrimaryRS.MoveLast mbDataChanged = False Exit Sub GoLastError: MsgBox Err.Description End Sub Private Sub cmdNext_Click() On Error GoTo GoNextError If Not adoPrimaryRS.EOF Then adoPrimaryRS.MoveNext If adoPrimaryRS.EOF And adoPrimaryRS.RecordCount > 0 Then Beep 'moved off the end so go back adoPrimaryRS.MoveLast End If 'show the current record mbDataChanged = False Exit Sub GoNextError: MsgBox Err.Description End Sub Private Sub cmdPrevious_Click() On Error GoTo GoPrevError If Not adoPrimaryRS.BOF Then adoPrimaryRS.MovePrevious If adoPrimaryRS.BOF And adoPrimaryRS.RecordCount > 0 Then Beep 'moved off the end so go back adoPrimaryRS.MoveFirst End If 'show the current record mbDataChanged = False Exit Sub GoPrevError: MsgBox Err.Description End Sub Private Sub SetButtons(bVal As Boolean) cmdAdd.Visible = bVal cmdEdit.Visible = bVal cmdUpdate.Visible = Not bVal cmdCancel.Visible = Not bVal cmdDelete.Visible = bVal cmdClose.Visible = bVal cmdRefresh.Visible = bVal cmdNext.Enabled = bVal cmdFirst.Enabled = bVal cmdLast.Enabled = bVal cmdPrevious.Enabled = bVal End Sub 7.4檔案的登陸和密碼設(shè)計 本部分程序主要是提高系統(tǒng)的安全性,,以防止非法用戶進(jìn)入本系統(tǒng),,避免不必要的損失。 Login.frm '是否合法用戶 Public password As String Public user As String Dim db As Connection Dim rs As Recordset Private Sub Command1_Click() If Trim(Text1.Text) = "" Then MsgBox "請輸入完整,!", vbOKOnly + vbExclamation Else If rs.State = adStateOpen Then rs.Close rs.Open "select * from 登錄 where 用戶名='" & Text1.Text & "'", db, 1, 1 If Not rs.EOF And Not rs.BOF Then If rs("密碼") = Text2.Text Then user = Text1.Text password = Text2.Text main.Show Unload Me Else MsgBox "密碼錯誤,!", vbOKOnly + vbExclamation End If Else MsgBox "無此用戶!", vbOKOnly + vbExclamation End If End If End Sub Private Sub Command2_Click() End End Sub Private Sub Form_Activate() Text1.SetFocus End Sub Private Sub Form_Load() 'Me.Width = 8000 'Me.Height = 6000 Set db = New Connection db.CursorLocation = adUseClient db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=database.mdb;" Set rs = New Recordset End Sub Private Sub Form_Unload(Cancel As Integer) rs.Close Set rs = Nothing db.Close Set db = Nothing End Sub Private Sub Text1_GotFocus() Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text2.SetFocus End If End Sub Private Sub Text2_GotFocus() Text2.SelStart = 0 Text2.SelLength = Len(Text2.Text) End Sub Private Sub Text2_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Command1.SetFocus End If End Sub 7.5,、檔案的主界面 本系統(tǒng)采用MDI方式,,這是系統(tǒng)的所有窗口的父窗口,體統(tǒng)了系統(tǒng)的所有菜單等控制功能,。 檔案的主界面如下: Main.frm Private Sub dacz_Click() query.Show End Sub Private Sub dalr_Click() frm檔案.Show End Sub Private Sub datj_Click() tle.Show End Sub Private Sub guanyu_Click() frmAbout.Show End Sub Private Sub MDIForm_Load() StatusBar1.Panels(1).Text = Date Me.WindowState = 2 End Sub Private Sub ynghuxiugai_Click() edit.Show End Sub Private Sub zhuangtai_Click() If zhuangtai.Checked Then zhuangtai.Checked = False StatusBar1.Visible = False Else zhuangtai.Checked = True StatusBar1.Visible = True End If End Sub 7.6,、檔案的查詢,、預(yù)覽,、打印功能 本部分能夠提供對所需文件的按不同條件的查詢、預(yù)覽,、打印等功能,,利用了VB訪問數(shù)據(jù)庫ADO對象的強大功能,能夠?qū)崿F(xiàn)對所需文件的靈活查詢,,再利用VB內(nèi)置的數(shù)據(jù)報表功能,,實現(xiàn)對所需文件的預(yù)覽和打印,。 Query.frm Dim db As Connection Dim rs As Recordset Public tdata As String Private Sub Command1_Click() On Error GoTo er If rs.State=adStateOpen Then rs.Close rs.Open〝select * from 檔案 where〝 & Combol.Text & 〝=〝 & Text1.Text & 〝,db, adOpenStatic,adLockOptimistic Set DataGrid1.DataSource=rs DataGrid1.Refresh Exit Sub er: MsgBox 〝請?zhí)顚懞线m的查詢條件或確認(rèn)格式正確〝,vbOKOnly+vbQuestion End Sub Private Sub Command2_Click() On Error GoTo er If rs.State=adStateOpen Then rs.Close rs.Open 〝select * from 檔案 where 發(fā)文日期>=#〝 & Text2.text & 〝 and 發(fā)文日期<=#〝 & Text3.Test & 〝#〝,db,adOpenStatic,adLockOptimistic Set DataGrid1.DataSource=rs DataGrid1.Refresh Exit Sub er: MsgBox 〝請?zhí)顚懞线m的查詢條件或確認(rèn)格式正確〝,vbOKOnly+vbQuestion End Sub Private Sub Command3_Click() On Error GoTo er DataGrid1.Col=0 tdatat=DataGrid1.Test DataReport1.Show Exit Sub er: MsgBox〝請選擇要預(yù)覽的內(nèi)容〝,vbOKOnly + vbQuestion ‵MsgBox End Sub Private Sub Form_Load() ‵Me.Width=10000 ‵Me.Height=7000 Set db=New Commection Db.CursorLocation=adUseClient db.Open〝PROWIDER=Microsoft.Jet.OLEDB.3.51;Data Source=database.mdb; 〝 Set rs =New Recordset End Sub Private Sub Form_Unload(Cancel As Integer) If rs.State=adStateOpen Then rs.Close Set rs=Nothing db.Close Set db =Nothing End Sub Private Sub Option1_Click() qita.Visible=False riqi.Visible=True End Sub Private Sub Option2_Click() qita.Visible=True riqi.Visible=False End Sub ____________________________________________________________________ 7.7,、檔案的統(tǒng)計功能 本部分能夠準(zhǔn)確地統(tǒng)計出所錄入的檔案數(shù)目,,以便進(jìn)行檔案統(tǒng)計。 Totle.frm Private Sub Form_Load() Dim rs As Recordset Dim db As Connection Set db=New Connection db.CursorLocation=adUseClient db.Open 〝PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=database.mdb; 〝 Set rs=New Recordset rs.Open 〝檔案〝,db,adOpenStatic,1 Label1.Caption=〝本系統(tǒng)共收集檔案: 〝& rs.RecordCount &〝條檔案記錄〝 End Sub ____________________________________________________________________ 7.8,、檔案的報表 靈活運用了VB的數(shù)據(jù)報表功能,,實現(xiàn)了文件的預(yù)覽、打印,。 Datareport Dim db As Connection Dim rs As Recordset Private Sub DataReport_Initialize() Set db =New Connection Db.Cursor location=adUseClient db.Open 〝PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=database.mdb; 〝 Set rs = New Recordset rs.Open 〝select * from 檔案 where 編號=〝 & query.tdata,db,1,1 Set DataReport1.DataSource=rs End Sub 第八章 結(jié)束語 經(jīng)過一個多月的設(shè)計和開發(fā),,這套檔案管理系統(tǒng)已基本結(jié)束。主要能實現(xiàn)檔案的錄入,、修改,、查找、刪除,、統(tǒng)計,、查詢、預(yù)覽,、編輯,、打印、打印預(yù)覽,、取消,、刷新等功能,此外,,在程序中還設(shè)計了用戶登陸,,以確保本系統(tǒng)應(yīng)用的安全性。本管理系統(tǒng)設(shè)計合理,、界面美觀,、操作方便、運行穩(wěn)定,、功能完備,,為企業(yè)進(jìn)行現(xiàn)代化的檔案管理工作起到了重要作用。但是由于畢業(yè)設(shè)計時間較短,,所以該系統(tǒng)還有一些不盡人意的地方,,比如聯(lián)機文檔比較少,用戶界面不夠美觀等問題,,這些都有待進(jìn)一步改善,,敬請各位老師指正。 在本次畢業(yè)設(shè)計中,,我從指導(dǎo)老師周朋紅老師身上學(xué)到了很多東西,,周老師認(rèn)真負(fù)責(zé)的工作態(tài)度,、嚴(yán)謹(jǐn)治學(xué)的精神和深厚的理論水平都使我受益匪淺。無論在理論上還是在實踐中,,她都給予我很大的幫助,,使我的Visual Basic應(yīng)用水平得到了很大的提高,這對于我以后的工作和學(xué)習(xí)都有一種巨大的幫助,。 今后的工作中,,我一定要充分運用自己所學(xué)的計算機知識,并在工作中不斷學(xué)習(xí)和完善,,充分發(fā)揮一名計算機專業(yè)人員的作用,,為企業(yè)的騰飛和發(fā)展貢獻(xiàn)自己的力量。 附:主要參考文獻(xiàn) [1]Visual Basic 6.0使用指南 作者:Bob Reselman,, Richard Peasley ,, Warne Pruchniak。 出版社:電子工業(yè)出版社 [2]中文版Microsoft Office 97 自學(xué)通 作者:Ned Snell 出版社:機械工業(yè)出版社 [3]Visual Basic 6.0 中文版控件大全 作者:Microsoft 出版社:電子工業(yè)出版社 [4]中文Access 2000 24學(xué)時教程 作者:Craig Eddy,, Timothy Buchanan 出版社:機械工業(yè)出版社 [5]Vbsual Basic 6.0用戶編程手冊 作者:林永 張樂強 出版社:人民郵電出版社 [6]Visual Basic 6.X程序設(shè)計 作者:陳俊源 出版社:中國鐵道出版社 |
|