




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
源代碼庫管理系統(tǒng)-數(shù)據(jù)庫管理系統(tǒng)一計(jì)算機(jī)畢業(yè)設(shè)計(jì)(論文)源代碼庫管理系統(tǒng)摘要:源代碼庫管理系統(tǒng)是典型的信息管理系統(tǒng)(MIS),其開發(fā)主要包括后臺數(shù)據(jù)庫的建立和維護(hù)以及前端應(yīng)用程序的開發(fā)兩個方面。對于前者要求建立起數(shù)據(jù)一致性和完整性強(qiáng)、數(shù)據(jù)安全性好的庫。而對于后者則要求應(yīng)用程序功能完備,易使用等特點(diǎn)。因此本人結(jié)合開入式源代碼庫的要求,對MicrosoftAccess2000數(shù)據(jù)庫管理系統(tǒng)、SQL語言原理、VB應(yīng)用程序設(shè)計(jì)、VB數(shù)據(jù)庫技術(shù)進(jìn)行了較深入的學(xué)習(xí)和應(yīng)用,主要完成對源代碼庫管理系統(tǒng)的需求分析、功能模塊劃分、數(shù)據(jù)庫模式分析,并由此設(shè)計(jì)了數(shù)據(jù)庫結(jié)構(gòu)和應(yīng)用程序。系統(tǒng)運(yùn)行結(jié)果證明,本文所設(shè)計(jì)的源代碼庫管理系統(tǒng)可以滿足程序員管理源代碼的需要。第一章系統(tǒng)需求分析隨著科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)技術(shù)日漸成熟,其強(qiáng)大的功能已為人們深刻認(rèn)識,它已進(jìn)入人類社會的各個領(lǐng)域并發(fā)揮著越來越重要的作用。作為計(jì)算機(jī)應(yīng)用的一部分,使用計(jì)算機(jī)對各行業(yè)的各項(xiàng)信息進(jìn)行管理,具有著手工管理所無法比擬的優(yōu)點(diǎn)。數(shù)據(jù)庫管理系統(tǒng)(DBMS)是指數(shù)據(jù)庫系統(tǒng)中管理數(shù)據(jù)的軟件系統(tǒng)。DBMS是數(shù)據(jù)庫系統(tǒng)的核心組成部分。對數(shù)據(jù)庫的一切操作,包括定義、更新及各種控制,都是通過DBMS進(jìn)行的。DBMS總是基于某種數(shù)據(jù)模型,可以把DBMS看成是某種數(shù)據(jù)模型在計(jì)算機(jī)系統(tǒng)上的具體實(shí)現(xiàn)。根據(jù)數(shù)據(jù)模型的不同,DBMS可以分成層次型、網(wǎng)狀型、關(guān)系型、面向?qū)ο笮偷?。Access2000就是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。本系統(tǒng)是源代碼管理系統(tǒng),主要為程序員在管理源代碼上有更的工具?,F(xiàn)在程序語言有很多種,程序的源代碼更多。怎么才能更好的管理好這么多不同類型的源代碼。因此,開發(fā)這樣一套源代碼庫管理系統(tǒng)軟件成為很有必要的事情,在下面的各章中我們將就本次畢業(yè)設(shè)計(jì)我所開發(fā)的源代碼庫管理系統(tǒng),談?wù)勂溟_發(fā)過程和所涉及到的問題及解決方法。因此本人結(jié)合開入式源代碼庫的要求,對MicrosoftAccess2000數(shù)據(jù)庫管理系統(tǒng)、SQL語言原理、VB應(yīng)用程序設(shè)計(jì)、VB數(shù)據(jù)庫技術(shù)進(jìn)行了較深入的學(xué)習(xí)和應(yīng)用,主要完成對源代碼庫管理系統(tǒng)的需求分析、功能模塊劃分、數(shù)據(jù)庫模式分析,并由此設(shè)計(jì)了數(shù)據(jù)庫結(jié)構(gòu)和應(yīng)用程序。第二章數(shù)據(jù)庫和開發(fā)語言介紹源代碼庫管理系統(tǒng)采用的數(shù)據(jù)庫是MicrosoftAccess2000數(shù)據(jù)庫,開發(fā)語言為MicrosoftVisualBasic6.0(簡稱VB6.0)。VB6.0作為前臺的開發(fā)工具,用ACCESS2000作為后臺支持?jǐn)?shù)據(jù)庫,通過VB6.0的數(shù)據(jù)庫控件來連接ACCESS2000中并對其編程來實(shí)現(xiàn)各種功能。因?yàn)锳CCESS與VisualBasic用的同為MicrosoftJet數(shù)據(jù)庫引擎,有著最好的兼容性。第一節(jié)Access數(shù)據(jù)庫介紹過去的一些數(shù)據(jù)庫軟件,在操作上、數(shù)據(jù)庫建立、維護(hù)等等,都相當(dāng)復(fù)雜且不易使用,但是在具備了窗口的GUI(圖形用戶界面)特性的ACCESS數(shù)據(jù)庫推出之后,數(shù)據(jù)庫的建立不再是困難的事情,我們可以在PC上簡單而快速的建立出一套符合自己的數(shù)據(jù)庫。不但如此,在ACCESS2000推出以后,我們發(fā)現(xiàn)數(shù)據(jù)庫的建立更加的快速,但是功能卻更加強(qiáng)大,用戶不用再去記憶那一大堆的文件名稱,或是為數(shù)據(jù)庫的文件管理大費(fèi)周章,通過ACCESS的人性化管理接口把數(shù)據(jù)庫的管理整理,便于維護(hù);此外,在報表的制作上也是相當(dāng)容易的,完全的視覺開發(fā)向?qū)гO(shè)計(jì),讓人使用起來很舒服。但是美中不足的是ACCESS對于主從式結(jié)構(gòu)的安全性管理不足,由于ACCESS可以快速的通過ODBC連接到數(shù)據(jù)庫服務(wù)器上(DatabaseServer),并瀏覽所有表格或是相關(guān)對象轉(zhuǎn)成HTML基本上,ACCESS對建立一個數(shù)據(jù)庫所具備的每一個對象,其中包括了表、查詢、窗體、報表、宏、模塊。其功能分別敘述如下:,表對象打開已經(jīng)存在的表格、對已存在的表格字段數(shù)據(jù)進(jìn)行修改、新建表格。,查詢對象可以用直接拖放的方式,建立表格之間的關(guān)聯(lián)與對應(yīng)關(guān)系,自動產(chǎn)生SQL語法查詢出我們想要的數(shù)據(jù)。,窗體設(shè)計(jì)對象可以設(shè)計(jì)用戶接口,用來輸入并處理數(shù)據(jù)。,報表對象利用視圖向?qū)У拈_發(fā)方式,簡單、快速的建立出需求報表或標(biāo)簽。,宏對象提供許多的宏功能,您可以把這樣的宏連接到窗體設(shè)計(jì)中的任一個對象,以達(dá)成一些復(fù)雜的功能。,模塊對象撰寫VB的程序模塊,處理較復(fù)雜的問題與需求,該功能是采用事件驅(qū)動的模式,類似VB的處理方式。第二節(jié)VB概述VisualBasic的前身是QBASIC,語言基礎(chǔ)是BASIC。自從微軟推出VB后,便成為了程序開發(fā)人員的首選工具。據(jù)統(tǒng)計(jì),僅在數(shù)據(jù)庫系統(tǒng)開發(fā)領(lǐng)域,VB就占了90,的份額。VB是基于對象的可視化程序開發(fā)工具,它的優(yōu)點(diǎn)在于能夠快捷、簡易地建立Windows應(yīng)用程序。1998年8月,微軟推出7VB6.0的版本,進(jìn)一步加強(qiáng)了部件開發(fā)的功能。以適用人員來分,可有以下三個版本:標(biāo)準(zhǔn)版針對一般程序設(shè)計(jì)人員,適合普通應(yīng)用系統(tǒng)的開發(fā)。專業(yè)版針對專業(yè)程序開發(fā)人員,它在標(biāo)準(zhǔn)版的基礎(chǔ)上提供了對數(shù)據(jù)庫和Internet的支持。企業(yè)版適用于專為企業(yè)設(shè)計(jì)應(yīng)用軟件的程序開發(fā)人員。使用VB不需要追求完美的算法和精密的邏輯,而只要充分發(fā)揮你的想象力和創(chuàng)造力,就能利用VB開發(fā)出各種實(shí)用的軟件了,不論是小游戲還是大型的客戶端/服務(wù)器端應(yīng)用程序,都變得非常簡單??梢暬幊痰囊粋€突出特點(diǎn)就是其開發(fā)環(huán)境就像一個百寶箱,很多功能都集成在其之中,這就是IDE(IntegratedDevelopmentEnvironment),即集成開發(fā)環(huán)境°IDE是指在相應(yīng)的開發(fā)平臺中集成了編輯器、編譯連接工具、控件器箱輔助工具。例如在VB的集成開發(fā)環(huán)境中就包括了以下一些主要元素:工具欄、工具箱、工程管理器窗口、屬性窗口、窗體設(shè)計(jì)器、代碼編輯器窗口等;和VB類似,Delphi的IDE中具有主控制窗體、對象查看窗口和窗體設(shè)計(jì)器。同時IDE的設(shè)置是很靈活的,開發(fā)人員可以按照自己的編程習(xí)慣來配置IDE。從簡單的文本文件到各種復(fù)雜的關(guān)系型數(shù)據(jù)庫,數(shù)據(jù)庫應(yīng)用程序需要面對各種各樣的數(shù)據(jù)源。Visualbasic6.0提供ADO(ActiveDataObjects)作為應(yīng)用程序和OLE-DB連接的橋梁ADO,即Active數(shù)據(jù)對象(ActiveDataObjects):實(shí)際是一種提供訪問各種數(shù)據(jù)類型的連接機(jī)制。ADO設(shè)計(jì)為一種極簡單的格式,通過ODBC的方法同數(shù)據(jù)庫接口相連。用戶可以使用任何一種ODBC數(shù)據(jù)源,即不僅適合于SQLServer、Oracle、Access等數(shù)據(jù)庫應(yīng)用程序,也適合于Excel表格、文本文件、圖形文件和無格式的數(shù)據(jù)文件。ADO是基于OLE-DB之上的技術(shù),因此ADO通過其內(nèi)部的屬性和方法提供統(tǒng)一的數(shù)據(jù)訪問接口方法。本系統(tǒng)就是用ADO對象來連接數(shù)據(jù)庫的。下一節(jié)專門介紹ADO。Microsoft在VisualBasic6.0以后的版本都集成了ADO。它與以前VisualBasic的DAO、RDO相比有了很大的提高。DAO(DataAccessObjects)即數(shù)據(jù)訪問對象,是一種面向?qū)ο蟮慕缑娼涌凇Mㄟ^DAO/Jet功能可以訪問ISAM數(shù)據(jù)庫,使用DAO/ODBCDirect功能可以實(shí)現(xiàn)遠(yuǎn)程RDO功能。RDO(RemoteDataObjects)即遠(yuǎn)程數(shù)據(jù)對象,為使用代碼來創(chuàng)建和操作一個遠(yuǎn)程ODBC數(shù)據(jù)庫系統(tǒng)的各個部件提供了一個框架。RDO是ODBCAPI的一個淺層界面接口,是專為訪問遠(yuǎn)程ODBC關(guān)系數(shù)據(jù)源而設(shè)計(jì)的。第三節(jié)數(shù)組數(shù)組是一種比較特殊的數(shù)據(jù)類型,也是編寫程序很重要的一種數(shù)據(jù)結(jié)構(gòu)。當(dāng)一系列有相同類型的數(shù)據(jù)需要存儲到變量中時,可以使用數(shù)組存儲,用一個統(tǒng)一的變量名稱加上一個索引值來存取數(shù)據(jù)。使用數(shù)組可以縮短程序代碼、提高程序的可讀性和執(zhí)行效率。數(shù)組的聲明和一般變量類似,不同的是聲明定長數(shù)組時要給出指定的大小或上、下界。聲明格式如下:Dim數(shù)組名稱(大小)[as數(shù)據(jù)類型]或者:Dim數(shù)組名稱(下界to上界)[as數(shù)據(jù)類型]用Dim語句聲明的數(shù)據(jù)變量為局部變量,如果要聲明靜態(tài)變量、模塊級的變量或公用數(shù)組變量,只把聲明關(guān)鍵字“Dim”分別改成“Static”、“Private”、“Public”即可。例如:DimIntegerArray(99)AsInteger這個數(shù)組中包含100個元素,腳標(biāo)從0到99。也可以指定腳標(biāo)的起始值,例如:DimIntegerArray(2to10)AsInteger這個數(shù)組含有九個元素,腳標(biāo)從2到10。前面所舉的例子為一維數(shù)組,還可以定義多維數(shù)組:DimThreeD(4,2to5,3to6)AsInteger定義了一個三維數(shù)組(4X4X4)。創(chuàng)建n維數(shù)組格式如下(動態(tài)分配數(shù)組):Dim數(shù)組名稱()[as數(shù)據(jù)類型]ReDim數(shù)組名稱(第1維大小,第2維大小,……,第n維大小)第四節(jié)循環(huán)語句循環(huán)結(jié)構(gòu)是計(jì)算機(jī)語言里一種重要的結(jié)構(gòu),它的應(yīng)用廣泛,最簡單的例子是累加器的作用,還可以用于窮舉法,更直觀的例子是把某件事重復(fù)指定的次數(shù),這樣就不用把要重復(fù)的語句輸入多次,而通過循環(huán)結(jié)構(gòu)完成,非常方便。VB里也有一Forll關(guān)鍵字,只是VB的一Forll語句更容易理解。一Forll的格式是:For〈循環(huán)變量>=<初賦值〉To〈終值〉[Step〈步長〉]Next〈循環(huán)變量〉在默認(rèn)情況下,Step被設(shè)為一111,可以省略,Step也可以設(shè)為負(fù)值,例如:Dima=0ForI=1To10a=a+INextI這是一個最簡單的累加器的例子,把1到10累加在一起,然后賦值給一all這樣的效果和上面是一樣的,只不過是倒著加罷了,請看:Dima=0ForI=10To1Step-1a=a+INextIWhile語句也是一個很常用的循環(huán)語句,它的形式很多。DoWhile Loop 語句While……Wend語句Do LoopWhileWhile后面都跟邏輯條件判斷,一DoWhile……Loop語句l和一While……Wend語句l作用相似,都是先判斷While后面的條件是否為一真II,如果為一真I則執(zhí)行里面的語句,如果為一假I,則退出循環(huán),循環(huán)直至條件為一假I終止。-Do……LoopWhileI與前兩者的區(qū)別在于,它不管條件的真假,都會先執(zhí)行-Doh后面的語句,也就是說,它至少執(zhí)行語句一次。與While用法相似的還有Until語句,它是直至條件為真則終止循環(huán),句式把While上述三個語句的While換成Until即可,但是因?yàn)槿菀子浕?,所以我建議只用While即可。Until〈條件〉可以相當(dāng)于WhileNot〈條件>。For循環(huán)和Whlie循環(huán)應(yīng)當(dāng)根據(jù)適當(dāng)?shù)沫h(huán)境使用,它們有時也可替換。第五節(jié)過程與函數(shù)函數(shù)與過程有許多相似的地方,它們之間最大也是最本質(zhì)的區(qū)別就在于,函數(shù)有一個返回值,而過程只是執(zhí)行一系列動作,所以可以簡單的把函數(shù)理解成為一個變量,而VB中的每個事件都是一個過程,比如Command1_Click()就是一個過程。因?yàn)樵诔绦蛟O(shè)計(jì)中經(jīng)常會有重復(fù)的地方,所以把它做成一個函數(shù)或一個過程,在使用時進(jìn)行調(diào)用,可以節(jié)省大量的輸入代碼的時間,而且使用函數(shù)和過程也便于程序的結(jié)構(gòu)化和修改查看。函數(shù)和過程都可以有參數(shù),也可以沒有參數(shù)。在VB里通用過程分兩類,一類是Sub過程(子過程),另一類是Function過程(簡稱函數(shù))。Sub過程的定義格式如下:[public][Private][Static]Sub過程名稱(參數(shù))EndSubSub過程的調(diào)用很簡單:Call過程名稱(參數(shù))。Function過程的定義和Sub相似。就是多了一個返回值的類型。[public][Private][Static]Function過程名稱(參數(shù))as類型EndFunctionFunction過程的調(diào)用格式如下:DimA$A二過程名稱(參數(shù))第六節(jié)ADO對象ADO是Microsoft公司關(guān)于各種類型數(shù)據(jù)的高等界面,后來逐漸演變成滿足所有數(shù)據(jù)訪問需要的完整解決辦法。ADO的對象模型是所有數(shù)據(jù)訪問接口對象模型中最簡單的一種。Microsoft公司用來訪問ADO數(shù)據(jù)的應(yīng)用程序界面技術(shù)是OLEDB。OLEDB是一種底層編程接口,用來訪問許多不同類型的數(shù)據(jù)源,其中包括消息、文件系統(tǒng)以及其他一些非傳統(tǒng)的數(shù)據(jù)源。OLEDB是一個由ComponentObjectModel(COM)接口組成的集合,用來隱藏創(chuàng)建數(shù)據(jù)訪問服務(wù)過程中的細(xì)節(jié)。OLEDB提供了訪問任何數(shù)據(jù)資源的方法,包括相互關(guān)聯(lián)的數(shù)據(jù)庫和相互不關(guān)聯(lián)的數(shù)據(jù)庫、Email和文件系統(tǒng)、文本和圖形以及用戶定義的數(shù)據(jù)對象。以下是本程序中用到的對象:Connection對象:通過一連接II可從應(yīng)用程序訪問數(shù)據(jù)源,連接是交換數(shù)據(jù)所必需的環(huán)境。對象模型使用Connection對象使連接概念得以具體。Recordset對象:表示的是來自基本表或命令執(zhí)行結(jié)果的記錄全集。Recordset對象可支持兩類更新:立即更新和批更新。使用立即更新,一旦調(diào)用Update方法,對數(shù)據(jù)的所有更改將被立即寫入基本數(shù)據(jù)源。也可以使用AddNew和Update方法將值的數(shù)組作為參數(shù)傳遞,同時更新記錄的若干字段。Field對象:代表使用普通數(shù)據(jù)類型的數(shù)據(jù)的列。Recordset對象含有由Field對象組成的Fields集合。每個Field對象對應(yīng)于Recordset中的一列。使用Field對象的Value屬性可設(shè)置或返回當(dāng)前記錄的數(shù)據(jù)。以下是本程序中用到的方法:AddNew方法:創(chuàng)建可更新Recordset對象的新記錄。MoveFirst、MoveLast、MoveNext和MovePrevious方法:在指定Recordset
對象中移動到第一個、最后一個、下一個或前一個記錄并使該記錄成為當(dāng)前記錄。Open方法(ADOConnection):打開到數(shù)據(jù)源的連接。Open方法(ADORecordset):打開記錄集。Close方法:關(guān)閉打開的對象及任何相關(guān)對象。Execute方法:執(zhí)行指定的查詢、SQL語句、存儲過程或特定提供者的文本等內(nèi)容。第三章系統(tǒng)設(shè)計(jì)第一節(jié)系統(tǒng)功能分析源代碼庫管理系統(tǒng)是為了對源代碼實(shí)行計(jì)算機(jī)化的管理,以提高工作效率,方便程序員。主要功能有對源代碼、源代碼類型等進(jìn)行管理和基本資料管理以及對系統(tǒng)自身的用戶權(quán)限管理。提供各種源代碼信息的錄入、修改、查詢、刪除等功能。而且還包含了對查詢情況的模糊功能。系統(tǒng)管理主要任務(wù)是提高系統(tǒng)安全性和對系統(tǒng)提供良好的維護(hù),如用戶權(quán)限可以為用戶提供權(quán)限服務(wù)。源代碼庫管理系統(tǒng)是基于SSTab選項(xiàng)窗體,以VB自帶的JET引擎連接Access2000數(shù)據(jù)庫進(jìn)行開發(fā)的,力求與用戶相結(jié)合滿足程序員所要的功能,旨在達(dá)到使源代碼管理和信息數(shù)字化,使之更加方便快捷以提高工作效率。1、 登錄系統(tǒng)管理主要包括:系統(tǒng)登錄分管理員和普通用戶登錄。2、 基本資料管理主要包括:源代碼管理模塊包括:顯示添加修改刪除查詢等。代碼內(nèi)容的自動加載:可以輸入,也可以復(fù)制,剪切,粘貼,全選等。3、 設(shè)置管理主要包括:源代碼類型模塊包括:顯示添加、刪除、查詢等。系統(tǒng)自帶一部分,可以用戶自己定義源代碼類型。添加用戶模塊包括:為系統(tǒng)新用戶設(shè)置用戶名及口令。修改密碼模塊包括:用于操作員更改自己的系統(tǒng)口令。第二節(jié)系統(tǒng)結(jié)構(gòu)設(shè)計(jì)1、登錄系統(tǒng)功能模塊結(jié)構(gòu)流程圖:如圖3-1。修改Admin用戶的密系碼統(tǒng)Admin用戶用戶信息創(chuàng)建修改和刪除普通用戶信息普通用戶修改自身的用戶名和密碼圖3-1登錄系統(tǒng)功能模塊結(jié)構(gòu)2、 基本資料模塊結(jié)構(gòu)流程圖:如圖3-2?;举Y料系統(tǒng)源代碼內(nèi)容人工操作自動加載圖3-2基本資料模塊結(jié)構(gòu)圖3、 設(shè)置管理模塊結(jié)構(gòu)流程圖:如圖3-3。設(shè)置管理模塊用戶代碼類型修改密碼添加刪除圖3-3設(shè)置管理模塊結(jié)構(gòu)圖4、 系統(tǒng)總流程圖:如圖3-4。Admin開始用戶登錄提示出錯成功讀取用戶類型普通用戶用戶主界面主界面檢基設(shè)置索本管系資理統(tǒng)料圖3-4系統(tǒng)流程圖第四節(jié)數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)庫設(shè)計(jì)主要是進(jìn)行數(shù)據(jù)庫的邏輯設(shè)計(jì),即將數(shù)據(jù)按一定的分類、分組系統(tǒng)和邏輯層次組織起來,是面向用戶的。數(shù)據(jù)庫設(shè)計(jì)時需要綜合企業(yè)各個部門的存檔數(shù)據(jù)和數(shù)據(jù)需求,分析各個數(shù)據(jù)之間的關(guān)系,按照DBMS提供的功能和描述工具,設(shè)計(jì)出規(guī)模適當(dāng)、正確反映數(shù)據(jù)關(guān)系、數(shù)據(jù)冗余少、存取效率高、能滿足多種查詢要求的數(shù)據(jù)模型。數(shù)據(jù)庫設(shè)計(jì)的步驟是:1、數(shù)據(jù)庫結(jié)構(gòu)定義:目前的數(shù)據(jù)庫管理系統(tǒng)(DBMS)有的是支持聯(lián)機(jī)事務(wù)處理CLTP(負(fù)責(zé)對事務(wù)數(shù)據(jù)進(jìn)行采集、處理、存儲)的操作型DBMS,有的可支持?jǐn)?shù)據(jù)倉庫、有聯(lián)機(jī)分析處理CLAP(指為支持決策的制定對數(shù)據(jù)的一種加工操作)功能的大型DBMS,有的數(shù)據(jù)庫是關(guān)系型的、有的可支持面向?qū)ο髷?shù)據(jù)庫。針對選擇的DBMS,進(jìn)行數(shù)據(jù)庫結(jié)構(gòu)定義。2、數(shù)據(jù)表定義:數(shù)據(jù)表定義指定義數(shù)據(jù)庫中數(shù)據(jù)表的結(jié)構(gòu),數(shù)據(jù)表的邏輯結(jié)構(gòu)包括:屬性名稱、類型、表示形式、缺省值、校驗(yàn)規(guī)則、是否關(guān)鍵字、可否為空等。關(guān)系型數(shù)據(jù)庫要盡量按關(guān)系規(guī)范化要求進(jìn)行數(shù)據(jù)庫設(shè)計(jì),但為使效率高,規(guī)范化程度應(yīng)根據(jù)應(yīng)用環(huán)境和條件來決定。數(shù)據(jù)表設(shè)計(jì)不僅要滿足數(shù)據(jù)存儲的要求,還要增加一些如反映有關(guān)信息、操作責(zé)任、中間數(shù)據(jù)的字段或臨時數(shù)據(jù)表。3、 存儲設(shè)備和存儲空間組織:確定數(shù)據(jù)的存放地點(diǎn)、存儲路徑、存儲設(shè)備等,備份方案,對多版本如何保證一致性和數(shù)據(jù)的完整性。4、 數(shù)據(jù)使用權(quán)限設(shè)置:針對用戶的不同使用要求,確定數(shù)據(jù)的用戶使用權(quán)限,確保數(shù)據(jù)安全。5、 數(shù)據(jù)字典設(shè)計(jì):用數(shù)據(jù)字典描述數(shù)據(jù)庫的設(shè)計(jì),便于維護(hù)和修改。為了更好地組織數(shù)據(jù)和設(shè)計(jì)出實(shí)際應(yīng)用數(shù)據(jù)庫,應(yīng)該注意如下問題:規(guī)范化地重組數(shù)據(jù)結(jié)構(gòu):對數(shù)據(jù)進(jìn)行規(guī)范化表達(dá),這在后面將會具體討論。6、 關(guān)系數(shù)據(jù)結(jié)構(gòu)的建立:在進(jìn)行了數(shù)據(jù)基本結(jié)構(gòu)的規(guī)范化重組后,還必須建立整體數(shù)據(jù)的關(guān)系結(jié)構(gòu)。這一步設(shè)計(jì)完成后數(shù)據(jù)庫和數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)工作基本完成,只待系統(tǒng)實(shí)現(xiàn)時將數(shù)據(jù)分析和數(shù)據(jù)字典的內(nèi)容代入到所設(shè)計(jì)的數(shù)據(jù)整體關(guān)系結(jié)構(gòu)中,一個規(guī)范化數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)就建立起來了。第五節(jié)數(shù)據(jù)表的結(jié)構(gòu)設(shè)計(jì)根據(jù)系統(tǒng)需求分析和功能設(shè)計(jì),在數(shù)據(jù)庫創(chuàng)建以下幾個表:user_info、源代碼表、代碼類型表。表結(jié)構(gòu)如下:user_info表:主要記錄用戶名和密碼的功能。如表3-5。字段名稱字段類型說明姓名文本主鍵密碼文本表3-5user_info表代碼類型表:是記錄源代碼類型的功能。如表3-6。字段名稱字段類型說明代碼類型文本主鍵表3-6代碼類型表源代碼表:主要是記錄源代碼信息的功能。表3-7源代碼表。字段名稱字段類型說明ID自動編號主鍵代碼標(biāo)題文本代碼類型文本代碼內(nèi)容備注代碼功能文本備注文本表3-7源代碼表第四章應(yīng)用程序的開發(fā)應(yīng)用程序是用VB開發(fā)的,界面設(shè)計(jì)的簡單明了。根據(jù)需求分析和功能設(shè)計(jì),系統(tǒng)應(yīng)用程序分為四大模塊:登錄模塊、信息管理、信息檢索、設(shè)置管理四個模塊。第一節(jié)登錄模塊的開發(fā)登錄界面是用戶最先看到的系統(tǒng)的界面,所以直觀上給用戶的感覺很重要,所以做一個好的界面,提高軟件的親和力。本管理系統(tǒng)登錄界面如圖4-1。?,疆我瑪博茜程派弦登錄官口& 用牌耕 |箜 -用戶酷辱!]服捐|圖4-1登錄界面根據(jù)登錄模塊的功能,管理員和普通用戶界面統(tǒng)一在一起。系統(tǒng)自動判斷用戶的要權(quán)限。管理員有所有的權(quán)限,普通用戶只有檢索和改本人的密碼權(quán)。初始管理員密碼為admin。管理員密碼存放在機(jī)子的注冊表中,位置在:HKEY_CURRENT_USER\Software\VBandVBAProgramSettings\X?1\Settings\syspassword項(xiàng)連接數(shù)據(jù)庫采用ADO對象(引用Ado)。引擎采用Microsoft.Jet.OLEDB.4.0來連接Access2000數(shù)據(jù)庫。連接代碼如下:IfCN.StateThenCN.CloseCN.ConnectionString="Provider二SQLOLEDB.1;IntegratedSecurity二SSPI;PersistSecurityInfo=False;UserID=sa"CN.Properties("initialcatalog").Value="xxmis"CN.Open詳細(xì)代碼實(shí)現(xiàn)請參考附錄程序源代碼。第二節(jié)主界面的開發(fā)根據(jù)源代碼庫管理系統(tǒng)的功能和需求,要求界面明了、簡單、直觀如圖4-2。,.l=l3J源代碼原管理系統(tǒng)VL0工具欄?,.l=l3J源代碼原管理系統(tǒng)VL0工具欄?涅世FK辯身黑韭口[上牛珊異L-bIdTir-JicrJ.ic-L下拉區(qū)列表區(qū)顯示區(qū)圖4-2主界面主界面由工具欄、下拉區(qū)、列表區(qū)、顯示區(qū)四部分組成。工具欄主要管理、輸出、設(shè)置、關(guān)于、退出按鈕。另外,在主界面最下邊是狀態(tài)欄。工具欄是VB中的Toolbar控件和imageList控件。下拉區(qū)是VB中的combobox控件和textbox控件。列表區(qū)是VB中的ListBox和SSTab選項(xiàng)窗體。顯示區(qū)是RichTextbox控件。狀態(tài)欄是StatusBar控件。各控件之間的位置關(guān)系代碼如下:SubSizeControls(xAsSingle)'設(shè)置Width屬性Ifx<1500Thenx=1500Ifx>(Me.Width-1500)Thenx=Me.Width-1500SSTabl.Width=ximgSplitter.Left=xIvListView.Left=x+40lvListView.Width=Me.Width-(SSTab1.Width+140)IfSSTab1.Tab=0ThenCombo1.Width=SSTab1.Width-Combo1.Left-Combo1.LeftList1.Width=Combo1.WidthText1.Width=Combo1.WidthList2.Width=Combo1.WidthElseText1.Width=SSTab1.Width-Text1.Left-Text1.LeftList1.Width=Text1.WidthCombol.Width=Textl.WidthList2.Width=Textl.WidthEndIf'設(shè)置Top屬性SSTab1.Top=picTitles.HeightlvListView.Top=SSTab1.TopText1.Top=Combo1.Top'設(shè)置height屬性IfsbStatusBar.VisibleThenSSTab1.Height=Me.ScaleHeight-(picTitles.Top+picTitles.Height+sbStatusBar.Height)ElseSSTab1.Height=Me.ScaleHeight-(picTitles.Top+picTitles.Height)EndIfList1.Height=SSTab1.Height-Combo1.Top-780List2.Height=List1.HeightlvListView.Height=SSTab1.HeightimgSplitter.Top=SSTab1.TopimgSplitter.Height=SSTab1.HeightEndSub詳細(xì)代碼實(shí)現(xiàn)請參考附錄程序源代碼。第三節(jié)源代碼管理界面的開發(fā)在主界面如圖4-2上,在工具欄上點(diǎn)管理按鈕。如果是管理員用戶就進(jìn)入了管理界面。如圖4-3所示。如果是普通用戶,提示沒有權(quán)限。代碼實(shí)現(xiàn)請參考附錄程序源代碼。圖4-3管理界面先介紹在圖4-3中,各按鈕的功能:<<:移動到第一條記錄。<:移動到上一條記錄。>:移動到下一條記錄。>>:移動最后一條記錄。添加:是添加一新的記錄。刪除:是刪除當(dāng)前的記錄。保存:是在添加和修改記錄后,保存記錄。修改:沒有修改按鈕,在移動到要修改的記錄,直接修改。點(diǎn)保存后就修改完畢。打開:是打開一個txt文件到代碼內(nèi)容里。此界面不支持右鍵功能,但支持鍵盤的復(fù)制、粘貼等功能。復(fù)制:選中代碼內(nèi)容,之后按CTRL+C,復(fù)制完畢。粘貼:在要粘貼的位置,按CTRL+V,粘貼完畢。注意:自動ID字段是數(shù)據(jù)庫自動生成的,人為是不能改變的。如何添加代碼:點(diǎn)添加按鈕,在代碼標(biāo)題輸入代碼標(biāo)題,選擇代碼類型,輸入代碼內(nèi)容,
備注可以不輸入。之后點(diǎn)保存,就提示保存成功,如圖4-4。如何刪除代碼:可以用移動到你要刪除的代碼,直接刪除。系統(tǒng)有提示。如圖4-5。圖4-4保存成功圖4-5刪除提示如何打開已有的代碼內(nèi)容:點(diǎn)打開按鈕,出現(xiàn)如圖4-6所示打開你的代碼文件,在代碼內(nèi)容中就出現(xiàn)你打開的文件內(nèi)容。圖4-6打開提示第四節(jié)設(shè)置管理的開發(fā)在主界面(圖4-2)上點(diǎn)設(shè)置,如果是管理員用戶進(jìn)入系統(tǒng)設(shè)置,如圖4-7所示。在系統(tǒng)設(shè)置里可以對代碼類型和管理員密碼、用戶進(jìn)行管理。
圖4-7系統(tǒng)設(shè)置在代碼類型中可以添加代碼類型。也可以刪除代碼類型。系統(tǒng)管理按鈕是對管理員密碼和用戶進(jìn)行管理。如圖4-8。圖4-8系統(tǒng)管理界面添加用戶:輸入用戶名稱,設(shè)置好用戶原始密碼,點(diǎn)添加。刪除用戶:在用戶名稱中選擇要刪除的用戶,點(diǎn)刪除按鈕。管理員密碼修改:輸入舊密碼,輸入新密碼和新密碼核實(shí)。點(diǎn)修改按鈕。代碼實(shí)現(xiàn)請參考附錄程序源代碼。第五節(jié)信息檢索的開發(fā)信息檢索是源代碼管理系統(tǒng)一個重要的功能,也是必須的功能。在主界面圖4-2上列表區(qū)下邊有,功能檢索和標(biāo)題檢索。支持這兩種檢索。標(biāo)題檢索是全部的分類源代碼都可以在列表中顯示,也可以輸入關(guān)鍵字,模糊查詢。功能檢索是輸入關(guān)鍵字,列表中出現(xiàn)合適的代碼標(biāo)題。如圖4-9。L*片高用生血.4源代瑪庫管理系統(tǒng)丫1.0L*片高用生血.4源代瑪庫管理系統(tǒng)丫1.0E軍:有:氏蜀JKBfi!城直枝削 ^.£8:;佗3WPmS:M6-4-5一皿志?: 七F1Hi-fiCCcinr11):襯豆甫都癡:Jtsit已垣萬:2仁步壅..T坤MI述:昌K委都口—TR宓靠衰碧送一頂基&廣決更所右口]脫才■c: 描出樸之坦隼八垂目杜也搖松袖用袖心臥口昱垢由洲君前弟可〃制*氐用白例話『jfMOWH--,k3.JJD-擊矛某璋Tn單3:渣也霎同艱】基僵田W嘰8-^ Wffl,券清或害案約葉_■15妥注色用來!蜓成I教-和-階畫史H至就值■a£用登Jrt亟整產(chǎn)生口葉江.斑]FEBJ郵件81髭凹P折IT位上盛宇肯用也,J.L日-如上L私演03T理闿如出先.才如便閉知11果現(xiàn)日用仙心心I如冊成*旬腿I境¥珈扒瞄,整%a:〔L只I叩條樣坦個魅也做.宗3.4fSf5Tj6I-F十&i w做切[I沖■立M斗十強(qiáng)荏拓r化:|中』????■?TtEM在怡抽施頑以注心咋皇一個史虜偵云秋中,代網(wǎng)。卞!E^blicSnl■^-TJpmt□國、40T-ljCOjMZl:ttcpv=.wtn[1ismmm整 zJiMBD:1DU3:§圖4-9信息檢索操作方法:在圖4-9中,輸入關(guān)鍵字,回車,在下邊列表中就出現(xiàn)所有符合條件的標(biāo)題。點(diǎn)選你想要的標(biāo)題。在顯示區(qū)就出現(xiàn)代碼內(nèi)容。本方法用的SQL語句中的模糊檢索like。只要標(biāo)題中包含你要檢索的關(guān)鍵字都是合法記錄。代碼實(shí)現(xiàn)請參考附錄程序源代碼。第六節(jié)程序其他功能的開發(fā)本管理系統(tǒng)中其他功能有右鍵、關(guān)于、輸出的功能開發(fā)。右鍵有復(fù)制、粘貼、剪切、全選菜單。如圖4-10。圖4-10右鍵
圖4-11關(guān)于輸出功能是輸出顯示區(qū)的內(nèi)容為txt文件。點(diǎn)上輸出按鈕。出現(xiàn)如圖4-12保存對話框,輸入名稱,保存,完畢。代碼實(shí)現(xiàn)請參考附錄程序源代碼。圖4-12保存第七節(jié)打包應(yīng)用程序程序的打包采用VB自帶的打包工具。打開VB打包向?qū)?。如圖4-24。選擇要打包的工程。點(diǎn)打包,如圖4-25。選擇標(biāo)準(zhǔn)包,下一步。如圖4-26。進(jìn)入打包文件夾選擇。如圖4-27。選擇好,再點(diǎn)下一步。一直下一步,只到如圖4-28.點(diǎn)完成。這樣,程序打包工作就完成了。程序的發(fā)布,是用很打好的安裝包,來在用戶的機(jī)子上安裝本程序。直接點(diǎn)setup.exe就可以。一般安裝都是默認(rèn)安裝。就可以在用戶的機(jī)子上安裝上本系統(tǒng)。中,此戔行包魅R盤mel#月包和健并強(qiáng)導(dǎo)中,此戔行包魅R盤mel#月包和健并強(qiáng)導(dǎo)訴\它土重工程1血圖4-24打包界面圖4-25選擇類型圖4-26打包文件夾圖4-28完成結(jié)論和謝詞經(jīng)歷了幾個月的時間,經(jīng)過這幾個月的努力,這個系統(tǒng)總算是完成了。顯然這個系統(tǒng)還是有很多不成熟、不完善的地方。由于時間和能力有限本系統(tǒng)只完成了基本的功能部分,一些真正實(shí)用的外圍功能還來不及完善特別是打印信息這部分沒法實(shí)現(xiàn),美工方面也不夠漂亮。但這畢竟是自己獨(dú)立完成的第一個運(yùn)行正常的系統(tǒng),從敝帚自珍的角度來講,還是頗覺欣慰的。系統(tǒng)的實(shí)現(xiàn),將減輕程序人員的負(fù)擔(dān)。并能為程序人員的提供信息支持。感謝。。。。。。。。。最后,懇請各位評審老師不吝賜教,多提寶貴意見。參考文獻(xiàn)1、 王小茹等.VisualBasic6.0實(shí)例解析.北京大學(xué)出版社.20002、 王建華等譯.VisualBasic6開發(fā)人員指南.機(jī)械工業(yè)出版社.19993、北京博彥科技發(fā)展有限責(zé)任公司.VisualBasic編程高手.北京大學(xué)出版社.20004、附錄程序源代碼:frmLogin模塊源代碼:'記錄確定次數(shù)DimmiCountAsIntegerPrivateSubCommand1_Click()''登錄OnErrorGoToErrDimtxtsqlAsStringUserName=〃〃IfTrim(txtUserName.Text=〃〃)ThenMsgBox〃請重新輸入用戶名?〃,vbOKOnly+vbExclamation,〃警告〃txtUserName.SetFocusElseDimsysPasswordAsStringsysPassword=GetSetting(App.Title,"Settings","syspassword”,"admin")IfTrim(txtUserName.Text)="admin"AndTrim(txtPassword.Text)=sysPasswordThen'''管理員進(jìn)入UserName=txtUserName.Text'初始化系統(tǒng)Ok=TrueUnloadMefrmMain.ShowElselfTrim(txtUserName.Text)<>"admin"Thentxtsql="select*fromuser_Infowhere姓名='"&txtUserName.Text&"'”Ifrs.StateThenrs.Closers.Opentxtsql,CN,adOpenStatic,adLockOptimisticIfrs.EOF=TrueThenMsgBox”沒有這個用戶,請重新輸入用戶名!",vbOKOnly+vbExclamation,”警告”txtUserName.SetFocusElseIfTrim(rs.Fields(1))=Trim(txtPassword.Text)Thenrs.CloseUserName=Trim(txtUserName.Text)SaveSettingApp.Title,Settings,user_name,UserNameOk=TrueUnloadMefrmMain.Show1ElseMsgBox〃輸入密碼不正確,請重新輸入?〃,vbOKOnly+vbExclamation,〃警txtPassword.SetFocustxtPassword.Text=""EndIfEndIfElseMsgBox〃輸入密碼不正確,請重新輸入?〃,vbOKOnly+vbExclamation,〃警告〃EndIfEndIfmiCount=miCount+1Ok=FalseIfmiCount=3ThenEndEndIfExitSubErr:MsgBox〃登錄出錯,請找管理員!",vbExclamationOk=FalseEndEndSubPrivateSubCommand2_Click()''取消EndEndSubPrivateSubForm_Activate()txtPassword.SetFocusEndSubPrivateSubForm_Load()IfCN.StateThenCN.CloseCN.ConnectionString="Provider二Microsoft.Jet.OLEDB.4.0;DataSource="&App.Path&"\ydm.mdb;PersistSecurityInfo=False"CN.OpenOk=FalsetxtUserName.Text=GetSetting(App.Title,"Settings","user_name”,"")EndSubfrmmain窗體源代碼:DimmbMovingAsBooleanConstsglSplitLimit=500PrivateSubCombo1_Click()'''代碼類型Listl.ClearlvListView.Text=""IfTrim(Combol.Text)<>""ThenIfrs.StateThenrs.Closers.Open"select*from源代碼表where代碼類型='〃&Trim(Combol.Text)&"'orderbyID",CN,adOpenStatic,adLockOptimisticWhileNotrs.EOFIfNotIsNull(rs.Fields(1))ThenListl.AddItemTrim(rs.Fields(0))&"--"&Trim(rs.Fields(1))rs.MoveNextWendElseIfrs.StateThenrs.Closers.Open"select*from源代碼表orderbyID",CN,adOpenStatic,adLockOptimisticWhileNotrs.EOFIfNotIsNull(rs.Fields(1))ThenListl.AddItemTrim(rs.Fields(0))&"--"&Trim(rs.Fields(l))rs.MoveNextWendEndIfEndSubPrivateSubCommand1_Click(IndexAsInteger)SelectCaseIndexCase0IfUserName="admin"ThenfrmAdd.Show1ElseMsgBox"你沒有權(quán)限!"EndIfCase1''輸出CallTxtOutputCase2Case3''關(guān)于frmAbout.Show1Case4EndCase5''設(shè)置類型IfUserName="admin"ThenfrmOption.Show1ElsefrmUserPass.Show1EndIfEndSelectEndSubPublicSubTxtOutput()OnErrorGoToErrCommonDialog1.Filter="Txt文件|*.txt"CommonDialog1.Flags=&H2CommonDialog1.ShowSaveIfCommonDialog1.FileName<>""ThenlvListView.SaveFileCommonDialog1.FileName,1MsgBox〃保存成功!〃EndIfErr:EndSubPrivateSubForm_Load()OnErrorGoToErr:Ifrs.StateThenrs.Closers.Open"select*from代碼類型表〃,CN,adOpenStatic,adLockOptimisticCombo1.AddItem""WhileNotrs.EOFIfNotIsNull(rs.Fields(0))ThenCombol.AddItemTrim(rs.Fields(0))EndIfrs.MoveNextWendIfrs.StateThenrs.Closers.Open"select*from源代碼表orderbyID",CN,adOpenStatic,adLockOptimisticWhileNotrs.EOFIfNotIsNull(rs.Fields(1))ThenListl.AddItemTrim(rs.Fields(0))&--"&Trim(rs.Fields(1))rs.MoveNextWendSSTabl.Tab=0ExitSubErr:EndSubPrivateSubForm_Resize()OnErrorResumeNextIfMe.Width<3000ThenMe.Width=3000SizeControlsimgSplitter.LeftEndSubPrivateSubimgSplitter_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)WithimgSplitterpicSplitter.Move.Left,.Top,.Width\2,.Height-20EndWithpicSplitter.Visible=TruembMoving=TrueEndSubPrivateSubimgSplitter_MouseMove(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)DimsglPosAsSingleIfmbMovingThensglPos=x+imgSplitter.LeftIfsglPos<sglSplitLimitThenpicSplitter.Left=sglSplitLimitElseIfsglPos>Me.Width-sglSplitLimitThenpicSplitter.Left=Me.Width-sglSplitLimitElsepicSplitter.Left=sglPosEndIfEndIfEndSubPrivateSubimgSplitter_MouseUp(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)SizeControlspicSplitter.LeftpicSplitter.Visible=FalsembMoving=FalseEndSubPrivateSubTreeView1_DragDrop(SourceAsControl,xAsSingle,yAsSingle)IfSource=imgSplitterThenSizeControlsxEndIfEndSubSubSizeControls(xAsSingle)'OnErrorResumeNext'設(shè)置Width屬性Ifx<1500Thenx=1500Ifx>(Me.Width-1500)Thenx=Me.Width-1500SSTabl.Width=ximgSplitter.Left=xIvListView.Left=x+40IvListView.Width=Me.Width-(SSTabl.Width+140)IfSSTab1.Tab=0ThenCombo1.Width=SSTab1.Width-Combo1.Left-Combo1.LeftList1.Width=Combo1.WidthText1.Width=Combo1.WidthList2.Width=Combo1.WidthElseText1.Width=SSTab1.Width-Text1.Left-Text1.LeftList1.Width=Text1.WidthCombo1.Width=Text1.WidthList2.Width=Text1.WidthEndIf'設(shè)置Top屬性SSTab1.Top=picTitles.HeightlvListView.Top=SSTab1.TopText1.Top=Combo1.Top'設(shè)置height屬性IfsbStatusBar.VisibleThenSSTab1.Height=Me.ScaleHeight-(picTitles.Top+picTitles.Height+sbStatusBar.Height)ElseSSTab1.Height=Me.ScaleHeight-(picTitles.Top+picTitles.Height)EndIfListl.Height=SSTabl.Height-Combol.Top-780List2.Height=List1.HeightlvListView.Height=SSTab1.HeightimgSplitter.Top=SSTab1.TopimgSplitter.Height=SSTab1.HeightEndSubPrivateSubList1_Click()'''OnErrorGoToErrsbStatusBar.Panels(1).Text=List1.TextIfTrim(List1.Text)<>ThenDimiAsIntegerDimstrIDAsLongFori=1ToLen(List1.Text)IfMid(List1.Text,i,2)=〃--〃ThenstrID=Val(Mid(List1.Text,1,i-1))ExitForEndIfNextiDimrs1AsNewADODB.RecordsetDimstrSqlAsStringstrSql="select*from源代碼表whereid="&Trim(strID)Ifrs1.StateThenrs1.Closers1.OpenstrSql,CN,adOpenStatic,adLockOptimisticIfNotrs1.EOFThenIfNotIsNull(rs1.Fields(3))ThenIvListView.Text=rs1.Fields(3)EndIfEndIfsbStatusBar.Panels(1).Text=List1.TextEndIfExitSubErr:MsgBoxErr.DescriptionEndSubPrivateSubList2_Click()OnErrorGoToErrsbStatusBar.Panels(1).Text=List2.TextIfTrim(List2.Text)<>""ThenDimiAsIntegerDimstrIDAsLongFori=1ToLen(List2.Text)IfMid(List2.Text,i,2)=〃--〃ThenstrID=Val(Mid(List2.Text,1,i-1))ExitForEndIfNextiDimrs1AsNewADODB.RecordsetDimstrSqlAsStringstrSql="select*from源代碼表whereid="&Trim(strID)Ifrsl.StateThenrsl.Closersl.OpenstrSql,CN,adOpenStatic,adLockOptimisticIfNotrs1.EOFThenIfNotIsNull(rs1.Fields(3))ThenlvListView.Text=rs1.Fields(3)EndIfEndIfEndIfExitSubErr:MsgBoxErr.DescriptionEndSubPrivateSublvListView_MouseUp(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)IfButton=2ThenPopupMenuRKEndSubPrivateSubmnuEditItem_Click(IndexAsInteger)SelectCaseIndexCase0'如果Index=0,剪切選中文本Clipboard.ClearClipboard.SetTextlvListView.SelTextlvListView.SelText=""'清除選中的文本Case1
如果Index如果Index=1,復(fù)制選中文本Clipboard.Clear'復(fù)制選擇的文本到Clipboard中Clipboard.SetTextlvListView.SelTextCase2'如果Index=2,粘貼文本lvListView.SelText=Clipboard.GetText()'粘貼文本Case3'菜單分隔符Case7'如果Index=4,全選lvListView.SelStart=0lvListView.SelLength=Len(lvListView.Text)EndSelectEndSubPrivateSubText1_KeyPress(KeyAsciiAsInteger)OnErrorGoToErrIfKeyAscii=13ThenIfTrim(Textl.Text)<>""ThenIfrs.StateThenrs.Closers.Open"select*from源代碼表where代碼標(biāo)題like'%”&Trim(Textl.Text)&"%,orderbyID",CN,adOpenStatic,adLockOptimisticList2.ClearWhileNotrs.EOFIfNotIsNull(rs.Fields(1))ThenList2.AddItemTrim(rs.Fields(0))&—〃&Trim(rs.Fields(1))rs.MoveNextWendEndIfEndIfExitSubErr:MsgBoxErr.DescriptionEndSubFrmadd窗體源代碼:Dimrs1AsNewADODB.RecordsetDimIsAddAsBooleanPrivateSubcmdRegAdd_Click()''添加Text3.Text=""Textl.Text=""Combol.Text=""RichTextBox1=Text2.Text=EndSubPrivateSubcmdRegDel_Click()'''刪除IfTrim(Text3.Text)<>""ThenIfMsgBox("真的刪除嗎?",vbInformation+vbYesNo,〃提示〃)=vbYesThenCN.Execute"deletefrom源代碼表whereID="&Trim(Text3.Text)Ifrs1.StateThenrs1.Closers1.Open"select*from源代碼表",CN,adOpenStatic,adLockOptimisticrs1.MoveLastIfNotrs1.EOFThenFori=0To4IfNotIsNull(rs1.Fields(i))ThenSelectCaseiCase0''IDText3.Text=Trim(rs1.Fields(0))Case1''標(biāo)題Text1.Text=Trim(rs1.Fields(1))Case2''類型Combo1.Text=Trim(rs1.Fields(2))Case3''內(nèi)容RichTextBox1=Trim(rs1.Fields(3))Case4''備注Text2.Text=Trim(rs1.Fields(4))EndSelectElseSelectCaseiCase0IDText3.Text=""Case1''標(biāo)題Textl.Text=〃〃Case2''類型Combol.Text=""Case3''內(nèi)容RichTextBox1=〃〃Case4''備注Text2.Text=〃〃EndSelectEndIfNextiEndIfMsgBox〃刪除成功!〃EndIfEndIfEndSubPrivateSubcmdRegFirst_Click()DimiAsIntegerOnErrorGoToErrrsl.MoveFirstIfNotrsl.EOFThenFori=0To4IfNotIsNull(rs1.Fields(i))ThenCase0IDText3.Text=Trim(rs1.Fields(0))Case1''標(biāo)題Text1.Text=Trim(rs1.Fields(1))Case2''類型Combo1.Text=Trim(rs1.Fields(2))Case3''內(nèi)容RichTextBox1.Text=Trim(rs1.Fields(3))Case4''備注Text2.Text=Trim(rs1.Fields(4))EndSelectElseSelectCaseiCase0''IDText3.Text=""Case1''標(biāo)題Text1.Text=""Case2''類型Combo1.Text=""Case3''內(nèi)容RichTextBox1.Text=""Case4''備注EndIfNextiEndIfExitSubErr:EndSubPrivateSubcmdRegLast_Click()''>>DimiAsIntegerOnErrorGoToErrrs1.MoveLastIfNotrs1.EOFThenFori=0To4IfNotIsNull(rs1.Fields(i))ThenSelectCaseiCase0''IDText3.Text=Trim(rs1.Fields(0))Case1''標(biāo)題Text1.Text=Trim(rs1.Fields(1))Case2''類型Combo1.Text=Trim(rs1.Fields(2))Case3''內(nèi)容RichTextBox1.Text=Trim(rs1.Fields(3))Case4''備注Text2.Text=Trim(rs1.Fields(4))ElseSelectCaseiCase0''IDText3.Text=""Case1''標(biāo)題Text1.Text=〃〃Case2''類型Combol.Text=""Case3''內(nèi)容RichTextBoxl.Text=Case4''備注Text2.Text=〃〃EndSelectEndIfNextiEndIfExitSubErr:EndSubPrivateSubcmdRegNext_Click()'''next>DimiAsIntegerOnErrorGoToErrIfrs.EOFThenrsl.MoveLastFori=0To4IfNotIsNull(rs1.Fields(i))ThenSelectCaseiCase0''IDText3.Text=Trim(rs1.Fields(0))Case1''標(biāo)題Text1.Text=Trim(rs1.Fields(1))Case2''類型Combo1.Text=Trim(rs1.Fields(2))Case3''內(nèi)容RichTextBox1.Text=Trim(rs1.Fields(3))Case4''備注Text2.Text=Trim(rs1.Fields(4))EndSelectElseSelectCaseiCase0''IDText3.Text=""Case1''標(biāo)題Text1.Text=〃〃Case2''類型Combo1.Text=""RichTextBoxl.Text=Case4''備注Text2.Text=〃〃EndSelectEndIfNextiEndIfElsers1.MoveNextIfNotrs1.EOFThenFori=0To4IfNotIsNull(rs1.Fields(i))ThenSelectCaseiCase0''IDText3.Text=Trim(rs1.Fields(0))Case1''標(biāo)題Text1.Text=Trim(rs1.Fields(1))Case2''類型Combo1.Text=Trim(rs1.Fields(2))Case3''內(nèi)容RichTextBox1.Text=Trim(rs1.Fields(3))Case4''備注Text2.Text=Trim(rs1.Fields(4))ElseSelectCaseiCase0''IDText3.Text=""Case1''標(biāo)題Textl.Text=〃〃Case2''類型Combol.Text=""Case3''內(nèi)容RichTextBoxl.Text=Case4''備注Text2.Text=〃〃EndSelectEndIfNextiEndIfEndIfExitSubErr:EndSubPrivateSubcmdRegPrevious_Click()'''<DimiAsIntegerOnErrorGoToErrIfrsl.BOFThenrsl.MoveFirstIfNotrsl.BOFThenFori=0To4IfNotIsNull(rs1.Fields(i))ThenSelectCaseiCase0''IDText3.Text=Trim(rs1.Fields(0))Case1''標(biāo)題Text1.Text=Trim(rs1.Fields(1))Case2''類型Combo1.Text=Trim(rs1.Fields(2))Case3''內(nèi)容RichTextBox1.Text=Trim(rs1.Fields(3))Case4''備注Text2.Text=Trim(rs1.Fields(4))EndSelectElseSelectCaseiCase0''IDText3.Text=""Case1''標(biāo)題Text1.Text=〃〃Case2''類型Combo1.Text=""RichTextBoxl.Text=Case4''備注Text2.Text=〃〃EndSelectEndIfNextiEndIfElsers1.MovePreviousIfNotrs1.BOFThenFori=0To4IfNotIsNull(rs1.Fields(i))ThenSelectCaseiCase0''IDText3.Text=Trim(rs1.Fields(0))Case1''標(biāo)題Text1.Text=Trim(rs1.Fields(1))Case2''類型Combo1.Text=Trim(rs1.Fields(2))Case3''內(nèi)容RichTextBox1.Text=Trim(rs1.Fields(3))Case4''備注Text2.Text=Trim(rs1.Fields(4))ElseSelectCaseiCase0''IDText3.Text=""Case1''標(biāo)題Textl.Text=〃〃Case2''類型Combol.Text=""Case3''內(nèi)容RichTextBoxl.Text=Case4''備注Text2.Text=〃〃EndSelectEndIfNextiEndIfEndIfExitSubErr:EndSubPrivateSubcmdRegSave_Click()OnErrorGoToErrIfTrim(Textl.Text)<>〃〃AndTrim(Combol.Text)<>〃〃ThenIfTrim(Text3.Text)=""Then''添加rsl.AddNewrs1.Fields(1).Value=Trim(Textl.Text)rs1.Fields(2).Value=Trim(Combol.Text)IfTrim(RichTextBox1.Text)<>""Thenrs1.Fields(3).Value=RichTextBoxl.TextIfTrim(Text2.Text)=""ThenText2.Text=""rs1.Fields(4).Value=Text2.Textrs1.UpdateElse''修改rs1.Fields(1).Value=Trim(Text1.Text)rs1.Fields(2).Value=Trim(Combo1.Text)IfTrim(RichTextBox1.Text)<>""Thenrs1.Fields(3).Value=RichTextBox1.TextIfTrim(Text2.Text)=""ThenText2.Text=""rs1.Fields(4).Value=Text2.Textrs1.UpdateEndIfMsgBox〃保存成功!〃ElseMsgBox〃標(biāo)題和類型不能為空!〃EndIfExitSubErr:MsgBoxErr.DescriptionEndSubPrivateSubCommand1_Click()UnloadMeEndSubPrivateSubCommand2_Click()'''打開文件OnErrorGoToErrCommonDialog1.Filter="TXT文件|*.txt|所有文件|*.*CommonDialog1.ShowOpenRichTextBox1.Text=""RichTextBoxl.LoadFileCommonDialog1.FileNameExitSubErr:MsgBoxErr.DescriptionEndSubPrivateSubForm_Load()OnErrorGoToErrIsAdd=FalseIfrs1.StateThenrs1.Closers1.Open"select*from代碼類型表”,CN,adOpenStatic,adLockOptimisticWhileNotrs1.EOFIfNotIsNull(rs1.Fields(0))ThenCombo1.AddItemTrim(rs1.Fields(0))rs1.MoveNextWendIfrs1.StateThenrs1.Closersl.Open"select*from源代碼表〃,CN,adOpenStatic,adLockOptimisticrs1.MoveLastIfNotrs1.EOFThenFori=0To4IfNotIsNull(rs1.Fields(i))ThenSelectCaseiCase0''IDText3.Text=Trim(rs1.Fields(0))Case1''標(biāo)題Text1.Text=Trim(rs1.Fields(1))Case2''類型Combo1.Text=Trim(rs1.Fields(2))Case3''內(nèi)容RichTextBox1=Trim(rs1.Fields(3))Case4''備注Text2.Text=Trim(rs1.Fields(4))EndSelectElseSelectCaseiCase0''IDText3.Text=""Case1''標(biāo)題Text1.Text=""Case2''類型Combol.Text=Case3''內(nèi)容RichTextBoxl=Case4''備注Text2.Text="EndSelectEndIfNextiEndIfExitSubErr:MsgBoxErr.DescriptionEndSubFrmsys窗體源代碼:PrivateSubcmdExit_Click()UnloadMeEndSubPrivateSubCommand2_Click()DimrslAsNewADODB.RecordsetIfrsl.StateThenrsl.Closersl.Open"selectcount(*)fromuser_infowhere姓名二'〃&Trim(Text8.Text)&〃'〃,CN,adOpenStatic,adLockOptimisticIfrsl.Fields(O)>0ThenMsgBox〃用戶已經(jīng)存在!請改用戶名稱!",,〃系統(tǒng)提示〃Text8.Text=""ExitSubEndIfIfrsl.StateThenrsl.Closersl.Open"select*fromuser_info”,CN,adOpenStatic,adLockOptimisticrs1.AddNewrs1.Fields(0).Value=Trim(Text8.Text)rs1.Fields(1).Value=Trim(Text9.Text)rs1.UpdateCombo5.AddItemTrim(Text8.Text)MsgBox”用戶添加成功!,初始密碼為"&Text9.Text,,"系統(tǒng)提示"Text8.Text=""EndSubPrivateSubCommand3_Click()CN.Execute"deletefromuser_infowhere姓名='"&Trim(Combo5.Text)&","Combo5.RemoveItem(Combo5.ListIndex)MsgBox〃操作已成功!",,〃提示〃EndSubPrivateSubCommand5_Click()IfTrim(Text10.Text)<>""AndTrim(Text11.Text)<>""AndTrim(Text12.Text)<>""ThenIfTrim(Text11.Text)<>Trim(Text12.Text)ThenMsgBox"新密碼不對!"Exi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 商店轉(zhuǎn)讓協(xié)議合同范例
- 參產(chǎn)品收購合同范本
- 合唱指揮合同范例
- 個性化菜單設(shè)計(jì)優(yōu)化-深度研究
- 2025年度施工勞務(wù)派遣合同簽訂
- 2025至2030年中國反射型聚光燈泡數(shù)據(jù)監(jiān)測研究報告
- 河南省南陽市唐河縣2024-2025學(xué)年九年級上學(xué)期1月期末化學(xué)試題(含答案)
- 2025年消防設(shè)施操作員之消防設(shè)備基礎(chǔ)知識能力提升試卷B卷附答案
- 2025年消防設(shè)施操作員之消防設(shè)備中級技能考前沖刺試卷B卷含答案
- 采購分包訂單合同(2篇)
- 法律服務(wù)方案(投標(biāo))
- 轉(zhuǎn)移的危險廢物性狀清單
- 高中英語-新外研版必修一unit5-The-Monarchs-Journey-公開課reading課件
- 建設(shè)項(xiàng)目用地預(yù)審與選址意見課件講解
- 四年級公共安全教育全冊教案(海峽教育出版社)
- 工程結(jié)構(gòu)通用規(guī)范
- 《構(gòu)成基礎(chǔ)》PPT課件(190頁P(yáng)PT)
- 四年級道德與法治從中國制造到中國創(chuàng)造
- HONEYWELLDCS操作手冊
- 2021-2022新教科版四年級科學(xué)下冊全一冊全部課件(共24課)
- 3 棄渣場施工方案
評論
0/150
提交評論