版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 本科畢業(yè)論文(設(shè)計)模板</p><p> 本科畢業(yè)論文(設(shè)計)</p><p> 論文題目:在線考試系統(tǒng)的設(shè)計與實(shí)現(xiàn)</p><p><b> 學(xué)生姓名:羅 偉</b></p><p> 學(xué) 號:1205290203</p><p> 專 業(yè):
2、軟 件 工 程 </p><p> 班 級: 軟 件 1202 </p><p> 指導(dǎo)教師: 王 命 宇 </p><p> 完成日期: 2016年 5 月 30 日</p><p> 在線考試系統(tǒng)的設(shè)計與實(shí)現(xiàn)</p><p><b> 內(nèi) 容 摘要<
3、/b></p><p> 學(xué)生在線考試系統(tǒng)旨在提高考試的質(zhì)量和效率,充分發(fā)揮網(wǎng)上考試的靈活性,不局限于考生所在地理位置,同時,在大規(guī)??忌瑫r線上考試的環(huán)境和壓力下,以提升考試系統(tǒng)的高并發(fā)連接、大數(shù)據(jù)處理的性能。這也是順應(yīng)國內(nèi)O2O線上線下服務(wù)的潮流,如阿里巴巴的淘寶、京東商城、1號店、蘑菇街等幾大線上線下巨頭,促進(jìn)社會經(jīng)濟(jì)的快速發(fā)展。</p><p> 為了適應(yīng)在大規(guī)??忌瑫r
4、在線參與考試的壓力下,既保證后端服務(wù)器的性能和效率,又能良好地處理大量客戶連接來保證高并發(fā)。系統(tǒng)采用C++編寫在Linux環(huán)境下運(yùn)行的后端服務(wù)器,使用輕量級的nginx反向代理服務(wù)器,nginx相對于Apache的好處在近幾年O2O概念下應(yīng)運(yùn)而生并取得壓倒性的優(yōu)勢取代用Apache作為web反向代理服務(wù)器。nginx的高性能、高并發(fā)、大數(shù)據(jù)處理方面表現(xiàn)極佳。采用f-cgi框架來支撐動態(tài)網(wǎng)站的開發(fā),比jsp開發(fā)動態(tài)網(wǎng)站有更加充分的依據(jù),比
5、如服務(wù)器可以更高效地與客戶端瀏覽器交互,而不需要安裝JVM(java虛擬機(jī))。</p><p> 另外,對于一些html web文檔,不需要開發(fā)者大量手動的編輯,而使用模板引擎在cgi程序中就可以幫我們完成,大大提高了開發(fā)效率。此外,任何項(xiàng)目沒有絕對的好壞優(yōu)劣之分,系統(tǒng)的大部分功能都可以在現(xiàn)有技術(shù)下完成。一些其他功能也可以通過日后的需求而完善??傊?,系統(tǒng)的可擴(kuò)展性也是值得肯定的。</p><
6、p> 關(guān)鍵詞:C++nginxf-cgi框架模板引擎O2O</p><p> Design and Implementation of Online Examination System</p><p><b> Abstract</b></p><p> Students online examination system ai
7、med at improving the quality and efficiency of the examination, give full play to the flexibility of the online exam, the candidates are not limited to geographical location, while at the same time a large-scale environm
8、ent and pressure candidates online exam to improve examination system high concurrent connections, the performance of large data processing. This is the tide domestic O2O online and offline services, such as Taobao, Jing
9、dong Mall, Shop No. 1, </p><p> In order to meet the candidates at the same time under the pressure of large-scale participation in the online exam, both to ensure the performance and efficiency of the back
10、-end servers, and can handle a large number of customers with good connections to ensure high concurrency. System written in C ++ back-end servers running the Linux environment, the use of lightweight nginx reverse proxy
11、 server, nginx Apache with respect to benefits in recent years, O2O concept came into being and made an ov</p><p> In addition, for some html web documents, the developer does not need a lot of manual editi
12、ng, and using a template engine cgi program can help us to complete, greatly improving the efficiency of development. In addition, any project there is no absolute good or bad points, most of the functions of the system
13、can be done in the prior art under. Some other features can also improve future needs. In short, the system's scalability is also worthy of recognition.</p><p> Key words: CPlusPlusNginxFramework-of-fcg
14、iTemplate-EngineOTO</p><p><b> 目 錄</b></p><p><b> 緒 論1</b></p><p> ?。ㄒ唬┫到y(tǒng)開發(fā)的目的1</p><p> (二)系統(tǒng)開發(fā)的意義1</p><p><b> 一、系統(tǒng)簡介
15、2</b></p><p><b> ?。ㄒ唬┉h(huán)境簡介2</b></p><p> ?。ǘ﹏ginx簡介3</p><p> ?。ㄈヽgi與f-cgi原理簡介4</p><p> (四)memcached簡介4</p><p> ?。ㄎ澹﹎ysql數(shù)據(jù)庫簡介5</
16、p><p><b> 二、可行性研究6</b></p><p> ?。ㄒ唬┙?jīng)濟(jì)可行性6</p><p> (二)技術(shù)可行性6</p><p> ?。ㄈ┓煽尚行?</p><p> ?。ㄋ模┫到y(tǒng)流程圖7</p><p> ?。ㄎ澹?shù)據(jù)流圖DFD7</p&
17、gt;<p> ?。?shù)據(jù)字典DD9</p><p><b> 三、需求分析12</b></p><p> ?。ㄒ唬┕δ苄枨?2</p><p> ?。ǘ┬阅苄枨?2</p><p><b> ?。ㄈ〦R圖13</b></p><p> 四、
18、總體設(shè)計(概要設(shè)計)14</p><p> ?。ㄒ唬┫到y(tǒng)概要設(shè)計14</p><p><b> 1.WBS圖14</b></p><p> 2.系統(tǒng)功能模塊與界面設(shè)計14</p><p> (二)數(shù)據(jù)庫概要設(shè)計15</p><p><b> 1.ER模型15</
19、b></p><p> 2.關(guān)系模型設(shè)計15</p><p><b> 五、詳細(xì)設(shè)計17</b></p><p> ?。ㄒ唬┕δ茉O(shè)計17</p><p> 1.學(xué)生功能模塊(StudentModule)17</p><p> 2.網(wǎng)站管理員模塊(AdminModule)21
20、</p><p> ?。ǘ?shù)據(jù)庫表詳細(xì)設(shè)計26</p><p> 六、編碼與單元測試29</p><p> ?。ㄒ唬﹩卧幋a29</p><p> (二)界面展示30</p><p> ?。ㄈ﹩卧獪y試33</p><p><b> 七、系統(tǒng)測試35</b&g
21、t;</p><p><b> 八、系統(tǒng)維護(hù)37</b></p><p> ?。ㄒ唬╉?xiàng)目部署與網(wǎng)站發(fā)布37</p><p> (二)性能調(diào)優(yōu)和運(yùn)維37</p><p><b> 結(jié) 論38</b></p><p> 參 考 文 獻(xiàn)39</p>
22、<p><b> 緒 論</b></p><p> ?。ㄒ唬┫到y(tǒng)開發(fā)的目的</p><p> 隨著C++、java、C#等面向?qū)ο缶幊陶Z言的出現(xiàn)。OOP的編程模式深入軟件工程師們的內(nèi)心。但是在大多數(shù)網(wǎng)站應(yīng)用似乎被java structs框架、jsp框架、.net框架所壟斷,盡管如此,這些框架在一些領(lǐng)域因?yàn)槠鋱?zhí)行效率的低下而被用戶詬病。比如,java需要在
23、JVM環(huán)境下運(yùn)行,對大量內(nèi)置數(shù)據(jù)類型進(jìn)行過度封裝,其在效率、性能方面的不足也體現(xiàn)出來。C/C++一直在效率方面表現(xiàn)出色,被廣泛應(yīng)用于系統(tǒng)、驅(qū)動、服務(wù)器和游戲行業(yè)軟件的開發(fā)。C++同樣也適合于開發(fā)網(wǎng)站,并因其效率方面的優(yōu)點(diǎn),本系統(tǒng)就是為了在這方面做進(jìn)一步嘗試。C++對開發(fā)者的技術(shù)要求高、難度大,所以在開發(fā)web應(yīng)用方面,應(yīng)用極少。通過本系統(tǒng)介紹用C++進(jìn)行開發(fā)web應(yīng)用,期望可以推廣C++在web領(lǐng)域得到程序員們的青睞,激發(fā)廣大編程初學(xué)者
24、對C++的熱愛,敢于迎難而上,攻克難關(guān),推動我國乃至世界軟件業(yè)的發(fā)展。</p><p> 除了為了推廣C++在不同的領(lǐng)域、業(yè)務(wù)中的應(yīng)用外。開發(fā)此系統(tǒng)是為那些打算開發(fā)出高并發(fā)、高性能、穩(wěn)定健壯網(wǎng)站的程序員們提供一個示例和樣本。改善大量用戶同時在線訪問時,出現(xiàn)的服務(wù)器崩潰、宕機(jī)、響應(yīng)延時高、不穩(wěn)定、產(chǎn)生錯誤的瓶頸。</p><p> (二)系統(tǒng)開發(fā)的意義</p><p&
25、gt; 本系統(tǒng)開發(fā)的意義不僅僅在其對C++語言的推廣,鼓勵更過的后來者勇于登上計算機(jī)科學(xué)的高峰,解決一個接一個的難題,最終推動計算機(jī)科學(xué)的發(fā)展的學(xué)術(shù)性意義。更重要的是,它也具有很大的商業(yè)價值和實(shí)際意義。</p><p> 相對于傳統(tǒng)的線下考試,在線考試不需要安排實(shí)際的‘物理考場’。安排大量的考場,設(shè)置過多的考點(diǎn)、密切關(guān)注對考場秩序的調(diào)度。這會帶來大量的人力資源成本,并且效率低下,不符合信息時代對效率的要求。在
26、線考試也不局限于地理位置的分布而呈現(xiàn)出任何差異,所有參加考試的考生只需登錄到系統(tǒng)就可以進(jìn)行答題。這方便了考生合理安排自己的答題環(huán)境。對教師而言,減輕了大量手工批閱試卷的負(fù)擔(dān),客觀題部分完全自動化閱卷。主觀題則只需和管理員溝通制定相應(yīng)的評分細(xì)則,系統(tǒng)采用類似于標(biāo)準(zhǔn)答案關(guān)鍵詞匹配比例的算法即可比較公正地批改試卷。非常輕松簡捷,方便,降低了人工閱卷的難度。</p><p><b> 一、系統(tǒng)簡介</b
27、></p><p> 隨著大數(shù)據(jù)、云存儲、云計算、高并發(fā)、集群與分布式計算這些新技術(shù)的出現(xiàn),使得人們對效率和性能的關(guān)注度也急劇升溫。本系統(tǒng)是擬為學(xué)生參加在線編程技術(shù)考試而開發(fā)的。系統(tǒng)采用B/S架構(gòu),nginx反向代理服務(wù)器部署在Linux后端服務(wù)器集群系統(tǒng)中,使用memcached高性能分布式緩存技術(shù),在大量考生同時參與考試時,使得服務(wù)器正常工作的同時,還保證了效率和性能。這相比線下考試具有更大的靈活性和
28、穩(wěn)定性。</p><p> 另外,在日常生活中中我們訪問的大量的web應(yīng)用程序都是使用java structs、jsp、asp、.net等框架開發(fā)架構(gòu)的。而本系統(tǒng)則是使用C++語言開發(fā)web后端服務(wù)器程序。C++因其面向?qū)ο缶幊烫匦裕∣OP)及向前兼容C面向過程式編程,這使得C++在程序執(zhí)行效率上與C語言處于同一水平。眾所周知,C語言主要用于開發(fā)系統(tǒng)級別的應(yīng)用或驅(qū)動程序,而C++語言則用在服務(wù)器、部分系統(tǒng)級別的
29、底層開發(fā)(尤其是游戲服務(wù)器)。之所以使用C++語言是因?yàn)镃不適合大型項(xiàng)目或具有通用性和代碼可高度可重用性的開發(fā)。國內(nèi)外的web網(wǎng)站幾乎都會用到程序連接訪問數(shù)據(jù)庫,而大量地訪問數(shù)據(jù)庫,會給應(yīng)用程序帶來很多負(fù)擔(dān),解決方案是除了使用memcached高性能的分布式緩存服務(wù)器外,可以在語言上做出選擇。大部分?jǐn)?shù)據(jù)庫對于C/C++語言都提供了源碼級別的支持,再加上C/C++程序執(zhí)行效率高,這對于頻繁訪問數(shù)據(jù)庫的web應(yīng)用是一個不錯的選擇。</
30、p><p> 和前文提到的類似,由于web應(yīng)用需要大量地訪問數(shù)據(jù)庫,可以考慮在服務(wù)器端部署memcached分布式緩存服務(wù)器以減少應(yīng)用程序?qū)?shù)據(jù)庫的訪問次數(shù),從而提高web動態(tài)應(yīng)用的響應(yīng)速度和可擴(kuò)展性。</p><p> 本文主要是為了在C/C++開發(fā)高并發(fā)響應(yīng)的web應(yīng)用方面做出一些嘗試。</p><p><b> ?。ㄒ唬┉h(huán)境簡介</b>&
31、lt;/p><p> 整個考試系統(tǒng)涉及的開發(fā)語言、開發(fā)平臺、運(yùn)行平臺、運(yùn)行環(huán)境要求及限制、使用的技術(shù)手段的詳細(xì)信息參見表1-1。</p><p> 表1-1系統(tǒng)環(huán)境匯總表</p><p> ?。ǘ﹏ginx簡介</p><p> Nginx (“engine x”) 最早是由俄國軟件工程師Igor.Sysoev 采用C語言、Li
32、nux系統(tǒng)平臺的epoll IO多路復(fù)用技術(shù)、kqueue網(wǎng)絡(luò)IO模型編寫的http web反向代理服務(wù)器。在高并發(fā)大數(shù)據(jù)量連接的場景下,nginx是Apache 非常好的不二選擇。并且具有效率高、穩(wěn)定性好、高并發(fā)、負(fù)載均衡、內(nèi)存、CPU等硬件資源消耗低的優(yōu)點(diǎn),以至于Nginx 在國內(nèi)外眾多的互聯(lián)網(wǎng)門戶網(wǎng)站的應(yīng)用已經(jīng)呈現(xiàn)出銳不可當(dāng)之勢。比如Facebook、騰訊3G下載、網(wǎng)易新聞、迅雷安全中心、新浪博客播客、酷六、豆瓣、六間房、水木社區(qū)
33、、新華網(wǎng)RSS訂閱頻道等國內(nèi)外知名的門戶網(wǎng)站。Nginx在http代理和反向代理服務(wù)器方面的應(yīng)用幾乎會取代Apache(本文并沒有任何詆毀和輕蔑Apache在行業(yè)中的地位,僅僅是個人的預(yù)測)。同其他的http服務(wù)器和反向代理服務(wù)器一樣,Nginx既可以響應(yīng)靜態(tài)頁面請求(即http服務(wù)器),又可以響應(yīng)動態(tài)頁面請求(通過與后端服務(wù)器fcgi或cgi交互,把數(shù)據(jù)返回給客戶端瀏覽器)。下面歸納總結(jié)了使用nginx相對于其他老牌服務(wù)器(Apach
34、e為例)的優(yōu)缺點(diǎn)對比</p><p> 表1-2 各服務(wù)器優(yōu)缺點(diǎn)對比</p><p> 因?yàn)?,兩者都支持http服務(wù)和反向代理、正向代理。又基于兩者各自的優(yōu)缺點(diǎn),在一些應(yīng)用場景下,已經(jīng)考慮讓nginx和Apache共存,以提供給客戶端更優(yōu)質(zhì)的響應(yīng)。</p><p> 在性能方面,Nginx是專門為性能優(yōu)
35、化而開發(fā)的,在實(shí)現(xiàn)上非常注重效率。Nginx在高并發(fā)連接和大量靜態(tài)頁面請求下,性能出眾,穩(wěn)定性好。基于效率優(yōu)先的前提,本系統(tǒng)采用nginx作為http服務(wù)器和反向代理服務(wù)器。</p><p> (三)cgi與f-cgi原理簡介</p><p> 在說明FastCGI之前,先說說CGI的前世今生。CGI 即Common Gateway Interface公共網(wǎng)關(guān)接口。CGI后端服務(wù)器程
36、序的原理是:每次當(dāng)客戶請求到來時(即請求CGI),http服務(wù)器或反向代理服務(wù)器就會fork+exec生成替換一個新的CGI進(jìn)程處理客戶請求。當(dāng)CGI執(zhí)行完畢后,該CGI子進(jìn)程將會被服務(wù)器進(jìn)程kill掉。也就是說由服務(wù)器管理著處理客戶請求的CGI子進(jìn)程。顯而易見,當(dāng)高并發(fā)連接環(huán)境下,這樣的工作模式是很受程序員詬病的。因?yàn)轭l繁地創(chuàng)建和銷毀子進(jìn)程將加大系統(tǒng)的開銷和負(fù)擔(dān)。</p><p> FastCGI(即fcgi
37、,后文將用fcgi簡言之),本質(zhì)上是對CGI的改進(jìn)。其工作原理是將用于處理客戶連接請求的子進(jìn)程,即CGI解釋器進(jìn)程長期駐留于內(nèi)存中并因此獲得在性能上的提高。fcgi克服了CGI的弊病,CGI解釋器的反復(fù)加載是CGI性能低下的主要原因,相反,用fcgi進(jìn)程管理器調(diào)度管理常駐在內(nèi)存中的CGI解釋器會明顯提高服務(wù)器的性能。</p><p> fcgi完整的工作過程如下所述:</p><p>
38、 首先,fcgi進(jìn)程管理器( nginx 下 fcgi 與反向代理服務(wù)器是分離的)在http服務(wù)器或反向代理服務(wù)器啟動時即載入內(nèi)存。</p><p> 接著,fcgi進(jìn)程管理器進(jìn)行初始化,隨后同時啟動多個CGI解釋器進(jìn)程,等待來自客戶端的連接。</p><p> 緊接著,當(dāng)客戶端連接請求到達(dá)Http服務(wù)器或反向代理服務(wù)器時,fcgi進(jìn)程管理器選擇并連接到一個CGI解釋器進(jìn)程。由我們的H
39、ttp服務(wù)器或反向代理服務(wù)器將CGI環(huán)境變量和標(biāo)準(zhǔn)輸入重定向到fcgi子進(jìn)程。fcgi子進(jìn)程執(zhí)行完處理后將標(biāo)準(zhǔn)輸出和錯誤信息重定位到客戶端瀏覽器。這就是本系統(tǒng)客戶端和服務(wù)器交互通信的原理。</p><p> 當(dāng)fcgi子進(jìn)程關(guān)閉連接時,請求便告處理完成。fcgi子進(jìn)程接著等待并處理來自fcgi進(jìn)程管理器(運(yùn)行在Http服務(wù)器或反向代理服務(wù)器中)的下一個連接,而不急著退出系統(tǒng),換出到磁盤。而CGI進(jìn)程在傳統(tǒng)的CG
40、I模式中,執(zhí)行完后就不存在了。</p><p> 顯而易見的是,CGI相對于fcgi相當(dāng)慢。每一個Web請求到來都要生成一個子進(jìn)程去處理請求,完成請求時又被主進(jìn)程析構(gòu)掉。使用fcgi,所有這些都只在nginx主進(jìn)程啟動時發(fā)生一次。一個額外的好處是,持續(xù)數(shù)據(jù)庫連接可以工作并運(yùn)行良好。</p><p> 簡單地說,fcgi服務(wù)器優(yōu)于cgi服務(wù)器。因?yàn)槊看斡行碌目蛻翩溄诱埱蟮絹頃r,fcgi使
41、用的是多線程處理方式去處理請求,而cgi則是fork+exec復(fù)制替換一個進(jìn)程去處理請求,存在多進(jìn)程的開銷和負(fù)擔(dān)。</p><p> (四)memcached簡介</p><p> Memcached 是一款分布式內(nèi)存對象緩存軟件,主要用途是動態(tài)Web應(yīng)用中,減輕數(shù)據(jù)庫負(fù)載。它通過將已經(jīng)訪問過的數(shù)據(jù)和對象緩存于內(nèi)存中,減少對數(shù)據(jù)庫的讀訪問次數(shù),提高訪問數(shù)據(jù)庫的速度。Memcached內(nèi)
42、部數(shù)據(jù)結(jié)構(gòu)使用一個存儲鍵值對的哈希表(HashMap),用C語言編寫的守護(hù)進(jìn)程(daemon ),而客戶端可以采用任何語言編寫只需要遵循memcached約定的應(yīng)用層協(xié)議即可與memcached服務(wù)器端守護(hù)進(jìn)程通信。因此,memcached具有極強(qiáng)的分布式緩存的能力。memcached的存儲機(jī)制是,其API使用循環(huán)冗余校驗(yàn)計算出存儲鍵值,基于處理哈希沖突的方式尋找出合理的存儲數(shù)據(jù)的服務(wù)器,當(dāng)內(nèi)部HashMap表格滿后,采用LRU(最近未
43、使用的算法)替換出那些不太重要的數(shù)據(jù)存放在內(nèi)存中。大多數(shù)web應(yīng)用架構(gòu)都是將服務(wù)器端的重要數(shù)據(jù)存儲在數(shù)據(jù)庫中,把客戶端用戶請求的數(shù)據(jù)從數(shù)據(jù)庫中讀取并顯示在客戶端瀏覽器界面。但對于那些對數(shù)據(jù)集中訪問的大量客戶端請求,服務(wù)器端從數(shù)據(jù)庫取數(shù)據(jù)的速度和性能會非常糟糕,最終導(dǎo)致服務(wù)器端和客戶端響應(yīng)時延加長,網(wǎng)站訪問速度極慢。memcached就可以非常好的解決這</p><p> 本文只是引進(jìn)對memcached的使用,
44、并非是一個對memcached的歷史、發(fā)展、使用目的、用途、通信機(jī)制和原理、存儲算法和優(yōu)化、安裝配置使用的完全指南。更過這方面的細(xì)節(jié),可以關(guān)注網(wǎng)上或圖書中關(guān)于memcached的詳細(xì)介紹。</p><p> 總而言之,與memcached通信是十分簡單可行的,因?yàn)樗麄冏裱氖菓?yīng)用層的協(xié)議,只要遵循這種協(xié)議通信機(jī)制,任何語言都可以和memcached服務(wù)器端通信。比如:Perl、 PHP、Python、Ruby、
45、 C#、C/C++、 Lua。</p><p> 這就是本系統(tǒng)選擇memcached作為緩存機(jī)制的最好詮釋。</p><p> ?。ㄎ澹﹎ysql數(shù)據(jù)庫簡介</p><p> Mysql數(shù)據(jù)庫是一種開源關(guān)系型數(shù)據(jù)庫(RDBMS)軟件,后被oracle公司收購。mysql廣泛使用于應(yīng)用程序的后臺數(shù)據(jù)庫或企業(yè)管理日常數(shù)據(jù)。對于其社區(qū)版本(免費(fèi)版)提供的功能完全足夠用
46、于本系統(tǒng)的開發(fā)。Mysql在windows、Linux、類unix操作系統(tǒng)下都有對應(yīng)版本可供安裝使用。</p><p><b> 二、可行性研究</b></p><p> 可行性研究是軟件進(jìn)行之前必須做的工作,可行性分析的結(jié)果最終決定了是否繼續(xù)開發(fā)這個項(xiàng)目。本系統(tǒng)主要研究了在經(jīng)濟(jì)、技術(shù)、法律方面的可行性以及在可行性研究階段,以概括的形式表達(dá)對現(xiàn)有系統(tǒng)的認(rèn)識的工具:
47、系統(tǒng)流程圖、數(shù)據(jù)流圖、數(shù)據(jù)字典。</p><p><b> (一)經(jīng)濟(jì)可行性</b></p><p> 本系統(tǒng)一定是具有很好的經(jīng)濟(jì)效益的,并且所獲得的經(jīng)濟(jì)效益并不會少于或略高于其開發(fā)成本。隨著線上線下O2O概念的流行,越來越多的企業(yè)或個人經(jīng)營者都愿意出資將自身的服務(wù)掛牌在網(wǎng)上,使之得到良好的宣傳、推廣、盈利。假設(shè)開發(fā)系統(tǒng)的周期為21工作日,各個團(tuán)隊的每日平均工資如
48、表2-1統(tǒng)計所示。</p><p> 表2-1 工程團(tuán)隊的資金流預(yù)算 單位:人數(shù)/人 工資/元 天數(shù)/天</p><p> 根據(jù)以上預(yù)算,項(xiàng)目總支出為:8.28w。</p><p> 一旦上線,則按每日代理的企業(yè)和學(xué)校等其他需要在線考試的單位所獲得的平均報酬為1600/d,那么預(yù)估兩年后將會獲得116.8w的收入,凈利潤為108.52w。
49、很顯然這在兩年內(nèi)的價值已經(jīng)是一個相當(dāng)可觀的收入了。</p><p><b> ?。ǘ┘夹g(shù)可行性</b></p><p> 當(dāng)今現(xiàn)有的技術(shù)水平以及開發(fā)團(tuán)隊的素質(zhì)對于實(shí)現(xiàn)學(xué)生在線登錄、注冊、答題、查詢考試成績以及管理員管理試題、發(fā)布試題、批閱試題、發(fā)布成績等功能具有高度可行性。系統(tǒng)</p><p> 擬采用c++編寫后端服務(wù)器邏輯處理(即功能
50、),使用nginx作為反向代理服務(wù)器以支持高并發(fā)大數(shù)據(jù)處理,獲得性能和效率上的可行性。另外,memcached這種高級的緩存技術(shù),在國內(nèi)外應(yīng)用早就變得十分成熟。因此,系統(tǒng)在技術(shù)上的可行性也就非常明顯。</p><p><b> ?。ㄈ┓煽尚行?lt;/b></p><p> 系統(tǒng)在開發(fā)過程中完全遵循獨(dú)立自主的開發(fā)流程,開發(fā)過程中使用到的一部分技術(shù)也是FSF(自由軟件基
51、金會)范圍的開源軟件或工具,不存在知識產(chǎn)權(quán)和產(chǎn)品最終解釋權(quán)的糾紛。項(xiàng)目中的各部分合同也經(jīng)過法律程序反復(fù)校驗(yàn),所以,系統(tǒng)在法律方面的可行性是順理成章的。</p><p><b> ?。ㄋ模┫到y(tǒng)流程圖</b></p><p> 在可行性分析階段,主要的圖表是系統(tǒng)流程圖。該圖表是概括的描繪物理系統(tǒng)的傳統(tǒng)工具。其基本思想是用圖形符號以黑盒子形式描繪組成系統(tǒng)的各個部件(程序、
52、文件、數(shù)據(jù)庫、人工過程、表格等)。系統(tǒng)流程圖是描繪數(shù)據(jù)在系統(tǒng)各個部件之間的流動情況,不是對數(shù)據(jù)進(jìn)行加工處理的控制過程。如圖2-1。</p><p> 圖2-1 系統(tǒng)流程圖</p><p> (五)數(shù)據(jù)流圖DFD</p><p> 數(shù)據(jù)流圖是指信息流和數(shù)據(jù)從數(shù)據(jù)源點(diǎn)輸入開始,經(jīng)系統(tǒng)各個程序模塊之間經(jīng)變換處理輸出到終點(diǎn)的過程中的流動狀態(tài)的一種圖形化技術(shù)。數(shù)據(jù)流
53、圖只關(guān)心系統(tǒng)做什么,而不關(guān)心如何做的問題。不同于系統(tǒng)流程圖,在數(shù)據(jù)流圖中的數(shù)據(jù)和信息流不能經(jīng)過任何的物理部件。是一種邏輯模型,其很好地描述了系統(tǒng)的各個邏輯功能。這對于計算機(jī)專業(yè)人員和非專業(yè)人員的用戶來說,非常便于溝通和反饋。同時,這將在日后的實(shí)際開發(fā)中起到非常重要的作用,實(shí)際的開發(fā)必須立足于此。下面是系統(tǒng)的頂層和分層的數(shù)據(jù)流圖展示。</p><p> 圖 2-2 頂層數(shù)據(jù)流圖</p><p
54、> 圖 2-3 學(xué)生模塊數(shù)據(jù)流圖</p><p> 圖 2-4 管理員模塊數(shù)據(jù)流圖</p><p><b> ?。?shù)據(jù)字典DD</b></p><p> 數(shù)據(jù)字典也是一種邏輯模型。數(shù)據(jù)字典服務(wù)器數(shù)據(jù)流圖,其用于描述數(shù)據(jù)流圖中涉及到的所有元素,包括數(shù)據(jù)源點(diǎn)/終點(diǎn)、信息流、變換處理、數(shù)據(jù)存儲等。盡管數(shù)據(jù)字典如前所述定義了數(shù)據(jù)流、
55、數(shù)據(jù)流分量、數(shù)據(jù)存儲、數(shù)據(jù)處理。一般可以把數(shù)據(jù)流圖中的數(shù)據(jù)處理用別的形式加以描述(如IPO圖或PDL圖)。需要注意的是數(shù)據(jù)元素允許別名,對別名的使用與直接使用該數(shù)據(jù)元素的名字具有等價意義。</p><p> 如何定義數(shù)據(jù)流圖中存在的元素,標(biāo)準(zhǔn)是什么,是本節(jié)關(guān)心的重點(diǎn)。</p><p> 一般而言,定義一個事物,通常是定義組成改事物的成分的組合。但是這些組成事物的成分可能還是一個需要分解
56、的事物。因此,數(shù)據(jù)定義是一個自頂向下的逐步分解過程。當(dāng)分解的元素并不需要重新去定義時,這個分解過程就完成了。基于此,下面圖表給出了上文數(shù)據(jù)流圖的數(shù)據(jù)字典。</p><p> 表2-2 IO處理進(jìn)程數(shù)據(jù)字典</p><p> 表2-3 http請求數(shù)據(jù)字典</p><p> 表2-4
57、 http應(yīng)答數(shù)據(jù)字典</p><p> 表2-5 后臺數(shù)據(jù)數(shù)據(jù)字典</p><p> 表2-6 數(shù)據(jù)字典之查詢結(jié)果集</p><p> 表2-7 數(shù)據(jù)字典之網(wǎng)頁數(shù)據(jù)</p><p> 表2-8 數(shù)據(jù)字典之學(xué)生事務(wù)處理結(jié)
58、果</p><p> 表2-9 數(shù)據(jù)字典之管理員事務(wù)</p><p> 表2-10 數(shù)據(jù)字典之管理員事務(wù)處理結(jié)果</p><p><b> 三、需求分析</b></p><p> 需求分析的主要任務(wù)是提煉出客戶的所有需求,需求分析人員必須對客戶的每一點(diǎn)需求明
59、確無誤。在需求分析階段會使用SA(結(jié)構(gòu)化)分析的思想對系統(tǒng)進(jìn)行“自頂向下,逐步細(xì)化”的求精分析。所以該過程主要會產(chǎn)生實(shí)體聯(lián)系圖(ER圖)。以下章節(jié)將逐步詳解。</p><p><b> ?。ㄒ唬┕δ苄枨?lt;/b></p><p> 功能需求主要描述用戶對于系統(tǒng)需要完成哪些功能做的約束。通過用例圖則可以很好地描述。用例圖如圖3-1所示。</p><p
60、> 圖3-1 系統(tǒng)用例圖</p><p><b> ?。ǘ┬阅苄枨?lt;/b></p><p> 1)大量考生同時在線,系統(tǒng)不能因?yàn)榇髷?shù)據(jù)量連接而中斷考生的請求;</p><p> 2)系統(tǒng)對于任意考生的響應(yīng)速度控制在2秒內(nèi);</p><p> 3)經(jīng)常訪問的數(shù)據(jù)提供緩存機(jī)制;</p><
61、p> 4)服務(wù)器工作的穩(wěn)定性必須良好,不能再考試過程中出現(xiàn)故障;</p><p> 5)大量考生相同的請求,不能以加重對數(shù)據(jù)庫的訪問代價而實(shí)現(xiàn);</p><p> 6)必須確保后端服務(wù)器集群的穩(wěn)定工作;</p><p><b> ?。ㄈ〦R圖</b></p><p> 實(shí)體聯(lián)系圖是一種概念性的數(shù)據(jù)模型。其
62、描述了實(shí)體、實(shí)體的屬性以及實(shí)體之間的關(guān)系。實(shí)體聯(lián)系圖ER圖如圖3-2。</p><p> 圖3-2 系統(tǒng)ER圖</p><p> 四、總體設(shè)計(概要設(shè)計)</p><p><b> ?。ㄒ唬┫到y(tǒng)概要設(shè)計</b></p><p> 系統(tǒng)概要設(shè)計主要是系統(tǒng)功能和后臺數(shù)據(jù)庫的概要設(shè)計。</p><p
63、><b> 1.WBS圖</b></p><p> 系統(tǒng)概要設(shè)計就是得出系統(tǒng)由哪些功能模塊組成。用WBS圖則可以很好地描述系統(tǒng)功能模塊的組成和模塊之間的關(guān)系。</p><p> 圖4-1 系統(tǒng)WBS</p><p> 2.系統(tǒng)功能模塊與界面設(shè)計</p><p> 學(xué)生模塊最核心的功能就是:注冊,登錄,答
64、題,查詢成績。管理員是本系統(tǒng)的最高權(quán)限者,操持著對學(xué)生、試題、企業(yè)、圖片、音樂等各方面資源的生殺大權(quán)。其界面的設(shè)計可以稍微簡約。比如以命令行的方式來管理系統(tǒng)中的資源,因?yàn)槭∪チ颂嗟馁Y源加載和響應(yīng)時間,當(dāng)涉及到大量用戶動態(tài)地企圖修改服務(wù)器端資源的請求時,如果因?yàn)榧虞d時延太大,會大大影響服務(wù)器的實(shí)時響應(yīng)效率。Linux系統(tǒng)就是這種哲學(xué),因此,許多服務(wù)器部署在Linux上會獲得更大的穩(wěn)定性和效率。</p><p>
65、 而管理員模塊則可以以控制臺命令行的方式來管理試題、發(fā)布試卷、閱卷、發(fā)布成績等操作。因此界面設(shè)計主要是考生用戶的界面設(shè)計。</p><p> 學(xué)生注冊(RegisterForStudent):任何學(xué)生最終可能會被管理員和用人單位聯(lián)系到。所以需要有個唯一標(biāo)識用戶存在的帳號,供學(xué)生登錄,使用系統(tǒng)。但是在登錄注冊之前,需要為考生提供一個使用系統(tǒng)前的前臺索引頁面,此索引界面有兩個入口,學(xué)生登錄入口和注冊入口??忌c(diǎn)擊點(diǎn)
66、擊相應(yīng)入口即可跳轉(zhuǎn)到具體頁面。</p><p> 學(xué)生登錄(LoginForStudent):為了保證登陸的安全性,建議使用考試帳號登錄和注冊。此考號可以唯一地標(biāo)識學(xué)生在本系統(tǒng)中的身份。因?yàn)?,?dāng)用戶名和密碼重復(fù)時,不一定保證學(xué)生正確登陸系統(tǒng)。也可以使用郵箱登陸,因?yàn)猷]箱帳號是唯一的。</p><p> 學(xué)生必須填寫正確的帳號和密碼的表單,點(diǎn)擊登錄,方可登陸系統(tǒng),然后,系統(tǒng)會匹配數(shù)據(jù)庫中
67、的學(xué)生,判斷是否讓其登陸。</p><p> 為提高容錯性:系統(tǒng)必須提供檢測帳號或密碼是否任一為空,是否有任一不正確,以錯誤信息提示給學(xué)生。</p><p> 登錄成功的學(xué)生可以進(jìn)入網(wǎng)站首頁main.html,否則,系統(tǒng)再次輸出登錄頁給學(xué)生。</p><p> 個人主頁界面:個人主頁功能可以展示考生的基本信息和詳細(xì)信息,個人在必要的時候還可以修改保存?zhèn)€人的資料
68、。</p><p> 網(wǎng)站主界面:這是學(xué)生登錄系統(tǒng)后的第一個界面main.html,所有的功能請求都將通過此界面跳轉(zhuǎn),直接或間接地得到實(shí)現(xiàn)??忌梢酝ㄟ^此頁面獲取近期的考試安排,考試進(jìn)度,考試結(jié)束后的成績查詢,訪問個人主頁,聯(lián)系管理員等。</p><p> ?。ǘ?shù)據(jù)庫概要設(shè)計</p><p> 數(shù)據(jù)庫概要設(shè)計主要工作是得出該數(shù)據(jù)庫的ER模型和相關(guān)數(shù)據(jù)庫表。&
69、lt;/p><p><b> 1.ER模型</b></p><p> 本系統(tǒng)涉及的實(shí)體主要有:考生、考試、試題、管理員。以及實(shí)體間的關(guān)系,考生需要在考試開考前提前預(yù)約自己期望的考試場次,學(xué)生在預(yù)約指定場次的在線考試時,還需答題,在成績放榜后,學(xué)生需要查詢成績。管理員需要管理試題、發(fā)布試題、發(fā)布考試成績等。因此,系統(tǒng)涉及的所有用戶實(shí)體和實(shí)體間關(guān)系,詳細(xì)見下表3-1。ER
70、模型圖在需求分析就已經(jīng)給出。參見需求分析中的圖3-2。</p><p><b> 2.關(guān)系模型設(shè)計</b></p><p> 關(guān)系模型請參見表4-1。</p><p> 表 4-1 實(shí)體間關(guān)系匯總表</p><p><b> 五、詳細(xì)設(shè)計</b></p><
71、p> 詳細(xì)設(shè)計的主要任務(wù)是確定如何具體的設(shè)計系統(tǒng),但不是具體的編碼。但是在這個過程中設(shè)計的好壞直接關(guān)乎到軟件實(shí)現(xiàn)的質(zhì)量。而詳細(xì)設(shè)計主要是系統(tǒng)的人機(jī)交互界面設(shè)計和數(shù)據(jù)庫的詳細(xì)設(shè)計。</p><p><b> ?。ㄒ唬┕δ茉O(shè)計</b></p><p> 系統(tǒng)分為兩大模塊:學(xué)生功能模塊和網(wǎng)站管理員模塊。以下是各個模塊在其身份范圍內(nèi)所具有的功能。使用程序流程圖來描述
72、每個模塊的邏輯處理過程。</p><p> 1.學(xué)生功能模塊(StudentModule)</p><p> 1) 學(xué)生注冊 (RegisterForStudent):不是所有用戶都可以使用系統(tǒng),因?yàn)槟菢拥脑?,就失去了系統(tǒng)的意義。系統(tǒng)旨在為學(xué)生提供一個網(wǎng)上考試平臺供學(xué)生檢測掌握知識的程度,以及用人單位企業(yè)甚至管理員可以聯(lián)系到考生,所以需要審核用戶是否是合法的學(xué)生身份。故而需要填寫關(guān)于個
73、人資料的表單,完成注冊,提交給服務(wù)器。如圖5-1。</p><p> 2) 登錄 (LoginForStudent): 考生所有的操作都應(yīng)該在登錄到系統(tǒng)才能完成。如圖5-2。</p><p> 3) 答題 (AnswerExamPaper):提供考生在規(guī)定時間內(nèi)答題,提交前提醒考生是否真的確定提交,且支持邊做邊保存功能。如圖5-3。</p><p> 4) 查
74、詢成績 (QuerExamGrades):在成績放榜后學(xué)生可以登錄系統(tǒng)查詢。支持在線查看成績和導(dǎo)出生成成績單。成績由各大題的分值組成、參與考試的學(xué)生排名。</p><p> 還支持糾錯功能。如果考生有疑問可以點(diǎn)擊“對成績,我有疑問”,對比自己的答案和標(biāo)準(zhǔn)答案進(jìn)行求證。若有考生認(rèn)為標(biāo)準(zhǔn)答案有錯誤,可以嘗試聯(lián)系管理員以更正標(biāo)準(zhǔn)答案和所有學(xué)生的成績、排名。如圖5-4。</p><p> 圖
75、5-1 學(xué)生注冊邏輯流程圖</p><p> 圖 5-2 學(xué)生登錄邏輯流程圖</p><p> 圖5-3 學(xué)生答題邏輯流程圖</p><p> 圖5-4 學(xué)生查詢成績邏輯流程圖</p><p> 2.網(wǎng)站管理員模塊(AdminModule)</p><p> 1)發(fā)布試題 (ReleaseExam
76、ination): 在首頁點(diǎn)擊發(fā)布試題,跳到試題管理頁面,完成增刪改試題后,點(diǎn)擊發(fā)布,生成試題html,供后續(xù)考試使用,并返回首頁。當(dāng)管理本次試題(增刪改試題列表)、涉及到頁面和數(shù)據(jù)庫題號的變動。經(jīng)過管理員確認(rèn)最終的試題集之后,點(diǎn)擊發(fā)布,相關(guān)題就被寫入題目html及服務(wù)器的后臺數(shù)據(jù)庫。所有靠攀升通過訪問此頁面進(jìn)行答題。如圖5-5。</p><p> 2) 批改試卷 (CorrectExamPaper): 客觀題
77、部分把學(xué)生提交的答案與標(biāo)準(zhǔn)答案進(jìn)行比對。并計算相應(yīng)分值。編程題部分的評分標(biāo)準(zhǔn),可由企業(yè)或教師直接與管理員商議。學(xué)生提交的答案和標(biāo)準(zhǔn)答案都存放在數(shù)據(jù)庫中。如圖5-6。</p><p> 3) 登記成績 (EnrollExamGrades): 此功能先顯示所有考生的成績,輸入指定考生的考生號和成績,將把新的數(shù)據(jù)重寫到數(shù)據(jù)庫,并顯示在此頁。點(diǎn)擊返回將返回到網(wǎng)站首頁。提供首次登記成績及以后更改成績使用。如圖5-7。&l
78、t;/p><p> 4) 發(fā)布成績 (ReleaseExamination): 此功能先顯示所有考生的成績,點(diǎn)擊發(fā)布成績按鈕,將把所有考生的成績格式化輸出到studentsGrades.html頁面,供學(xué)生查詢成績。格式如下:</p><p> 前三名高亮顯示,狀元、榜眼、探花。顯示所有考生的成績排名。通過上一頁下一頁實(shí)現(xiàn)跳轉(zhuǎn)查看。如圖5-8。</p><p>
79、圖5-5 管理試卷邏輯流程圖</p><p> 圖5-6 批閱試卷邏輯流程圖</p><p> 圖5-7 登記成績邏輯流程圖</p><p> 5-8 發(fā)布成績流程程圖</p><p> ?。ǘ?shù)據(jù)庫表詳細(xì)設(shè)計</p><p> 表5-1考生基本信息表 (tBasicInfo_stu
80、)</p><p> 表5-2 考生詳細(xì)信息表 (tDetailInfo_stu)</p><p> 表5-3 考試基本信息表 (tBasicInfo_exam)</p><p> 表5-4 考試詳細(xì)信息表 (tDetailInfo_exam)</p><p> 表5-5 學(xué)生考試成績表 (
81、tGradesInfo_stu)</p><p> 表5-6 考試題目信息表 (tItemInfo_exam)</p><p> 表5-7 學(xué)生答案表 (tStuAns)</p><p><b> 六、編碼與單元測試<
82、/b></p><p> 編碼和單元測試其實(shí)屬于同一個階段。每當(dāng)程序員實(shí)現(xiàn)出一個單元的邏輯,就需要對這個單元的邏輯進(jìn)行測試。因?yàn)椋斑吘幋a,邊測試,反復(fù)測試”總是一個好的指導(dǎo)思想。而單元測試正是檢測軟件設(shè)計中的最小單元--模塊。</p><p><b> (一)單元編碼</b></p><p> 本節(jié)將列出系統(tǒng)的主要的八大功能的邏輯
83、實(shí)現(xiàn),對于底層調(diào)用的更多子例程不會詳細(xì)介紹。感興趣的讀者可以參見系統(tǒng)源碼?;蛘哧P(guān)注CSDN等網(wǎng)站,作者將會以開源的形式上傳源碼。偽代碼形式說明模塊的執(zhí)行流程。</p><p> bool CStudent::registerForStudent(): 此函數(shù)用于實(shí)現(xiàn)考生登錄。算法如下:</p><p> 考生點(diǎn)擊登錄,是,則2,否則顯示登錄頁面;</p><p&
84、gt; 帳號、密碼任意一個為空或錯誤,打印準(zhǔn)確的錯誤提示給考生,否則3);</p><p> 帳號存在,已激活否,是則4),否則,出錯;</p><p><b> 登錄成功。</b></p><p> bool CStudent::registerForStudent():此函數(shù)用于實(shí)現(xiàn)考生注冊。算法如下:</p>&
85、lt;p> 1)考生點(diǎn)擊注冊,是,則2,否則顯示注冊頁面;</p><p> 2)考生填寫的任意一個基本項(xiàng)為空或錯誤,打印準(zhǔn)確的錯誤提示給考生,否則3);</p><p> 3)點(diǎn)擊注冊,系統(tǒng)生成新的考生號給考生。并要求考生確認(rèn)激活帳號。</p><p> const CStudent::CGrades* CStudent::queryExamGr
86、ades(int examID):此函數(shù)用于實(shí)現(xiàn)考生查詢成績。算法如下:</p><p> 1)考生點(diǎn)擊查詢成績鏈接;</p><p> 2)輸入要查詢的考試場次examID,及人數(shù);</p><p> 3)輸入無效,則出錯,否則4;</p><p> 4)系統(tǒng)根據(jù)examID查詢考試進(jìn)度,最終返回給考生。</p>&l
87、t;p> void CStudent::answerExamPaper():此函數(shù)用于實(shí)現(xiàn)考生在線答題。算法如下:</p><p> 1)考生點(diǎn)擊開始答題鏈接;</p><p> 2)輸入要進(jìn)行的考試場次examID;</p><p> 3)輸入無效,則出錯,否則4;</p><p> 4)系統(tǒng)根據(jù)examID查詢考試進(jìn)
88、度,若進(jìn)度為正在考試或?qū)⒁荚?,則進(jìn)入考試,否則出錯。</p><p> bool CAdministrator::manageExamPaper(int examID,int op):此函數(shù)用于實(shí)現(xiàn)管理員管理試卷。算法如下:</p><p> 1)管理員點(diǎn)擊管理試題鏈接,進(jìn)入管理界面</p><p> 2)輸入要操作的考試場次examID及操作類型;&
89、lt;/p><p> 3)輸入無效,則出錯,否則4;</p><p> 4)系統(tǒng)根據(jù)examID查詢數(shù)據(jù)庫表,并更新到所有關(guān)聯(lián)的表。</p><p> bool CAdministrator::publicExamPaper(int examID):此函數(shù)用于實(shí)現(xiàn)管理員發(fā)布試卷。算法如下:</p><p> 1)管理員點(diǎn)擊發(fā)布試題鏈接,
90、進(jìn)入發(fā)題界面(一般根據(jù)約定,將在考試前十分鐘發(fā)卷);</p><p> 2)輸入要發(fā)布的考試場次examID;</p><p> 3)輸入無效,則出錯,否則4;</p><p> 4)系統(tǒng)根據(jù)examID查詢數(shù)據(jù)庫表,并更新到所有關(guān)聯(lián)的表。</p><p> bool CAdministrator::correctExamPaper(
91、int examID):此函數(shù)用于實(shí)現(xiàn)管理員批改試卷。算法如下:</p><p> 管理員點(diǎn)擊閱卷試鏈接;</p><p> 輸入要閱卷的考試場次examID;</p><p> 3)輸入無效,則出錯,否則4;</p><p> 4)系統(tǒng)根據(jù)examID查詢數(shù)據(jù)庫表,遍歷數(shù)據(jù)庫中的所有當(dāng)前考試的考生、試題、成績,程序進(jìn)行計算成績并更
92、新到所有關(guān)聯(lián)的表。</p><p> bool CAdministrator::publicExamGrades(int examID):參見發(fā)布試卷的算法。</p><p><b> ?。ǘ┙缑嬲故?lt;/b></p><p> 根據(jù)系統(tǒng)的概要設(shè)計,學(xué)生模塊包括注冊,登錄,答題,查詢成績。管理員模塊全程在類似于控制臺命令行的方式操作。下面
93、依次展示了編碼實(shí)現(xiàn)后的各模塊的界面。</p><p> 圖6-1 考生索引界面</p><p> 圖6-2 學(xué)生登錄界面</p><p> 圖6-3 學(xué)生登錄界面</p><p> 圖6-4 學(xué)生答題界面</p><p> 圖6-5 學(xué)生查詢成績界面</p><p> 圖
94、6-6 個人博客界面</p><p> 圖6-7 網(wǎng)站主界面</p><p><b> ?。ㄈ﹩卧獪y試</b></p><p> 單元測試關(guān)心的是模塊能否正常的工作,將模塊看成是黑盒子,不關(guān)心其內(nèi)部具體實(shí)現(xiàn)。假設(shè)系統(tǒng)有個1024539,密碼是11的學(xué)生,且有場過期的考試examID為1102009,測試用例如表6-1。</p>
95、;<p> 表6-1 單元測試用例表</p><p><b> 七、系統(tǒng)測試</b></p><p> 在軟件開發(fā)過程中,測試一直是個很重要的主題之一。甚至可以和需求分析階段的重要程度并駕齊驅(qū)。軟件測試是為了找出并糾正軟件中的潛在缺陷,是軟件質(zhì)量保證中的重要一環(huán)。隨著軟件測試技術(shù)的興起和發(fā)展,軟件測試分為黑盒測試、白盒測試、功能測試、性
96、能測試、容錯測試、集成測試、系統(tǒng)測試等。本章節(jié)的主要內(nèi)容是結(jié)合模塊實(shí)例圍繞黑盒測試和白盒測試展開。黑盒測試關(guān)心接口或模塊的功能是否正確地實(shí)現(xiàn),而這些測試已經(jīng)在上一章的單元測試得以體現(xiàn),這里就不再贅述。</p><p> 假設(shè)系統(tǒng)有個1024539,密碼是11的學(xué)生,且有場過期的考試examID為1102009,有場正在進(jìn)行的考試examID=1024668,有場已經(jīng)閱完卷的考試examID=1668998。系統(tǒng)
97、測試階段的所有測試用例參見表7-1。</p><p> 表7-1 系統(tǒng)測試用例表</p><p><b> 八、系統(tǒng)維護(hù)</b></p><p> ?。ㄒ唬╉?xiàng)目部署與網(wǎng)站發(fā)布</p><p> 系統(tǒng)開發(fā)完成后,后端服務(wù)器源碼在Linux平臺編譯、運(yùn)行,通過nginx反向代理允許考生在線登錄、使用。有關(guān)
98、nginx的安裝在網(wǎng)絡(luò)鏈接如此發(fā)達(dá)的今天,可以便捷地因特網(wǎng)上搜索到在Linux上的安裝配置與使用,這里不再贅述。將網(wǎng)站發(fā)布出去,只需要將nginx的服務(wù)器目錄下的location段(因特網(wǎng)用戶訪問網(wǎng)站服務(wù)器的根目錄)設(shè)置為后端服務(wù)器所在目錄即可。</p><p> ?。ǘ┬阅苷{(diào)優(yōu)和運(yùn)維</p><p> 后期系統(tǒng)的維護(hù)主要任務(wù)就是維護(hù)nginx性能和效率。這些內(nèi)容在nginx使用手冊上
99、隨處可見。在一個正規(guī)的OTO公司中必然設(shè)有系統(tǒng)運(yùn)維方面的職位,這方面的工作也就落在這部分專業(yè)人士的身上。比如,一般nginx可以在連續(xù)7天工作(甚至更長)不宕機(jī),但是,如果nginx配置文件修改需要重啟nginx,而重啟可能會使得當(dāng)前的用戶請求中斷,nginx在慢啟動、平滑升級等功能支持很好。這使得可以既保證考生的實(shí)時請求不會受到影響,還能實(shí)現(xiàn)nginx的重啟工作。一個好的運(yùn)維工程師一定對于這些知識胸有成竹、了然于心。在系統(tǒng)維護(hù)上,企業(yè)
100、和web應(yīng)用開發(fā)團(tuán)隊?wèi)?yīng)該高度引起重視,因?yàn)椋浖S護(hù)是也是軟件生命周期中的一部分,而且也不容忽視,當(dāng)客戶的需求變更或升級都會在原版本系統(tǒng)上做出更改。</p><p><b> 結(jié) 論</b></p><p> 本系統(tǒng)的開發(fā)落下帷幕。關(guān)于前文提到的所有功能也完全實(shí)現(xiàn)??梢钥吹剑瑢W(xué)生相關(guān)的操作,注冊、登錄、答題、查詢成績以及管理員管理試題、發(fā)布試題、批閱試卷、發(fā)布成績
101、都可以運(yùn)行良好。最重要的是,本系統(tǒng)在Linux下模擬了上萬的客戶連接并提供超長時間的服務(wù)。系統(tǒng)也達(dá)到了預(yù)期的設(shè)想。即高并發(fā)條件下保持著出色的性能和效率,且健壯而穩(wěn)定,對于用戶的操作都能快速的響應(yīng)。系統(tǒng)對于高并發(fā)環(huán)境的支持,控制在了極小的響應(yīng)時延內(nèi)。</p><p> 在上文中提到的無紙化考試,將會受益多方,確實(shí)如此,通過大量的測試手段,程序的處理邏輯精確,易于控制。對于提高教學(xué)檢測質(zhì)量和效率是毋庸置疑的。本系統(tǒng)
102、在開發(fā)過程中,嚴(yán)格遵循軟件工程學(xué)中的思想和哲學(xué),按照軟件生命周期模型的開發(fā)順序和要領(lǐng),確保了軟件的質(zhì)量,以避免產(chǎn)生軟件危機(jī)和軟件缺陷。</p><p> 本系統(tǒng)暫時沒有考慮企業(yè)用戶參與學(xué)生考試環(huán)節(jié),沒有實(shí)現(xiàn)類似于企業(yè)預(yù)約網(wǎng)站管理員,發(fā)布對學(xué)生的招聘考試的功能以及防作弊措施。考慮到C++語言的面向?qū)ο筇匦?、高擴(kuò)展性和代碼高度可重用性的特點(diǎn),只需在系統(tǒng)中添加相應(yīng)的類、功能代碼及數(shù)據(jù)庫表即可完成這些在未來可能出現(xiàn)的需
103、求。再次證明了C++在代碼重用和軟件重構(gòu)方面的優(yōu)勢。</p><p> 系統(tǒng)采用的是與眾不同的開發(fā)理念和技術(shù)嘗試,對于那些即將走上開發(fā)之路的在校大學(xué)生可能會起到或多或少的鼓勵和向?qū)В屗麄儓孕?,C++語言在實(shí)際項(xiàng)目開發(fā)中獨(dú)特的魅力和強(qiáng)大的威力。從此次的開發(fā)經(jīng)歷中,作者也是受益匪淺,學(xué)習(xí)到了很多開發(fā)技巧和理念。作為一名即將投身軟件開發(fā)行業(yè)的工作者,唯有不斷地用代碼來武裝自己,道路才會走得更寬敞、更遠(yuǎn)。最后,始終保
104、持謙虛,才會無限接近科學(xué)的巔峰。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] Stanley B. Lippman, 侯捷譯. 深度探索C++對象內(nèi)存模型[M]. 武漢:華中科技大版社,2001.</p><p> [2] 肖明魁. 基于Nginx負(fù)載均衡技術(shù)初探[J]. 科學(xué)技術(shù)展望,2015,6(36):51
105、-98.</p><p> [3] 侯捷. STL源碼分析[M]. 武漢:華中科技大學(xué)出版社,2002.</p><p> [4] 科曼. 算法導(dǎo)論 [M]. 北京:清華大學(xué)出版社,2001.</p><p> [5] C++高級編程. Scott Meyers[M]. 北京:清華大學(xué)出版社,2001.</p><p> [6] Sc
106、ott Meyers, 侯捷譯. C++高效編程 [M]. 武漢: 華中科技大學(xué)出版社,2001.</p><p> [7] 朱少民. 軟件工程導(dǎo)論 [M] . 北京: 清華大學(xué)出版社,2001.</p><p> [8] 陳偉柱. C++ Templates [M]. 北京:清華大學(xué)出版社,2001.</p><p> [9] David Vandevoor
107、de, Nicolai M.Josuttis. 精通模板引擎[M]. 北京:人民郵電出版社出版,2002.</p><p> [10] Stanley B. Lippman .C++ Primer[M]. 北京:清華大學(xué)出版社,2001.</p><p> [11] 南軼. 基于.NET Cache Memcached Web緩存技術(shù)的研究與應(yīng)用[J].科學(xué)技術(shù)與工程,2011,6(3
108、1):101-110.</p><p> [12] 王春娟. 基于緩存技術(shù)的Web應(yīng)用性能優(yōu)化研究[J].數(shù)字社區(qū)&智能家居,2008,14(3):98-100.</p><p> [13]French,W.BetweenSilences:AVoicefromChina[N].AtlanticWeekly,198715(33).</p><p> [1
109、4] Andreas M. K,Michael Haenlein. The ways of installing,configuring,and using for nginx [EB/OL] . http://www.cnblogs.com/pub/Andreas.html, 2008.</p><p> [15] Kwong Bor Ng. The applicability of universal pr
110、agmatics in information retrieval interaction: a pilot study, Information Processing and Management. Information Processing and Management, 2002, 38(2): 237-248.</p><p> [16] Andrew.Koenig,Barbara.Moo. Rum
111、inations on C++[M].London:Macmillan,1985.</p><p> [17] Gill,R.Mastering operational technique on Linux [M].London:Macmillan,1995.</p><p> [18] CarmenC.The ways of installing,configuring,and us
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)生在線考試系統(tǒng)的設(shè)計與實(shí)現(xiàn)畢業(yè)論文
- 學(xué)生在線考試系統(tǒng)--在線考試與分?jǐn)?shù)查詢功能設(shè)計與實(shí)現(xiàn)【畢業(yè)論文】
- 學(xué)生在線考試系統(tǒng)的設(shè)計與實(shí)現(xiàn)——在線閱卷和考試成績統(tǒng)計模塊【畢業(yè)論文】
- 考生在線考試系統(tǒng)的設(shè)計與開發(fā)【畢業(yè)論文】
- 學(xué)生在線考試系統(tǒng)的設(shè)計與實(shí)現(xiàn)--課程管理和個人密碼修改【畢業(yè)論文】
- 學(xué)生在線考試系統(tǒng)的設(shè)計與實(shí)現(xiàn)——前臺界面設(shè)計與后臺登陸模塊【畢業(yè)論文】
- 在線考試系統(tǒng)設(shè)計與實(shí)現(xiàn)畢業(yè)論文
- 畢業(yè)論文——在線考試系統(tǒng)的設(shè)計與實(shí)現(xiàn)
- 在線考試系統(tǒng)的設(shè)計與實(shí)現(xiàn)畢業(yè)論文
- 畢業(yè)論文----在線考試系統(tǒng)的設(shè)計與實(shí)現(xiàn)
- 畢業(yè)論文---在線考試系統(tǒng)的設(shè)計與實(shí)現(xiàn)
- 畢業(yè)論文——在線考試系統(tǒng)的設(shè)計與實(shí)現(xiàn)
- 學(xué)生在線考試系統(tǒng)──題庫管理和學(xué)生信息管理子功能設(shè)計與實(shí)現(xiàn)【畢業(yè)論文】
- 學(xué)生在線考試系統(tǒng)──題庫管理和學(xué)生信息管理子功能設(shè)計與實(shí)現(xiàn)【畢業(yè)論文】
- 畢業(yè)論文——基于bs結(jié)構(gòu)的學(xué)生在線選課系統(tǒng)的實(shí)現(xiàn)
- 基于bs架構(gòu)學(xué)生在線考試系統(tǒng)設(shè)計與實(shí)現(xiàn)
- 畢業(yè)論文—智能在線考試系統(tǒng)的設(shè)計與實(shí)現(xiàn)
- 30281.高職院校學(xué)生在線考試系統(tǒng)的設(shè)計與實(shí)現(xiàn)
- 畢業(yè)論文 基于web在線考試系統(tǒng)的設(shè)計與實(shí)現(xiàn)
- 畢業(yè)論文范文——在線考試系統(tǒng)的設(shè)計與實(shí)現(xiàn)
評論
0/150
提交評論