【考試系統(tǒng)】第五章 WEB 應用程序設計與實現(xiàn)_第1頁
【考試系統(tǒng)】第五章 WEB 應用程序設計與實現(xiàn)_第2頁
【考試系統(tǒng)】第五章 WEB 應用程序設計與實現(xiàn)_第3頁
【考試系統(tǒng)】第五章 WEB 應用程序設計與實現(xiàn)_第4頁
【考試系統(tǒng)】第五章 WEB 應用程序設計與實現(xiàn)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 34 第五章 WEB 應用程序設計與實現(xiàn) 5.1 WEB 應用程序架構(gòu) 本系統(tǒng) WEB 應用程序使用三層架構(gòu)41實現(xiàn),其架構(gòu)模型如圖 51 所示。 三層架構(gòu)即表現(xiàn)層、邏輯層、數(shù)據(jù)層分離,在部署上表現(xiàn)為 Web Server(IIS 服務 器) , 邏輯層對應 Application Server (XML WEB SERVICE) , 數(shù)據(jù)層對應 Database Server(SQL SERVER) 。 圖 5-1 WEB 應用程序架構(gòu) UI 層:是系統(tǒng)用戶可以直接接觸到的層面,包括可以直接看到的界面和使用 的功能等。 邏輯業(yè)務層:集中于事務的處理過程,也稱之為中間層。 數(shù)據(jù)層:集中于數(shù)據(jù)

2、的處理。 采用三層結(jié)構(gòu)具有高效,便于開發(fā)、維護和擴展的優(yōu)點。 5.2 WEB 應用程序功能結(jié)構(gòu) 基于 C#.NET 的 WEB 程序設計是面向?qū)ο蟮某绦蛟O計, 適合用 UML 描述其 UI 層 客戶端 WEB 瀏覽器 邏輯層 DATA 層 WEB 表單 組件服務 XML WEB SERVICE ADO .NET DBMS 35 程序結(jié)構(gòu),圖 5-2 為本系統(tǒng)的 WEB 應用程序結(jié)構(gòu)示意圖。 圖 5-2 WEB 應用程序結(jié)構(gòu) 如圖 5-2 所示,整個 WEB 應用程序解決方案包括 system_function 和 dbop 兩 個項目。 5.2.1 界面項目界面項目 提供實現(xiàn)系統(tǒng)功能的各個界面

3、類,各類的功能如下: 1login.aspx 類:是進入 WEB 在線考試系統(tǒng)的登錄界面;三種類型用戶均 由此界面登錄系統(tǒng)。 2index.aspx 類:考試系統(tǒng)主界面,登錄用戶類型不同,主界面顯示的功能 選項不同。 36 (1)學生用戶:可以查詢已考科目成績,或選擇已選課程在由教務管理設定 的考試時間內(nèi)考試,交卷后系統(tǒng)自動評分,可現(xiàn)場查看分數(shù),可以修改自己的用 戶信息,如密碼。 (2)教師用戶:可查看學生成績及科目匯總信息,可設定所任教學課程的考 卷參數(shù)(如難度系數(shù),試題數(shù)目等) ,可修改自己的用戶信息,可錄入所授課程的 規(guī)范試題。試題編號由系統(tǒng)自動生成,試題編號為 8 位,規(guī)則:課程編號

4、4 位 難度系數(shù) 1 位試題序號 3 位(由系統(tǒng)自動產(chǎn)生,同一門課程試題,后三位編號 連續(xù)) 。 (3)管理員:可以刪除學生用戶和教師用戶信息,設置教師用戶權(quán)限,修改 自身用戶信息,導入授課、選課信息和成績表等。 3userinfo_edit.aspx 類:實現(xiàn)對教師、管理員、學生用戶的信息編輯,包括 導入(管理員使用) 、編輯,刪除。 4question_edit.aspx 類:實現(xiàn)對試題的錄入,教師用戶可以選擇所授課程, 錄入各題的題干、選項、答案、分值、難度系數(shù)等。 5test_set.aspx 類:由教師用戶設置課程考試的參數(shù),以便隨機抽題組卷時 作為組卷依據(jù)。 6test_onlin

