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

正文內(nèi)容

學(xué)籍管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)—畢業(yè)設(shè)計(jì)論文-閱讀頁

2024-12-19 03:49本頁面
  

【正文】 完整。 為了保證數(shù)據(jù)完整性,需要注意: ( 1) 實(shí)體完整性:表的主關(guān)鍵字段的任何部分不能為 MULL。 ( 3) 在設(shè)計(jì)數(shù)據(jù)庫表時(shí)必須規(guī)范化。 ? 第一范式。這就防止在單個(gè)記錄中的任何重復(fù)的組別。任何非關(guān)鍵字字段必須取決于主關(guān)鍵字中的所有字段。該范式還規(guī)定了兩個(gè)或更多的表不可以有相同的主關(guān)鍵字。非關(guān)鍵字的字段不能取決于另一個(gè)非關(guān)鍵字字段。這種范式禁止在主要關(guān)鍵字字段與非關(guān)鍵字字段之間的多重的、獨(dú)立的、一對(duì)多的關(guān)系。 ? 第五范式。它主要將一個(gè)表分割成最小可能的片斷,以消除冗余。 下面是本系統(tǒng)數(shù)據(jù)庫的具體設(shè)計(jì)。 在學(xué)籍管理系統(tǒng)中,比較重要的數(shù)據(jù)表還包括課程信息表( uCoursesInfo)和學(xué)生成績表 (uScoreInfo)。 另外,在系統(tǒng)中還將用到開除學(xué)生表 (uExpelStudInfo)、畢業(yè)學(xué)生表(uGradStudInfo_XXXX)等數(shù)據(jù)庫表。 除了上述數(shù)據(jù)庫表之外,在數(shù)據(jù)庫設(shè)計(jì)中還用到了視圖( View) ,該視圖是對(duì)學(xué)生成績信息的一個(gè)綜合描述,創(chuàng)建成績視圖( v_ScoreInfo)所用到的 SQL語句如下所示: SELECT TOP 100 PERCENT , , , , , , , FROM INNER JOIN ON = INNER JOIN ON = ORDER BY 該視圖分別從 3個(gè)表中獲取所需要的數(shù)據(jù),形成一個(gè)完整的學(xué)生成績信息表(視圖),使得用戶對(duì)學(xué)生成績信息的瀏覽和操作更加方便。 應(yīng)用程序的分析與設(shè)計(jì) 數(shù)據(jù)庫設(shè)計(jì)完成后,就開始進(jìn)入具體的應(yīng)用程序設(shè)計(jì)與分 析設(shè)計(jì)階段。 應(yīng)用程序的界面選擇與設(shè)計(jì) 目前常見的應(yīng)用程序的界面方案有基于對(duì)話框的應(yīng)用程序界面、單文檔界面和多文檔界面?;趯?duì)話框的應(yīng)用程序界面主要特點(diǎn)就是簡潔,具有一定的交互性。單文檔與多文檔最明顯的區(qū)別就 是單文檔應(yīng)用程序的各個(gè)界面窗體是相互獨(dú)立的,而多文檔應(yīng)用程序的各個(gè)窗體要由 MDI 父窗體控制,集中在 MDI窗體的客戶區(qū)之內(nèi)。具體原因如下: ? 由于系統(tǒng)中涉及到的窗體比較多,如果采用 SDI應(yīng)用程序,那么這些窗體將各自獨(dú)立地出現(xiàn)屏幕上。 ? 采用多文檔界面,應(yīng)用程序的各個(gè)窗體都作為多文檔界面的一個(gè)字窗體,這樣有便于統(tǒng)一控制這些窗體;同時(shí),由 于這些窗體將出現(xiàn)在 MDI的客戶區(qū)范圍之內(nèi)而不是在屏幕之上,因此對(duì)于整個(gè)操作系統(tǒng)而言,界面將會(huì)顯得更加整潔一些。 選擇了窗體風(fēng)格之后,就需要進(jìn)行更細(xì)致的界面設(shè)計(jì)。另外,在必要時(shí),工具欄和狀態(tài)欄也是需要的,它們能提供一些快捷的操作方式并且能夠顯示出當(dāng)前系統(tǒng)的狀態(tài)與用戶進(jìn)行交互。另外,目錄樹也具有導(dǎo)航功能。 基于以上分析,學(xué)籍管理應(yīng)用程序的主界面將采用 MDI 應(yīng)用程序,并且提供了菜單,工具欄,狀態(tài)欄以及一個(gè)用于操作的目錄樹。 上述功能模塊包含于應(yīng)用程序主界面的窗體菜單(或目錄樹)和相應(yīng)的子窗體中,具體的代碼實(shí)現(xiàn)詳見源代碼。其中, C/S 結(jié)構(gòu)又分為兩層結(jié)構(gòu)和三層結(jié)構(gòu)。 兩層的 C/S 結(jié)構(gòu)存在一定的缺點(diǎn): ? 兩層 C/S 結(jié)構(gòu)中,客戶端應(yīng)用程序直接連接數(shù)據(jù)庫服務(wù)器,這樣數(shù)據(jù)庫服務(wù)器將消耗一定的資源以處理與客戶端的連接工作。 ? 兩層 C/S 結(jié)構(gòu)中,只有惟一的一個(gè)在線的數(shù)據(jù)庫服務(wù)器,這將使得系統(tǒng)可靠性降低。另外,每個(gè)客戶端還需要進(jìn)行相應(yīng)的配置以連接數(shù)據(jù)庫,例如 ODBC 的配置。這是得數(shù)據(jù)庫服務(wù)旗只需要相應(yīng)客戶端的請(qǐng)求,減輕了服務(wù)器的工作服 負(fù)擔(dān),提高了其工作效率。而且,對(duì)于學(xué)校內(nèi)部的學(xué)籍管理系統(tǒng)而言,由于系統(tǒng)本身處于校園之內(nèi),數(shù)據(jù)安全性能夠得到一定的保障,而且對(duì)數(shù)據(jù)處理效率的要求并不太高,因此本系統(tǒng)仍然采用了傳統(tǒng)的兩層 C/S 結(jié)構(gòu)來進(jìn)行開發(fā)。利用 ODBC 設(shè)置,可以比較靈活的配置服務(wù)器數(shù)據(jù)庫;而采用 ADO 模型來進(jìn)行數(shù)據(jù)庫編程將使得應(yīng)用程序更加靈活,并能利 用 ADO 提供的強(qiáng)大而又完善的數(shù)據(jù)庫功能。在數(shù)據(jù)庫應(yīng)用程序中,用戶身份及其對(duì)系統(tǒng)的使用權(quán)限尤其顯得重要。其中數(shù)據(jù)庫登錄過程如圖41 所示。除了第一次運(yùn)行系統(tǒng)時(shí)需要配置連接數(shù)據(jù)庫外沒有必要每次運(yùn)行應(yīng)用程序時(shí)都去配置一次數(shù)據(jù)庫登錄信息,因此程序作如下設(shè)計(jì): ( 1) 通過對(duì)注冊(cè)表的讀寫來決定是否要顯示配置數(shù)據(jù)庫的窗口。在該窗體上配置好數(shù)據(jù)庫的連接信息后將改配置信息寫入注冊(cè)表,然后轉(zhuǎn)入應(yīng)用程序的登陸窗口。連接數(shù)據(jù)庫正確的話,應(yīng)用程序?qū)?zhí)行到系統(tǒng)的登錄窗口。 了解了登錄數(shù)據(jù)庫的內(nèi)部工作流程之后,下面就來實(shí)現(xiàn)該功能。 Sub Main()過程位于標(biāo)準(zhǔn)模塊 StarMoudule 代碼之中。其中 ,用于檢測注冊(cè)表和查看數(shù)據(jù)庫配置信息的代碼就位于 Sub Main()過程中。在該系統(tǒng)中,操作注冊(cè)表的 API 函數(shù)在標(biāo)準(zhǔn)模塊 RegMod中已經(jīng)聲名并且進(jìn)行了封裝。 在項(xiàng)目開發(fā)中,需要將應(yīng)用程序的必要信息永久的存儲(chǔ)與磁盤。 Visual Basic 有幾個(gè)關(guān)于注冊(cè)表的相關(guān)寒 暑,然而不夠靈活。 詳細(xì)代碼見程序清單。數(shù)據(jù)庫配置窗體的界面如圖 42所示。這些控件中加入自己所需 要的常用特性,然后在后續(xù)的開發(fā)中可以直接使用這個(gè)自定義控件。 創(chuàng)建控件的方法分為:手工創(chuàng)建控件和利用 ActiveX Control Interface Wizard 來創(chuàng)建控件。 在自定義的組合框中枚舉出 ODBC 別名,用戶可以直接輸入,也可以從列表中直接選擇。 “確定”按鈕的主要功能是 用來登錄數(shù)據(jù)庫,同時(shí)把登錄數(shù)據(jù)庫成功的數(shù)據(jù)庫配置信息寫入到注冊(cè)表,已備應(yīng)用程序下次登錄數(shù)據(jù)庫用。 否則,提示數(shù)據(jù)鏈接失敗之后,將不能退出窗體 。 “系統(tǒng)數(shù)據(jù)源”按鈕的主要功能是在應(yīng)用程序的界面中直接調(diào)出配置 ODBC數(shù)據(jù)源的窗體,而免去用戶回到 Windows 的設(shè)置部分重新配置數(shù)據(jù)源的麻煩。 “取消”按鈕的功能比較簡單,只是為了退出窗體用以放棄登錄數(shù)據(jù)庫。 系 統(tǒng)登錄的設(shè)計(jì) 完成數(shù)據(jù)庫的登錄以后,就需要面對(duì)應(yīng)用程序的系統(tǒng)登錄窗體。 圖 43 系統(tǒng)登錄的數(shù)據(jù)流程圖 從圖 43 中可以看出,系統(tǒng)登錄的窗口需要進(jìn)行兩重檢測。如果用戶輸入錯(cuò)誤,程序?qū)⒔o出輸入錯(cuò)誤的提示。這個(gè)判斷主要是為了給用戶分配相應(yīng)的對(duì)應(yīng)用程序的操作權(quán)限。 在系統(tǒng)登錄中,對(duì)用戶級(jí)別的判斷以及根據(jù) 級(jí)別執(zhí)行相對(duì)應(yīng)的動(dòng)作是和最后用戶的登錄界面相關(guān)聯(lián)的。 有了具體的思路,結(jié)合工作流程圖即可進(jìn)行實(shí)際的系統(tǒng)登錄界面設(shè)計(jì),并編寫相應(yīng)的程序代碼。系統(tǒng)登錄的界面如圖 44所示。 在編寫這段代碼的過程中用到了 frmFlash 窗體,這是一個(gè)快閃窗體。如果一個(gè)應(yīng)用程序在啟動(dòng)是消耗時(shí)間比較長,用戶在等待時(shí)或許就會(huì)有不耐煩的感覺??扉W窗體就是在該應(yīng)用程序初始化的過程中,在用戶的系統(tǒng)平臺(tái)上率先顯示出來的一個(gè)窗體。 快閃窗體在許多應(yīng)用程序中都有應(yīng)用,例如 Visual Basic 在啟動(dòng)時(shí)就有一個(gè)快閃窗體。有的快閃窗體上面放置了 Timer 控件,用來控制快閃窗體的關(guān)閉。 在制作快閃窗體時(shí),因?yàn)樗拇翱陲L(fēng)格與普通窗體的風(fēng)格不同,所以需要為其窗體外觀進(jìn)行一些特別的設(shè)置,具體做法如下:設(shè)置快閃窗體的 BorderStyle屬性為 0None,設(shè)置 MaxButton和 MinButton為 False。 可以為窗體的 Click事件添加代碼,用來關(guān)閉窗體。 在程序設(shè)計(jì)過程中,利用了兩個(gè)集合對(duì)象來存放要顯示于菜單上的標(biāo)題文本字符串。 判斷出登錄用戶的用戶級(jí)別為“系統(tǒng)級(jí)別”之后,則所有菜單項(xiàng)設(shè)置為Visible=True,使 其可見;然后對(duì)兩個(gè)集合分別進(jìn)行循環(huán)遍歷,將從這兩個(gè)集合中搜索到的字符串添加到數(shù)形控件上去,從而形成系統(tǒng)級(jí)別的完整的操作界面。這樣就限制了普通用戶對(duì)數(shù)據(jù)庫的操作。具體的實(shí)現(xiàn)方法依然是使用循環(huán)遍歷集合,只是在該段代碼中將只遍歷 colScore 集合。 這種方法只是取得了一定程度上的靈活性:通過將幾個(gè)集合變量定義為模塊級(jí)變量,菜單標(biāo)題字符串定義為常量字符串,從而使得該程序具備一定的靈活性。 具體的各部分的代碼實(shí)現(xiàn)見程序清單。一般而言,程序界面的設(shè)計(jì)應(yīng)該簡單、整潔。 一個(gè)標(biāo)準(zhǔn)的 Windows應(yīng)用程序界面一般包括菜單、工具欄和狀態(tài)欄等部分。應(yīng)用程序主界面如圖 45 所示。 1. 菜單的設(shè)計(jì) 菜單是 Windows 應(yīng)用程序中的重要組成部分,各個(gè)菜單項(xiàng)的設(shè)計(jì)功能 都按照標(biāo)準(zhǔn)界面菜單的功能進(jìn)行設(shè)計(jì)。這些菜單的創(chuàng)建都可以利用 Menu Editor來進(jìn)行創(chuàng)建。這樣,就不能在子窗體運(yùn)行時(shí)使 用父窗體的菜單功能了。 解決這一問題的兩個(gè)方案: ? 將所有不要的父窗體菜單功能都復(fù)制到每個(gè)子窗體菜單中去。 ? 在父窗體的菜單中包含所有子菜單所必需的菜單功能。該屬性用來獲取 MDI應(yīng)用程序中當(dāng)前的活動(dòng)子窗體,從 而對(duì)其進(jìn)行窗體的任意操作,而不需要該窗體的名稱。最好的做法是根本不需要在子窗體中放置菜單,可以用按鈕或其他方式(例如,右鍵的彈出菜單就可以實(shí)現(xiàn))來為子菜單提供具有相同功能的解決方案。另外,應(yīng)用程序還包含了一個(gè) Timer 控件。 2. ImageList 控件和 Timer 控件 ImageList 控件和 Timer 控件在應(yīng)用程序中有著比較重要的用途。 如果想要更復(fù)雜的工具欄效果,可以將工具欄設(shè)置為與 3 個(gè) ImageList 控件相關(guān)聯(lián)。 3. 工具欄設(shè)計(jì) 工具欄提供了便捷的操作方式來完成應(yīng)用程序常用菜單的操作。 在本系統(tǒng)中,工具欄上放置了一些用來操縱界面外觀的 常用按鈕。 工具欄的各個(gè)按鈕還需要設(shè)置一些其他的一些屬性,例如,為每個(gè)工具欄按鈕的 ToolTipText 設(shè)置相應(yīng)的文本;為每個(gè)工具欄提供相關(guān)聯(lián)的圖片索引。將所有的非 tbrSeperate 風(fēng)格的按鈕都按順序設(shè)置好對(duì)應(yīng)的圖像索引,并為每個(gè)按鈕添加上提示文本。 4. TreeView控件和狀態(tài)欄控件 現(xiàn)在的應(yīng)用程序界面常利用目錄樹來作為應(yīng)用程序的導(dǎo)航欄;也可以用目錄樹來完成對(duì)應(yīng)的一些菜單的操作功能。 狀態(tài)欄通常用來顯示當(dāng)前界面的狀態(tài)信息。 為狀態(tài)欄控件添加 4 個(gè)控制面板,分別用作 4 種用途:放置當(dāng)前子窗體的窗口信息、備用面板、顯示當(dāng)前日期的面板、顯示當(dāng)前時(shí)間的面板。 最后,在設(shè)計(jì) MDI 窗體時(shí),要為放置 TreeView 控件增加 一個(gè)容器,既PictureBox 控件,設(shè)置該控件的名稱為 picTreeView。因此可以利用 PictureBox控件作為容器來放置 TreeView 控件。要想實(shí)現(xiàn)關(guān)閉目錄樹的功能,可以通過對(duì) PictureBox控件的 Visibal 屬性進(jìn)行操作來實(shí)現(xiàn) 。 . 應(yīng)用程序界面的代碼實(shí)現(xiàn) 在窗體的公共聲名部分 ,定義了幾個(gè)字符串常量,這些常量用來記錄主要菜單中的子菜單標(biāo)題字符串;同時(shí)定義了 3 個(gè)集合對(duì)象,分別用來存放菜單標(biāo)題字符串,給出了對(duì)這 3個(gè)集合的初始化的子過程代碼;為 MDI窗體定義了一個(gè)只讀的公用屬性 ChildWindowsCount以及該屬性的屬性變量 mintChildWinCount,這個(gè)只讀屬性用來記錄在程序運(yùn)行過程中, MDI 應(yīng)用程序中打開的子窗體數(shù)量;還定義了一個(gè)重要的子過程 MenuOperate,該過程用來把 TreeView 和菜單進(jìn)行關(guān)聯(lián)。 設(shè)定目錄樹與菜單對(duì)應(yīng)的操作 , 這個(gè)地方利用了索引來查找目錄樹中與菜單中對(duì)應(yīng)的操作 。因此,直接通過對(duì)該集合索引的查詢就等于查找了對(duì)應(yīng)的子菜單,因此可以準(zhǔn)確的執(zhí)行相應(yīng)的操作功能 。 該函數(shù)在應(yīng)用程序的標(biāo)準(zhǔn)模塊 MPaintMDIBackground 中定義 。 否則需要等MDI 窗體大小發(fā)生變化的時(shí)候或接受到其他方式產(chǎn)生的重繪消息的時(shí)候背景圖片才能顯現(xiàn)圖片 。其中包括了對(duì)背景圖片的處理??梢岳么a使得圖片平鋪來布滿窗體的背景,也可以利用一系列的 API函數(shù)來使得一張圖片可以隨窗體改變大小,鋪滿窗體。 在 MDI的卸載事件中, MDI 窗體需要卸除所有不再使用的資源,釋放占用的系統(tǒng)資源。 MDI窗體的 ReSize事件,用來控制窗口在應(yīng)用程序中的最小的高度和寬度。 MDI窗 體的菜單事件中,“學(xué)生查詢”子菜單的代碼實(shí)現(xiàn)過程中, 需要先調(diào)用 ActiveX DLL 中的一個(gè)窗體 , 執(zhí)行完查詢后再顯示學(xué)生查詢窗體 。 利用類中顯示窗體的方法,顯示通用查詢窗口 。如果返回的數(shù)據(jù)集非空,那么就通過類將該數(shù)據(jù)集傳遞給應(yīng)用程序的窗口 frmQueryResult 所使用,用來顯示查詢結(jié)果。它的實(shí)現(xiàn)過程與“學(xué)生查詢”子菜單的實(shí)現(xiàn)基本相同。完全可以通過對(duì) MDI窗體的 Arrange 方法來完成對(duì)子窗體的排列,語法格式為: ParaName參數(shù) ParaName的不同取值決定了窗體的排列方式。在該菜單中,選中 WindowsList,則 【 窗口 】 菜單就具備了自動(dòng)維護(hù)打開子窗體的能力。 (3) 關(guān)于“關(guān)閉所有子窗體”功能的實(shí)現(xiàn)。 為了簡化程序代碼的編寫,在本系統(tǒng)中直接利用 ActiveForm 屬性來實(shí)現(xiàn)關(guān)閉所有打開的子窗口。 循環(huán)只需要判斷是否在 ActiveForm 即可。顯示目錄樹 = True 39。通過調(diào)用按 鈕事件,關(guān)閉目錄樹 cmdCancelTree_Click
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1