【文章內(nèi)容簡(jiǎn)介】
管理 考試管理 試卷管理 成績(jī)管理 用戶管理 權(quán)限管理 學(xué)生登陸 基于 B/S 的在線考試系統(tǒng) 16 系 統(tǒng) 用 戶用 戶 登 錄在 線 考 試 管 理 子 系 統(tǒng)試 題 管 理 子 類 試 卷 管 理考 試 管 理評(píng) 卷 管 理成 績(jī) 管 理用 戶 管 理權(quán) 限 管 理信 息 管 理 u s e s u s e s u s e s u s e s u s e s u s e s u s e s u s e s 總 權(quán) 限 用 戶部 分 權(quán) 限 用 戶系 統(tǒng) 權(quán) 限 用 戶 子 類 子 類 u s e s u s e s u s e s 可 操 作 系 統(tǒng) 的 任 何 模 塊只 能 操 作 用 戶管 理 中 的 部 分 操 作 ,即 只 能 維 護(hù)用 戶 管 理 中 自 己 的 信 息被 分 配 了 擁 有用 戶 管 理 的 用 戶 ,可 維 護(hù) 其 它 用 戶的 信 息 圖 3. 用戶登錄序列圖如下所示: 頂 層 包 : : 用 戶登 陸 L o g i n A c t i o n1 : l o g i n ( )調(diào) 用 用 戶登 錄 動(dòng) 作獲 取 用 戶 信 息 并 處 理 U s e r B O2 : g e t U s e r v o ( )到 數(shù) 據(jù) 庫(kù) 查 找 用 戶 信 息3 : g e t U s e v o ( )4 : 返 回 用 戶 信 息 圖 基于 B/S 的在線考試系統(tǒng) 17 4. 系統(tǒng)操作序 列圖: 頂 層 包 : : 登 陸 用 戶用 戶 請(qǐng) 求 A c t i o n系 統(tǒng) 業(yè) 務(wù) 邏 輯 b u s i n e s s B O1 : e x e c t e ( )調(diào) 用 用 戶具 體 的 動(dòng) 作2 : 獲 取 用 戶 提 供 的 信 息 g e t C u s t o m e r ( )3 : 獲 取 用 戶 提 供 的 信 息 g e t C u s t o m e r ( )4 : 返 回 用 戶 請(qǐng) 求 的 信 息 圖 系統(tǒng)詳細(xì)設(shè)計(jì) 系統(tǒng)結(jié)構(gòu)設(shè)計(jì) 在系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì)中,先要對(duì)系統(tǒng)分析得到的數(shù)據(jù)字典中的數(shù)據(jù)存儲(chǔ)進(jìn)行分析,分析各數(shù)據(jù)存儲(chǔ)之間的關(guān)系,然后才能得出系統(tǒng)的關(guān)系模式??梢圆捎?E- R 圖的方法來(lái)進(jìn)行數(shù)據(jù)結(jié)構(gòu)分析, E- R 圖由實(shí)體、屬性、聯(lián)系三部分組成,系統(tǒng)如圖: 圖 系統(tǒng)組合 E- R 圖 n 1 查詢 考試成績(jī) 考生 學(xué)院領(lǐng)導(dǎo) 同意考試 審核 瀏覽 老師 科目信息 錄入 錄入 試卷 錄入 考試 1 n n 1 n m 1 n 基于 B/S 的在線考試系統(tǒng) 18 數(shù)據(jù)庫(kù)設(shè)計(jì) 1. 主要數(shù)據(jù)庫(kù)表的介紹 根據(jù)系統(tǒng)需要和考試需要,設(shè)立了如下數(shù)據(jù)庫(kù)表: 試題類型表 (questionType_table):其中包括了試題的類型的基本信息,如類型名稱、答題方式、說明信息等字段;錄入時(shí),我們將答題方式確定為大概幾種類型:填空方式,選擇方式,問答方式,判斷方式,綜合方式。 試題范圍表 (questionBound_table):用于控制試題應(yīng)用的范圍,如同樣的科目語(yǔ)文,在小學(xué)、初中、高中、大學(xué)都有,由此我們?cè)O(shè)定了此表,此表中有范圍名稱、范圍說明等基本信息; 所屬科目表 (questionSubject_table):用于錄入試題相關(guān)的科目應(yīng)用,它可以有不同的應(yīng)用范圍。如上所述,我們只需錄入一次的科目,就可方便我們?cè)阡浫朐囶}時(shí)每次都錄。各種題庫(kù)表:我們采用一種類型的題存儲(chǔ)在一個(gè)表中,由此我們會(huì)有填空題表( question_blanc_table)、單選題表( question_selectone_table)、多選題表( question_selectMany_tabel) ,判斷題表( question_judge_table)等試題表 試卷表 (exam_table):用于報(bào)存考試中試卷的基本信息,如 出卷方式(有隨機(jī)出卷、人工出卷、綜合出卷)、試卷名稱、試卷應(yīng)用范圍(與試題范圍相對(duì)應(yīng))、試卷所屬科目(與試題科目相對(duì)應(yīng))、試題標(biāo)題級(jí)別、試題標(biāo)題內(nèi)容、試題總類型、試題個(gè)數(shù)、試題總 ID 等基本信息。 學(xué)生表 (student_table):用于保存學(xué)生的考試的用戶名及登陸密碼。 成績(jī)表 (grade_table):用于存儲(chǔ)學(xué)生的考試成績(jī)。 答案表 (student_answer_table):用于存儲(chǔ)學(xué)生問答題的答案,如試卷 ID,學(xué)生 ID 及各種試題類型的答案字段。 用戶表 (user_table):用于保存用戶的登陸的 基本信息及分配的權(quán)限。 權(quán)限表 (purview_table):用于存儲(chǔ)用戶組織的的權(quán)限,通過分配操作模塊的權(quán)限組織權(quán)限。 2. 主要數(shù)據(jù)庫(kù)表的結(jié)構(gòu) 定義(數(shù)據(jù)詞典) : 基于 B/S 的在線考試系統(tǒng) 19 1) 數(shù)據(jù)庫(kù)表名的定義使用:重點(diǎn)字 _table。重點(diǎn)字可以是多個(gè)英文單詞的組合,從組合的第二單詞起首字母大寫,字段命名是能表達(dá)字段內(nèi)容的英文單詞的組合,組合方式同表名重點(diǎn)字相同。 2) 數(shù)據(jù)類型不使用固定數(shù)據(jù)庫(kù)的類型,標(biāo)識(shí)大眾類型,如字符串、字符、數(shù)字等。這樣在更改數(shù)據(jù)庫(kù)時(shí)需求的數(shù)據(jù)是可移植的 3) 輸寫數(shù)據(jù)表在數(shù)據(jù)庫(kù)中的物 理名稱,可用自己熟悉的語(yǔ)言再定義表名稱,方便溝通。 4) 長(zhǎng)度定義又?jǐn)?shù)據(jù)類型決定:如字符串可選 8000 以下,數(shù)字可在 50 位之間,字符只允許一位 。 5) 輸入方式表示數(shù)據(jù)的來(lái)源:生成表由程序或數(shù)據(jù)庫(kù)的索引自動(dòng)生成,而不需人工錄入;輸入表示通過文本框等輸入的數(shù)據(jù);選擇表單選框、復(fù)選框、下拉列表等通過選擇輸入的數(shù)據(jù);自定獲取是為外碼的輸入設(shè)定的,它由程序自動(dòng)獲取。 主要表結(jié)構(gòu)如下: 物理名稱: questionType_table 3. 數(shù)據(jù)庫(kù)的完整性和安全性 1) 數(shù)據(jù)庫(kù)的完整性 數(shù)據(jù)庫(kù)的完整性是指 數(shù)據(jù)的正確性和相容性。數(shù)據(jù)庫(kù)管理系統(tǒng)( DBMS)用一定的機(jī)制來(lái)檢查數(shù)據(jù)庫(kù)中的數(shù)據(jù)是否滿足規(guī)定的條件 —— 完整性約束條件,數(shù)據(jù)的約束條件是語(yǔ)義的體現(xiàn),將作為模式的一部分存入數(shù)據(jù)庫(kù)中。 本系統(tǒng)中定義了表與表之間的聯(lián)系有助于實(shí)現(xiàn)完整性規(guī)則,一般在程序中實(shí)現(xiàn)具體的完整性控制。 2) 數(shù)據(jù)庫(kù)的安全性 數(shù)據(jù)庫(kù)的安全性是指保護(hù)數(shù)據(jù)庫(kù)以防止不合法的使用所造成的數(shù)據(jù)泄漏、更 改或破壞。在數(shù)據(jù)庫(kù)系統(tǒng)中,大量的數(shù)據(jù)集中存放,而且為許多用戶直接共享, 基于 B/S 的在線考試系統(tǒng) 20 是寶貴的信息資源,系統(tǒng)的安全保護(hù)措施就顯得更為重要,它保護(hù)數(shù)據(jù)庫(kù)防止惡 意 的破壞和非法的存取。 本系統(tǒng)包括數(shù)據(jù)庫(kù)的安全和服務(wù)器的安全。采用管理員表示和鑒定的方法實(shí) 現(xiàn)數(shù)據(jù)庫(kù)的安全,此安全管理措施并不在前臺(tái)開發(fā)工具中實(shí)現(xiàn),而是在后臺(tái)數(shù)據(jù) 庫(kù)中實(shí)現(xiàn)。在登錄數(shù)據(jù)庫(kù)時(shí),系統(tǒng)讓用戶表示自己的身份,不同的用戶權(quán)限不同,系統(tǒng)進(jìn)行核實(shí),鑒別此用戶是否為合法用戶,若是,系統(tǒng)進(jìn)一步核實(shí)用戶,通常要求用戶輸入口令,系統(tǒng)和對(duì)用戶口令以鑒別用戶身份。 第四章、系統(tǒng)的實(shí)現(xiàn) 數(shù)據(jù)庫(kù)連接的建立 對(duì)于數(shù)據(jù)庫(kù)的連接,我們的數(shù)據(jù)訪問接口采用 JDBCODBC橋數(shù)據(jù)驅(qū)動(dòng)程序,以純 Java的方式來(lái)連接數(shù) 據(jù)庫(kù),為訪問不同的數(shù)據(jù)庫(kù)提供統(tǒng)一的接口。 JDBC 數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序是把JDBC 調(diào)用翻譯成廠商專用 API 的調(diào)用。開放數(shù)據(jù)連接( ODBC)最初是為微軟操作系統(tǒng)上的 SQL 提供 API 標(biāo)準(zhǔn),后來(lái)也在其他的平臺(tái)上提供了支持。 ODBC 為直接訪問數(shù)據(jù)定義了一組函數(shù),而不是在客戶應(yīng)用程序中嵌入 SQL。 JDBCODBC 橋在 JDBC API 和 ODBC API 之間提供了一個(gè)橋梁,這個(gè)橋把標(biāo)準(zhǔn)的 JDBC 調(diào)用翻譯成對(duì)應(yīng)的 ODBC 調(diào)用,然后通過 ODBC API把它們發(fā)送到 ODBC 數(shù)據(jù)源。 在選擇了數(shù)據(jù)訪問接口后,開始利用這個(gè)原理進(jìn)行具 體的連接了。 由于我們開發(fā)時(shí)是利用 MVC的設(shè)計(jì)模式,所以在此我們的數(shù)據(jù)庫(kù)連接是封存在 M 中的,即只要我們和 M層連接上,就已經(jīng)連接上數(shù)據(jù)庫(kù)了。 部分代碼如下: try{ String user=sa。 //連接 sqlserver2020 數(shù)據(jù)庫(kù)登陸名 String password= 。 //連接 sqlserver2020 數(shù)據(jù)庫(kù)密碼 基于 B/S 的在線考試系統(tǒng) 21 String sDBDriver=。 //連接數(shù)據(jù)庫(kù)的驅(qū)動(dòng)字符串 String connStr=jdbc:microsoft://注冊(cè)連接字符串 Connection con=null。 ( sDBDriver)。 //注冊(cè)數(shù)據(jù)庫(kù)驅(qū)動(dòng) con = Driver (connStr ,user,password)。 //獲取數(shù)據(jù)庫(kù)連接 }catch(SQLException e){ (())。} catch(Exception e){ (())。} 各子系統(tǒng)模塊程序設(shè)計(jì)舉例 用戶登陸的實(shí)現(xiàn) 1. 對(duì)于已注冊(cè)的用戶根據(jù)用戶名和密碼進(jìn)行登陸,登錄界面如下: 圖 2. 填寫您的準(zhǔn)考證號(hào)和密碼; 3. 擊“登陸”按鈕; 4. 用戶名、密碼和驗(yàn)證碼都正確,登陸成功,進(jìn)入系統(tǒng)主界面; 主要代碼: 基于 B/S 的在線考試系統(tǒng) 22 //考生身份驗(yàn)證 public int checkStudent(StudentForm studentForm) { int flag = 1。 String sql = SELECT * FROM tb_student where ID=39。 + ()+ 39。 ResultSet rs = (sql)。 try { if (()) { String pwd = ()。 if (((3))) { ()。 int rowSum = ()。 //獲取記錄總數(shù) ()。 if (rowSum!=1) { flag = 2。 (獲取 row的值: + sql + rowSum)。} } else { flag = 2。} }else{ flag = 2。} } catch (Exception ex) { flag = 2。 (())。} return flag。} 用戶密碼找回的實(shí)現(xiàn) 用戶在登錄頁(yè)面點(diǎn)擊找回密碼按鈕之后進(jìn) 入找回密碼頁(yè)面,根據(jù)輸入準(zhǔn)考證號(hào),并且輸入注冊(cè)時(shí)填寫的密碼提示問題進(jìn)行密碼找回,如下圖所示: 基于 B/S 的在線考試系統(tǒng) 23 圖 ( 1) 主要代碼如下 //找回密碼(第一步) public StudentForm seekPwd1(StudentForm s){ String sql=SELECT * FROM tb_student WHERE ID=39。+()+39。 ResultSet rs = (sql)。 try { if (()) { ((1))。 ((6))。 }else{ ()。 } }catch(Exception e){ (找回密碼(第一步)出現(xiàn)的錯(cuò)誤信息: +())。 } return s。} 基于 B/S 的在線考試系統(tǒng) 24 圖 ( 2) 主要代碼如下 // 找回密碼(第二步) public StudentForm seekPwd2(StudentForm s){ String sql=SELECT * FROM tb_student WHERE ID=39。+()+39。 (SQL+sql)。 ResultSet rs = (sql)。 try { if (()) { String ID=(1)。 String pwd=(3)。 String answer=(7)。 if((())) { (ID)。 (pwd)。 }else{ ()。} 基于 B/S 的在線考試系統(tǒng) 25 } }catch(Exception e){ (找回密碼(第二步)出現(xiàn)的錯(cuò)誤信息: +())。} return s。 } } //找回密碼(第三步),顯示找回的密碼 圖 ( 3) 學(xué)生考試的實(shí)現(xiàn): 學(xué)生通過成功登錄之后,會(huì)自動(dòng)跳轉(zhuǎn)到該頁(yè)面,可以進(jìn)行成績(jī)查詢,進(jìn)行考試,修改個(gè)人資料,退出系統(tǒng)等操作,如下圖所示: 基于 B/S 的在線考試系統(tǒng) 26 圖 Defaut頁(yè)面 1. 點(diǎn)擊上圖 在線考試連接之后,自動(dòng)進(jìn)入選擇考試課程頁(yè)面,如下圖: