




已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
目錄第一章系統(tǒng)概述11.1系統(tǒng)開發(fā)背景和意義11.2開發(fā)目的11.3開發(fā)環(huán)境11.4硬件需求2第二章 系統(tǒng)需求分析32.1系統(tǒng)功能設(shè)計32.2系統(tǒng)功能模塊劃分42.3系統(tǒng)數(shù)據(jù)流圖52.4數(shù)據(jù)字典6第三章 系統(tǒng)總體設(shè)計73.1總體設(shè)計目標73.2概念模型(E-R圖)733關(guān)系模式8第四章 系統(tǒng)詳細設(shè)計1141系統(tǒng)通用類設(shè)計11411基本通用類設(shè)計114.1.2系統(tǒng)流程圖11第五章 系統(tǒng)程序?qū)崿F(xiàn)與測試145.1 用戶登錄和新用戶注冊145.1.1用戶界面設(shè)計145.1.2用戶登錄145.1.3用戶注冊155.1.4用戶角色管理165.1.5用戶密碼修改175.2題庫設(shè)計175.2.1試題種類管理175.2.2試題圖片管理185.2.3添加試題185.2.4修改試題195.2.5刪除試題195.2.6試題答案設(shè)計195.2.7試題答案添加205.2.8試題答案修改205.2.9試題答案刪除215.3試卷設(shè)計215.3.1添加新試卷215.3.2修改試卷225.3.3刪除試卷225.4隨機生成試卷225.5考生在線答題245.6自動閱卷265.7考試結(jié)果275.8測試275.8.1測試項目285.8.2測試運行結(jié)果28結(jié)束語31參考文獻32第一章系統(tǒng)概述1.1系統(tǒng)開發(fā)背景和意義隨著我國經(jīng)濟的高速發(fā)展,我國的交通運輸能力不斷提高,越來越多的人開私家車到異地進行商務(wù)或者旅游等活動。在這一條件下,我國的車輛逐漸增多,最近幾年,學(xué)車的人也是越來越多。為了減少交通事故的發(fā)生,車管所對駕駛員的交通知識考核起著至關(guān)重要的作用。隨著信息量的逐步增加,繁雜的數(shù)據(jù)處理費時費力,單純以人力進行的駕駛員理論考試的考核已經(jīng)不適合駕駛理論考試的現(xiàn)狀。現(xiàn)在是一個信息產(chǎn)業(yè)的時代,國家把信息產(chǎn)業(yè)作為增長國民經(jīng)濟的重要因數(shù)。在這樣的環(huán)境下,先進的信息技術(shù)進行駕駛員理論考試已成為必要。駕駛模擬考試系統(tǒng)以計算機為操作工具,按照駕駛理論考試的流程,把駕駛理論考試的一些工作人員從繁瑣的數(shù)據(jù)處理中解放出來,從而提高駕駛考試的工作效率。駕駛理論考試系統(tǒng)把駕駛的理論試題保存于數(shù)據(jù)庫中,通過計算機可以很方便地查詢使用所需要的數(shù)據(jù),而且這些操作全部由系統(tǒng)內(nèi)部的代碼完成??忌拖到y(tǒng)管理員通過系統(tǒng)的友好界面,輸入一些簡單的數(shù)據(jù)便可操作。該系統(tǒng)采用B/S模式進行設(shè)計,異地的想學(xué)車的學(xué)員也可以使用該系統(tǒng),進行模擬考試,從而了解自己對交通規(guī)則了解多少。本系統(tǒng)主要由使用Microsoft Visual Studio.NET 2003 開發(fā)的頁面,由SQL Server2000開發(fā)的數(shù)據(jù)庫組成。1.2開發(fā)目的本系統(tǒng)采用B/S模式設(shè)計,開發(fā)目的除了方便車輛管理所的工作人員。同時把駕駛理論所有試題保存到數(shù)據(jù)庫,通過互聯(lián)網(wǎng)方便地進行模擬考試,還能讓學(xué)車的學(xué)員對交通規(guī)則和法律知識有更多的了解。1.3開發(fā)環(huán)境本系統(tǒng)是在windows XP操作系統(tǒng)下,使用Microsoft Visual Studio.NET 2003作為開發(fā)工具進行開發(fā)的。數(shù)據(jù)庫使用的是SQL Server2000。1.4硬件需求在運行本系統(tǒng)前,請檢查以下計算機是否滿足以下要求。l 服務(wù)器要求的配置為: CPU:Intel 賽揚以上,建議Intel Pentium以上 內(nèi)存:128M以上,建議256M以上 硬盤:1G以上的可用硬盤安裝空間 操作系統(tǒng):Windows 2000以上,Internet信息服務(wù)器5.0(IIS 5.0) 軟件:Microsoft SQL Server 7.0以上版本l 客戶機硬件配置要求為: CPU:Intel賽揚 以上,建議Intel Pentium 以上 內(nèi)存:32M以上,建議64M以上 操作系統(tǒng):Windows2000以上,IE5.0以上版本第二章 系統(tǒng)需求分析2.1系統(tǒng)功能設(shè)計根據(jù)駕校理論考試的邏輯劃分,本系統(tǒng)一共有六個子系統(tǒng),分別是用戶登錄和注冊,用戶角色管理,用戶管理,試題管理,題庫管理,在線答題。其功能結(jié)構(gòu)圖如圖2.1所示。駕駛理論考試系統(tǒng)用戶管理試題管理題庫管理在線答題圖2.1 系統(tǒng)功能圖 用戶管理 添加用戶,修改用戶,刪除用戶,用戶登錄和注冊。 試題管理(1)試題類別管理,主要是實現(xiàn)試題類別的添加、修改試題類別、刪除試題類別、和試題的類別排序功能。(2)試題圖片管理,主要實現(xiàn)試題的圖片添加,刪除和修改等功能(3)考試試題管理,主要實現(xiàn)試題的添加、修改、刪除功能。(4)試題答案管理,主要實現(xiàn)試題答案的添加、修改、刪除功能。 題庫管理題庫管理主要是在系統(tǒng)中構(gòu)造試卷,即試題的每一種題型有多少題,添加試卷、及刪除試卷和修改試卷功能。 在線答題(1)動態(tài)隨機生成試卷,使用隨機函數(shù)動態(tài)地從題庫中取得整套試卷和題目,每次生成的試卷是不相同的。(2)顯示出整套試卷,依次答題,系統(tǒng)自動判斷該題是否正確。(3)最后顯示該考生的考試成績。2.2系統(tǒng)功能模塊劃分系統(tǒng)整體設(shè)計如圖2.2所示,此系統(tǒng)可以劃分為業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層和數(shù)據(jù)庫。數(shù)據(jù)訪問層業(yè)務(wù)邏輯層數(shù)據(jù)庫圖2.2 系統(tǒng)設(shè)計圖數(shù)據(jù)庫、數(shù)據(jù)訪問層和業(yè)務(wù)邏輯層的具體描述如下:(1)數(shù)據(jù)庫位于系統(tǒng)最底層,它存儲系統(tǒng)的所有數(shù)據(jù)。(2)數(shù)據(jù)訪問層建立在數(shù)據(jù)庫之上,應(yīng)用程序通過該層訪問數(shù)據(jù)庫。數(shù)據(jù)訪問層一般封裝數(shù)據(jù)庫的選擇、添加、更新、刪除等操作。同時還為業(yè)務(wù)邏輯層提供訪問數(shù)據(jù)庫的接口或函數(shù)等。該層直接與數(shù)據(jù)庫相關(guān)聯(lián),同時又為業(yè)務(wù)邏輯層服務(wù),所以數(shù)據(jù)庫訪問層設(shè)計的好壞關(guān)系到整個系統(tǒng)的成敗。下面以用戶管理模塊的數(shù)據(jù)訪問(UserDB類)為例,介紹數(shù)據(jù)訪問層的實現(xiàn)方法。UserDB類實現(xiàn)訪問數(shù)據(jù)庫的方法如下:Public SqlDataReader GetUsers() 從用戶表Users獲取所有用戶信息。Public SqlDataReader GetSingleUser(int nUserID)從用戶表Users獲取單個用戶信息。Public int AddUser(String sUserName,String sPassword,String sEmail)添加新用戶到用戶表Users中。Public void UpdateUserPassword(int nUserID,string sPassword)更新用戶的密碼。Public void UpdateUserState(int nUserID,int nState)更新用戶的當前狀態(tài)。Public void UpdateUserRole(int nUserID,int nRoleID)更新用戶的角色。Public void DeleteUser(int nUserID)從用戶表Users中刪除用戶。Public SqlDataReader GetUserLogin(String nUserName,String sPassword)從用戶表Users中獲取用戶ID,用于用戶登錄。(3)業(yè)務(wù)邏輯層包括題庫創(chuàng)建、用戶管理、用戶注冊等業(yè)務(wù)邏輯,它一般由Web頁面實現(xiàn),如系統(tǒng)登錄頁面Default.aspx、用戶管理頁面UserManage. aspx、隨機生成試卷頁面CreateExaminePaper.aspx等。系統(tǒng)是由六個完整的功能實現(xiàn)的,根據(jù)這些功能,可以設(shè)計出系統(tǒng)的功能模塊,各個系統(tǒng)功能模塊之間的關(guān)系如圖2.3所示。用戶管理試題管理題庫管理在線考試駕駛理論考試系統(tǒng)圖2.3 模塊關(guān)系圖2.3系統(tǒng)數(shù)據(jù)流圖本系統(tǒng)采用B/S模式設(shè)計,開發(fā)目的除了方便車輛管理所的工作人員。同時把駕駛理論所有試題保存到數(shù)據(jù)庫,通過互聯(lián)網(wǎng)方便地進行模擬考試,還能讓學(xué)車的學(xué)員對交通規(guī)則和法律知識有更多的了解。該系統(tǒng)數(shù)據(jù)流圖如圖2.4所示。D1用戶信息 D2題庫 4判卷 核對信息 題庫管理3提交試卷2生成試卷1核對用戶信息考生 登錄 核對正確 答題 提交5顯示考試成績考生 查看 計算考試成績 讀取成績D3考試成績圖2.4系統(tǒng)數(shù)據(jù)流圖2.4數(shù)據(jù)字典數(shù)據(jù)流圖描述了系統(tǒng)的分解,但沒有對圖中各成分進行說明,數(shù)據(jù)字典就是為了數(shù)據(jù)流圖的每個數(shù)據(jù),以及組成數(shù)據(jù)流或文件的數(shù)據(jù)項作出說明。數(shù)據(jù)字典:試題=問題內(nèi)容+問題類型+問題選項+問題圖片+問題分值用戶=用戶名+用戶密碼+用戶Email地址+用戶類型答案=問題的正確答案+答案所屬的問題名稱: 試題簡述: 試題的基本資料組成: 問題內(nèi)容+問題選項+問題類型+問題圖片+問題分值名稱: 用戶資料簡述: 用戶的基本資料組成: 用戶名稱+用戶密碼+用戶Email地址+用戶類型名稱: 答案簡述: 答案的基本資料組成: 問題的正確答案+答案所屬問題第三章 系統(tǒng)總體設(shè)計3.1總體設(shè)計目標駕駛模擬考試系統(tǒng)以計算機為操作工具,按照駕駛理論考試的流程,把駕駛理論考試的一些工作人員從繁瑣的數(shù)據(jù)處理中解放出來,從而提高駕駛考試的工作效率。駕駛理論考試系統(tǒng)把駕駛的理論試題保存于數(shù)據(jù)庫中,通過計算機可以很方便地查詢使用所需要的數(shù)據(jù),而且這些操作全部由系統(tǒng)內(nèi)部的代碼完成??忌拖到y(tǒng)管理員通過系統(tǒng)的友好界面,輸入一些簡單的數(shù)據(jù)便可操作。該系統(tǒng)采用B/S模式進行設(shè)計,異地的想學(xué)車的學(xué)員也可以使用該系統(tǒng),進行模擬考試,從而了解自己對交通規(guī)則了解多少。3.2概念模型(E-R圖)得到前面的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu)以后,就可以設(shè)計出能夠滿足用戶需求的各種實體,以及它們之間的關(guān)系。這些實體包含各種具體信息,通過相互之間的作用形成數(shù)據(jù)的流動。駕駛模擬考試系統(tǒng)以計算機為操作工具,按照駕駛理論考試的流程,把駕駛理論考試的一些工作人員從繁瑣的數(shù)據(jù)處理中解放出來,從而提高駕駛考試的工作效率。駕駛理論考試系統(tǒng)把駕駛的理論試題保存于數(shù)據(jù)庫中,通過計算機可以很方便地查詢使用所需要的數(shù)據(jù),而且這些操作全部由系統(tǒng)內(nèi)部的代碼完成??忌拖到y(tǒng)管理員通過系統(tǒng)的友好界面,輸入一些簡單的數(shù)據(jù)便可操作。本例根據(jù)上面的設(shè)計規(guī)劃出的實體有:管理員,試卷,考生。下面畫出各實體之間的主要E-R關(guān)系圖,如圖3.1所示??忌脩裘艽a用戶名考試考試題目管理理管理員考試時間用戶密碼用戶名試題內(nèi)容試題類型試題答案試題分值 圖3.1個實體之間的主要關(guān)系的E-R圖3.3關(guān)系模式用戶(用戶ID,用戶名,用戶密碼,用戶Email,用戶角色ID)問題(問題ID,問題內(nèi)容,問題類型,問題圖片,問題分值)答案(問題正確答案,問題ID)試卷(試卷ID,試題總分數(shù),考試時間)3.3.1字段些系統(tǒng)使用 SQL Server 2000 作為應(yīng)用程序的數(shù)據(jù)庫,此系統(tǒng)的實際需要,系統(tǒng)至少需要實現(xiàn)考試題庫,用戶及其角色和試卷數(shù)據(jù),因此本系統(tǒng)數(shù)據(jù)庫所用到的一些用戶表、角色表、考生表、試題表,問題表、試題種類表、試題答案表、試卷表、試卷種類表和圖片表。1用戶表用戶表用于存儲系統(tǒng)的用戶信息,該表引用角色的用戶角色ID字段作為表的外鍵,用戶表的字段說明如表3-1所示。表3-1 用戶表字段說明編號字段名稱字段類型1用戶表IDInt2用戶名Varchar(50)3用戶密碼Varchar(50)4用戶EmailVarchar(50)5用戶角色IDInt2角色表角色表用于存儲用戶的角色信息。角色表的字段說明如表3-2所示。表3-2 角色表字段說明編號字段名稱字段類型1用戶表IDInt2用戶名Varchar(50)3考生表 考生表存儲參加考試的考生信息,該表引用了用戶表的主鍵用戶ID作為該表的外鍵。4問題表問題表存儲系統(tǒng)的試題信息。該表引用問題種類表QuestionKinds的問題類型ID、圖片表的問題圖片ID、用戶表的用戶ID作為表的外鍵。問題表的字段說明如表3-3所示。表3-3 問題表的字段說明編號字段名稱字段類型1問題表IDInt2問題內(nèi)容Varchar(200)3問題類型IDInt4問題圖片IDInt5問題分值Int5問題種類表問題種類表存儲問題種類的信息。問題種類表的字段說明如表3-4所示。表3-4 問題種類表的字段說明編號字段名稱字段類型1問題表IDInt2問題類型Varchar(50)6問題答案表問題答案表存儲題庫中問題的答案信息,該表引用問題表的答案所屬問題ID作為表的外鍵。問題答案表的字段說明如表3-5所示。表3-5 答案表的字段說明編號字段名稱字段類型1問題答案表IDInt2標題Varchar(4)3問題選項Varchar(200)4正確答案Varchar(4)5答案所屬問題IDInt7圖片表圖片表存儲系統(tǒng)的圖片信息。8試卷表試卷表存儲每一套試卷的信息,該表引用用戶表的用戶ID、角色表的用戶角色ID,試卷表的字段說明如表5-6所示。表5-6 試卷表的字段說明編號字段名稱字段類型1角色IDInt2試題總分數(shù)Int3考生角色IDInt9試卷類型表試卷類型表存儲每一套試卷的詳細信息,試卷表的試卷ID作為表的外鍵。第四章 系統(tǒng)詳細設(shè)計41系統(tǒng)通用類設(shè)計在應(yīng)用程序開發(fā)過程中多處使用類,如數(shù)據(jù)庫通用類、應(yīng)用數(shù)據(jù)通用類。 411基本通用類設(shè)計系統(tǒng)采用自定義的異常處理類MyException處理應(yīng)用程序異常機制。該類定義了函數(shù)MyException()重載基類的函數(shù)Exception(),同時還繼承基類的message和inner兩個變量。異常處理類MyException定義了兩個同名的函數(shù),其中參數(shù)source表示錯誤的類型編碼、參數(shù)message標識錯誤的具體信息;參數(shù)Exception繼承系統(tǒng)的異常參數(shù)。4.1.2系統(tǒng)流程圖系統(tǒng)管理員可以對用戶管理和用戶角色分配管理等功能,此功能的關(guān)系流程圖4.1所示。否是用戶管理和角色管理用戶管理角色權(quán)限管理用戶角色分配系統(tǒng)管理員否開始結(jié)束圖4.1 用戶管理與角色管理關(guān)系系統(tǒng)流程圖在線答題模塊中,系統(tǒng)首先按照試卷的要求,如試卷總分、試卷章節(jié)、試題的類型等,隨機從數(shù)據(jù)庫生成一套試卷。然后把各個試題顯示在答題頁面上。試卷隨機產(chǎn)生流程如圖4.5所示。是否否隨機生成試卷獲取用戶角色隨機獲取試卷種類顯示試卷種類數(shù)量完畢試卷生成完畢是開始結(jié)束圖4.5用戶答題流程圖在隨機生成試卷過程中存在兩個函數(shù)的調(diào)用過程,右邊的回調(diào)過程返回到隨機生成試卷的狀態(tài),該函數(shù)調(diào)用過程是在沒有滿足試卷的題型或題型種類條件時發(fā)生,左邊的函數(shù)返回隨機獲取試卷種類狀態(tài),該函數(shù)是在沒有滿足試卷種類條件時發(fā)生。數(shù)據(jù)庫中的每一類型的試卷所包含的題型是不相同的,且每一種題型所包含的試題和試題的題量也是不同相同的,各種類的試卷的總分和試題的章節(jié)都在同一個范圍內(nèi),即屬于同一類型的試卷。試題的總分,試題的開始章節(jié),試題的結(jié)束章節(jié),試題的種類和第幾種題型的數(shù)量ArrarList變量。應(yīng)用程序在創(chuàng)建整套試題之前會檢查以上幾個參數(shù)是否匹配。如果每套試題的總分數(shù)為設(shè)置的試題的總分的值,則為有效試卷,反之亦然。隨機生成試卷的流程如圖4.6所示。是否否否隨機選取試卷取到試卷參數(shù)隨機生成一種題型到試卷結(jié)尾?生成題型成功試卷生成成功是是開始結(jié)束圖4.6隨機生成試卷流程圖第五章 系統(tǒng)程序?qū)崿F(xiàn)與測試5.1 用戶登錄和新用戶注冊5.1.1用戶界面設(shè)計用戶在登錄由Default.aspx頁面實現(xiàn),它的代碼隱藏在Default.aspx.cs文件中。用戶登錄是應(yīng)用程序的主要入口,用戶只有通過該入口才能進入系統(tǒng)。由于用戶所屬的角色不相同,所以在登錄時都要選擇自己所屬的角色,否則不能進入系統(tǒng)。用戶登錄使用了兩個TextBox控件作為輸入名稱和密碼,用戶單擊“確定”按鈕就可以登錄到系統(tǒng)。單擊“注冊”按鈕可以重新注冊一個用戶。用戶的角色是從Roles表中獲取的,考生為默認角色。用戶登錄使用了兩個驗證控件,它們?yōu)镽FVUserNamet和RFVPassword,分別驗證用戶名稱和用戶密碼是否為非空。兩個非空驗證控件僅僅對“確定”按鈕有效,其實現(xiàn)方法就是把“注冊”控鈕的屬性CausesValidation值設(shè)為False。5.1.2用戶登錄用戶登錄過程是一個驗證過程,應(yīng)用程序首先從數(shù)據(jù)庫獲取該用戶的信息,如用戶名稱和用戶角色,然后再根據(jù)用戶的角色顯示用戶的下一步操作頁面。如果考生登錄,顯示生成等待頁面和在線答題頁面;如果管理登錄,顯示題庫頁面;如果系統(tǒng)管理員登錄,則顯示系統(tǒng)維護頁面。無論用戶是什么樣的角色登錄,系統(tǒng)都將保存該用戶的ID和角色ID。用戶單擊“確定”按鈕觸發(fā)事件SureBtn_Click()來實現(xiàn)用戶登錄驗證過程。該事件調(diào)用了數(shù)據(jù)訪問層的函數(shù) GetUserLogin()驗證用戶的輸入,如果是正確的,用戶就登錄到系統(tǒng)中。否則頁面將彈出錯誤信息的提示。函數(shù)GetUserLogin()從數(shù)據(jù)庫獲取合法用戶的ID數(shù)據(jù),函數(shù)GetUserLogin() 調(diào)用存儲過程Pr_GetUserLogin()訪問數(shù)據(jù)庫。為了整個系統(tǒng)的安全性,在用戶表Users中的存儲用戶的密碼Password字段不是用戶密碼的真實值,而是加密后的密碼字符串。加密函數(shù)Encrypt()被定義為UserDB類的靜態(tài)函數(shù)。調(diào)用加密函數(shù)時,首先把加密字符串編碼成Uncode,然后使用系統(tǒng)的不對稱加密算法MD5加密用戶密碼串。5.1.3用戶注冊添加新的用戶有兩種方式,一種是從后臺的用戶管理中添加用戶,另一種是用戶注冊,用戶注冊方式只能添加考生。因為具有管理員角色的用戶可以直接進入到系統(tǒng)后臺進行管理。用戶注冊時分別輸入用戶名稱、用戶密碼、確認密碼和用戶的電子郵箱信息即可。前三個控件都用了驗證控件和一個正則表達式,電子郵箱則使用格式驗證。單擊“確定”按鈕觸發(fā)事件SureBtn_Click(),該事件調(diào)用數(shù)據(jù)訪問層函數(shù)AddUser()提交新用戶注冊信息到表Users中。SureBtn_Click()事件調(diào)用函數(shù)AddUser(),AddUser()調(diào)用存儲過程Pr_AddUser添加新用戶信息到用戶表中。在添加的過程中,還查看用戶表中是否有同名稱用戶,有同名用戶就不添加當前的用戶。用戶管理功能由頁面UserManage.aspx實現(xiàn),用戶管理模塊實現(xiàn)了用戶的刪除、角色的分配、密碼的修改。界面設(shè)計如圖4.2所示圖5.2用戶管理及角色管理用戶列表框顯示系統(tǒng)當前包含的所有用戶,系統(tǒng)管理員單擊“X”按鈕即可刪除當前列表框被選中的用戶。單擊“”按鈕即可添加新用戶。用戶管理頁面初始化時,調(diào)用BindData()實現(xiàn)綁定用戶列表控件,該函數(shù)調(diào)用數(shù)據(jù)訪問層UserDB類的函數(shù)GetUser()從用戶表中獲取用戶和用戶ID等數(shù)據(jù)。單擊刪除“X”按鈕實現(xiàn)刪除用戶的功能,該按鈕為圖像按鈕,單擊此按鈕觸發(fā)事件deleteBtn_Click()。該事件調(diào)用數(shù)據(jù)訪問層UserDB類的函數(shù)DeleteUser()刪除數(shù)據(jù)庫中的用戶記錄。刪除列表中的用戶之后,該事件還要重新綁定用戶數(shù)據(jù)。單擊添加“/”按鈕實現(xiàn)實現(xiàn)用戶添加功能,此按鈕為圖像按鈕,單擊此按鈕觸發(fā)事件AddBtn_Click()。用戶密碼同樣是采用MD5加密函數(shù)Encry(),事件調(diào)用數(shù)據(jù)訪問層UserDB類的函數(shù)AddUser()添加新的用戶到數(shù)據(jù)庫中。添加后事件重新綁定用戶數(shù)據(jù)。5.1.4用戶角色管理 用戶角色管理實現(xiàn)用戶角色的分配功能。系統(tǒng)存在角色較多,不同的角色具有不同的操作權(quán)限。如系統(tǒng)管理員具有該角色的用戶可以維護和管理整個系統(tǒng);管理員角色的用戶可以管理整個系統(tǒng),如可以添加系統(tǒng)考試試題,創(chuàng)建不同類型的試卷;不同的考生分配不同的試卷,而且參加考試后只能看到自己的考試成績。用戶角色管理由頁面RoleManage.aspx實現(xiàn)。 用戶角色管理頁面初始化時調(diào)用函數(shù)BindUserData(),調(diào)用數(shù)據(jù)訪問層的UserDB類的函數(shù)GetUsers()從表中獲取用戶數(shù)據(jù),然后再綁定到用戶列表控件。函數(shù)BindRoleData()調(diào)用數(shù)據(jù)訪問層的RoleDB類的函數(shù)GetGetRoles()從表中獲取用戶數(shù)據(jù),然后再綁定數(shù)據(jù)到角色列表控件。函數(shù)BindUserRoleData()調(diào)用數(shù)據(jù)訪問層的UserDB類的函數(shù)GetSingleUser()從表中獲取用戶數(shù)據(jù),然后再綁定到用戶角色控件。用戶單擊“設(shè)為該用戶的角色”按鈕觸發(fā)事件,該事件實現(xiàn)用戶角色之間的關(guān)聯(lián)功能,事件調(diào)用函數(shù)UpdateUserRole()修改用戶表的角色字段值。5.1.5用戶密碼修改用戶密碼修改如圖5.2所示圖5.2用戶修改密碼界面修改密碼由UpdataUserPassWord.aspx實現(xiàn),用戶修改自己的密碼時必須知道自己以前的密碼,否則不能修改密碼。單擊“確定”后觸發(fā)事件SureBtn_Click().先判斷新密碼的兩次輸入是否一致。如果一致,就把新的密碼更新到數(shù)據(jù)庫,該事件調(diào)用數(shù)據(jù)訪問層UserDB類的函數(shù)UpdateUserPassword()修改表中的密碼。此函數(shù)獲取用戶的名稱,用戶只能修改自己的密碼,不能更改名稱。5.2題庫設(shè)計題庫設(shè)計主要是試題的添加、刪除和修改,試題圖片的添加、修改和刪除,試題種類的添加、修改、刪除排序及試題的答案添加、刪除和修改等。 5.2.1試題圖片管理試題圖片管理由頁面PictureManage.aspx實現(xiàn),試題圖片管理主要實現(xiàn)圖片的添加、刪除、修改等功能。界面設(shè)計如圖5.3所示:圖5.3 試題圖片管理試題圖片管理在初始頁面時調(diào)用函數(shù)BindPictureData(),該函數(shù)首先從圖片表中獲取所有圖片的信息,然后再把數(shù)據(jù)綁定到列表控件。圖片都是上傳到系統(tǒng)的一個文件夾中,顯示圖片的時候都是從數(shù)據(jù)庫獲取該圖片的路徑,然后在顯示在頁面上。單擊“上傳”按鈕即是添加新的圖片,添加圖片后,然后重新綁定數(shù)據(jù)。單擊“/”、“X”此按鈕即可修改圖片信息和刪除圖片。5.2.6試題答案設(shè)計試題答案和試題是不可分割的,在此系統(tǒng)中,每個試題都有三個答案與之對應(yīng),只一個正確答案如圖5.4所示。圖5.4試題答案試題答案設(shè)計QuestionManage.aspx和頁面AddAnswer.aspx實現(xiàn)。在下拉列表選擇框中顯示試題種類,在普通列表框中顯示試題,單擊“添加試題答案”按鈕跳轉(zhuǎn)到答案添加頁面AddAnswer.aspx。試題管理界面用戶函數(shù)Page_Load()進行初始化,函數(shù)Page_Load()調(diào)用函數(shù)BindQuesKindData()和BindQuestionData()函數(shù)。函數(shù)BindQuesKindData()綁定下拉列表控件的數(shù)據(jù),如試題種類。還調(diào)用數(shù)據(jù)訪問層QuestionKindDB類的函數(shù)GetQuesKinds()從表QuestionKinds中獲取試題種類數(shù)據(jù);函數(shù)BindQuestionData()綁定普通列表控件的數(shù)據(jù),如試題內(nèi)容。該函數(shù)調(diào)用數(shù)據(jù)訪問層QuestionDB類的GetQuestions()函數(shù)從表Questions中獲取試題信息。用戶單擊“添加問題答案”按鈕觸發(fā)事件AddQuesAnswer_Click(),該事件首先判斷試題列表中某個試題項。如果已經(jīng)選擇,則跳轉(zhuǎn)到試題答案添加頁面,否則系統(tǒng)將提示你沒有選擇數(shù)據(jù)。private void AddQuesAnswer_Click(object sender, System.EventArgs e) Response.Redirect(/Admins/AddAnswer.aspx?QuestionID= + QuestionList.SelectedValue);事件QuesKindList_SelectedIndexChanged()動態(tài)綁定試題列表框的數(shù)據(jù),如試題名稱,當試題類型下拉列表框選中的選擇試題種類發(fā)生改變時觸發(fā)該事件,此時頁面會重新綁定列表中的試題數(shù)據(jù)。該事件代碼如下:private void QuesKindList_SelectedIndexChanged(object sender, System. EventArgs e)BindQuestionData(Int32.Parse(QuesKindList.SelectedValue);5.3隨機生成試卷系統(tǒng)隨機自動生成試卷功能由頁面CreateExaminePaper.aspx實現(xiàn),頁面是一個等待頁面,應(yīng)用程序生成一套試卷需要一定的時間。界面設(shè)計如圖5.4所示:圖5.4 系統(tǒng)生成考試試卷頁面在等待界面中,應(yīng)用程序使用自動跳轉(zhuǎn)方式跳轉(zhuǎn)到考試界面ExaminePaper.aspx,跳轉(zhuǎn)代碼如下:在試卷生成時,等待頁面從Papers表中隨機獲取一套試卷及其參數(shù),獲取試卷及其參數(shù)功能由函數(shù)GetRolePaper()實現(xiàn)。函數(shù)的代碼如下:private ArrayList GetRolePaper(int nRoleID)ArrayList PaperList = new ArrayList();SqlDataReader recpc = paper.GetPaperCountByRole();while(recpc.Read()nPaperCount = Int32.Parse(recpcPaperID.ToString();int index = GetRandomInt(nPaperCount);/隨機選擇一套試卷SqlDataReader repc = paper.GetPaperCountByRole();int i = 0;while(repc.Read() / 把選中的試卷添加到返回結(jié)果集中if(i = index) PaperList.Add(repcPaperID.ToString();PaperList.Add(repcTotalMark.ToString();PaperList.Add(repcMaxDefficult.ToString();break; i+;recpc.Close();/從數(shù)據(jù)庫中取到這套試卷所包含的題型及數(shù)量ArrayList KindList = new ArrayList();while(recpk.Read()/選中試卷的題型及其數(shù)量添加到結(jié)果集中QuestionKinds kind = new QuestionKinds();kind.KindID = Int32.Parse(recpkKindID.ToString();kind.KindNum = Int32.Parse(recpkKindNum.ToString();KindList.Add(kind);recpk.Close(); PaperList.Add(KindList);return(PaperList);/返回結(jié)果集在隨機生成試卷過程中,程序首先調(diào)用函數(shù)CreateIntegerExaminePaper()生成整套試卷,該函數(shù)遞歸調(diào)用自己。直到生成試卷,函數(shù)代碼如下:CreateIntegerExaminePaper()int allMark = 0;int defficultParm = 0;ArrayList QuestionIDList = new ArrayList();while(true) /逐個生成每種題型for(int i = 0; i KindList.Count; i+)CreateSpecialKindQuestion()/調(diào)用函數(shù)生成特定的題型ArrayList tempList=CreateSpecialKindQuestion(KindNum,KindID); for(int j = 0; j tempList.Count; j+) QuestionIDList.Add(tempListj); / 添加到結(jié)果集中 for(int k = 0; k = maxDefficult & defficultParm/10 = minDefficult)break;elseQuestionIDList=CreateIntegerExaminePaper();return(QuestionIDList); / 返回結(jié)果集 函數(shù)CreateSpecialKindQuestion()隨機生成一種特定的題型,index(試題索引),IndexList(試題索引容器)等。并調(diào)用隨機函數(shù)生成試題ID,最后把結(jié)果集添加到QuestionList集合中。函數(shù)代碼如下:private ArrayList CreateSpecialKindQuestion(int nKindNum,int kind)ArrayList IndexList = new ArrayList();IndexList.Capacity = nKindNum;while(IndexList.Count != nKindNum) / 用隨機函數(shù)生存隨機序號序列index = GetRandomInt(nKindNum);if(IsExistIndex(IndexList,index) = false)IndexList.Add(index.ToString();/ 通過試題ID把試題的ID添加到臨時結(jié)果集中if(ds = null) / 從數(shù)據(jù)庫中取到結(jié)果集,并緩存到Cache中ds = question.GetAllQuestionID();int startIndex = 0;foreach(DataRow row in ds.Tables0.Rows)/取到試題的ID結(jié)果集if(rowKindID.ToString() = kind.ToString()break;for(int i = 0; i IndexList.Count; i+)/試題的屬性添加到結(jié)果集中QuestionDetails questionDetail=new QuestionDetails();QuestionIDList.Add(questionDetail); return(QuestionIDList); /返回問題的ID集合生成隨機結(jié)果集的映射索引調(diào)用函數(shù)IsExistIndex()保證索引的惟一性,該函數(shù)逐個比較即將添加的值和數(shù)組中的每一個值,如果相等返回為假,否則為真。函數(shù)代碼如下:private bool IsExistIndex(ArrayList IndexList,int index)bool isExist = false;for(int j = 0; j IndexList.Count; j+)/如果相為false,否則為trueif(index.ToString() = IndexListj.ToString()isExist = true; break;return(isExist);5.4考生在線答題在線答題功能由頁面ExaminePaper.aspx實現(xiàn),頁面設(shè)計由DataGrid控件和Button控件組成,界面設(shè)計如圖5.5所示:圖5.5考生考試界面頁面初始化首先從Session全局變量取到一套試卷的所有考試題目,然后由QuestionDB類的函數(shù)GetQuestions()創(chuàng)建問題數(shù)據(jù)源DataGrid,問題數(shù)據(jù)源DataList為IList接口對象,而不是DataReader對象,DataSet對象或其它的ArrayList對象,函數(shù)BindQustionData()實現(xiàn)頁面的初始化過程,函數(shù)代碼如下:private void BindQuestionData()ArrayList QuestionIDList = new ArrayList();/從Session中取一套試卷if(SessionSession.SessionID+SessionUserName!=null) QuestionIDList=(ArrayList)SessionSession.SessionID+SessionUserName;List questionList = (IList)question.GetQuestions(QuestionIDList);/創(chuàng)建問題的數(shù)據(jù)源QuestionList.DataSource = questionList;QuestionList.DataKeyField = QuestionID;/ 設(shè)置控件的試題索引QuestionList.DataBind();ShowPageStatus(questionList.Count);問題DataGrid控件綁定數(shù)據(jù)時,采用IList接口對象作為數(shù)據(jù)源。此數(shù)據(jù)源由類QuestionDB的函數(shù)GetQuestion()函數(shù)創(chuàng)建,該函數(shù)的參數(shù)為ArrayList類型的對象QuestionList,它包含整套試卷的所有試題ID,函數(shù)GetQuestions()使用for語句從表中獲取每個試題的詳細信息。函數(shù)GetQustions()的代碼如下:public ArrayList GetQuestions(ArrayList QuestionList)for(int i = 0; i 0)radioList.SelectedIndex = 0;radioList.SelectedValue =null; 在數(shù)據(jù)綁定時,問題DataGrid控件觸發(fā)事件QuestionList_ItemDataBound(),并在事件中調(diào)用函數(shù)BindAnswerList()綁定問題答案數(shù)據(jù)。綁定數(shù)據(jù)如下:通過參數(shù)e的函數(shù)FindControl()找到需要綁定數(shù)據(jù)的RadioButtonList控件,命名為answerList。判斷answerList控件是否為空,若為空,則中止函數(shù)。若answerList控件不為空,則調(diào)用函數(shù)BindAnserList()綁定控件的答案數(shù)據(jù)。5.6自動閱卷單擊“上一題”或“下一題”按鈕觸發(fā)事件QuestionList_ItemCommand(),該事件實現(xiàn)了跳轉(zhuǎn)到下一題,自動獲取上一題的選項,并判斷該選項是否正確。以此類推,有多少道試題就執(zhí)行多少次,直到做完為止。最后統(tǒng)計考生成績,并保存到數(shù)據(jù)庫中,以方便考生在交卷時就能看到自己的考試成績。事件代碼如下:private void QuestionList_ItemCommand(object source,DataGridArgs e)if(answerList.SelectedIndex -1)Choose = answerList.SelectedItem.Text;AnswerDB answerbody = new AnswerDB();SqlDataReader body = answerbody.GetQuestionBody();if(body.Read()upmark.UpdateMark(userId,mark)考生單擊“交卷”觸發(fā)事件refer_click(),該事件跳轉(zhuǎn)到考試結(jié)果頁面。并顯示考生的相關(guān)信息。5.7考試結(jié)果考試結(jié)果由頁面Result.aspx實現(xiàn),該頁面實現(xiàn)了考試結(jié)果,考生在交卷后就能看到自己當前的考試成績。系統(tǒng)自動判斷此次考試是否合格??荚嚱Y(jié)果如圖5.8所示:圖5.8考試結(jié)果5.8測試完成了駕校考試系統(tǒng)的編程工作之后,最后的就是該系統(tǒng)的測試過程了,系統(tǒng)測試的根本目標是盡可能多的發(fā)現(xiàn)和排除該系統(tǒng)設(shè)計過程中的隱藏的錯誤,最終把一個高質(zhì)量的軟件系統(tǒng)交給用戶使用。系統(tǒng)的測試包括系統(tǒng)的編譯和發(fā)行,在測試中有兩種方法:黑盒測試(功能測試),白盒測試(結(jié)構(gòu)測試)。大型系統(tǒng)通常由若干個子系統(tǒng)組成,每個子系統(tǒng)又由很多的模塊組成,主要的步驟有:模塊測試,子系統(tǒng)測試,系統(tǒng)測試,驗收測試,平行運行。在單元測試期間對模塊進行測試主要是針對模塊接口,局部數(shù)據(jù)結(jié)構(gòu),重要的執(zhí)行通路,出錯處理通路,邊界條件。在確定測試也成驗收測試,是為了驗證該設(shè)備管理系統(tǒng)的有效性。以保證軟件確實滿足了用戶需求而進行的一系列活動,需求分析階段產(chǎn)生的系統(tǒng)規(guī)格說明書,準確的描述用戶對軟件的合理期望,是測試的基礎(chǔ)。1.系統(tǒng)的編譯設(shè)計系統(tǒng)的目的就是要使用者即使不安裝Visual FoxPro也能運行該程序,要想系統(tǒng)脫離Visual FoxPro環(huán)境運行,需要對系統(tǒng)進行編譯,制作出可以單獨運行的可執(zhí)行程序。系統(tǒng)的編譯過程首先將系統(tǒng)中涉及到的文件全部包含進“項目管理器”中,單擊項目管理器
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車維修服務(wù)抵押擔(dān)保合同范本
- 老人進食護理課件
- 空間智能技術(shù)賦能交通基礎(chǔ)設(shè)施數(shù)字化轉(zhuǎn)型升級
- 老人壓瘡預(yù)防技術(shù)課件
- 清廉越城考試題庫及答案
- 美術(shù)老人與兒童課件
- 安全生產(chǎn)標準化管理體系模板
- 測繪安全生產(chǎn)規(guī)范
- 小學(xué)實驗室突發(fā)安全事故應(yīng)急預(yù)案
- 常州市安全生產(chǎn)管理信息系統(tǒng)
- 戰(zhàn)士留疆考試題及答案大全
- 合同賬戶變更補充協(xié)議書
- 廣西壯族自治區(qū)柳州市2025年七年級下學(xué)期期末數(shù)學(xué)試卷及答案
- 包銷公司避稅協(xié)議書
- 2025新譯林版英語八上單詞單(先鳥版)BD
- 2025國開電大《管理英語1》綜合測試形考任務(wù)答案
- 廣東省深圳市2021-2022學(xué)年高一下學(xué)期英語期末調(diào)研考試(含答案)
- 公益崗考試試題及答案
- 2025屆成都市新都一中高三一診考試英語試卷含答案
- 電動二輪車租賃合同協(xié)議
- 電梯維保合同分包協(xié)議
評論
0/150
提交評論