【正文】
ArrayList()。隨機生成試卷的流程如圖 10所示。return(PaperList)。 = (recpk[KindNum].ToString())。 }()。 (repc[TotalMark].ToString())。 } int index = GetRandomInt(nPaperCount)。 在試卷生成時,等待頁面從 Papers表中隨機獲取一套試卷及其參數(shù),獲取試卷及其參數(shù)功能由函數(shù) GetRolePaper()實現(xiàn)。然后把各個試題顯示在答題頁面上。 if(() 0) {(())。 當用戶修改當前的數(shù)據(jù)完成后,單擊 “確認修改”按鈕觸發(fā)事件,該事件同添加新的試卷相似。 (nPaperID,((PaperKinds)aKindList[i]).KindID,(()))。 PaperKindDB paperKind = new PaperKindDB()。其中數(shù)據(jù)綁定由函數(shù) BindKindData()實現(xiàn)。 (nQuestionID)。事件調(diào)用函數(shù) UpdateAnswerToDB(),此函數(shù)調(diào)用AnswerDB類中的 UpdateAnswer()函數(shù),從而更新試題的答案。 頁面初始化調(diào)用函數(shù) BindAnswerData()綁定修改試題答案數(shù)據(jù)功能。 事件 AddAnserBtn_Click()通過函數(shù) AddAnswerToDB()調(diào)用數(shù)據(jù)訪問層AnswerDB類的函數(shù) AddAnswer()添加試題答案。函數(shù) BindQuestionData(int nQuestionID)綁定單個試題的數(shù)據(jù)信息,它調(diào)用數(shù)據(jù)訪問層 QuestionDB類的函數(shù)GetSingleQuestion()從 Questions表中獲取試題信息。每個試題都只 有一個正確的答案,選擇題有三個選項。 private void AddQuesAnswer_Click(object sender, e) { (~/Admins/?QuestionID= + )。還調(diào)用數(shù)據(jù)訪問層 QuestionKindDB類的函數(shù) GetQuesKinds()從表 QuestionKinds中獲取試題種類數(shù)據(jù);函數(shù) BindQuestionData()綁定普通列表控件的數(shù)據(jù),如試題內(nèi)容。試題答案設計 實現(xiàn)。該事件和添加試題事件有很多相同之處。 第 13 頁 共 25頁 5. 4. 4修改試題 修改試題由頁面 ,它的界面設計和添加試題相似。 5. 4. 3添加試題 添加試題功能由頁面 ,一個試題至少包含幾個屬性:試題的內(nèi)容、試題的類型、試題所在的章節(jié)、試題的分值及試題的創(chuàng)建時間和添加的用戶用戶名稱。界面設計如圖 7所示: 圖 7 試題圖片管理 試題圖片管理在初始頁面時調(diào)用函數(shù) BindPictureData(),該函數(shù)首先從表Pictures中獲取所有圖片的信息,然后再把數(shù)據(jù)綁定到列表控件。函數(shù) UpdateQuesKindName()和函數(shù) UpdateBtn_Click()實現(xiàn)試題種類的修改功能。頁面有“↑”“↓”“∕”“ X”和“增加新的試題種類”, 按鈕分別實現(xiàn)試題種類的上移、下移、修改、刪除和添加功能。如果一致,就把新的密碼更新到數(shù)據(jù)庫 ,該事件調(diào)用數(shù)據(jù)訪問層 UserDB類的函數(shù) UpdateUserPassword()修改表中的密碼。函數(shù) BindUserRoleData()調(diào)用數(shù)據(jù)訪問層的 UserDB類的函數(shù) GetSingleUser()從表中獲取用戶數(shù)據(jù),然后再綁定到用戶角色控件。 如系統(tǒng)管理員具有該角色的用戶可以維護和管理整個系統(tǒng);第 11 頁 共 25頁 管理員角色的用戶可以管理整個系統(tǒng),如可以添加系統(tǒng)考試試題,創(chuàng)建不同類型的試卷;不同的考生分配不同的試卷,而且參加考試后只能看到自己的考試成績。用戶密碼同樣是采用 MD5加密函數(shù) Encry(),事件調(diào)用數(shù)據(jù)訪問層 UserDB類的函數(shù) AddUser()添加新的用戶到數(shù)據(jù)庫中。 單擊刪除 “ X” 按鈕實現(xiàn)刪除用戶的功能,該按鈕為圖像按鈕,單擊此按鈕觸發(fā)事件 deleteBtn_Click()。 圖 5 用戶管理與角色管理關系流程圖 否 是 用戶管理和角色管理 用戶管理 角色權(quán)限管理 用戶角色分配 系統(tǒng)管理員否 開始 結(jié)束 第 10 頁 共 25頁 用戶 管理功能由頁面 ,用戶管理模塊實現(xiàn)了用戶的刪除、角色的分配、密碼的修改。 單擊“確定”按鈕觸發(fā)事件 SureBtn_Click(),該事件調(diào)用數(shù)據(jù)訪問層函數(shù)AddUser()提交新用戶注冊信息 到表 Users中。 5. 2. 3用戶注冊 添加新的用戶有兩種方式,一種是從后臺的用戶管理中添加用戶,另一種是用戶注冊,用戶注冊方式只能添加考生。 函數(shù) GetUserLogin()從數(shù)據(jù)庫獲取合法用戶的 ID數(shù)據(jù) ,函數(shù) GetUserLogin() 第 9 頁 共 25頁 調(diào)用存儲過程 Pr_GetUserLogin()訪問數(shù)據(jù)庫。無論用戶是什么樣的角色登錄,系統(tǒng)都將保存該用戶的 ID 和角色 ID。用戶登錄使用了兩個驗證控件,它們?yōu)?RFVUserNamet和 RFVPassword,分別驗證用戶名稱和用戶密碼是否為非空。由于用戶所屬的角色不相同,所以在登錄時都要選擇自己所屬的角色,否則不能進入系統(tǒng)。 函數(shù) GetCacheParameters(),該函數(shù)從 Caching對象中獲取緩存的數(shù)據(jù)庫參數(shù)。public int KindNum。異常處理類 MyException 定義了兩個同名的函數(shù),其中參數(shù) source 表示錯誤的類型編碼、參數(shù) message 標識錯誤的具體信息;參數(shù) Exception 繼承系統(tǒng)的異常參數(shù)。試題表和答案表形成一對多的關系。 4. 3 表關系設計 數(shù)據(jù)庫各個表之間的關系設計如圖 4 所示。問題答案表的字段說明如表 5所示。問題表的字段說明如表 3所示。角色表的字段說明如表 2 所示。 系統(tǒng)是由六個完整的功能實現(xiàn)的,根據(jù)這些功能,可以設計出系統(tǒng)的功能模塊,各個系統(tǒng)功能模塊之間的關系如圖 3 所示。 Public void UpdateUserRole(int nUserID,int nRoleID)更新用戶的角色。 Public SqlDataReader GetSingleUser(int nUserID)從用戶表 Users 獲取單個用戶信息。同時還為業(yè)務邏輯層提供訪問數(shù)據(jù)庫的接口或函數(shù)等。 系統(tǒng)功能模塊劃分 系統(tǒng)整體設計如圖 2所示,此系統(tǒng)可以劃分為業(yè)務邏輯層、數(shù)據(jù)訪問層和數(shù)據(jù)庫。 ? 題庫管理 題庫管理主要是在系統(tǒng)中構(gòu)造試卷,即試題的每一種題型有多少題,添加試卷、及刪除試卷和修改試卷功能。 ? 用戶管理 添加用戶,修改用戶,刪除用戶。 圖 1 系統(tǒng)功能圖 ? 用戶登錄和注冊 (1)根據(jù)用戶所屬的不同角色顯示不同的操作頁面。數(shù)據(jù)庫使用的是 SQL Server2021。 本系統(tǒng)主要由使用 Microsoft Visual 2021 開發(fā)的頁面 ,由 SQL Server2021 開發(fā)的數(shù)據(jù)庫組成。 駕駛模擬考試系統(tǒng)以計算機為操作工具,按照駕駛理論考試的流程,把駕駛理論考試的一些工作人員從繁瑣的數(shù)據(jù)處理中解放出來,從而提高駕駛考試的工作效率。為了減少交通事故的發(fā)生,車管所對駕駛員的交通知識考核起著至關重要的作用。 關鍵字: 駕駛理論 ; 考試模擬系統(tǒng) ; SQL Server2021 Theory Testing System of Driving School Based on .NET Abstract With the development of modern Inter and wide apllication of information technology, puter has been deeply used in every fileds. The online test system is widely applied thanks about its convenience and speediness. Driving theory test is a pracitcal application of online test. And now burdensome work such as the prepatation, printing, checking has been done by puter. This system has simulating function which achieves users management, test papers management, random test making and automatic checking. This system j udges user’s right when logging in and then directs the users to corresponding pages. After loging, according to the role of user, the system randomly chooses one set of exammination paper and the student finish this paper in limited time. The system finally automatically check the test paper and present the result. Thus it provides reasonable convenience for both students and teachers who check the paper. Key Words: driving theory。駕駛理論考試就是在線考試的一個實際應用,它實 現(xiàn)了理論考試的無紙化,以往出題、印試卷、批改試卷等繁瑣的工作 ,現(xiàn)在都可以由計算機來替代。其中 ,在線考試系統(tǒng)以方便快捷等優(yōu)點得到了廣泛應用??忌卿浐?,系統(tǒng)根據(jù)用戶的角色隨機在試卷中選擇一套試題,讓考生在規(guī)定的時間內(nèi)作答, 考生在考試完 畢 后系統(tǒng)自動的給出結(jié)果,這樣既方便了考生也方便了閱卷的老師。在這一條件下,我國的車輛逐漸增多,最近幾年,學車的人也是越來越多。在這樣的環(huán)境下,先進的信息技術(shù)進行駕駛員理論考試已成為必要。 該系統(tǒng)采用 B/S 模式進行設計,異地的想學車的學員也可以使用該系統(tǒng),進行模擬考試,從而了解自己對交通 規(guī)則了解多少。 本系統(tǒng)是在 windows XP 操作系統(tǒng)下,使用 Microsoft Visual 2021 作為開發(fā)工具進行 開發(fā)的。其功能結(jié)構(gòu)圖如圖 1所示。 ? 用戶角色管理 角色管理主要是給注冊的用戶分配角色,即修改用戶的角色,刪除用戶的角色。 駕駛理論考試系統(tǒng) 用戶登錄和注冊 用戶角色管理 用戶管理 試題管理 題庫管理 在線答題 第 3 頁 共 25頁 (4)試題答案管 理,主要實現(xiàn)試題答案的添加、修改、刪除功能。 (3)最后顯示該考生的考試成績。數(shù)據(jù)訪問層一般封裝數(shù)據(jù)庫的選擇、添加、更新、刪除等操作。 UserDB 類實現(xiàn)訪問數(shù)據(jù)庫的方法如下: Public SqlDataReader GetUsers() 從用戶表 Users 獲取所有用戶信息。 Public void UpdateUserState(int nUserID,int nState)更新用戶的當前狀態(tài)。 ( 3)業(yè)務邏輯層包括題庫創(chuàng)建、用戶管理、用戶注冊等業(yè)務邏輯,它一般由 Web 頁面實現(xiàn),如系統(tǒng)登錄頁面 、用戶管理頁面 UserManage. aspx、隨機生成試卷頁面 等。 駕駛理論考試模擬系統(tǒng) 用戶登錄和注冊 用戶角色管理 用戶管理 試題管理 題庫管理 在線考試 第 5 頁 共 25頁 表 1 Users表字段說明 編號 字段名稱 字段類型 字段說明 1 UserID Int 用戶表主鍵 2 UserName Varchar(50) 用戶名稱 3 Password Varchar(50) 用戶密碼 4 Email Varchar(50) 用戶 Email 地址 5 RoleID Int 用戶所屬的角色 2.角色表( Roles) 角色表用于存儲用戶的角色信息。該表引用問題種類表 QuestionKinds 的KindID、圖片表 Pictures 的 PictureID、用戶表 Users 的 UserID 作為表的外鍵。 表 4 QuestionKinds表的字段說明 編號 字 段名稱 字段類型 字段說明 1 UserID Int 用戶表主鍵 第 6 頁 共 25頁 2 UserName Varchar(50) 用戶名稱 6.問題答案表 (Ans