5、e.aspx 類:考試主界面,學生可在該界面下完成解題過程,可修 改答案,提交后系統(tǒng)自動評分,并提示考試成績。 7query_grade.aspx 類:分數(shù)查詢,學生用戶可查詢已考各科目的成績,教 師用戶可查詢成績以及匯總和統(tǒng)計信息。 5.2.2 數(shù)據(jù)庫項目數(shù)據(jù)庫項目 項目 dbop 實現(xiàn)數(shù)據(jù)庫的操作功能,包含五個類,各類完成的功能如下所述。 1DBop 類:數(shù)據(jù)庫操作統(tǒng)一接口,應用程序?qū)?shù)據(jù)庫的訪問均通過該接口 進行,便于程序的移植,調(diào)用規(guī)范。 2grade_course 類:定義課程和成績信息等屬性,以及對相關(guān)信息實現(xiàn)增刪 改的操作方法。 3test_info 類:定義各課程的考試信息屬性

6、,以及相關(guān)表操作的方法代碼。 4question 類:定義試題屬性,以及對 so_question 表實現(xiàn)插入、更新、刪除 操作的方法代碼。 5user_info 類:定義學生用戶,教師用戶和管理員信息屬性,以及對對應 37 表操作的方法代碼。 5.2.3 WEB 應用程序部署應用程序部署 .NET 平臺的一大優(yōu)點是應用程序項目的部署方便,要為基于.NET 的 WEB 在線考試系統(tǒng)生成部署,需要添加一個部署項目 test_setup,此外,結(jié)合本項目實 際需求,為了將后臺數(shù)據(jù)庫 examine 聯(lián)合部署,還需要添加一個數(shù)據(jù)庫的部署項 目 DB_setup,系統(tǒng)的部署架構(gòu)如圖 5-3 所示。 圖

7、 5-3 在線考試系統(tǒng)部署架構(gòu) 在部署項目中,依次將項目 DB_setup、dbop、examine 的主輸出加入部署項 目,DB_setup 項目主要包含 db_install 類,其功能是將 examine 數(shù)據(jù)庫的腳本 examine.sql 在數(shù)據(jù)庫服務器上自動安裝,從而保證整個考試系統(tǒng)安裝方便。 5.3 WEB 應用程序?qū)崿F(xiàn) 5.3.1 login.aspx 類的實現(xiàn)類的實現(xiàn) login.aspx 類的運行界面如圖 5-4 所示,該類主要實現(xiàn)用戶登錄系統(tǒng),用戶首 先選擇登錄的用戶類型,然后輸入用戶 ID(學生為學號,教師為教師編號,管理 員為管理員編號)和密碼以及驗證碼,即可登錄進入

8、系統(tǒng)主頁面。 在實現(xiàn)該類時對用戶 ID,密碼進行了輸入驗證,要求密碼長度不低于 8 位。 類功能實現(xiàn)的主要代碼如下: 38 private void btnLogin_Click(object sender, System.EventArgs e) try /建立連接 SqlConnection con = new SqlConnection(); con.ConnectionString=System.Configuration.ConfigurationSettings. AppSettingsDSN; con.Open(); /建立 Sql 命令對象 SqlCommand com = n

