• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      一種基于B/S架構(gòu)的考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

      2014-12-31 00:00:00何定華
      數(shù)字化用戶 2014年7期

      【摘 要】一種基于B/S架構(gòu)的考試系統(tǒng),該系統(tǒng)數(shù)據(jù)庫(kù)采用My SQL,服務(wù)器采用Apache,服務(wù)器語(yǔ)言采用PHP??忌ㄟ^(guò)輸入正確的個(gè)人信息登錄到考試系統(tǒng),做完試題,進(jìn)行提交試卷,將成績(jī)保存到數(shù)據(jù)庫(kù)。

      【關(guān)鍵詞】B/S架構(gòu) PHP語(yǔ)言 Apache服務(wù)器 MY SQL數(shù)據(jù)庫(kù)

      1.引言

      B/S架構(gòu)和C/S架構(gòu)是軟件開(kāi)發(fā)的兩種模式。前者開(kāi)發(fā)周期短,維護(hù)容易;后者開(kāi)發(fā)周期長(zhǎng),維護(hù)比較困難。但是C/S的安全性更強(qiáng),對(duì)于一個(gè)對(duì)安全性要求比較低,且開(kāi)放性比較廣的系統(tǒng)要求,一般會(huì)采用B/S架構(gòu),比如網(wǎng)頁(yè)瀏覽。例如:在現(xiàn)實(shí)中有時(shí)候需要制作一個(gè)掛在精品課程網(wǎng)站的測(cè)試系統(tǒng),選擇基于B/S架構(gòu)。

      2.系統(tǒng)架構(gòu)

      PHP是當(dāng)今最流行的基于B/S開(kāi)發(fā)的語(yǔ)言,PHP和My SQL以及Apache是流行的開(kāi)發(fā)平臺(tái)?;诖?,系統(tǒng)架構(gòu)如圖1下:

      圖中所指的瀏覽器通過(guò)因特網(wǎng)連接到服務(wù)器上的Web頁(yè)面,瀏覽器顯示服務(wù)器上運(yùn)行的Web頁(yè)面進(jìn)行考試;服務(wù)器采用Apache,服務(wù)器連接到數(shù)據(jù)庫(kù),既可以是一臺(tái)機(jī)器,也可以是不同的機(jī)器。

      數(shù)據(jù)庫(kù)設(shè)計(jì):考試系統(tǒng)數(shù)據(jù)庫(kù)名為db_exam,其中包含兩張表tb_student和tb_test。前者負(fù)責(zé)保存考生信息,后者負(fù)責(zé)保存試題信息。表結(jié)構(gòu)如下:

      tb_student(ID bigint(4),考號(hào) varchar (4),姓名,分?jǐn)?shù) varchar(4))

      tb_test(ID bigint(4),題號(hào) int(2),題目 varchar(500),A varchar(300),B varchar(300), C varchar(300), D varchar(300),標(biāo)答 varchar(4),分值 varchar(1))

      說(shuō)明:該系統(tǒng)支持單選題、多選題、判斷題。單選題有A、B、C和D四個(gè)選擇,判斷題有A和B兩個(gè)選擇,多選題最多可以選擇四個(gè)選項(xiàng)。因此,標(biāo)答的大寫設(shè)置為4個(gè)字符。

      3.隨機(jī)抽題的實(shí)現(xiàn)

      將全部題目的題號(hào)放置到一個(gè)數(shù)組,然后從數(shù)組中隨機(jī)抽取若干元素即可。算法如下:

      $tihao=array(1);

      for ($i=2;$i<=$num_count;$i++)

      array_push($tihao,$i);

      $rand_keys = array_rand($tihao,$_POST['num']);

      考試題目的題號(hào)即為:$tihao[$rand_keys[$i-1]]。

      4.登錄功能的實(shí)現(xiàn)

      考試應(yīng)該有登錄頁(yè)面和考試頁(yè)面以及保存分?jǐn)?shù)頁(yè)面。為了講述方便,假設(shè)登錄頁(yè)面文件名為login.php,考試頁(yè)面文件名為exam.php,保存分?jǐn)?shù)頁(yè)面文件名是save.php。

      登錄頁(yè)面負(fù)責(zé)將表單中輸入的考生信息和從數(shù)據(jù)庫(kù)表tb_student中的考生信息進(jìn)行比對(duì),如果考生信息正確,則可以登錄到考試頁(yè)面進(jìn)行考試;如果從表單中輸入的信息和數(shù)據(jù)庫(kù)表中的考生信息不匹配則不允許考生進(jìn)入考試頁(yè)面。關(guān)鍵點(diǎn):不允許考生直接瀏覽考生頁(yè)面,為了實(shí)現(xiàn)這個(gè)功能,可以采用session技術(shù),即,考生正確驗(yàn)證信息之后給考試頁(yè)面發(fā)送一個(gè)$SESSION變量,若在考試頁(yè)面能夠正常接收到$SESSION變量則是合法登錄,如果直接登錄到考試頁(yè)面則因?yàn)檎也坏?SESSION變量而強(qiáng)行加載登錄頁(yè)面,達(dá)到身份驗(yàn)證的功能。

      5.考試頁(yè)面的實(shí)現(xiàn)

      考試頁(yè)面exam.php主要負(fù)責(zé)顯示題目,并在題目選擇項(xiàng)之前顯示單選按鈕或者復(fù)選按鈕。如果是判斷題則只顯示兩個(gè)選擇項(xiàng),且每個(gè)選擇項(xiàng)之前是單選按鈕;若是單選題,則有四個(gè)選擇項(xiàng),每個(gè)選擇項(xiàng)之前是單選按鈕;若是多選題,則有四個(gè)選擇項(xiàng),每個(gè)選擇項(xiàng)之前是復(fù)選按鈕。關(guān)鍵點(diǎn)在于如何判斷本小題是單選題、多選題還是判斷題。判斷題沒(méi)有C選擇項(xiàng);多選題標(biāo)答的長(zhǎng)度大于1,因此:if (strlen(trim($row['C']))==0)表示判斷題,而,if (strlen(trim($row['標(biāo)準(zhǔn)答案']))>1)則表示多選題;其他的為單選題。

      6.保存頁(yè)面save.php頁(yè)面的實(shí)現(xiàn)

      將考生的答題項(xiàng)保存到數(shù)組中,逐一和數(shù)據(jù)庫(kù)表中的標(biāo)答進(jìn)行比對(duì),若正確則將對(duì)應(yīng)小題的分值增加到考分$score中,否則不用加。直到最后一個(gè)小題即可計(jì)算出考生的得分。關(guān)鍵點(diǎn),如何保存成績(jī)到數(shù)據(jù)庫(kù)表,若直接保存到數(shù)據(jù)庫(kù)表,則可以在exam.php中即可完成成績(jī)保存。但是,如果考慮到考完試顯示正確答案這一附加功能。則不能將保存成績(jī)?cè)诳荚図?yè)面中完成。原因是提交成績(jī)需要單擊提交按鈕,單擊提交按鈕將會(huì)重新抽題,造成無(wú)法把試題的標(biāo)準(zhǔn)答案以及考生的具體得分情況呈現(xiàn)出來(lái),因此,必須將保存成績(jī)?cè)诹硗庖粋€(gè)頁(yè)面save.php中進(jìn)行。保存成績(jī),只需要在數(shù)據(jù)表tb_student中將考號(hào)對(duì)應(yīng)的記錄的分?jǐn)?shù)修改為考試分?jǐn)?shù)即可。

      7.結(jié)論:

      本考試系統(tǒng)在武漢職業(yè)技術(shù)學(xué)院資源共享課《管理信息系統(tǒng)開(kāi)發(fā)中》使用,效果非常好?;贐/S架構(gòu)的考試系統(tǒng)的原理基本相同,讀者可以根據(jù)實(shí)際場(chǎng)合的不同、要求的不同,對(duì)該考試系統(tǒng)進(jìn)行改進(jìn)。限于篇幅,不再贅述。

      參考文獻(xiàn):

      [1]潘凱華,李慧,劉欣.PHP項(xiàng)目案例分析.清華大學(xué)出版社.2012年1月;

      [2]潘凱華,李慧,劉欣.PHP典型模塊精解. 清華大學(xué)出版社.2012年1月;

      基金項(xiàng)目:湖北省教育廳科學(xué)研究計(jì)劃項(xiàng)目,網(wǎng)絡(luò)在線考試平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn),編號(hào):B2013267,負(fù)責(zé)人:何定華

      民和| 平阳县| 昔阳县| 亳州市| 昌宁县| 湛江市| 鲁山县| 扶绥县| 斗六市| 大宁县| 崇义县| 泌阳县| 邵阳市| 眉山市| 平昌县| 黎平县| 吉首市| 哈密市| 安康市| 镇康县| 攀枝花市| 文昌市| 乐安县| 集贤县| 长岭县| 金秀| 亚东县| 桓仁| 晋城| 弥渡县| 文昌市| 永靖县| 唐河县| 阿巴嘎旗| 剑阁县| 公主岭市| 白玉县| 汾西县| 黄冈市| 黄浦区| 尉氏县|