freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

學(xué)籍管理系統(tǒng)的設(shè)計與實現(xiàn)—計算機(jī)畢業(yè)設(shè)計(參考版)

2024-08-17 08:22本頁面
  

【正文】 因此,應(yīng)該避免這種操作,直接利用 NodeCL。如果利用 CLick 事件,在單擊樹狀控件的左側(cè)的“+”展開控件的時候也會激發(fā) Click39。那么將自動設(shè)置其狀態(tài)為未按下狀態(tài),同時關(guān)閉目錄樹 ElseIf = tbrUnpressed Then mnuWindowCloseTree_Click End If End SelectEnd Sub單擊數(shù)形控件的節(jié)點,執(zhí)行相應(yīng)的菜單操作命令,代碼如下:39。這個先后關(guān)系不可以搞混淆了 If = tbrPressed Then mnuWindowShowTree_Click 39。此時按鈕的狀態(tài)已經(jīng)不是單擊前的狀態(tài)了,因為單擊該按鈕 39。自動設(shè)置其狀態(tài)為按下狀態(tài),同時顯示出目錄樹 39。也可以通過按鈕的索引來進(jìn)行,只是不如 Key 靈活 Select Case Case 水平排列 mnuWindowHorizontal_Click Case 垂直排列 mnuWindowVertical_Click Case 層疊排列 mnuWindowCascade_Click Case 關(guān)閉當(dāng)前窗口 mnuWindowClose_Click Case 關(guān)閉所有窗口 mnuWindowCloseAll_Click Case 目錄樹 39。由于 Key 屬性是可選項,如果在程序設(shè)計時候沒有為每個按鈕設(shè)定 Key,那么39。該過程傳遞的參數(shù)是工具欄按鈕,由于按鈕具有唯一的標(biāo)志 Key,因此可以根據(jù)39。39。通過一個循環(huán),關(guān)閉所有活動子窗體 Do While Not ( Is Nothing) Unload LoopEnd Sub 對工具欄的編程中,要注意的一點就是:在對 tbrCheck 類型的工具欄按鈕編程時,一定要搞清楚按鈕狀態(tài)與單擊按鈕事件的邏輯關(guān)系。設(shè)置工具欄上復(fù)選風(fēng)格的“目錄樹”按鈕狀態(tài)為未按下 (目錄樹).value = tbrUnpressedEnd Sub關(guān)閉當(dāng)前窗口和關(guān)閉所有窗口的菜單代碼:Private Sub mnuWindowClose_Click() 39。設(shè)置工具欄目錄樹的復(fù)選風(fēng)格按鈕為按下狀態(tài) (目錄樹).value = tbrPressedEnd SubPrivate Sub mnuWindowCloseTree_Click() 39。隱藏/顯示目錄樹的操作:Private Sub mnuWindowShowTree_Click() 39。對子窗口而言,如果一個被關(guān)閉,那么另一個本來處于非激活狀態(tài)的窗體也會自動成為活動窗體,因而使得利用 ActiveForm 屬性關(guān)閉所有子窗體定額操作成為可能。有的程序是直接用數(shù)組來設(shè)計子窗體,然后利用 For 循環(huán)將子窗體卸載;有的則是通過每次打開子窗體后,設(shè)置窗體的 Tag 屬性,然后依然利用循環(huán);也有的方法世紀(jì)路子窗體的個數(shù),從而利用 For 循環(huán)。每次打開新的子窗體,都將在【窗口】菜單的底部動態(tài)地增加一個菜單項,已新打開的子窗體的窗體名為標(biāo)題。(2) 關(guān)于 WindowsList 復(fù)選框。關(guān)于對 MDI 窗體中子窗體的控制,有幾點需要說明:(1) 關(guān)于子窗體的排列布局?!俺煽儾樵儭弊硬藛蔚拇a實現(xiàn)過程中,也需要先調(diào)用 ActiveX DLL 中的一個窗體,執(zhí)行完查詢后再顯示成績查詢窗體。通用查詢窗口將向類返回一個查詢結(jié)果數(shù)據(jù)集。利用類中定義的初始化數(shù)據(jù)庫信息的公有方法 InitDB,可以不用直接對屬性賦值。該段代碼用來限制窗口在還原或是拖動改變大小時候能保持一個最小的大小限度。在 MDI 的初始化事件中,窗體完成了界面的定制功能,并且完成了目錄樹的外觀顯示。由于該函數(shù)較復(fù)雜,本系統(tǒng)中用到的 API 函數(shù)是從一些相關(guān)書籍中引用的。在 MDI 窗體中設(shè)置背景,如果窗體放大或縮小,圖片大小固定,則會影響程序的視覺效果。在 MDIForm 的 Load 事件里,完成了應(yīng)用程序界面所需要的初始化設(shè)置。如果圖片在資源文件中,發(fā)送 WM_SIZE 消息,使得圖片在 MDI 顯示時候就能顯現(xiàn)。MDI 窗體的載入事件中,需要調(diào)用函數(shù),初始化 MDI 窗體的背景圖片。因為已經(jīng)將所有子菜單項目按順序的加入了 AllMenu 集合中。定義三個集合對象,分別用來存放“學(xué)生信息管理” 、 “成績管理”中的子菜單標(biāo)題字符串,以及上述兩個菜單中所有子菜單的標(biāo)題字符串。為了界面的整潔,設(shè)置 TreeView 控件和 PictureBox 控件的寬度基本上相同,然后調(diào)整狀態(tài)欄控件中的第一個面板,使其寬度與 PictureBox 控件寬度一致。在該容器上在放置一個Lable 控件,用來為該目錄樹顯示一個名稱;再在 PictureBox 控件的右上角放置一個按鈕,名稱為 cmdCancelTree,用來提供關(guān)閉目錄樹的操作。在 MDI 窗體上,只能放置 PictureBox 、ToolBar 和 StatusBar 等控件。這些屬性需要在狀態(tài)欄的屬性頁中完成。其中,樹形控件的外觀以及與ImageList 控件的關(guān)聯(lián)都將在代碼中完成,這些代碼分別在 MDI 窗體的 Load事件和 Initialize 事件中。在本系統(tǒng)中提供了使用目錄樹替代某些菜單操作的功能,用戶可以根據(jù)習(xí)慣選擇是利用菜單還是目錄樹來完成自己想要的操作。這樣就完成了對工具欄的設(shè)置。設(shè)置這些屬性需要通過工具欄的屬性頁來進(jìn)行。其他應(yīng)用程序功能菜單并沒有放置到工具欄中。在現(xiàn)在的Windows 應(yīng)用程序中,工具欄已經(jīng)成為非常重要的一個組成部分。這樣就可以分別對工具欄按鈕的正常狀態(tài)、不被激活的狀態(tài)和復(fù)選樣式或下拉樣式的按鈕在激活的狀態(tài)分別提供圖片。在本系統(tǒng)中,只為工具欄提供了一個 ImageList 關(guān)聯(lián)。通過 Timer 控件可以對狀態(tài)欄進(jìn)行定時更新。程序中包括兩個 ImageList 控件它們分別用來為工具欄和 TreeView 控件提供圖片。以上兩種方案中,第二種方案比較好,因為將這些菜單合并成一個菜單進(jìn)行管理,在維護(hù)上比較方便,更便于操作。可以在運行時先讓這些子菜單功能不可見,然后當(dāng)運行子菜單時,可以在子菜單對應(yīng)的 GetFocus 和 LostFocus 事件中控制這些子菜單的每一項,可以使用 MDI 父窗體的 ActiveForm 屬性。這種方法雖然可行,然而,如果帶有菜單的子窗體數(shù)量比較多的話,程序?qū)@得臃腫而且難以維護(hù)。當(dāng)該子窗體退出或是不再處于活動狀態(tài)時,MDI 應(yīng)用程序的父窗體將不會自動重新顯示父窗體菜單。 然而,當(dāng)一個 MDI 應(yīng)用程序的父窗體和子窗體都擁有各自的菜單時,將會出現(xiàn)菜單替代的問題,也就是說,當(dāng)擁有自身菜單的子菜單為活動窗體時,該子窗體的菜單將不顯示在子窗體的本身,而是取代了父窗體原來的菜單,出現(xiàn)在父窗體菜單原來的位置。 MDI 應(yīng)用程序中,父窗體可以有自己的菜單,子窗體也可以有屬于自己的菜單。 圖 45 應(yīng)用程序的主界面 應(yīng)用程序主界面的窗體設(shè)計 在應(yīng)用程序中主要應(yīng)用了菜單、工具欄、目錄樹和狀態(tài)欄來構(gòu)成系統(tǒng)的主界面。在學(xué)籍管理系統(tǒng)的界面設(shè)計中,也遵循這一風(fēng)格。另外,對于 Windows 應(yīng)用程序的界面最好符合 Windows 標(biāo)準(zhǔn)應(yīng)用程序的一般操作規(guī)則,而不應(yīng)該追求一些外表的華麗和與眾不同,使得用戶在操作時感到不適應(yīng)。 學(xué)籍管理系統(tǒng)主界面設(shè)計 應(yīng)用程序的主界面是整個應(yīng)用程序中比較重要的一個組成部分。如果想要取得更大的靈活性,可能需要借助菜單數(shù)組甚至是有關(guān) INI 文件的技巧。在 For 循環(huán)中設(shè)置好遍歷的起點和終點,將使得只有特定的一條項目被添加到樹形控件中去。 對應(yīng)地,此時的操作目錄樹也只有“成績查詢”一個子節(jié)點。 在普通級別的用戶界面中,將只有“成績查詢”功能菜單是可以使用的,其他的“成績錄入” 、 “學(xué)生信息管理”以及“學(xué)生信息查詢”等菜單均為不可見的。其中,一個集合 colScore 用來存放“ 成績管理”菜單中的子菜單項,另一個集合 colInfo 用來存放“學(xué)生信息管理”菜單中的子菜單項。一般用不上,因為快閃窗體的顯示和關(guān)閉一般由其他程序代碼控制。這樣就完成了快閃窗體的制作。在本系統(tǒng)中,則是顯示完主窗體后,通過其他程序代碼塊中的相關(guān)代碼來關(guān)閉快閃窗體??扉W窗體一般要在應(yīng)用程序加載完畢顯示出來之后,在關(guān)閉掉。該窗體有獨特的窗體風(fēng)格,一般用來向用戶顯示一些有關(guān)程序的信息、公司的信息或是其他一些提示性的文字和畫面。為了讓用戶能夠在系統(tǒng)啟動的這段時間里能夠了解到應(yīng)用程序的一些信息,需要使用到快閃窗體。如果一個窗體上面所放置的控件、位圖等資源比較多時,該窗體在載入時就需要較長的時間。圖 44 系統(tǒng)登錄窗體外觀 系統(tǒng)登錄窗體上的按鈕的功能如下: “確定”按鈕執(zhí)行從數(shù)據(jù)庫的用戶表中返回一個記錄集的功能,并且取得該登錄用戶的用戶權(quán)限。 系統(tǒng)登錄界面非常簡單,包括兩個 Lable 控件、兩個字定義的文本框控件和兩個字定義的位圖按鈕。因此,該部分的操作將在應(yīng)用程序的主界面窗體的 Load 事件(或是 Initialize 事件)中完成。如果該用戶是系統(tǒng)級別的用戶,用戶將能夠獲得對該應(yīng)用程序的完整的操作權(quán)限,包括對學(xué)生信息的管理和查詢以及對學(xué)生成績的錄入和查詢;如果該用戶只是普通級別的用戶,該用戶將只能獲得查詢學(xué)生成績的功能,而不能對數(shù)據(jù)庫系統(tǒng)有其他更多的操作權(quán)限范圍。 在用戶通過身份驗證后,系統(tǒng)將在后臺執(zhí)行另外一個檢測過程,判斷該用戶的級別是否為“系統(tǒng)級” 。 首先判斷輸入的用戶名和密碼是否合法,即判斷用戶的合法身份。應(yīng)用程序的登錄過程如圖 43 所示。 完成數(shù)據(jù)庫登錄之后,數(shù)據(jù)庫的配置信息將寫入注冊表。如果數(shù)據(jù)庫連接不成功,一般需要重新檢查數(shù)據(jù)庫的設(shè)置情況,如果設(shè)置有變動,則需要利用該按鈕對 ODBC 數(shù)據(jù)源進(jìn)行重新配置,然后再利用“確定”按鈕將新的登錄信息寫回到注冊表中。除非按“取消”按鈕放棄登錄數(shù)據(jù)庫。如果輸入信息正確登錄到數(shù)據(jù)庫上,則可以直接退出該窗體。該自定義控件所具備的自動搜索功能將能夠簡化用戶的輸入。開發(fā)本系統(tǒng)采用的是利用 ActiveX Control Interface Wizard 來生成控件代碼的,因為,手工書寫代碼的效率比較低。這將使得程序開發(fā)更加高效,也更加靈活。圖 42 用戶登錄數(shù)據(jù)庫,注冊數(shù)據(jù)庫配置信息數(shù)據(jù)庫配置窗體上,除了 3 個標(biāo)簽控件之外,其他幾個控件都是自己自定義的控件。B. 數(shù)據(jù)庫設(shè)置窗體的設(shè)計在有關(guān)程序啟動的代碼設(shè)計中,主要涉及到兩個窗體,一個是數(shù)據(jù)庫配置窗體,一個就是系統(tǒng)登錄窗體。因此,在本系統(tǒng)開發(fā)中,采用了一些資料中關(guān)于注冊表的函數(shù),能夠靈活的完成所需要的功能,包括打開注冊表鍵值、創(chuàng)建注冊表鍵并設(shè)置鍵值、讀取鍵值、列舉注冊表中鍵值等操作。存放程序 文件和寫入注冊表兩種方式。實現(xiàn)數(shù)據(jù)庫登錄的模塊 StarMoudle 代碼除了實現(xiàn)登錄系統(tǒng)前的檢測外,還定義了一些未來程序中常用的函數(shù)。 為了實現(xiàn)對注冊表的讀寫,需要對 Windows API 函數(shù)進(jìn)行封裝。該標(biāo)準(zhǔn)模塊中定義了要在整個系統(tǒng)中都要用到的程序變量和一些供用函數(shù)代碼。A. 啟動應(yīng)用程序的設(shè)計 在本系統(tǒng)中,應(yīng)用程序是從 Sub Main()過程來啟動的。 (4) 如果讀取到的注冊表信息不能正確的連接到數(shù)據(jù)庫,說明數(shù)據(jù)庫的設(shè)置出現(xiàn)了變化,需要再次回到數(shù)據(jù)庫配置窗口進(jìn)行設(shè)置,然后重新連接數(shù)據(jù)庫。 (3) 如果應(yīng)用程序不是第一次運行,則通過讀取注冊表中的相關(guān)數(shù)據(jù)庫配置信息來登錄數(shù)據(jù)庫。 (2) 如果應(yīng)用程序是第一次運行,那么讀取注冊表的信息時就讀取不到信息,從而就直接在這次運行的開始階段出現(xiàn)連接數(shù)據(jù)庫的界面。 數(shù)據(jù)庫登錄的設(shè)計 在圖 41 中顯示的是本系統(tǒng)中登錄數(shù)據(jù)庫的過程。在本系統(tǒng)中,用到的系統(tǒng)登錄技術(shù)包括數(shù)據(jù)庫登錄和應(yīng)用程序登錄。第 4 章 詳細(xì)設(shè)計 系統(tǒng)登錄 程序啟動讀取注冊表中信息用注冊表信息連接數(shù)據(jù)庫 系統(tǒng)登錄 成功配置 ODBC重寫注冊表用注冊表信息連接數(shù)據(jù)庫 啟動系統(tǒng) 成功 成功成功 成功失敗失敗失敗 圖 41 程序啟動,用戶登錄數(shù)據(jù)庫流程圖應(yīng)用程序要求使用者進(jìn)行登錄,以便確認(rèn)使用者的身份以及使用權(quán)限。另外,應(yīng)用程序系統(tǒng)在訪問數(shù)據(jù)庫時,采用了 ODBC 數(shù)據(jù)源+ADO 的方式。盡管兩層的 C/S 結(jié)構(gòu)存在一定的缺點,然而作為一種成熟的應(yīng)用程序結(jié)構(gòu)模型,兩層結(jié)構(gòu)具有開發(fā)難度小,維護(hù)和使用比較方便的優(yōu)點。三層的 C/S 結(jié)構(gòu)在兩層結(jié)構(gòu)的基礎(chǔ)上加入了新的業(yè)務(wù)邏輯層,業(yè)務(wù)邏輯層負(fù)責(zé)數(shù)據(jù)庫與客戶端的連接工作,起到了一個中繼的作用:一方面向數(shù)據(jù)庫服務(wù)器傳遞客戶端的請求,一方面將數(shù)據(jù)庫服務(wù)器的處理結(jié)果返回客戶端。? 兩層 C/S 結(jié)構(gòu)的應(yīng)用程序分布比較麻煩,需要一些 DLL 的支持。如果連接工作比較頻繁的話,數(shù)據(jù)庫服務(wù)器的效率將
點擊復(fù)制文檔內(nèi)容
外語相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1