版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
學(xué)生在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)摘要:學(xué)生在線考試系統(tǒng)使用最流行的的PHP/MySQL架構(gòu)和全B/S模式,后臺(tái)管理員錄入的學(xué)員只要可以使用互聯(lián)網(wǎng),就可以通過學(xué)生在線考試系統(tǒng),參加在線考試??荚嚹軌?qū)芜x題、多選題、對(duì)錯(cuò)題直接在線評(píng)分,學(xué)員登錄成功后,選擇科目對(duì)應(yīng)的試卷,即可開始考試,在規(guī)定的時(shí)間內(nèi)答案所有題目,系統(tǒng)會(huì)自動(dòng)計(jì)算出考試成績。系統(tǒng)后臺(tái)實(shí)現(xiàn)了對(duì)題庫、試卷、學(xué)員、考試科目的管理,題庫管理實(shí)現(xiàn)了對(duì)試題的添加、編輯、刪除功能,考生信息可以添加、編輯、刪除功能,試卷管理實(shí)現(xiàn)了對(duì)試卷的添加、編輯、刪除和組卷的功能。全文分為緒論、系統(tǒng)分析、設(shè)計(jì)工具及關(guān)鍵技術(shù)介紹、系統(tǒng)概要設(shè)計(jì)、系統(tǒng)詳細(xì)設(shè)計(jì)、系統(tǒng)測試、總結(jié)展望、參考文獻(xiàn)。詳細(xì)闡述了系統(tǒng)分析、系統(tǒng)設(shè)計(jì)的方法及其內(nèi)容。關(guān)鍵詞:學(xué)生在線考試系統(tǒng);自助;PHP+Mysql前言在Internet飛速發(fā)展的今天,互聯(lián)網(wǎng)已進(jìn)入千家萬戶,社會(huì)進(jìn)入網(wǎng)絡(luò)時(shí)代,計(jì)算機(jī)網(wǎng)絡(luò)已經(jīng)成為社會(huì)發(fā)展的強(qiáng)大動(dòng)力。網(wǎng)絡(luò)不僅給我們帶來的是無窮的信息,也帶來了更多便利。不僅企業(yè)、政府的正常工作離不開網(wǎng)絡(luò),教育事業(yè)同樣需要網(wǎng)絡(luò)。遠(yuǎn)程教育成為現(xiàn)代教育技術(shù)發(fā)展方向之一,在線考試作為遠(yuǎn)程教育的一個(gè)子系統(tǒng)也成為一個(gè)重要的研究領(lǐng)域。Internet技術(shù)的發(fā)展使得考試的技術(shù)手段和載體發(fā)生了革命性的變化,Internet的開放性、分布性和基于的巨大的計(jì)算能力使得考試突破了時(shí)間和空間的限制。基于internet的考試系統(tǒng)正成為人們的研究熱點(diǎn)之一。高校傳統(tǒng)方式組織考試,需要經(jīng)歷出卷、考試、閱卷、分析4個(gè)階段,存在一些弊端:第一,重復(fù)勞動(dòng),造成人力、財(cái)力、物力和時(shí)間資源的浪費(fèi);第二,人工出卷和人工閱卷本身存在較大的主觀性和差異性,容易出錯(cuò);第三,學(xué)生考試采用統(tǒng)一試卷,考試容易發(fā)生作弊現(xiàn)象。同時(shí)某些任課教師為了提高其任課班級(jí)的總體成績,造成試題泄露抄襲使成績不真實(shí),影響教學(xué)質(zhì)量檢測的真實(shí)效果。在線考試系統(tǒng)可以克服傳統(tǒng)考試方法的不足:第一,真正實(shí)現(xiàn)考教分離,創(chuàng)造一個(gè)公平開放的考試環(huán)境。這是一種建立在計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)之上的新型考試方式,不僅是考試本身技術(shù)的改變,而且還能促進(jìn)考試結(jié)果趨向相對(duì)客觀。利用計(jì)算機(jī)網(wǎng)絡(luò)平臺(tái)分發(fā)考試題給學(xué)生,考生可以選擇不同的套題,這是傳統(tǒng)紙質(zhì)試卷無法做到的。假設(shè)題庫合理科學(xué)有效,那么這種考試的結(jié)果將是公正客觀的,學(xué)生舞弊的可能性將降低到最小。同時(shí)考生利用在線功能,在交卷之后能核對(duì)自己的答卷及得分情況,從而杜絕教師判卷中的失誤。第二,有效壓縮組織考試的各個(gè)階段,提高工作效率。在線考試充分利用學(xué)校現(xiàn)有的計(jì)算機(jī)軟、硬件資源和網(wǎng)絡(luò)資源實(shí)現(xiàn)無紙化考試,減少資源的浪費(fèi)??忌x擇套題名稱后,可以通過系統(tǒng)打開該試卷,進(jìn)行考試,答題結(jié)束后點(diǎn)擊交卷,提交答題試卷。用戶注冊(cè)登錄,用戶提交一系列注冊(cè)信息進(jìn)行注冊(cè)登錄后,可以修改密碼或個(gè)人資料。修改密碼,考生或者其他身份人登錄后可修改密碼。若考生忘記密碼,可由管理員對(duì)其進(jìn)行密碼重置,重置后的密碼為六位隨機(jī)數(shù)字。查詢成績,成績查詢是在線考試系統(tǒng)必不可少的功能模塊,用戶輸入學(xué)號(hào)和密碼登錄后,即可查詢已考過的試卷成績,同時(shí)可看到參考答案,與自己的答題內(nèi)容進(jìn)行對(duì)照,知道自己錯(cuò)在什么地方,這也使得考試成績更加透明化。第三,采用無紙化考試,創(chuàng)造節(jié)約型校園氛圍。在線考試系統(tǒng)的應(yīng)用可以有效的利用校園網(wǎng),進(jìn)一步提升學(xué)校的信息化水平,其系統(tǒng)內(nèi)包含大量的試題提供學(xué)生進(jìn)行自我練習(xí),而這些練習(xí)都是在網(wǎng)上進(jìn)行,能夠有效的節(jié)約紙張,達(dá)到環(huán)保節(jié)約校園的氛圍。后面的考試也是無紙化進(jìn)行,這樣就避免了紙張的浪費(fèi),符合當(dāng)前建設(shè)節(jié)約型社會(huì)的要求。在線考試系統(tǒng)的應(yīng)用,大大簡化了教師的出卷、判卷等工作程序,提高了教師在考試任務(wù)中的工作效率,并且大大節(jié)省了教學(xué)經(jīng)費(fèi)的開支。特別是在考試結(jié)束后,學(xué)生們能夠看到自己的試卷成績。根據(jù)自己在測試中的不足,及時(shí)補(bǔ)充相應(yīng)的知識(shí)。但由于技術(shù)不足,也存在諸多不足,需要日后不斷完善使之成熟。?一、概述(一)本課題的目的和依據(jù)在競爭激烈的今天,不管什么行業(yè),社會(huì)都需要人才,這是事實(shí),不容置疑,而人才選拔的重要途徑是通過考試來判定。現(xiàn)階段,學(xué)??荚嚧蠖际莻鹘y(tǒng)的考試方式:由老師紙上出題,學(xué)生紙上答題,老師人工閱卷,以及人工試卷分析四大步驟組成。這是一個(gè)漫長而復(fù)雜的過程,已經(jīng)越來越不適應(yīng)現(xiàn)代教學(xué)的需要。這樣做一是給老師帶來工作上的繁瑣,不利于老師工作效率的提高;二是人工的考試方式由于工作量大從而容易出錯(cuò);三是人為因素的不確定性,可能會(huì)造成選題范圍過于狹窄。隨著各種考試類型的不斷增加和考試要求的不斷提高,傳統(tǒng)的考試方式已不能滿足現(xiàn)在考試的需求。隨著經(jīng)濟(jì)和計(jì)算機(jī)技術(shù)的快速發(fā)展,網(wǎng)絡(luò)技術(shù)也在不斷的進(jìn)步。如今,網(wǎng)絡(luò)技術(shù)已經(jīng)應(yīng)用于教育領(lǐng)域中的各個(gè)方面。現(xiàn)在很多國內(nèi)外的高等院校開展了網(wǎng)絡(luò)在線教育模式,通過計(jì)算機(jī)網(wǎng)絡(luò)實(shí)現(xiàn)對(duì)學(xué)生進(jìn)行網(wǎng)絡(luò)在線課程培訓(xùn)和課程的考試。在對(duì)在線考試系統(tǒng)進(jìn)行分析的基礎(chǔ)上,實(shí)現(xiàn)網(wǎng)上考試,不但能夠提高教師的工作效率,節(jié)約大量的人力、物力與財(cái)力,還可以優(yōu)化教學(xué)管理,提高教學(xué)質(zhì)量,更重要的是影響現(xiàn)代高校課程的教學(xué)模式。因此,網(wǎng)上考試系統(tǒng)也如計(jì)算機(jī)輔助教學(xué)系統(tǒng)一樣,成了界定教育現(xiàn)代化程度的重要標(biāo)志。在線考試已成為計(jì)算機(jī)輔助教學(xué)的發(fā)展趨勢之一,互聯(lián)網(wǎng)具有的交互性、共享性、分布性、開放性的特點(diǎn)使在線考試突破了時(shí)間和空間的限制,考試的形式也沖破了傳統(tǒng)的筆和紙的界限,愈來愈多的高校考試采用計(jì)算機(jī)。(二)本課題的基本內(nèi)容學(xué)生在線考試系統(tǒng)主要包括學(xué)生個(gè)人信息、參加考試、成績查詢及修改密碼,學(xué)生可以對(duì)個(gè)人信息的修改,成績的查詢與檢索;教師通過該系統(tǒng)可以實(shí)現(xiàn)對(duì)所有學(xué)信相關(guān)信息進(jìn)行檢索與查詢,成績的查詢;管理員可以對(duì)學(xué)生信息、考試信息及題庫信息的進(jìn)行調(diào)整與更新,保證考試工作順利進(jìn)行。(三)課題的構(gòu)想本系統(tǒng)是分為前臺(tái)和后臺(tái)兩大部分,前臺(tái)可以讓學(xué)生查詢所有學(xué)生的相關(guān)信息,學(xué)生可以修改自己的個(gè)人信息,參加考試以及查詢考試成績。在后臺(tái),主要包括對(duì)發(fā)布通知,考試管理,題庫管理,所有學(xué)生成績的統(tǒng)計(jì)等。(四)系統(tǒng)相關(guān)技術(shù)Apache2.2+PHP5.4.22+Mysql技術(shù)進(jìn)行開發(fā)。(五)開發(fā)環(huán)境PHP,即“PHP:HypertextPreprocessor”,是一種被廣泛應(yīng)用的開源通用腳本語言,尤其適用于Web開發(fā)并可嵌入HTML中去。它的語法利用了C、Java和Perl,語法簡單、易于學(xué)習(xí)、功能強(qiáng)大、靈活易用。該語言的主要目標(biāo)是允許web開發(fā)人員快速編寫動(dòng)態(tài)生成的web頁面,但PHP的用途遠(yuǎn)不只于此。以下羅列了PHP所具有的一些特點(diǎn):和其它技術(shù)相比,PHP本身免費(fèi)??缙脚_(tái)性強(qiáng),PHP語言可以運(yùn)行于Unix、Linux、Window。PHP是解釋性的腳本語言,寫完代碼以后即可以執(zhí)行,不像c,java,c++等語言還需要去編譯執(zhí)行,相對(duì)來說比較節(jié)省時(shí)間。配置及部署相對(duì)簡單一些。功能全面:PHP支持圖形處理、編碼與解碼、壓縮文件處理、XML解析等。(六)系統(tǒng)后端采用Mysql數(shù)據(jù)庫進(jìn)行管理MySQL是一個(gè)快速,易于使用的RDBMS,被用于許多小型和大型企業(yè)。MySQL由一個(gè)瑞典公司MySQLAB支持。正在開發(fā),銷售。MySQL變得如此受歡迎,因?yàn)樵S多很好的理由:MySQL在一個(gè)開源許可下發(fā)布。所以使用它不要擔(dān)心什么問題。MySQL本身是非常強(qiáng)大的程序。它擁有可處理最昂貴,最強(qiáng)大的數(shù)據(jù)庫軟件包的相當(dāng)大一部分功能。MySQL使用眾所周知的SQL數(shù)據(jù)語言的標(biāo)準(zhǔn)形式。MySQL可運(yùn)行在許多類操作系統(tǒng)和許多語言,包括PHP,PERL,C,C++,JAVA等MySQL運(yùn)行得非常快,甚至在大型數(shù)據(jù)集也可以運(yùn)行得很好。MySQL與PHP非常友好,是最受贊賞的Web開發(fā)語言。MySQL支持大型數(shù)據(jù)庫,可達(dá)5千萬行以上的表。表的默認(rèn)文件大小限制為4GB,但可以增加(如果操作系統(tǒng)可以處理它),800萬TB是一個(gè)理論極限TB).MySQL是定制的。開源GPL許可允許程序員修改MySQL軟件,以適應(yīng)自己的特定環(huán)境。二、系統(tǒng)需求分析與概要設(shè)計(jì)(一)功能需求軟件的需求分析必須要有對(duì)原業(yè)務(wù)的一個(gè)深入了解、提取、抽象、升華的過程。在需求分析階段,要對(duì)經(jīng)過可行性分析所確定的系統(tǒng)目標(biāo)和功能做進(jìn)一步的詳細(xì)論述,以確定系統(tǒng)是“做什么”的。需求分析的轉(zhuǎn)化,核心是兩個(gè)點(diǎn),一是對(duì)這個(gè)業(yè)務(wù)的場景進(jìn)行充分的理解和認(rèn)知,二是想明白業(yè)務(wù)場景中需求點(diǎn),要通過何種方式來滿足它;實(shí)際的需求過程中,需要結(jié)合業(yè)務(wù)場景、用戶場景把一些關(guān)鍵細(xì)節(jié)挖掘出來,并能在產(chǎn)品設(shè)計(jì)時(shí)考慮進(jìn)去,以給用戶一個(gè)良好的體驗(yàn);只要你充分認(rèn)清楚業(yè)務(wù)需求方的訴求、用戶在執(zhí)行具體任務(wù)時(shí)的訴求,并對(duì)產(chǎn)品的常規(guī)實(shí)現(xiàn)方式有了解的話,需求分析并不是一個(gè)多復(fù)雜的過程,就是這么一步步去推理、去轉(zhuǎn)化的過程;而要把每個(gè)細(xì)節(jié)做透,就必須在實(shí)際中多去磨練,在生活中多體驗(yàn),學(xué)會(huì)場景化的思維方式。需求分析的主要任務(wù)是:定義軟件的范圍及必須滿足的約束;確定軟件的功能和性能及與其他系統(tǒng)成分的接口,建立數(shù)據(jù)模型、功能模型和行為模型;最終提供需求規(guī)格說明,并用做評(píng)估軟件質(zhì)量的依據(jù)。需求分析的結(jié)果是系統(tǒng)開發(fā)的基礎(chǔ),關(guān)系到工程的成敗和軟件產(chǎn)品的量。因此,必須用行之有效的方法對(duì)軟件進(jìn)行嚴(yán)格的審查驗(yàn)證。(二)性能需求學(xué)生在線考試系統(tǒng)設(shè)計(jì)的主要目的是要學(xué)生在線做題和學(xué)生成績通過網(wǎng)絡(luò)進(jìn)行管理。為學(xué)生、管理員提供便利。系統(tǒng)的用戶有2種類型,分別為系統(tǒng)管理員、學(xué)生、系統(tǒng)對(duì)于一個(gè)用戶只允許以一種身份登錄。系統(tǒng)管理員登錄系統(tǒng)后可對(duì)系統(tǒng)進(jìn)行管理,基主要操作是維護(hù)學(xué)生、題庫和考試相關(guān)信息;學(xué)生登錄后主要操作是選擇題庫、參加考試、成績查詢、以及個(gè)人信息維護(hù)。將系統(tǒng)需求加以總結(jié),得出系統(tǒng)需求如下。系統(tǒng)可以運(yùn)行在Windows操作系統(tǒng)平臺(tái)上,并具有友好的用戶界面。系統(tǒng)用戶類型為:學(xué)生、管理員系統(tǒng)對(duì)于一個(gè)用戶只允許以一種身份登錄管理員功能有:發(fā)布考試通知,組織考題,設(shè)置考試題型,維護(hù)試題庫,包括增加,刪除,及時(shí)更新試題,支持關(guān)鍵詞搜索考生的成績并進(jìn)行分析統(tǒng)計(jì)。學(xué)生功能有:收到通知,查詢考試通知,查詢個(gè)人考試成績,修改密碼,完成在線考試。(三)系統(tǒng)模塊設(shè)計(jì)學(xué)生在線考試系統(tǒng)的角色是管理員、學(xué)生,管理員對(duì)學(xué)生、教師、課程和班級(jí)信息進(jìn)行維護(hù);學(xué)生選擇想要上的課程,查看所選的課程的成績、修改個(gè)人信息及教師信息的查詢;根據(jù)以上用戶操作需求,將系統(tǒng)劃分為如下2大功能,并對(duì)其模塊的劃分和功能進(jìn)行描述。管理員功能登錄:登錄學(xué)生信息維護(hù):查詢、修改、刪除。試題信息維護(hù):查詢、添加、修改、刪除??荚囆畔⒕S護(hù):查詢、添加、修改、刪除。學(xué)生功能登錄:登錄、修改密碼學(xué)生個(gè)人信息:修改。考試:在線考試。成績:查詢。系統(tǒng)功能模塊圖如圖2.1所示:圖2.1學(xué)生在線考試系統(tǒng)的功能模塊圖(四)系統(tǒng)業(yè)務(wù)流程分析與設(shè)計(jì)需求確定之后需要對(duì)系統(tǒng)進(jìn)行整體分析和設(shè)計(jì)。這包括系統(tǒng)功能的描述、對(duì)功能模塊的劃分和系統(tǒng)流程的分析。下面首先對(duì)系統(tǒng)功能進(jìn)行描述。模塊分析是描述系統(tǒng)需求的一個(gè)過程,需要將需求分析中的感性描述進(jìn)行抽象,提到出要實(shí)現(xiàn)的功能,這是整個(gè)系統(tǒng)開發(fā)的一個(gè)關(guān)鍵過程。業(yè)務(wù)流程如圖2.2所示:圖2.2業(yè)務(wù)流程圖(五)數(shù)據(jù)庫概念模型設(shè)計(jì)這一設(shè)計(jì)階段是在需求分析的基礎(chǔ)上,設(shè)計(jì)出能夠滿足設(shè)計(jì)需求的各種實(shí)體,以及他們之間的關(guān)系,為后面的邏輯結(jié)構(gòu)設(shè)計(jì)打下基礎(chǔ)。此階段是要用E-R實(shí)體關(guān)系圖設(shè)計(jì)數(shù)據(jù)庫的概念模型。構(gòu)成E-R圖的基本要素是實(shí)體型、屬性和聯(lián)系。E-R圖構(gòu)成成分在ER圖中有如下四個(gè)成分:矩形框:表示實(shí)體,在框中記入實(shí)體名。菱形框:表示聯(lián)系,在框中記入聯(lián)系名。橢圓形框:表示實(shí)體或聯(lián)系的屬性,將屬性名記入框中。對(duì)于主屬性名,則在其名稱下劃一下劃線。連線:實(shí)體與屬性之間;實(shí)體與聯(lián)系之間;聯(lián)系與屬性之間用直線相連,并在直線上標(biāo)注聯(lián)系的類型。學(xué)生實(shí)體屬性圖2.3:圖2.3學(xué)生實(shí)體屬性圖管理員實(shí)體屬性圖2.4:圖2.4管理員實(shí)體屬性圖考試實(shí)體屬性圖2.5:圖2.5考試實(shí)體屬性圖試題實(shí)體屬性圖2.6:圖2.6試題實(shí)體屬性圖試卷實(shí)體屬性圖2.7:圖2-7試卷實(shí)體屬性圖試卷試題實(shí)關(guān)系體屬性圖2-8:圖2.7試卷實(shí)體屬性圖試卷試題實(shí)關(guān)系體屬性圖2.8:圖2.8試卷試題關(guān)系實(shí)體屬性圖學(xué)生考試詳情體屬性圖2.9:圖2.9學(xué)生考試詳情實(shí)體屬性圖通知實(shí)體屬性圖2.10:圖2.10通知實(shí)體屬性圖學(xué)生在線考試系統(tǒng)E—R圖2.11:
圖2.11學(xué)生在線考試系統(tǒng)實(shí)體之間關(guān)系E-R圖(六)系統(tǒng)數(shù)據(jù)流程分析與設(shè)計(jì)1.數(shù)據(jù)流圖概述特指軟件產(chǎn)品中,描述數(shù)據(jù)在不同節(jié)點(diǎn)被處理的過程所畫的圖表。主要表達(dá)計(jì)算機(jī)程序?qū)τ跇I(yè)務(wù)的實(shí)現(xiàn)原理。用戶在功能流程圖中的每一個(gè)操作,對(duì)應(yīng)都會(huì)反映在數(shù)據(jù)流程圖中。同時(shí),數(shù)據(jù)流程圖也可以叫程序流程圖(ProgramFlowDiagram)。它是一種能全面地描述信息系統(tǒng)邏輯模型的主要工具。它可以利用少數(shù)幾種符號(hào)綜合的反映出信息在系統(tǒng)中的流動(dòng)、處理和存儲(chǔ)的情況。數(shù)據(jù)流程圖具有抽象性和概括性。數(shù)據(jù)流程有四種基本符號(hào):外部項(xiàng)、數(shù)據(jù)流、處理邏輯(加工)、數(shù)據(jù)元素和數(shù)據(jù)存儲(chǔ)。圖2.12數(shù)據(jù)流程基本符號(hào)(1)外部項(xiàng)外部項(xiàng)又稱外部實(shí)體,是指不受系統(tǒng)控制的,在系統(tǒng)之外的事物或人。它表達(dá)了該系統(tǒng)的數(shù)據(jù)的外部來源或去處。它也可以是另外一個(gè)數(shù)據(jù)處理系統(tǒng),它向該系統(tǒng)提供數(shù)據(jù)或接收來自該系統(tǒng)向它發(fā)出的數(shù)據(jù)。(2)數(shù)據(jù)流數(shù)據(jù)流用箭頭表示數(shù)據(jù)流動(dòng)的方向,并給予命名。一般采用單箭頭,偶爾使用雙箭頭。數(shù)據(jù)流可以由某一個(gè)外部項(xiàng)產(chǎn)生,也可以由某一個(gè)處理邏輯產(chǎn)生,還可以來自某一個(gè)數(shù)據(jù)存儲(chǔ)。一般來說,對(duì)每一個(gè)數(shù)據(jù)流可以在數(shù)據(jù)流箭頭的上方加以簡單的描述;對(duì)一些含義比較明顯的數(shù)據(jù)流,就不一定作描述。也可以在數(shù)據(jù)流上寫記號(hào),然后另外描述記號(hào)的意義。(3)處理邏輯(加工)處理邏輯對(duì)數(shù)據(jù)的變換方式有兩種:A、變換數(shù)據(jù)的結(jié)構(gòu)B、在原有數(shù)據(jù)內(nèi)容基礎(chǔ)上產(chǎn)生新的數(shù)據(jù)內(nèi)容
可以用一個(gè)長方形框表示處理邏輯。由三部分組成:標(biāo)識(shí)部分、功能描述部分和功能執(zhí)行部分。標(biāo)識(shí)部分用于惟一地標(biāo)識(shí)一個(gè)處理邏輯,以區(qū)別于其它邏輯。一般用數(shù)字編號(hào)表示主處理邏輯,編號(hào)下再接子編號(hào),表示某個(gè)處理邏輯被進(jìn)一步分解后某個(gè)處理邏輯下的某個(gè)子處理邏輯等。功能描述部分是處理邏輯必不可少的部分。它用一句非常簡單的話,直接表示這個(gè)處理邏輯要做的事,即它的邏輯功能。在邏輯的功能描述部分中沒有主語,只有動(dòng)詞和賓語組成。執(zhí)行這項(xiàng)功能的主體可能是某一個(gè)部門,也可以是某一個(gè)人或計(jì)算機(jī)程序,它們被看作處理邏輯的執(zhí)行者,書寫在長方框的底部。功能執(zhí)行部分同標(biāo)識(shí)部分一樣,不是必須的,只是作參考用,通常是不寫出的。(4)數(shù)據(jù)元素?cái)?shù)據(jù)元素是數(shù)據(jù)的最小組成單位,也就是不可分的數(shù)據(jù)單位。數(shù)據(jù)元素是數(shù)據(jù)流或數(shù)據(jù)存儲(chǔ)中的基本成分。(5)數(shù)據(jù)存儲(chǔ)(文件)數(shù)據(jù)存儲(chǔ)用長方條表記,在長方條內(nèi)部寫上該數(shù)據(jù)存儲(chǔ)的名稱。用作標(biāo)識(shí)的編號(hào)一般用英文字母D和數(shù)字組成。同外部項(xiàng)一樣,允許在一張數(shù)據(jù)流程式圖上重復(fù)出現(xiàn)相同的數(shù)據(jù)存儲(chǔ),以避免數(shù)據(jù)流線的交叉,這時(shí)應(yīng)在重復(fù)的數(shù)據(jù)存儲(chǔ)符號(hào)的左側(cè)再加一條豎線。一個(gè)處理邏輯可能要從數(shù)據(jù)存儲(chǔ)中讀出某些數(shù)據(jù),或者可能把一些數(shù)據(jù)存入到某個(gè)數(shù)據(jù)存儲(chǔ)中,甚至修改數(shù)據(jù)存儲(chǔ)中的某些數(shù)據(jù),那么就得用數(shù)據(jù)流將處理邏輯和數(shù)據(jù)存儲(chǔ)聯(lián)結(jié)起來。(1)數(shù)據(jù)流程圖的分解編制復(fù)雜的數(shù)據(jù)流程圖,最好的辦法是采用自頂向下擴(kuò)展逐層分解。首先是系統(tǒng)關(guān)聯(lián)圖,給出外部實(shí)體與即將開發(fā)的計(jì)算機(jī)在線考試系統(tǒng)之間的數(shù)據(jù)流。哪些數(shù)據(jù)流從外部實(shí)體進(jìn)入系統(tǒng),又有哪些數(shù)據(jù)流從系統(tǒng)輸出給外部實(shí)體。關(guān)聯(lián)圖回答系統(tǒng)從外部世界得到什么,系統(tǒng)將給外部世界又是什么。從關(guān)聯(lián)圖分解得到頂層圖,又從頂層圖分解得到一層數(shù)據(jù)流程圖,再分解出二層數(shù)據(jù)流程圖。在分解過程中,隨著更具體和更詳細(xì),新的數(shù)據(jù)流和數(shù)據(jù)存儲(chǔ)被引入,但外部世界輸入到系統(tǒng),系統(tǒng)輸出到外部世界,在關(guān)聯(lián)圖中提及的那些數(shù)據(jù)流是不能再增加,也不允許被減少的。在上述分解過程中,上層的一個(gè)處理邏輯可能被分解成多個(gè)更具體的處理邏輯,新的數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)流被被引入。如此逐一分解擴(kuò)展,直至不需要再分解為止2、學(xué)生在線考試系統(tǒng)的數(shù)據(jù)流圖圖2.13學(xué)生在線考試系統(tǒng)數(shù)據(jù)流圖(七)數(shù)據(jù)字典1.定義數(shù)據(jù)流編號(hào)名稱組成來源去向D1.1學(xué)生信息錄入學(xué)員姓名+密碼+聯(lián)系電話管理員學(xué)生信息錄入處理D1.2學(xué)生信息學(xué)員姓名+密碼+聯(lián)系電話管理員學(xué)生表D1.3學(xué)生信息查詢姓名/聯(lián)系電話F1.1學(xué)生表學(xué)生查詢處理D1.4學(xué)生信息學(xué)員姓名+密碼+聯(lián)系電話F1.1學(xué)生表F1.2學(xué)生表D2.1試題信息錄入描述+選項(xiàng)+題型+答案管理員試題信息錄入處理D2.2試題信息描述+選項(xiàng)+題型+答案管理員試題表D2.3試題信息查詢描述/選項(xiàng)/題型/答案管理員試題表查詢處理D2.4試題信息描述+選項(xiàng)+題型+答案F2.1試題表F2.2試題表D3.1試卷信息錄入考試類別編號(hào)+試卷名+試卷時(shí)長+試卷總分?jǐn)?shù)管理員試卷信息錄入處理D3.2試卷信息考試類別編號(hào)+試卷名+試卷時(shí)長+試卷總分?jǐn)?shù)管理員試卷信息查詢處理D3.3試卷信息查詢考試類別編號(hào)/試卷名/試卷時(shí)長/試卷總分?jǐn)?shù)F3.1試卷表試卷信息查詢處理D3.4試卷信息考試類別編號(hào)+試卷名+試卷時(shí)長+試卷總分?jǐn)?shù)F3.1試卷表F3.2試卷表D4.1通知信息錄入通知內(nèi)容管理員通知信息錄入處理D4.2通知信息通知內(nèi)容管理員通知表D4.3通知信息查詢通知內(nèi)容F4.1通知表通知表查詢處理D4.4通知信息通知內(nèi)容F4.1通知表F4.2通知表D5.1登錄用戶名+密碼學(xué)生學(xué)生個(gè)人信息驗(yàn)證D5.2個(gè)人信息修改用戶名/密碼/聯(lián)系電話學(xué)生修改個(gè)人信息D6.1考試試卷/試題/分?jǐn)?shù)學(xué)生試卷信息查詢處理D6.2試卷信息查詢處理學(xué)生編號(hào)/分?jǐn)?shù)學(xué)生F5.1試卷表D7.1查詢成績學(xué)生編號(hào)/分?jǐn)?shù)學(xué)生學(xué)生考試詳情D7.2查詢成績查詢處理學(xué)生編號(hào)/分?jǐn)?shù)學(xué)生F6.1學(xué)生考試詳情表2.數(shù)據(jù)處理編號(hào):P1.1輸入的數(shù)據(jù)流:D1.1文件信息:F1.1輸出的數(shù)據(jù)流:D1.2功能說明:學(xué)生信息錄入,管理員錄入學(xué)生信息。編號(hào):P1.2輸入的數(shù)據(jù)流:D1.3輸出的數(shù)據(jù)流:D1.4功能說明:學(xué)生信息查詢處理,管理員查詢學(xué)生信息,查看學(xué)生是否在表。出錯(cuò)信息:出錯(cuò)后提示管理員編號(hào):P1.3輸入的數(shù)據(jù)流:D1.3文件信息:F1.2輸出的數(shù)據(jù)流:D1.4功能說明:學(xué)生信息維護(hù)處理,管理員對(duì)學(xué)生信息進(jìn)行新增、修改、刪除、保存操作。出錯(cuò)信息:出錯(cuò)后提示管理員編號(hào):P2.1輸入的數(shù)據(jù)流:D2.1文件信息:F2.1輸出的數(shù)據(jù)流:D2.2功能說明:試題信息錄入,管理員錄入試題信息。編號(hào):P2.2輸入的數(shù)據(jù)流:D2.3輸出的數(shù)據(jù)流:D2.4功能說明:試題信息查詢處理,管理員查詢?cè)囶}信息,查看試題是否在表。出錯(cuò)信息:出錯(cuò)后提示管理員編號(hào):P2.3輸入的數(shù)據(jù)流:D2.3文件信息:F2.2輸出的數(shù)據(jù)流:D2.4功能說明:試題信息維護(hù)處理,管理員對(duì)試題信息進(jìn)行新增、修改、刪除、保存操作。出錯(cuò)信息:出錯(cuò)后提示管理員編號(hào):P3.1輸入的數(shù)據(jù)流:D2.1文件信息:F2.1輸出的數(shù)據(jù)流:D2.2功能說明:試卷信息錄入,管理員錄入試卷信息。編號(hào):P3.2輸入的數(shù)據(jù)流:D2.3輸出的數(shù)據(jù)流:D2.4功能說明:試卷信息查詢處理,管理員查詢?cè)嚲硇畔ⅲ榭丛嚲硎欠裨诒?。出錯(cuò)信息:出錯(cuò)后提示管理員編號(hào):P3.3輸入的數(shù)據(jù)流:D2.3文件信息:F2.2輸出的數(shù)據(jù)流:D2.4功能說明:試卷信息維護(hù)處理,管理員對(duì)試卷信息進(jìn)行新增、修改、刪除、保存操作。出錯(cuò)信息:出錯(cuò)后提示管理員編號(hào):P4.1輸入的數(shù)據(jù)流:D4.1文件信息:F4.1輸出的數(shù)據(jù)流:D4.2功能說明:通知信息錄入,管理員錄入通知信息。編號(hào):P4.2輸入的數(shù)據(jù)流:D4.3輸出的數(shù)據(jù)流:D4.4功能說明:通知信息查詢處理,管理員查詢通知信息,查看通知是否在表。出錯(cuò)信息:出錯(cuò)后提示管理員編號(hào):P4.3輸入的數(shù)據(jù)流:D4.3文件信息:F4.2輸出的數(shù)據(jù)流:D4.4功能說明:通知信息維護(hù)處理,管理員對(duì)通知信息進(jìn)行新增、修改、刪除、保存操作。出錯(cuò)信息:出錯(cuò)后提示管理員編號(hào):P5.1輸入的數(shù)據(jù)流:D5.1輸出的數(shù)據(jù)流:D5.2功能說明:修改學(xué)生個(gè)人信息編號(hào):P5.2輸入的數(shù)據(jù)流:D5.1輸出的數(shù)據(jù)流:D5.2功能說明:修改學(xué)員信息編號(hào):P5.3輸入的數(shù)據(jù)流:D6.1輸出的數(shù)據(jù)流:D6.1功能說明:學(xué)員考試編號(hào):P5.4輸入的數(shù)據(jù)流:D7.1輸出的數(shù)據(jù)流:D7.2功能說明:查詢學(xué)生考試成績3.定義數(shù)據(jù)存儲(chǔ)表2.7.3-1學(xué)生信息表字段名稱數(shù)據(jù)類型字段大小索引是否可為空注釋idVarchar64PKNO學(xué)生編碼studentNameVarchar50NO學(xué)生名passwordVarchar32NO密碼telphoneVarchar14YES聯(lián)系方式lastLoginTimetimestampYES上次登錄時(shí)間表2.7.3-2管理員表字段名稱數(shù)據(jù)類型字段大小索引是否可為空注釋idint11PKNO管理員namevarchar32NO管理員名稱passwordvarchar32NO管理員密碼lastLoginTimetimestampYES上次登錄時(shí)間表2.7.3-3試卷類別信息表字段名稱數(shù)據(jù)類型字段大小索引是否可為空注釋idInt11PKNO考試類別編號(hào)nameVarchar32NO類別名表2.7.3-4試卷表字段名稱數(shù)據(jù)類型字段大小索引是否可為空注釋idInt11PKNO編號(hào)categoty_idInt11FKNO考試類別編號(hào)nameVarchar100NO試卷名稱timeLengthInt11NO考試時(shí)長scoreFloat3,2NO分?jǐn)?shù)表2.7.3-5試卷試題關(guān)系表字段名稱數(shù)據(jù)類型字段大小索引是否可為空注釋idInt11PKNO關(guān)系編號(hào)paper_idInt11FKNO試卷編號(hào)question_idInt11FKNO試題編號(hào)scorefloat3,2YES試題分?jǐn)?shù)表2.7.3-6試題表字段名稱數(shù)據(jù)類型字段大小索引是否可為空注釋idInt11PKNO試題編號(hào)desctextNO試題描述optiontextYES試題選項(xiàng)typetinyint1NO題型(1單選題,2多選題,3判斷題,4簡答題)answertextNO答案表2.7.3-7學(xué)生考試詳情表字段名稱數(shù)據(jù)類型字段大小索引是否可為空注釋idInt11PKNO編號(hào)user_idvarchar64FKNO學(xué)生編號(hào)paper_idInt11FKNO試卷編號(hào)question_idInt11FKNO試題編號(hào)scorefloat3,2YES試題分?jǐn)?shù)表2.7.3-8通知表字段名稱數(shù)據(jù)類型字段大小索引是否可為空注釋IdInt11PKNO編號(hào)contenttextNO通知內(nèi)容createTimetimestampYES發(fā)布時(shí)間
三、系統(tǒng)詳細(xì)設(shè)計(jì)與系統(tǒng)實(shí)現(xiàn)(一)總體流程設(shè)計(jì)系統(tǒng)總體設(shè)計(jì)即通過制定統(tǒng)一的操作流程,完成系統(tǒng)需求分析中規(guī)定的所有功能。確定系統(tǒng)的實(shí)施方案,即系統(tǒng)的物理模型。系統(tǒng)總體流程圖:圖3-1系統(tǒng)總體流程圖圖3.1學(xué)員管理程序流程圖(二)管理員后臺(tái)模塊相關(guān)程序流程設(shè)計(jì)功能:學(xué)員管理、試題管理、試卷管理、通知管理學(xué)員管理程序流程圖如圖3.2所示:圖3.2學(xué)員管理程序流程圖試題管理程序流程圖如圖3.3所示:圖3.3試題管理程序流程圖試卷管理程序流程圖如圖3.4所示:圖3.4試卷管理程序流程圖知管理程序流程圖如圖3.5所示:圖3.5試卷管理程序流程圖(三)學(xué)員考試程序流程設(shè)計(jì)學(xué)員考試程序流程圖如圖3.6所示:圖3.6學(xué)員考試據(jù)庫,關(guān)系型數(shù)據(jù)庫在海量數(shù)據(jù)和單位時(shí)間響應(yīng)事務(wù)處理請(qǐng)求等方面,有著明顯的優(yōu)勢。關(guān)系型數(shù)據(jù)庫是以服務(wù)器的方式提供數(shù)據(jù)服務(wù)的,其對(duì)于數(shù)據(jù)的管理有著良好的控制,在維護(hù)數(shù)據(jù)的完整性,數(shù)據(jù)的安全性方面有完善的考慮。相比之下,基于文件數(shù)據(jù)庫只是以文件的方式提供簡單的文件存儲(chǔ)格式,數(shù)據(jù)管理需要自行編寫程序控制。顯然,在處理企業(yè)復(fù)雜的關(guān)鍵事務(wù)的時(shí)候,將數(shù)據(jù)放在基于文件的數(shù)據(jù)庫是非常不合適的。使用關(guān)系型數(shù)據(jù)庫是企業(yè)管理信息系統(tǒng)的唯一選擇。瀏覽器/服務(wù)器作為客戶機(jī)/服務(wù)器的升級(jí),繼承了客戶機(jī)/服務(wù)器在聯(lián)機(jī)事務(wù)處理方面的優(yōu)點(diǎn),在支持分布式數(shù)據(jù)處理方面和客戶機(jī)/服務(wù)器是一樣的。本系統(tǒng)是采用SQL語言建立的數(shù)據(jù)庫,之間的關(guān)系如圖3.7所示:圖3.7數(shù)據(jù)庫表關(guān)系圖3.5界面設(shè)計(jì)3.5.1界面設(shè)計(jì)方法:遵循Windows界面的設(shè)計(jì)風(fēng)格,并能充分體現(xiàn)用戶功能的直觀性和方便性、數(shù)據(jù)操作的規(guī)范性和統(tǒng)一性。將功能列表集中顯示,方便用戶查找使用,簡單的操作邏輯可快速培養(yǎng)用戶使用習(xí)慣。主要操作界面放在一個(gè)窗口顯示,不會(huì)造成窗口過多,雜亂無章的情況。將界面劃分為不同的功能區(qū)域,相互間不干擾,在一個(gè)界面內(nèi)解決所有問題,便于用戶使用和操作。1.登錄模塊界面設(shè)計(jì)提示:代碼只顯示了部分重要代碼,具體詳細(xì)代碼查看附件壓縮包文件.
前臺(tái)部分:前臺(tái)登錄界面如圖3.8所示圖3.8前臺(tái)登錄界面圖相關(guān)代碼展示:
<divclass="moduleform-module"><divclass="form"><h2><center>登錄你的賬號(hào)</center></h2><formmethod="post"id="login"name="login"onsubmit="javascript:returnchkfrm(this);"action="/Index/doLogin"><inputtype="text"name="username"onpropertychange="javascript:if(this.value.length>=8)this.form.userpwd.focus();"placeholder="請(qǐng)輸入用戶名"/><inputtype="password"name="password"placeholder="請(qǐng)輸入密碼"/><inputtype="submit"value="登錄"class="buttonh-login-button"></form></div></div>前臺(tái)界面如圖3.9所示圖3.9前臺(tái)首頁界面圖部分代碼如下:<divclass="m-main-right"><h1class="m-main-right-title">歡迎使用何學(xué)章在線考試系統(tǒng)~</h1><divclass="m-main-right-content"><divclass="content-l-wrap"><divclass="content-l-item"><span>全真模擬:</span><label>全面模擬機(jī)考流程,給考生最貼近實(shí)際的機(jī)考體驗(yàn)。</label></div><divclass="content-l-item"><span>名師題庫:</span><label>頂級(jí)名師團(tuán)隊(duì)精心編寫,提醒全面,覆蓋各類考點(diǎn)。</label></div><divclass="content-l-item"><span>全新體驗(yàn):</span><label>最人性化的人機(jī)交互體驗(yàn),鍛煉考試操作能力和速度。</label></div><ahref="javascript:;"><divclass="start-btn"><ahref="/Index/allPaper"style="color:#fff">開始考試</a></div></a></div><divclass="content-r"><h1>溫馨提醒!</h1><divclass="content-r-text">今天是<span>{{$smarty.now|date_format:'%Y'}}</span>年<span>{{$smarty.now|date_format:'%m'|intval}}</span>月<span>{{$smarty.now|date_format:'%d'}}</span>號(hào),天氣晴,請(qǐng)您合理安排考試時(shí)間,祝您考試順利!</div></div></div></div>我的考試界面如圖3.10所示圖3.10我的考試界面圖其頁面部分代碼:/*所有試卷*/publicfunctionallPaperAction(){ $allPaper=$this->model('Paper')->find(); $this->tpl->assign('category',$this->_getCategoryList()); $u=$this->getSession('userInfo'); //我的做題詳情 foreach($allPaperas$key=>&$val){ $condition['where']="paper_id=".$val['id'].'ANDuser_id="'.$u['id'].'"'; $result=$this->model('StudentExamDetail')->find($condition); if($result){ $val['finish']=1; } } $this->tpl->assign('data',$allPaper); $this->tpl->display('allPaper.html');}開始做題界面如圖3.11所示圖3.11開始做題界面圖其頁面部分代碼:
/*做題頁面*/publicfunctiondoQuestionAction(){ $u=$this->getSession('userInfo'); $paperId=intval($this->get('paperId',0)); if($paperId>0){ //試卷信息 $data['paperInfo']=$this->model('Paper')->load($paperId); $data['questionInfo']=$this->_getPaperQuestion($data['paperInfo']); $data['questionType']=$this->model('Question')->questionType; $this->tpl->assign('data',$data); $this->tpl->display('doQuestion.html'); }}/***做題業(yè)務(wù)處理*/publicfunctiondoPaperQuestionAction(){ $paperId=intval($this->post('paperId',0)); $arrQuestion=$this->post('question'); if(is_array($arrQuestion)){ $objRelation=$this->model('StudentExamDetail'); $u=$this->getSession('userInfo'); foreach($arrQuestionas$question_id=>$answer){ $data=array( 'user_id'=>$u['id'], 'paper_id'=>$paperId, 'question_id'=>$question_id, 'answer'=>is_array($answer)?serialize($answer):$answer ); $objRelation->insert($data); } $this->alert('添加成功','/Index/allPaper'); }else{ echo$this->allPaperAction(); }}我的成績界面如圖3.12所示圖3.12我的成績界面圖其頁面部分代碼:/**我的成績頁面*/publicfunctionmyScorePaperAction(){ $allPaper=$this->model('Paper')->find(); $this->tpl->assign('category',$this->_getCategoryList()); $u=$this->getSession('userInfo'); if($allPaper){ foreach($allPaperas$key=>&$val){ $condition['where']="paper_id=".$val['id'].'ANDuser_id="'.$u['id'].'"'; $result=$this->model('StudentExamDetail')->find($condition); if($result){ $val['finish']=1; }else{ unset($allPaper[$key]); } } } $this->tpl->assign('data',$allPaper); $this->tpl->display('myScorePaper.html');}試卷成績?cè)斍榻缑嫒鐖D3.13所示圖3.13試卷成績?cè)斍榻缑鎴D其頁面部分代碼/***我的成績*/publicfunctionmyScoreAction(){ $paperId=intval($this->get('paperId',0)); $u=$this->getSession('userInfo'); if($paperId>0){ //試卷信息 $data['paperInfo']=$this->model('Paper')->load($paperId); $data['questionInfo']=$this->_getPaperQuestion($data['paperInfo']); $data['question']=$this->_getPaperQuestionInfo($data['paperInfo']); $data['questionType']=$this->model('Question')->questionType; $condition['where']="paper_id=".$paperId.'ANDuser_id="'.$u['id'].'"'; $result=$this->model('StudentExamDetail')->find($condition); $data['paperInfo']['mySCore']=0; foreach($resultas$key=>$val){ if(!empty($val['answer'])){ //計(jì)算得分 if($data['question'][$val['question_id']]['answer']==$val['answer']){ $data['paperInfo']['mySCore']+=$data['question'][$val['question_id']]['score']; } $val['answer_decode']=@unserialize($val['answer'])?@unserialize($val['answer']):$val['answer']; } $data['detail'][$val['question_id']]=$val; } $this->tpl->assign('data',$data); $this->tpl->display('myScore.html'); }}個(gè)人信息界面如圖3.14所示圖3.14個(gè)人信息詳情界面圖其頁面部分代碼:{{includefile='common/header.html'}}<divclass="m-main01">{{includefile='common/left.html'currentPage='myPersonalInformation'}}<divclass="m-main-right"><divclass="m-main-right-info"><divclass="m-info-item"><label>用戶名:</label><span>{{$data.studentName}}</span></div><divclass="m-info-item"><label>手機(jī)號(hào):</label><span>{{$data.telphone|default:'暫無'}}</span></div><divclass="m-info-item"><label>上次登錄時(shí)間:</label><span>{{$data.lastLoginTime}}</span></div><ahref="/Index/editPersonalInformation"class="m-info-edit">編輯</a></div></div></div>{{includefile='common/footer.html'}}通知界面如圖3.15所示圖3.15通知界面面圖其部分代碼:{{includefile='common/header.html'}}<divclass="m-main01">{{includefile='common/left.html'currentPage='notice'}}<divclass="m-main-right"><divclass="m-main-right-tips">{{$data.content|default:'暫無通知'}}</div></div></div>{{includefile='common/footer.html'}}后臺(tái)部分:后臺(tái)登錄界面如圖3.16所示圖3.16后臺(tái)登錄界面默認(rèn)管理員賬號(hào)為admin密碼為admin其部分代碼:<divclass="m-login-wrap"><divclass="m-login"style="margin-top:175px;"><pclass="m-login-p1"><label>用戶</label><inputname="username"type="text"></p><pclass="m-login-p2"><label>密碼</label><inputname="password"type="password"><buttonid="h-js-loginBtn">登錄</button></p></div></div><scripttype="text/javascript">$(function(){//登錄$("#h-js-loginBtn").click(function(){varusernameObj=$("input[name='username']");varpasswordObj=$("input[name='password']");varusernameVal=usernameObj.val();varpasswordVal=passwordObj.val();if(usernameVal==''){usernameObj.focus();alert('請(qǐng)輸入用戶名');returnfalse;}if(passwordVal==''){passwordObj.select();alert('請(qǐng)輸入密碼');returnfalse;}$.ajax({type:"POST",url:"/admin/doLogin",dataType:'json',data:{username:usernameVal,password:passwordVal},success:function(msg){if(msg.Status==1){window.location='/admin/index';}else{alert(msg.Error);returnfalse;}}});});//退出$("#h-js-logoutBtn").click(function(){console.log($(this).html());});});</script>后臺(tái)學(xué)員管理添加頁面如圖3.17所示圖3.17后臺(tái)學(xué)員管理添加頁面其部分代碼:publicfunctiondoAddAction(){ $info='參數(shù)不能為空'; $data=$this->post(); if(isset($data['id'])&&!empty($data['id'])){ //編輯 if(isset($data['password'])&&!empty($data['password'])){ $data['password']=md5($data['password']); }else{ unset($data['password']); } $info=false!==$this->objUser->update($data['id'],$data)?'編輯成功':'編輯失敗'; }else{ if(!empty($data['studentName'])&&!empty($data['password'])){ $data['password']=md5($data['password']); $data['id']=getGuid(); $lastId=$this->objUser->insert($data); $info=false!==$lastId?'添加成功':'添加失敗'; } } $this->setSession('doNotice',$info); $this->redirect("/Admin_Student/list");}后臺(tái)試題管理頁面如圖3.18和3.19所示圖3.18后臺(tái)試題管理頁面圖3.19后臺(tái)試題管理頁面其部分代碼:publicfunctionlistAction(){ $pageSize=10; $totalRowCount=$this->objQuestion->count('1=1'); $page=newCola_Com_Pager($totalRowCount,$pageSize); $>_ajax_func='common.ajaxPage'; $conditions=array( 'order'=>'`id`DESC', 'start'=>$>_start, 'limit'=>$pageSize ); $data['list']=$this->objQuestion->find($conditions); $data['pageHtml']=$>renderNav(); $this->tpl->assign('questionType',$this->objQuestion->questionType); $this->tpl->assign('data',$data); if($this->request->isAjax()){ echojson_encode(array('status'=>1,'html'=>$this->tpl->fetch("admin/question/_list.html"))); }else{ $this->tpl->display('admin/question/list.html'); }}publicfunctiondoAddAction(){$info='參數(shù)不能為空!';$data=$this->post();if(isset($data['option'])){$data['option']=serialize($data['option']);}if(isset($data['rightOption'])){if(is_array($data['rightOption'])){$data['answer']=implode(',',$data['rightOption']);}else{$data['answer']=$data['rightOption'];}}//判斷題時(shí)if($data['type']==3){$data['option']=serialize(array('0'=>'錯(cuò)誤','1'=>'正確'));}unset($data['rightOption']);if(isset($data['id'])&&!empty($data['id'])){$info=false!==$this->objQuestion->update($data['id'],$data)?'編輯成功':'編輯失敗';}else{if(!empty($data['desc'])&&(!empty($data['answer'])||$data['answer']==0)){unset($data['id']);$lastId=$this->objQuestion->insert($data);$info=false!==$lastId?'添加成功':'添加失敗';}}$this->setSession('doNotice',$info);if($info=='編輯成功'||$info=='添加成功'){$this->redirect("/Admin_Question/list");}else{$this->tpl->assign('questionType',$this->objQuestion->questionType);$this->tpl->assign('data',$data);$this->tpl->display('admin/question/add.html');}}后臺(tái)試卷管理頁面如圖3.203.213.22所示圖3.20后臺(tái)試題管理頁面圖3.21后臺(tái)試題管理頁面圖3.22后臺(tái)試題管理頁面其部分代碼:publicfunctiondetailAction(){ $id=$this->get('id'); if(!empty($id)){ $data=$this->objPaper->load($id); $data['json']=http_build_query($data); //所有試題 $objQuestion=$this->model('Question'); $data['allQuestion']=$objQuestion->find(); $data['questionType']=$objQuestion->questionType; //試卷中的題目 $conditions=array( 'where'=>'paperId='.$id ); $result=$this->model('PaperQuestionRelation')->find($conditions); $data['questionIds']=$data['scores']=array(); if(!empty($result)){ foreach($resultas$key=>$item){ array_push($data['questionIds'],$item['questionId']); $data['scores'][$item['questionId']]=$item['score']; } } $this->tpl->assign('data',$data); } $this->tpl->display('admin/paper/detail.html');}publicfunctiondoAddAction(){ $info='參數(shù)不能為空!'; $data=$this->post(); if(isset($data['id'])&&!empty($data['id'])){ //編輯 if(false!==$this->objPaper->update($data['id'],$data)){ $this->redirect("/Admin_Paper/list"); }else{ $info='編輯失敗'; } }else{ if(!empty($data['name'])&&!empty($data['category_id'])){ unset($data['id']); $lastId=$this->objPaper->insert($data); if(false!==$lastId){ $this->redirect("/Admin_Paper/list"); }else{ $info='添加失敗'; } } } $this->setSession('doNotice',$info); $this->tpl->display('admin/paper/add.html');}后臺(tái)通知頁面如圖3.233.24所示圖3.23后臺(tái)通知頁面圖3.24后臺(tái)通知頁面其部分代碼:publicfunctiondoAddAction(){ $info='參數(shù)不能為空'; $data=$this->post(); $data['createTime']=!empty($data['createTime'])?$data['createTime']:date('Y-m-dH:i:s'); if(isset($data['id'])&&!empty($data['id'])){ if(false!==$this->objNotice->update($data['id'],$data)){ $this->redirect("/Admin_Notice/list"); } $info='編輯失敗'; }else{ if(!empty($data['content'])){ unset($data['id']); $lastId=$this->objNotice->insert($data); if(false!==$lastId){ $this->redirect("/Admin_Notice/list"); } $info='添加失敗'; } } $this->setSession('doNotice',$info); $this->tpl->display('admin/notice/add.html');}四、系統(tǒng)測試(一)軟件測試概述軟件測試(SoftwareTesting):使用人工和自動(dòng)手段來運(yùn)行或測試某個(gè)系統(tǒng)的過程,其目的在于檢驗(yàn)它是否滿足規(guī)定的需求或弄清楚預(yù)期結(jié)果與實(shí)際結(jié)果之間的差別。測試的目的是:(1)為了發(fā)現(xiàn)盡可能多的缺陷,并期望通過改錯(cuò)來把缺陷統(tǒng)統(tǒng)消滅,以能提高軟件的質(zhì)量。一個(gè)成功的測試用例在于發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的缺陷。(2)以最少的人力、物力和時(shí)間找出軟件中潛在的各種錯(cuò)誤和缺陷,通過修正各種錯(cuò)誤和缺陷提高軟件質(zhì)量,回避軟件發(fā)布后由于潛在的軟件缺陷和錯(cuò)誤造成的隱患所帶來的商業(yè)風(fēng)險(xiǎn)。(二)軟件測試的方法軟件測試方法一般分為動(dòng)態(tài)測試方法與靜態(tài)測試方法。動(dòng)態(tài)測試方法中又根據(jù)測試用例的設(shè)計(jì)方法不同,分為黑盒測試與白盒測試兩類。1.靜態(tài)測試靜態(tài)測試是采用人工檢測盒計(jì)算機(jī)輔助靜態(tài)分析的手段對(duì)程序進(jìn)行檢測,方法如下:人工檢測:是指不依靠計(jì)算機(jī)運(yùn)行程序,而靠人工審查盒評(píng)審軟件。計(jì)算機(jī)輔助靜態(tài)分析:指利用靜態(tài)分析軟件工具對(duì)被測試程序進(jìn)行特性分析,從程序中提取一些信息,來檢查可能出錯(cuò)的變量、參數(shù)與代碼等。2.動(dòng)態(tài)測試動(dòng)態(tài)測試與靜態(tài)測試相反,只要是設(shè)計(jì)一組輸入數(shù)據(jù),然后通過運(yùn)行程序來發(fā)現(xiàn)錯(cuò)誤。一般有兩種方法:黒盒測試和白盒測試。測試任何軟件都有兩種方法:黑盒測試和白盒測試法。黑盒測試也稱功能測試,它是通過測試來檢測每個(gè)功能是否都能正常使用。在測試中,把程序看作一個(gè)不能打開的黑盒子,在完全不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性的情況下,在程序接口進(jìn)行測試。白盒測試[1]
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025河北廊坊大廠回族自治縣殯儀館招聘2人參考考試試題及答案解析
- 2025民航上海醫(yī)院(瑞金醫(yī)院古北分院)事業(yè)編制招聘62人備考筆試試題及答案解析
- 2026江蘇連云港東海縣部分事業(yè)單位赴高校招聘高層次人才8人備考筆試試題及答案解析
- 2025保山市隆陽區(qū)蒲縹鎮(zhèn)中心衛(wèi)生院公開招聘見習(xí)人員、鄉(xiāng)村醫(yī)生(9人)參考筆試題庫附答案解析
- 2023河北省事業(yè)單位考試《公共基礎(chǔ)知識(shí)》考前訓(xùn)練題
- 網(wǎng)字體版權(quán)協(xié)議書
- 網(wǎng)點(diǎn)墻打通協(xié)議書
- 聯(lián)合體內(nèi)部協(xié)議書
- 聯(lián)建協(xié)議屬于合同
- 聯(lián)營轉(zhuǎn)直營協(xié)議書
- 國家預(yù)算實(shí)驗(yàn)報(bào)告
- 工業(yè)園區(qū)綜合能源智能管理平臺(tái)建設(shè)方案合集
- 附件1:中國聯(lián)通動(dòng)環(huán)監(jiān)控系統(tǒng)B接口技術(shù)規(guī)范(V3.0)
- 正弦函數(shù)、余弦函數(shù)的圖象 說課課件
- 閉合性顱腦損傷病人護(hù)理查房
- 《立血康軟膠囊研究6400字(論文)》
- GB/T 19216.21-2003在火焰條件下電纜或光纜的線路完整性試驗(yàn)第21部分:試驗(yàn)步驟和要求-額定電壓0.6/1.0kV及以下電纜
- 《你看起來好像很好吃》繪本課件
- 囊袋皺縮綜合征課件
- 硬件原理圖設(shè)計(jì)規(guī)范
- 2023版北京協(xié)和醫(yī)院重癥醫(yī)學(xué)科診療常規(guī)
評(píng)論
0/150
提交評(píng)論