版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 目錄</b></p><p><b> 1.前言</b></p><p><b> 2. 需求分析</b></p><p> 2.1 用戶定位分析</p><p> 2.2 功能需求分析</p><p> 2.3
2、性能需求分析</p><p><b> 3.系統(tǒng)分析</b></p><p> 3.1 環(huán)境平臺(tái)分析</p><p> 3.2 程序功能設(shè)計(jì)</p><p> 3.3 程序流程設(shè)計(jì)</p><p><b> 4. 詳細(xì)設(shè)計(jì)</b></p><p&
3、gt; 4.1 程序單元設(shè)計(jì)</p><p> 4.2 程序單元編碼</p><p><b> 4.3 集成開發(fā)</b></p><p><b> 前言</b></p><p> 根據(jù)自己的愛好和軟件編程的能力,我選擇用VB編寫網(wǎng)吧收費(fèi)系統(tǒng)的服務(wù)器端,只是編寫出了基本的功能,比現(xiàn)實(shí)生活中使
4、用的要粗略.但是這個(gè)系統(tǒng)只是自己的一次實(shí)踐,我會(huì)在以后的學(xué)習(xí)中繼續(xù)努力的</p><p> 編寫這個(gè)應(yīng)用程序其意義在于鍛煉了我的動(dòng)手能力和邏輯思維能力,而且以前也從來(lái)沒(méi)有嘗試過(guò)編寫這樣綜合性的程序,培養(yǎng)了對(duì)問(wèn)題考慮的全面性.</p><p> 為了編寫有實(shí)用價(jià)值的東西,我還參閱了大量的資料,包括網(wǎng)絡(luò)資料的選擇,當(dāng)然在程序完成只后,也不能只有編寫者才會(huì)用,所以要寫出對(duì)應(yīng)的幫助文擋,一般的
5、軟件都會(huì)有,這是我們生活中的常識(shí). 只是限于水平 ,只能編寫部分功能,數(shù)據(jù)庫(kù)安全方面也不可靠.一直在尋找解決辦法,如果能夠采用動(dòng)態(tài)數(shù)據(jù)庫(kù),這些問(wèn)題就能解決了.</p><p> 科學(xué)這東西講究的就是嚴(yán)謹(jǐn)?shù)膽B(tài)度,建立數(shù)學(xué)模型有助于完成設(shè)計(jì),在設(shè)計(jì)的時(shí)候避免出現(xiàn)思緒混亂,</p><p> 在經(jīng)過(guò)系統(tǒng)功能需求分析,在大腦中 已經(jīng)有很清晰的的目標(biāo),可以畫出要進(jìn)行的流程圖,比如先根據(jù)功能模塊確
6、定好選擇數(shù)據(jù)庫(kù),然后根據(jù)實(shí)際編寫數(shù)據(jù)庫(kù)表,完成數(shù)據(jù)庫(kù)表的關(guān)聯(lián),可以先保存后,等窗體確定完畢,再連接數(shù)據(jù)庫(kù).</p><p> 經(jīng)過(guò)代碼調(diào)試,確定能正常運(yùn)行.</p><p><b> 需求分析</b></p><p><b> 2.1用戶定位分析</b></p><p> ?。保侠淼墓ぞ咴O(shè)置
7、:用戶要求界面簡(jiǎn)潔 容易操作.于是可以使用工具條進(jìn)行設(shè)置,把經(jīng)常要使用的功能用工具條單獨(dú)羅列出來(lái),比直接在菜單中選擇效率要高.</p><p> 2.安全要求:為了避免意外事件或者是人為原因?qū)е聰?shù)據(jù)庫(kù)信息丟失,要做好數(shù)據(jù)庫(kù)的保秘和數(shù)據(jù)庫(kù)災(zāi)難性恢復(fù).</p><p> 3.簡(jiǎn)單的操作方式:因?yàn)樾枰械臅r(shí)候需要對(duì)客戶機(jī)進(jìn)行遠(yuǎn)程控制,這樣管理起來(lái)就輕松起來(lái) .</p><
8、p> 4.提供全面的數(shù)據(jù)查詢和統(tǒng)計(jì):可以任意選擇查詢條件,而且為了方便可以設(shè)置統(tǒng)計(jì)報(bào)表功能.</p><p> 5.報(bào)表打印導(dǎo)出功能:要隨時(shí)可以導(dǎo)出以報(bào)表格式存放,打印出來(lái)長(zhǎng)期備份.</p><p> 6.會(huì)員卡管理:會(huì)員卡較之現(xiàn)金交易比較方便管理,</p><p> 7.商品管理:能夠?qū)ι唐愤M(jìn)行銷售統(tǒng)計(jì),存儲(chǔ)查詢.</p><p&
9、gt; 8.網(wǎng)址限制:現(xiàn)在網(wǎng)絡(luò)病毒流行,尤其要注意一些不良網(wǎng)頁(yè)上隱藏病毒,所以要限制一些網(wǎng)站.</p><p><b> ?。?2功能需求分析</b></p><p> 主要功能: 對(duì)網(wǎng)吧的人員,資源進(jìn)行管理。公布網(wǎng)吧的通知公告等信息,發(fā)布網(wǎng)吧內(nèi)外新聞動(dòng)態(tài),提供上網(wǎng)人員的意見、建議反饋場(chǎng)所,管理網(wǎng)吧內(nèi)的計(jì)算機(jī),對(duì)上機(jī)用戶的情況進(jìn)行統(tǒng)計(jì),計(jì)時(shí)計(jì)費(fèi)等。</p&g
10、t;<p><b> 具體功能:</b></p><p> 被控制機(jī)有一個(gè)服務(wù)器,控制器集中在管理機(jī)上??梢钥刂频顷懀⑦M(jìn)行計(jì)時(shí),這是兩個(gè)基本功能;管理機(jī)還有上機(jī),下機(jī)結(jié)帳,開機(jī),關(guān)機(jī),重新啟動(dòng)等功能。 </p><p> 網(wǎng)絡(luò)管理、計(jì)費(fèi)系統(tǒng):本網(wǎng)站最重要和最復(fù)雜的功能。又分會(huì)員注冊(cè),登錄,以及會(huì)員的審核系統(tǒng),員工的管理,計(jì)時(shí)計(jì)費(fèi),計(jì)算機(jī)管理等小系
11、統(tǒng)。</p><p> 資源管理:分為流行歌曲,影視頻道,游戲推薦,動(dòng)漫Flash,精彩圖片幾個(gè)模塊。</p><p> 交流平臺(tái): 提供在線交流的平臺(tái),收集上網(wǎng)人員的相關(guān)的意見和建議,并及時(shí)處理,對(duì)有必要的問(wèn)題進(jìn)行回復(fù)。</p><p> 以上功能大部份為系統(tǒng)已實(shí)現(xiàn)的基本功能,在開發(fā)本系統(tǒng)時(shí)也為后繼系統(tǒng)擴(kuò)展開發(fā)留有接口,使系統(tǒng)更加方便地可以進(jìn)行升級(jí)和擴(kuò)展。&
12、lt;/p><p><b> ?。?3性能需求分析</b></p><p> 強(qiáng)大的安全保障:網(wǎng)絡(luò)通訊全面采用數(shù)字證書認(rèn)證體系,具有與網(wǎng)上銀行同等的安全級(jí)別;基于角色的權(quán)限管理允許靈活定制管理權(quán)限;具有完備的數(shù)據(jù)保密、備份、災(zāi)難恢復(fù)等機(jī)制,保證數(shù)據(jù)高度安全可靠。 </p><p> 嚴(yán)謹(jǐn)與高效的業(yè)務(wù)流程設(shè)計(jì):網(wǎng)吧計(jì)費(fèi)管理系統(tǒng)業(yè)務(wù)數(shù)據(jù)遵循財(cái)務(wù)準(zhǔn)則
13、設(shè)計(jì),嚴(yán)謹(jǐn)、規(guī)范;眾多獨(dú)到的設(shè)計(jì)不僅方便顧客使用也大大減輕了服務(wù)員的工作強(qiáng)度。 </p><p> 易于使用與維護(hù):網(wǎng)吧計(jì)費(fèi)管理系統(tǒng)充分考慮了不同層次使用者的接受能力,服務(wù)員經(jīng)過(guò)10分鐘簡(jiǎn)單培訓(xùn)就能掌握,管理人員則擁有眾多工具和方法用于簡(jiǎn)化管理與維護(hù)。此外,為了幫助用戶盡快熟練掌握網(wǎng)吧計(jì)費(fèi)管理系統(tǒng)的應(yīng)用,相關(guān)軟件公司還提供了多種方式的培訓(xùn)和技術(shù)支持。 </p><p> 集中管理能力:
14、將配置、升級(jí)等任務(wù)集中到服務(wù)器處理,使管理工作大量減少,變得高效。 </p><p><b> 系統(tǒng)分析</b></p><p><b> 3.1系統(tǒng)平臺(tái)分析</b></p><p> 系統(tǒng)的開發(fā)、運(yùn)行、測(cè)試環(huán)境均選用 Windows 系列的操作系統(tǒng),因?yàn)?Windows 系統(tǒng)是PC機(jī)上普及最廣泛的操作系統(tǒng),它的界面
15、友好、有高效的計(jì)算環(huán)境、對(duì)硬件的支持程度高、支持On-Now設(shè)備、有良好的可移植性和可伸縮性、系統(tǒng)運(yùn)行穩(wěn)定、可靠性好、維護(hù)方便、容易安裝;性能經(jīng)過(guò)優(yōu)化、安全性好、對(duì)網(wǎng)絡(luò)的支持程度好、使網(wǎng)絡(luò)應(yīng)用更為方便快捷。本系統(tǒng)可運(yùn)行于Windows 20000以上操作系統(tǒng),在這些操作系統(tǒng)上都必須安裝IIS,當(dāng)然最好是在Windows 2000 Advanced Server 上運(yùn)行,因?yàn)槲④涢_發(fā)的Windows 2000 Advanced Serve
16、r是專門用來(lái)提供網(wǎng)絡(luò)服務(wù)器的,有微軟這個(gè)強(qiáng)大的技術(shù)支持,并且系統(tǒng)運(yùn)行穩(wěn)定、維護(hù)方便、性能經(jīng)過(guò)優(yōu)化、對(duì)網(wǎng)絡(luò)的支持程度好、使網(wǎng)絡(luò)應(yīng)用更為方便快捷。</p><p> 考慮到Windows XP Professional是我們平時(shí)用得最多的操作系統(tǒng),比較熟悉,且足夠支持開發(fā)軟件VB和Microsoft SQL Server 2000。所以在此我選用了它作為開發(fā)環(huán)境、運(yùn)行環(huán)境以及測(cè)試環(huán)境.</p><
17、;p> 在選擇開發(fā)工具的時(shí)候,考慮到各種編程軟件,我選擇VB6.0主要 有其特點(diǎn)決定的,VB 6.0提供了各種豐富的通信接口,比較適合這種服務(wù)器-客戶端.</p><p> 在界面設(shè)置上,VB 提供可視化編程,可以避免大量的代碼編寫,需要什么樣子的窗口布局,可以直接在工具箱\里面選擇,然后調(diào)整布局.</p><p> 采用的是事件驅(qū)動(dòng)方式,代碼執(zhí)行的過(guò)程可以直接控制,很方便代碼
18、的調(diào)試和改寫.比起傳統(tǒng)的那些編程語(yǔ)言,代碼從開始執(zhí)行到代碼結(jié)涑</p><p><b> 3.2程序功能設(shè)計(jì)</b></p><p> 系統(tǒng)功能設(shè)計(jì):這一部分是整個(gè)系統(tǒng)最基本也是最重要的設(shè)置,其中系統(tǒng)設(shè)置至少包括以下幾方面的內(nèi)容:</p><p><b> 計(jì)算機(jī)設(shè)置:</b></p><p>
19、;<b> 管理員設(shè)置</b></p><p><b> 數(shù)據(jù)備份</b></p><p><b> 數(shù)據(jù)還原</b></p><p><b> 系統(tǒng)設(shè)置</b></p><p> 記費(fèi)用功能設(shè)計(jì):包括下面內(nèi)容</p><p&
20、gt;<b> 開始記費(fèi)</b></p><p><b> 限定時(shí)間</b></p><p><b> 結(jié)帳</b></p><p><b> 調(diào)換計(jì)算機(jī)</b></p><p><b> 選購(gòu)計(jì)算機(jī)</b></p&g
21、t;<p><b> 客戶機(jī)控制</b></p><p> 界面設(shè)置功能:主要是對(duì)運(yùn)行中的系統(tǒng)界面設(shè)置,不同的工作人員喜歡不同的背景或布局格式,對(duì)整個(gè)系統(tǒng)沒(méi)有太大的影響</p><p> 管理功能:包括商品資料管理,客戶管理,會(huì)員卡管理</p><p><b> 統(tǒng)計(jì)功能:</b></p>
22、<p> 日?qǐng)?bào)表統(tǒng)計(jì):商品統(tǒng)計(jì)和上機(jī)統(tǒng)計(jì)</p><p> 月報(bào)表統(tǒng)計(jì):商品統(tǒng)計(jì)和上機(jī)統(tǒng)計(jì)</p><p><b> 3.3程序流程設(shè)計(jì)</b></p><p> 數(shù)據(jù)庫(kù)設(shè)計(jì)(采用無(wú)源數(shù)據(jù)庫(kù)連接)</p><p> 無(wú)源數(shù)據(jù)庫(kù)”連接也并不是說(shuō)不需要數(shù)據(jù)源,如果沒(méi)有數(shù)據(jù)源則連接是紙上談兵,只是不需要
23、配置ODBC數(shù)據(jù)源,利用ADO就可通過(guò)代碼進(jìn)行連接。</p><p> 1.1 ADO(ActiveX Data Object)</p><p> 在Visual Basic6.0中,數(shù)據(jù)訪問(wèn)接口有三種:ActiveX數(shù)據(jù)對(duì)象(ADO)、遠(yuǎn)程數(shù)據(jù)對(duì)象(RDO)和數(shù)據(jù)訪問(wèn)對(duì)象(DAO)。這三種接口的每一種都分別代表該技術(shù)的不同發(fā)展階段,最新的是ADO,它比RDO和DAO更加簡(jiǎn)單,更加靈活
24、。對(duì)于新工程,應(yīng)使用ADO作為數(shù)據(jù)訪問(wèn)接口。</p><p> ADO 是Microsoft 數(shù)據(jù)庫(kù)應(yīng)用程序開發(fā)的接口,是建立在OLE DB之上的高層數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)。它封裝了OLE DB所提供的接口,比起OLE DB提供者,ADO的接口可以使程序員在更高級(jí)別上進(jìn)行數(shù)據(jù)交互。ADO技術(shù)不僅可以應(yīng)用于關(guān)系數(shù)據(jù)庫(kù),也可以應(yīng)用于非關(guān)系數(shù)據(jù)庫(kù)??梢杂媒y(tǒng)一的方法對(duì)不同的文件系統(tǒng)進(jìn)行訪問(wèn),大大簡(jiǎn)化了程序編制,增加了程序的可移
25、植性。</p><p> 1.2 建立無(wú)源數(shù)據(jù)庫(kù)連接</p><p> 在連接數(shù)據(jù)庫(kù)前,首先要在Visual Basic 6.0菜單中“工程”—“引用”中選擇Microsoft ActiveX Data Objects 2.6 Library 和Microsoft ActiveX Data Objects Recordset 2.6 Library這兩個(gè)組件。</p>&
26、lt;p> 運(yùn)用ADO對(duì)象模型的主要元素:Connection(連接)中的ConnectionString屬性進(jìn)行連接, ConnectionString為可讀寫string類型,指定一個(gè)連接字符串,告訴ADO 如何連接數(shù)據(jù)庫(kù)。</p><p> 實(shí)例:以建立登陸系統(tǒng)為例,介紹無(wú)源數(shù)據(jù)庫(kù)連接。在Microsoft SQL Server 2000 中建立一個(gè)Student 的數(shù)據(jù)庫(kù),在Student數(shù)據(jù)庫(kù)
27、中建立login_user(name,password)的數(shù)據(jù)表,Microsoft SQL Server服務(wù)器的名為data_server。代碼如下:</p><p> Option Explicit</p><p> Public LoginSucceeded As Boolean</p><p> '引用Microsoft ActiveX Dat
28、a Objects 2.6 Library</p><p> '定義連接對(duì)象和記錄集</p><p> Dim conn As ADODB.Connection</p><p> Dim rs As ADODB.Recordset</p><p> '對(duì)取消按鈕單擊事件的響應(yīng)</p><p>
29、 Private Sub cmdCancel_Click()</p><p> '設(shè)置全局變量為 false</p><p><b> '不提示失敗的登錄</b></p><p> LoginSucceeded = False</p><p><b> Me.Hide</b>
30、</p><p><b> End Sub</b></p><p> '對(duì)登錄按鈕單擊事件的響應(yīng)</p><p> Private Sub cmdOK_Click()</p><p> Set conn = New ADODB.Connection </p><p> Set r
31、s = New ADODB.Recordset</p><p> '建立無(wú)源數(shù)據(jù)庫(kù)連接</p><p> conn.ConnectionString="driver={sql server};server=data_server;uid=sa;pwd=;Database=student"</p><p> conn.Connecti
32、onTimeout = 50</p><p><b> conn.Open</b></p><p> Dim str As String</p><p><b> '連接連接對(duì)象</b></p><p> Set rs.ActiveConnection = conn</p>
33、;<p><b> '設(shè)置游標(biāo)類型</b></p><p> rs.CursorType = adOpenDynamic</p><p> If Trim(txtUserName.Text = "") Then</p><p> MsgBox "用戶名不能為空,請(qǐng)重新輸入用戶名!&qu
34、ot;, vbOKOnly + vbExclamation, "警告"</p><p> txtUserName.SetFocus</p><p><b> Else</b></p><p><b> '設(shè)置查詢字符串</b></p><p> str = &qu
35、ot;select * from login_user where name ='" & Trim(txtUserName.Text) & "'"</p><p> rs.Open str</p><p> If rs.EOF = True Then</p><p> MsgBox "沒(méi)有
36、這個(gè)用戶,請(qǐng)重新輸入用戶名!", vbOKOnly + vbExclamation, "警告"</p><p> txtUserName.SetFocus</p><p><b> Else</b></p><p> '登錄成功,連接主窗口</p><p> If (Trim
37、(txtPassword.Text) = Trim(rs.Fields("password"))) Then</p><p> LoginSucceeded = True</p><p><b> Me.Hide</b></p><p><b> main.Show</b></p>
38、<p><b> Else</b></p><p> MsgBox "密碼不正確,請(qǐng)重輸入密碼!", , "警告"</p><p> txtPassword.SetFocus</p><p> SendKeys "{Home}+{End}"</p>&l
39、t;p><b> End If</b></p><p><b> End If</b></p><p><b> End If</b></p><p><b> End Sub</b></p><p> 無(wú)源數(shù)據(jù)庫(kù)連接則不用配置ODBC環(huán)境
40、,可以省去手工設(shè)置DSN的麻煩,這種方法所編寫的軟件適應(yīng)性廣,又符合專業(yè)軟件的要求。</p><p> DO封裝并且實(shí)現(xiàn)了Microsoft強(qiáng)大的數(shù)據(jù)訪問(wèn)接口OLE DB的所有功能,它具有通用性好,效率高的特點(diǎn)。通過(guò)ADO進(jìn)行無(wú)源數(shù)據(jù)庫(kù)連接,省去手工設(shè)置DSN的麻煩,使ADO對(duì)象模型獲得更大的靈活性.</p><p><b> 界面設(shè)置</b></p>
41、<p> 確定 應(yīng)用程序的功能后,從最基本的界面布局設(shè)置,這一步的關(guān)鍵就是熟悉VB控件的基本功能,包括常用控件和其它需要從部件里面添加的控件.界面設(shè)置要合理,美觀為好.</p><p><b> 代碼編輯</b></p><p> VB 采用的是事件驅(qū)動(dòng)方式,可以直接選擇控件的事件和屬性,在編寫代碼的時(shí)候會(huì)自動(dòng)給予提示,這樣當(dāng)對(duì)一個(gè)事件進(jìn)行代碼編輯
42、的時(shí)候如果沒(méi)有給予格式提醒,這個(gè)時(shí)候要考慮是不是出錯(cuò)了,如果沒(méi)有這種功能,這種錯(cuò)誤只能到代碼編譯運(yùn)行的時(shí)候才會(huì)發(fā)現(xiàn),那個(gè)時(shí)候會(huì)浪費(fèi)很多時(shí)間來(lái)修改錯(cuò)誤代碼.</p><p><b> 模塊建立</b></p><p> 模塊一般是放全局公用的函數(shù)、過(guò)程、常數(shù)、自定義結(jié)構(gòu)、全局變量等等東西的地方,也就是公用部分的集中場(chǎng)所。當(dāng)然,模塊中也可以定義private 的函數(shù)
43、或者過(guò)程以便公用過(guò)程的內(nèi)部調(diào)用。類模塊是定義一個(gè)類,類模塊中的所有public成員必須在創(chuàng)建了累的實(shí)例以后才能夠調(diào)用,需要和標(biāo)準(zhǔn)模塊區(qū)分開來(lái)。好的編程習(xí)慣是把不同種類的功用模塊分類放在不同的標(biāo)準(zhǔn)模塊中,便于查閱,所以很多程序中會(huì)有多個(gè)標(biāo)準(zhǔn)模塊存在.</p><p> 類模塊和標(biāo)準(zhǔn)模塊的不同點(diǎn)在于存儲(chǔ)數(shù)據(jù)方法的不同。標(biāo)準(zhǔn)模塊的數(shù)據(jù)只有一個(gè)備份。這意味著標(biāo)準(zhǔn)模塊中一個(gè)公共變量的值改變以后,在后面的程序中再讀取該變量
44、時(shí),它將得到同一個(gè)值。 </p><p> 而類模塊的數(shù)據(jù),是相對(duì)于類實(shí)例(也就是,由類創(chuàng)建的每一對(duì)象)而獨(dú)立存在的。 </p><p> 同樣的,標(biāo)準(zhǔn)模塊中的數(shù)據(jù)在程序作用域內(nèi)存在,也就是說(shuō),它存在于程序的存活期中;而類實(shí)例中的數(shù)據(jù)只存在于對(duì)象的存活期,它隨對(duì)象的創(chuàng)建而創(chuàng)建,隨對(duì)象的撤消而消失。 </p><p> 最后,當(dāng)變量在標(biāo)準(zhǔn)模塊中聲明為 Publi
45、c 時(shí),則它在工程中任何地方都是可見的;而類模塊中的 Public 變量,只有當(dāng)對(duì)象變量含有對(duì)某一類實(shí)例的引用時(shí)才能訪問(wèn) </p><p><b> 運(yùn)行調(diào)試</b></p><p><b> 1.運(yùn)行程序 </b></p><p> 運(yùn)行程序,可用下列方法之一: </p><p> (1)
46、選擇主窗口的“運(yùn)行"菜單的“啟動(dòng)”命令。 </p><p> (2)按快捷鍵F5。 </p><p> (3)選擇工具欄上的啟動(dòng)按鈕。 </p><p> 在程序運(yùn)行過(guò)程中,標(biāo)題欄顯示: </p><p> 工程1-Microsoft Visual Basic[運(yùn)行] </p><p> 表示進(jìn)入運(yùn)
47、行狀態(tài)。 </p><p><b> 2.暫停運(yùn)行 </b></p><p> 若程序有錯(cuò)誤,可用以下任一種方式進(jìn)入中斷狀態(tài),對(duì)程序進(jìn)行調(diào)試: </p><p> (1)選擇“運(yùn)行"菜單的“中斷"命令。 </p><p> (2)按Ctrl+Break鍵。 </p><p&
48、gt; (3)選擇工具欄上的中斷圖標(biāo)。 </p><p> 進(jìn)人中斷狀態(tài),標(biāo)題欄顯示: </p><p> 工程1-Microsoft Visual Basic[break] </p><p> 若要繼續(xù)運(yùn)行,可直接按F5鍵,或選取“運(yùn)行”菜單的“繼續(xù)"命令。若要重新運(yùn)行,按 </p><p> Shift+F5鍵或選擇“
49、運(yùn)行”菜單的“重新啟動(dòng)”命令。 </p><p><b> 3.結(jié)束程序運(yùn)行 </b></p><p> 結(jié)束程序運(yùn)行返回設(shè)計(jì)狀態(tài)的方法為: </p><p> (1)選擇“運(yùn)行”菜單的“結(jié)束"命令。 </p><p> (2)選擇工具欄上的結(jié)束圖標(biāo)。 </p><p> (3
50、)按程序的結(jié)束按鈕或程序窗口的關(guān)閉按鈕</p><p><b> 詳細(xì)設(shè)計(jì)</b></p><p> 4.1程序單元設(shè)計(jì)</p><p> 登陸窗口設(shè)計(jì):登陸系統(tǒng)窗口界面要簡(jiǎn)單為好,需要兩個(gè)標(biāo)簽框用來(lái)標(biāo)明用戶名和密碼,兩個(gè)文本框用來(lái)輸入用戶名和密碼,還有兩個(gè)命令按扭用來(lái)實(shí)現(xiàn)登入和取消命令:</p><p> 根
51、據(jù)需要添加ACTIVE XActiveX控件數(shù)據(jù)輸入和函數(shù)功能執(zhí)行都必須通過(guò)容器,因此ActiveX控件和容器都必須支持一些特定的接口協(xié)議。根據(jù)Microsoft 相應(yīng)的規(guī)格標(biāo)準(zhǔn),ActiveX控件應(yīng)具備如下的性能機(jī)制。 屬性和方法:ActiveX控件必須提供屬性的名稱、方法的名稱及參數(shù),通過(guò)這項(xiàng)機(jī)制容器可以存取和改變ActiveX控件的屬性參數(shù)。 事件:ActiveX控件由這項(xiàng)機(jī)制通知容器在ActiveX控件中發(fā)生的事件,比如屬性參
52、數(shù)的改變,用戶按下鼠標(biāo)左鍵等。 存儲(chǔ):容器由這項(xiàng)機(jī)制通知ActiveX控件存儲(chǔ)和提取有關(guān)信息數(shù)據(jù)等。 ActiveX控件只要在Windows的Registry數(shù)據(jù)庫(kù)中注冊(cè)后,就可以像其他Windows應(yīng)用程序一樣發(fā)揮各自的功能。 ActiveX控件是一個(gè)模塊化的靈活對(duì)象,如果某個(gè)應(yīng)用程序或網(wǎng)頁(yè)需要增加一項(xiàng)特殊的功能,無(wú)須重寫整個(gè)程序,只要靈活地插入一個(gè)具有此項(xiàng)功能的ActiveX控件即可實(shí)現(xiàn)。ActiveX的優(yōu)勢(shì)還在于它的動(dòng)態(tài)可
53、交互性,用戶可以動(dòng)態(tài)地在使用過(guò)程中,通過(guò)改變它的屬性和參數(shù),在應(yīng)用程序中實(shí)現(xiàn)自己的特殊要求。 也許有的讀者會(huì)問(wèn):目</p><p> \ 4.2.程序單元編碼</p><p><b> 登陸窗口代碼:</b></p><p> rivate Sub cmdOK_Click()</p><p><b>
54、 '檢查正確的密碼</b></p><p> With frmMain.Data8.Recordset</p><p> .MoveFirst</p><p> For i = 1 To .RecordCount</p><p> If Combo1.Text = .Fields("用戶名稱"
55、) And txtPassword = .Fields("用戶密碼") Then</p><p> LoginSucceeded = True</p><p> UserName = .Fields("用戶名稱")</p><p> UserPass = .Fields("權(quán)限")</p>
56、<p><b> Exit For</b></p><p><b> End If</b></p><p><b> .MoveNext</b></p><p><b> Next i</b></p><p> If LoginSu
57、cceeded Then</p><p> '將代碼放在這里傳遞</p><p> '成功到 calling 函數(shù)</p><p> '設(shè)置全局變量時(shí)最容易的</p><p><b> Unload Me</b></p><p><b> Else<
58、;/b></p><p> MsgBox "無(wú)效的密碼,請(qǐng)重試!", , "登錄"</p><p> txtPassword.SetFocus</p><p> SendKeys "{Home}+{End}"</p><p><b> End If</b
59、></p><p><b> End With</b></p><p><b> End Sub</b></p><p> Private Sub Form_Load()</p><p> On Error Resume Next</p><p> With
60、frmMain.Data8.Recordset</p><p> .MoveFirst</p><p> For i = 1 To .RecordCount</p><p> Combo1.AddItem .Fields("用戶名稱")</p><p> Combo1.ItemData(Combo1.NewInde
61、x) = .AbsolutePosition</p><p><b> .MoveNext</b></p><p><b> Next i</b></p><p><b> End With</b></p><p><b> 管理員模塊代碼</b>
62、</p><p> Dim aa As Long</p><p> Private Sub Combo1_Click()</p><p> Command4.Enabled = True</p><p><b> End Sub</b></p><p> Private Sub Comm
63、and1_Click()</p><p><b> '添加用戶</b></p><p> On Error Resume Next</p><p> If Command1.Caption = "添加用戶" Then</p><p> ListView1.Visible = False
64、</p><p> Frame1.Visible = True</p><p> Text1.Text = ""</p><p> Text2.Text = ""</p><p> Text3.Text = ""</p><p> Text4.Tex
65、t = ""</p><p> Combo1.Text = Combo1.List(0)</p><p> Command2.Enabled = False</p><p> Command3.Enabled = False</p><p> Command4.Enabled = True</p>&
66、lt;p> Command1.Caption = "放棄添加"</p><p><b> Else</b></p><p> ListView1.Visible = True</p><p> Frame1.Visible = False</p><p> Command2.Enabl
67、ed = True</p><p> Command3.Enabled = True</p><p> Command4.Enabled = False</p><p> Command1.Caption = "添加用戶"</p><p><b> End If</b></p>
68、<p><b> End Sub</b></p><p> Private Sub Command2_Click()</p><p><b> '編輯用戶</b></p><p> On Error Resume Next</p><p> With frmMain.Da
69、ta8.Recordset</p><p> Text1.Text = .Fields("用戶名稱")</p><p> Select Case .Fields("權(quán)限")</p><p><b> Case "A"</b></p><p> Combo
70、1.Text = Combo1.List(0)</p><p> Text2.PasswordChar = ""</p><p> Text3.PasswordChar = ""</p><p> Text4.PasswordChar = ""</p><p> Text2.
71、Text = .Fields("用戶密碼")</p><p> Text3.Text = .Fields("用戶密碼")</p><p> Text4.Text = .Fields("用戶密碼")</p><p><b> Case "B"</b></p
72、><p> Combo1.Text = Combo1.List(1)</p><p> Text2.PasswordChar = ""</p><p> Text3.PasswordChar = ""</p><p> Text4.PasswordChar = ""</p&
73、gt;<p> Text2.Text = .Fields("用戶密碼")</p><p> Text3.Text = .Fields("用戶密碼")</p><p> Text4.Text = .Fields("用戶密碼")</p><p><b> Case "C
74、"</b></p><p> Combo1.Text = Combo1.List(2)</p><p> Text2.PasswordChar = ""</p><p> Text3.PasswordChar = ""</p><p> Text4.PasswordChar
75、 = ""</p><p> Text2.Text = .Fields("用戶密碼")</p><p> Text3.Text = .Fields("用戶密碼")</p><p> Text4.Text = .Fields("用戶密碼")</p><p>&
76、lt;b> Case "D"</b></p><p> Text2.PasswordChar = "*"</p><p> Text3.PasswordChar = "*"</p><p> Text4.PasswordChar = "*"</p>
77、<p> Text2.Text = ""</p><p> Text3.Text = ""</p><p> Text4.Text = ""</p><p> Combo1.Text = Combo1.List(3)</p><p> End Select<
78、;/p><p><b> End With</b></p><p> If Command2.Caption = "修改用戶" Then</p><p> ListView1.Visible = False</p><p> Frame1.Visible = True</p><
79、;p> Command1.Enabled = False</p><p> Command3.Enabled = False</p><p> Command4.Enabled = False</p><p> Command2.Caption = "放棄修改"</p><p><b> Else
80、</b></p><p> ListView1.Visible = True</p><p> Frame1.Visible = False</p><p> Command1.Enabled = True</p><p> Command3.Enabled = True</p><p> Com
81、mand4.Enabled = False</p><p> Command2.Caption = "修改用戶"</p><p><b> End If</b></p><p><b> End Sub</b></p><p> Private Sub Command3_
82、Click()</p><p><b> '刪除用戶</b></p><p> On Error Resume Next</p><p> With frmMain.Data8.Recordset</p><p> If MsgBox("確實(shí)要?jiǎng)h除用戶:" & .Fields(
83、"用戶名稱") & " 嗎?", vbYesNo + vbQuestion) = vbYes Then</p><p> If Err <> 0 Then Exit Sub</p><p> If .Fields("權(quán)限") = "D" Then</p><p>
84、 mm = InputBox("請(qǐng)輸入密碼:")</p><p> If mm = .Fields("用戶密碼") And .Fields("用戶名稱") <> UserName Then</p><p><b> .Delete</b></p><p> List
85、View1.ListItems.Clear</p><p><b> Form_Load</b></p><p><b> Else</b></p><p> MsgBox "不能刪除用戶!", vbCritical</p><p><b> End If<
86、;/b></p><p><b> Else</b></p><p><b> .Delete</b></p><p> ListView1.ListItems.Clear</p><p><b> Form_Load</b></p><p&g
87、t;<b> End If</b></p><p><b> End If</b></p><p><b> End With</b></p><p><b> End Sub</b></p><p> Private Sub Command4_
88、Click()</p><p><b> '保存設(shè)置</b></p><p> On Error Resume Next</p><p> If Trim(Text1.Text) = "" Then</p><p> MsgBox "用戶名錯(cuò)誤!", vbCriti
89、cal</p><p> Text1.SetFocus</p><p><b> Exit Sub</b></p><p><b> End If</b></p><p> With frmMain.Data8.Recordset</p><p> If Text3
90、.Text <> Text4.Text Then</p><p> MsgBox "前后密碼設(shè)置不一至,請(qǐng)重新輸入!", vbCritical</p><p> Text3.Text = ""</p><p> Text4.Text = ""</p><p> T
91、ext3.SetFocus</p><p><b> Exit Sub</b></p><p><b> End If</b></p><p> aa = .AbsolutePosition</p><p> .MoveFirst</p><p> For i =
92、1 To .RecordCount</p><p> If .Fields("用戶名稱") = Text1.Text Then</p><p> If .AbsolutePosition <> aa Then</p><p> MsgBox "用戶名已經(jīng)存在了,請(qǐng)你再換一個(gè)!", vbExclamation&
93、lt;/p><p> .MoveFirst</p><p><b> .Move aa</b></p><p> Text1.SetFocus</p><p> Text1.SelStart = 0</p><p> Text1.SelLength = Len(Text1.Text)<
94、/p><p><b> Exit Sub</b></p><p><b> End If</b></p><p><b> End If</b></p><p><b> .MoveNext</b></p><p><b&
95、gt; Next i</b></p><p> .MoveFirst</p><p><b> .Move aa</b></p><p> If Command1.Caption = "放棄添加" Then</p><p><b> .AddNew</b>&
96、lt;/p><p><b> Else</b></p><p> If Text2.Text <> .Fields("用戶密碼") Then</p><p> MsgBox "密碼錯(cuò)誤,請(qǐng)重新輸入!", vbCritical</p><p> Text2.Text
97、= ""</p><p> Text3.Text = ""</p><p> Text4.Text = ""</p><p> Text2.SetFocus</p><p><b> Exit Sub</b></p><p>&l
98、t;b> End If</b></p><p><b> .Edit</b></p><p><b> End If</b></p><p> .Fields("用戶名稱") = Text1.Text</p><p> .Fields("用戶
99、密碼") = Text3.Text</p><p> .Fields("權(quán)限") = Left(Combo1.Text, 1)</p><p><b> .Update</b></p><p><b> End With</b></p><p> If Err
100、<> 0 Then MsgBox Error: Exit Sub</p><p> ListView1.Visible = True</p><p> Frame1.Visible = False</p><p> Command1.Enabled = True</p><p> Command2.Enabled = Tr
101、ue</p><p> Command3.Enabled = True</p><p> Command4.Enabled = False</p><p> Command1.Caption = "添加用戶"</p><p> Command2.Caption = "修改用戶"</p>
102、;<p> ListView1.ListItems.Clear</p><p><b> Form_Load</b></p><p><b> End Sub</b></p><p> Private Sub Command5_Click()</p><p><b>
103、 Unload Me</b></p><p><b> End Sub</b></p><p> Private Sub Form_Load()</p><p> On Error Resume Next</p><p> With frmMain.Data8.Recordset</p>
104、<p> aa = .AbsolutePosition</p><p> .MoveFirst</p><p> For i = 1 To .RecordCount</p><p> ListView1.ListItems.Add i, , .Fields("用戶名稱")</p><p> '
105、; ListView1.ListItems(i).SubItems(1) = .Fields("用戶密碼")</p><p> ListView1.ListItems(i).SubItems(1) = "********"</p><p> Select Case .Fields("權(quán)限")</p><p&
106、gt;<b> Case "A"</b></p><p> ListView1.ListItems(i).SubItems(2) = "A—記費(fèi)員"</p><p><b> Case "B"</b></p><p> ListView1.ListItem
107、s(i).SubItems(2) = "B—操作員"</p><p><b> Case "C"</b></p><p> ListView1.ListItems(i).SubItems(2) = "C—管理員"</p><p><b> Case "D&qu
108、ot;</b></p><p> ListView1.ListItems(i).SubItems(2) = "D—超級(jí)管理員"</p><p> End Select</p><p><b> .MoveNext</b></p><p><b> Next i</b
109、></p><p> .MoveFirst</p><p><b> .Move aa</b></p><p><b> End With</b></p><p><b> End Sub</b></p><p> Private Sub
110、 Form_Resize()</p><p> On Error Resume Next</p><p> ListView1.Move 30, 10, Me.Width - 150, Me.Height - 1200</p><p> Picture1.Top = ListView1.Top + ListView1.Height + 100</p>
111、;<p> Picture1.Left = (Me.Width - Picture1.Width) / 2</p><p><b> End Sub</b></p><p> Private Sub Label5_Click()</p><p><b> End Sub</b></p>
112、<p> Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)</p><p><b> '</b></p><p> On Error Resume Next</p><p> With frmMain.Data8.Recordset&
113、lt;/p><p> .MoveFirst</p><p> .Move Item.Index - 1</p><p><b> End With</b></p><p><b> End Sub</b></p><p> Private Sub Text1_Chang
114、e()</p><p> Command4.Enabled = True</p><p><b> End Sub</b></p><p> Private Sub Text2_Change()</p><p> Command4.Enabled = True</p><p><b&
115、gt; End Sub</b></p><p> Private Sub Text3_Change()</p><p> Command4.Enabled = True</p><p><b> End Sub</b></p><p> Private Sub Text4_Change()</
116、p><p> Command4.Enabled = True</p><p><b> End Sub</b></p><p><b> 4.3集成開發(fā)</b></p><p> 窗體與代碼都設(shè)置完畢,就可以運(yùn)行調(diào)試了,當(dāng)然有共同點(diǎn)的窗體可以借用模塊來(lái)設(shè)計(jì).這里設(shè)置兩個(gè)模塊來(lái)節(jié)省代碼執(zhí)行時(shí)間,并
117、不會(huì)影響到系統(tǒng)本身的功能:</p><p> 打開VB 程序菜單下的 工具→模塊,打開創(chuàng)建模塊窗體,名字為MODULE1,可以使用默認(rèn)的名稱.</p><p> 模塊其實(shí)也就是代碼窗體,只不過(guò)這個(gè)窗體是功用的,涉及其它窗體的功能,</p><p> 這樣在出現(xiàn)錯(cuò)誤的時(shí)候代碼改寫很方便.</p><p><b> 模塊代碼:&
118、lt;/b></p><p> Public UserName As String</p><p> Public UserPass As String</p><p> Public Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsD
119、irectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long</p><p> 'Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X A
120、s Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long</p><p> Public Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVa
121、l lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long</p><p> Type Lwinsock</p><p> Ip As String</p><p> Index As Long</p><p> J
122、SJ As Long</p><p><b> End Type</b></p><p> Public IndexSock() As Lwinsock</p><p> Type lChatUser</p><p> Name As String</p><p> Sex As Str
123、ing</p><p> Used As Boolean</p><p><b> End Type</b></p><p> Public IChatUser() As lChatUser</p><p> Declare Function GetWindowText Lib "user32"
124、; Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long</p><p> Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lPar
125、am As Long) As Long</p><p> Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long</p>
126、<p> Declare Function BringWindowToTop Lib "user32" (ByVal hWnd As Long) As Long</p><p> Public Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExis
127、tingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long</p><p> Public Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long<
128、/p><p> Declare Function SystemParametersInfoByRef Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long) As Long&
129、lt;/p><p> Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) A
130、s Long</p><p> Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long,
131、ByVal ySrc As Long, ByVal dwRop As Long) As Long</p><p> Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long</p><p> Declare Function ReleaseDC Lib "user32" (B
132、yVal hWnd As Long, ByVal hdc As Long) As Long</p><p> Public IsupperMsg As Integer</p><p> Public Const LB_SETHORIZONTALEXTENT = &H194</p><p> Declare Function SendMessage Li
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)--《網(wǎng)吧收費(fèi)系統(tǒng)》
- 網(wǎng)吧收費(fèi)管理系統(tǒng)畢業(yè)設(shè)計(jì)
- vb畢業(yè)設(shè)計(jì)--《網(wǎng)吧收費(fèi)系統(tǒng)》
- java畢業(yè)設(shè)計(jì)--網(wǎng)吧收費(fèi)管理系統(tǒng)
- 畢業(yè)設(shè)計(jì)---網(wǎng)吧管理系統(tǒng)
- 網(wǎng)吧管理系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---網(wǎng)吧計(jì)費(fèi)管理系統(tǒng)
- 畢業(yè)設(shè)計(jì)----超市收費(fèi)系統(tǒng)
- 網(wǎng)吧網(wǎng)絡(luò)規(guī)劃畢業(yè)設(shè)計(jì)
- 門診收費(fèi)管理系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---網(wǎng)吧組網(wǎng)與管理
- 學(xué)校用電收費(fèi)管理系統(tǒng)畢業(yè)設(shè)計(jì)
- 門診收費(fèi)管理系統(tǒng)畢業(yè)設(shè)計(jì)畢業(yè)論文
- 畢業(yè)設(shè)計(jì)-小型網(wǎng)吧局域網(wǎng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---收費(fèi)站智能管理系統(tǒng)
- 醫(yī)院門診收費(fèi)系統(tǒng)畢業(yè)設(shè)計(jì)(論文)
- 畢業(yè)設(shè)計(jì)停車場(chǎng)收費(fèi)管理系統(tǒng)
- 計(jì)算機(jī)畢業(yè)設(shè)計(jì)65delphi通用網(wǎng)吧管理系統(tǒng)設(shè)計(jì)
- 計(jì)算機(jī)畢業(yè)設(shè)計(jì)65delphi通用網(wǎng)吧管理系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---有線電視收費(fèi)管理系統(tǒng)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論