9、ew SqlCommand(); com.Connection=con; com.CommandType=CommandType.StoredProcedure; com.CommandText = “storeProc_login”; /添加參數(shù)用戶類型 com.Parameters.Add(UserType,SqlDbType.VarChar,10,UserType); com.ParametersUserType.Value = txtUserType.Text; /添加參數(shù)用戶名 com.Parameters.Add(Name,SqlDbType.VarChar,10,UserName

10、); com.ParametersName.Value = txtUserName.Text; /添加參數(shù)用戶密碼 com.Parameters.Add(UserPass,SqlDbType.VarChar,2,UserPassword); com.ParametersUserPass.Value = txtUserPass.Text; /執(zhí)行查詢 SqlDataReader dr = com.ExecuteReader(); /判斷查詢結(jié)果并保存用戶登錄信息 39 bool bExist = false; while(dr.Read() bExist = true; SessionUserI

11、D = dr.GetString(0); SessionUserName = dr.GetString(1); SessionUsertype =txtUsertype.text; if(bExist) Response.Redirect(023Query.aspx); else Response.Write( alert(用戶名稱或密碼錯誤!); con.Close(); Catch ex As Exception Label1.Text = 連接服務器出錯,請重試! End Try 40 圖 5-4 系統(tǒng)登錄界面 該類主要實現(xiàn)用戶登錄系統(tǒng),用戶首先選擇登錄的用戶類型,然后輸入用戶 ID(學

12、生為學號,教師為教師編號,管理員為管理員編號)和密碼以及驗證碼, 即可登錄進入系統(tǒng)主頁面。 在實現(xiàn)該類時對用戶 ID,密碼進行了輸入驗證,要求密碼長度不低于 8 位。 5.3.2 index.aspx 類的實現(xiàn)類的實現(xiàn) index.aspx 類的運行界面如圖 5-5 所示。 該類實現(xiàn)系統(tǒng)主界面的功能. 1根據(jù)登錄用戶的類型,打開頁面左邊可用的功能選項。學生只可以查詢單 科或所有科目考試成績、選擇任一科目參加考試或修改密碼;教師可選擇相關(guān)科 目進行試題添加、考試設置、查訓所授科目的考試成績或修改密碼。管理員可以 進行密碼修改、管理用戶信息(學生用戶、教師用戶以及管理用戶信息) 、數(shù)據(jù)導 入(學生

13、選課數(shù)據(jù)、教師授課數(shù)據(jù)及相應用戶信息) 。 41 圖 5-5 系統(tǒng)功能主界面 2 顯示用戶登錄信息, 登錄賬戶信息由 login.aspx 類通過 Sessionuser_type, Sessionuser_ID變量傳送,實現(xiàn)會話狀態(tài)數(shù)據(jù)保存。 3課程選擇下拉列表中的選項,由學生所選課程組成,教師用戶的該數(shù)據(jù)項 列表由其所授課程數(shù)據(jù)組成。 4 操作功能選擇和課程選擇將通過會話變量傳送至業(yè)務流的下一個類實現(xiàn)相 應功能。 5.3.3 userinfo_edit.aspx 類的實現(xiàn)類的實現(xiàn) userinfo_edit.aspx 類的運行界面如圖 5-6 所示。 該類主要實現(xiàn)如下功能: 1學生用戶和教

14、師用戶修改密碼,當學生用戶和教師用戶使用時,添加用戶 和刪除用戶按鈕不可用,其 Enabled 屬性為 false。 2管理員可以添加新的三種類型用戶,也可刪除制定用戶的信息。 3頁面所有的文本輸入均使用驗證控件進行輸入驗證。 42 圖 5-6 用戶信息編輯 其中,修改按鈕的單擊事件代碼如下: private void btnUpdate_Click(object sender, System.EventArgs e) string strSql = UPDATE”+ ExcuteSql(strSql); private void ExcuteSql(string strSql) try Sq

15、lConnection con = new SqlConnection(); con.ConnectionString = System.Configuration.ConfigurationSettings.AppSettingsDSN; 43 con.Open(); /執(zhí)行操作 SqlCommand com = new SqlCommand(strSql,con); com.ExecuteNonQuery(); con.Close(); /Response.Write(alert(操作成功!); catch(Exception ee) Response.Write(發(fā)生錯誤:+ee.Mes

16、sage); 5.3.4 question_edit.aspx 類的實現(xiàn)類的實現(xiàn) question_edit 類的運行效果如圖 5-7 所示。 1該頁面實現(xiàn)試題維護課程,任課教師登錄系統(tǒng)進入系統(tǒng)主界面,選擇試題 添加以及相應課程便進入此頁面,同時利用會話變量保存所選課程編號和課程名 稱。 2 該頁面可輸入試題和修改制定課程的試題, 頁面的課程名稱由程序從會話 變量中讀取,其中題目編號由課程編號和試題表情況自動生成,教師只需輸入題 干、選項、難度系數(shù)(默認為 3) 、分值(默認值為 2)和正確答案選項即可完成 試題輸入。 3系統(tǒng)支持單選題和多選題,所有試題均歸一化為選擇題。在輸入題干和選 項時,

17、 用于輸入內(nèi)容的文本框設置了多行屬性, 可自動折行輸入較多的文本內(nèi)容, 同時支持剪貼板的相關(guān)操作。 44 圖 5-7 試題添加頁 其中,下一題按鈕單擊時間的代碼實現(xiàn)添加試題存入試題庫的功能,其事件 代碼如下所示: private void btAddnext_Click(object sender, System.EventArgs e) string strSql = insert into so_question values(+quesID.Text+, +question.text+,+SelectA.text+,+SelcectB.text,+ + SelectC.text+,+Se

18、lectD.text+,+SelcectE.text,+ + SelectF.text+,+style.text+,+answer.text,+ +Fenzhi.text+,; ExcuteSql(strSql); private void ExcuteSql(string strSql) try SqlConnection con = new SqlConnection(); 45 con.ConnectionString= System.Configuration.ConfigurationSettings.AppSettingsDSN; con.Open(); /添加紀錄. SqlCom

19、mand com = new SqlCommand(strSql,con); com.ExecuteNonQuery(); con.Close(); Response.Write( alert(插入成功!); catch(Exception ee) Response.Write(發(fā)生錯誤:+ee.Message); 5.3.5 test_online.aspx 類的實現(xiàn)類的實現(xiàn) test_online.aspx 類的運行效果如圖 5-8 所示。 該頁面是基于.NET 的 WEB 在線考試系統(tǒng)的核心頁面,負責完成自動組卷、 考試以及自動評分三個核心流程。 1 自動組卷: 頁面根據(jù)學生在登錄界面和

20、主界面中保存的會話變量中的課程 編號自動抽題,抽題的參考依據(jù)是考試設置中的難度系數(shù)和試題數(shù)量。將隨機產(chǎn) 生的數(shù)字作為試題編號的后 3 位,按難度系數(shù)和試題數(shù)量從試題庫中提取相應的 試題并實時組成試卷,將試卷保存于加密 cookie 中。 2考生可選擇上一題,下一題逐題做答,也可返回已做過的題目進行修改, 當選擇上一題,下一題時系統(tǒng)自動對剛才的題進行評分,并將各題的得分存放于 加密的 cookie 中。 3學生提交試卷后,系統(tǒng)自動將學生的考試記錄存儲到數(shù)據(jù)庫,并提示本次 考試成績。得分提示如圖 5-9 所示。 46 圖 5-8 在線測試頁 實現(xiàn)頁面的功能程序,主要為上一題和下一題和交卷按鈕。 學

21、生交卷或考試時間到計算考試成績的函數(shù)代碼: private void Button4_Click(object sender, System.EventArgs e)/最后計算分數(shù) try for(qustionNO=0;qustionNO=ExamOnLine.ST_prefer. TotleOfQuestWill -1;qustionNO+) int p1=stuAnswerqustionNO; int p2=System.Convert .ToInt32 (ds.Tablesquestion.RowsqustionNOanswer); if(p1=p2) mark1+=System.Co

22、nvert .ToInt32 (ds.Tablesquestion.RowsqustionNOfenZhi); Response.Redirect (ST_sure.aspx); 47 catch(Exception ee) this.mycatchLeberrors .Text =ee.Message .ToString (); 圖 5-9 成績提交頁 5.3.6 test_set.aspx 類的實現(xiàn)類的實現(xiàn) test_set.aspx 類的效果如圖 5-10 所示。 該頁面用于設置各門課程考試的相關(guān)參數(shù), 其中, 考試日期由日歷控件選擇, 考試時間由開始和結(jié)束時間輸入,難度系數(shù)從列表框中選

23、擇,題目數(shù)量有用戶輸 入。各輸入均進行必要驗證,以保證數(shù)據(jù)的有效性。 此外,除了添加新的科目考試設置外,還可修改或刪除已有設置。 48 圖 5-10 考試設置頁 5.3.7 query_grade.aspx 類的實現(xiàn)類的實現(xiàn) query_grade.aspx 類的效果如圖 5-11 所示。該頁根據(jù)用戶需求顯示各科成績。 1對學生用戶,顯示其所選課程的成績或已考所有科目的成績; 2對教師用戶,顯示其授課課程的各學生成績以及平均分。相關(guān)參數(shù)來自于 會話變量。 49 圖 5-11 成績查詢頁 5.4 WEB 在線考試系統(tǒng)關(guān)鍵技術(shù) 5.4.1 WEB.config 配置配置 對 WEB.config

24、的配置關(guān)鍵如下: 使用表單身份認證: 50 2定義統(tǒng)一的數(shù)據(jù)庫連接字符串 其中,連接字符串的 user ID 和 PWD 子串部分由選擇的登錄用戶類型決定, 一旦登錄類型確定, 系統(tǒng)將自動產(chǎn)生完整的連接字符串并加密后存放于cookie中, 后續(xù)同一會話的連接字符串均使用該加密連接字符串。 5.4.2 WEB 應用程序的安全性應用程序的安全性 為了保證 WEB 應用程序的安全性,采用了以下手段: 1驗證所有的輸入 使用 ASP.NET 提供的 5 種驗證控件以及使用正則表達式(eg,WEB service 參 數(shù))對用戶輸入進行全面驗證,在查詢語句中,使用參數(shù)化的存儲過程和查詢語句 來避免輸入攻

25、擊。 2機密信息加密 對于輸出的重要數(shù)據(jù)(如用戶密碼,連接關(guān)鍵字等)進行加密,對敏感信息 進行必要的加密,加密代碼實例如下: string strEncryPass = System.WEB.Security.FormsAuthentication. HashPasswordForStoringInConfigFile(strPass,md5); 3表單身份驗證 表單身份驗證是指系統(tǒng):將未經(jīng)身份驗證的請求重定向到一個超文本標記語 言(HTML) 表單,使用戶能夠在其中鍵入他們的憑據(jù)。在用戶提供憑據(jù)并提交該 表單后,應用程序?qū)φ埱筮M行身份驗證,然后系統(tǒng)以 Cookie 的形式發(fā)出身份驗 證票證。

26、此 Cookie 包含憑據(jù)或用于重新獲取標識的密鑰。瀏覽器的后續(xù)請求自 動包含此 Cookie。 利用 ASP.NET 表單身份驗證進行驗證, 如果用戶不正常登錄系統(tǒng), 將無法使 用在線考試系統(tǒng)的其他功能。表單身份認證的設置如 5.4.1 所示。 4.啟用身份模擬 51 由于學生用戶角色無 student_course 表的 insert 權(quán)限, 因此在學生交卷時啟用 代碼身份模擬,實現(xiàn)成績存儲。 啟用身份模擬的典型示例代碼如下: System.Security.Principal.WindowsImpersonationContext impersonationContext; impers

27、onationContext = (System.Security.Principal.WindowsIdentity)User.Identity).Impersonate(); 身份模擬執(zhí)行完相應的寫入操作后, 應及時使用 undoImpersonation(); 命令 取消身份模擬,恢復用戶權(quán)限。 5.4.3 隨機抽題過程實現(xiàn)隨機抽題過程實現(xiàn) 隨機抽題過程的流程圖如圖 5-12 所 示: 1 系統(tǒng)先根據(jù)考試設置要求的題目數(shù) 量,產(chǎn)生同樣數(shù)量的不重復的隨機數(shù)存放 于數(shù)組 th中,隨機數(shù)的最大值由本門課 程在題庫中編號的最大值決定。 2將 th轉(zhuǎn)化為字符串數(shù)組,分別在 各元素前面加上課程編號和

28、難度系數(shù)字 符。 3 將 2 所得字符串數(shù)組轉(zhuǎn)化為數(shù)字提 交給試題提取程序。 4試題提取程序通過執(zhí)行帶參數(shù)的 SQL 存儲過程返回所要求數(shù)目的記錄組 成 dataset 并將其存放在加密 cookie 中, test_online.aspx 類依次讀取 dataset 中的記 錄顯示于考試頁面。 圖 5-12 隨機組卷過程 52 5.4.4.動態(tài)閱卷評分的實現(xiàn)動態(tài)閱卷評分的實現(xiàn) test_online.aspx 類依次讀取加密 cookie 中存放的 dataset 中的記錄顯示于考試 頁面,頁面每次只顯示一題。 1 當解答完本頁試題時點擊下一頁, 系統(tǒng)評分函數(shù)自動對比該題答案與正確 答案是否

29、相符,如果相符,則將該題分值存入對應 score 數(shù)組元素 scorei,數(shù)據(jù) score 為加密 cookie 存儲。 2 考生點擊上一頁可一次調(diào)出已解答過的題復審或修改答案, 評分方法同 1。 3 當考生交卷或考試結(jié)束時間到, 系統(tǒng)自動將 score 數(shù)據(jù)讀出并累加元素值, 得到考生成績。然后將考生成績記錄存入數(shù)據(jù)庫對應的成績表。 5.4.5 題型歸一化處理題型歸一化處理 本系統(tǒng)的試題結(jié)構(gòu)如圖 5-13 所示。 圖 5-13 試題數(shù)據(jù)結(jié)構(gòu) 試題表 so_question 包含 11 個字段。 1quesID 代表試題編號,其編號規(guī)則為課程編號(4 位)難度系數(shù)(1 位) 試題序號(3 位)

30、 ,其中,難度系數(shù)的值對應字段 style 的值,取值范圍為 15, 相應試題難度由低到高,系統(tǒng)默認難度系數(shù)為 3。 2question 字段為題干字段。 3selectAselectF 為選項字段,最多可有 6 個選擇項。 4answer 為試題正確答案,類型為整形。 53 其值為所有正確選項權(quán)值和。各選項的權(quán)值如表 51 所示。 表 5-1 選項全值對應表 選項 selectA selectBselectCselectDselectE selectF 權(quán)值 1 2 4 8 16 32 例如:某題的正確答案為 ABDF, 則 answer 字段的值1283243。 5fenzhi 字段:為本題的得分,默認為 2 分,對選項比較多,且選項內(nèi)容較 多的題目,最多可為 10 分,對于簡答題和程序設計題,均可由此方法轉(zhuǎn)化為多項 選擇題,但應提高其分值。 網(wǎng)絡考試系統(tǒng)一般使用標準化試題,對于單項選擇題,比較簡單,可直接實 現(xiàn)為標準化試題。對于多項選擇題、簡答題、填空題、計算題等題型本系統(tǒng)均按 上述規(guī)則轉(zhuǎn)化為標準化多項選擇題。 5.4.6 自定義控件自定義控件 .NET 系統(tǒng)提供了豐富的 WEB 控件供用戶使用,使用系統(tǒng)控件可極大地提高 程序的開發(fā)效率,同時也使程序設計變得簡單易用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論