學生在線考試系統(tǒng)的設(shè)計與實現(xiàn)-畢業(yè)論文_第1頁
學生在線考試系統(tǒng)的設(shè)計與實現(xiàn)-畢業(yè)論文_第2頁
學生在線考試系統(tǒng)的設(shè)計與實現(xiàn)-畢業(yè)論文_第3頁
學生在線考試系統(tǒng)的設(shè)計與實現(xiàn)-畢業(yè)論文_第4頁
學生在線考試系統(tǒng)的設(shè)計與實現(xiàn)-畢業(yè)論文_第5頁
已閱讀5頁,還剩47頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

本科畢業(yè)論文(設(shè)計)模板本科畢業(yè)論文(設(shè)計)論文題目:在線考試系統(tǒng)的設(shè)計與實現(xiàn) 學生姓名:羅偉 學號:1205290203專業(yè):軟件工程班級:軟件1202指導教師:王命宇完成日期:2016年5月30日緒論(一)系統(tǒng)開發(fā)的目的隨著C++、java、C#等面向?qū)ο缶幊陶Z言的出現(xiàn)。OOP的編程模式深入軟件工程師們的內(nèi)心。但是在大多數(shù)網(wǎng)站應(yīng)用似乎被javastructs框架、jsp框架、.net框架所壟斷,盡管如此,這些框架在一些領(lǐng)域因為其執(zhí)行效率的低下而被用戶詬病。比如,java需要在JVM環(huán)境下運行,對大量內(nèi)置數(shù)據(jù)類型進行過度封裝,其在效率、性能方面的不足也體現(xiàn)出來。C/C++一直在效率方面表現(xiàn)出色,被廣泛應(yīng)用于系統(tǒng)、驅(qū)動、服務(wù)器和游戲行業(yè)軟件的開發(fā)。C++同樣也適合于開發(fā)網(wǎng)站,并因其效率方面的優(yōu)點,本系統(tǒng)就是為了在這方面做進一步嘗試。C++對開發(fā)者的技術(shù)要求高、難度大,所以在開發(fā)web應(yīng)用方面,應(yīng)用極少。通過本系統(tǒng)介紹用C++進行開發(fā)web應(yīng)用,期望可以推廣C++在web領(lǐng)域得到程序員們的青睞,激發(fā)廣大編程初學者對C++的熱愛,敢于迎難而上,攻克難關(guān),推動我國乃至世界軟件業(yè)的發(fā)展。除了為了推廣C++在不同的領(lǐng)域、業(yè)務(wù)中的應(yīng)用外。開發(fā)此系統(tǒng)是為那些打算開發(fā)出高并發(fā)、高性能、穩(wěn)定健壯網(wǎng)站的程序員們提供一個示例和樣本。改善大量用戶同時在線訪問時,出現(xiàn)的服務(wù)器崩潰、宕機、響應(yīng)延時高、不穩(wěn)定、產(chǎn)生錯誤的瓶頸。(二)系統(tǒng)開發(fā)的意義本系統(tǒng)開發(fā)的意義不僅僅在其對C++語言的推廣,鼓勵更過的后來者勇于登上計算機科學的高峰,解決一個接一個的難題,最終推動計算機科學的發(fā)展的學術(shù)性意義。更重要的是,它也具有很大的商業(yè)價值和實際意義。相對于傳統(tǒng)的線下考試,在線考試不需要安排實際的‘物理考場’。安排大量的考場,設(shè)置過多的考點、密切關(guān)注對考場秩序的調(diào)度。這會帶來大量的人力資源成本,并且效率低下,不符合信息時代對效率的要求。在線考試也不局限于地理位置的分布而呈現(xiàn)出任何差異,所有參加考試的考生只需登錄到系統(tǒng)就可以進行答題。這方便了考生合理安排自己的答題環(huán)境。對教師而言,減輕了大量手工批閱試卷的負擔,客觀題部分完全自動化閱卷。主觀題則只需和管理員溝通制定相應(yīng)的評分細則,系統(tǒng)采用類似于標準答案關(guān)鍵詞匹配比例的算法即可比較公正地批改試卷。非常輕松簡捷,方便,降低了人工閱卷的難度。一、系統(tǒng)簡介隨著大數(shù)據(jù)、云存儲、云計算、高并發(fā)、集群與分布式計算這些新技術(shù)的出現(xiàn),使得人們對效率和性能的關(guān)注度也急劇升溫。本系統(tǒng)是擬為學生參加在線編程技術(shù)考試而開發(fā)的。系統(tǒng)采用B/S架構(gòu),nginx反向代理服務(wù)器部署在Linux后端服務(wù)器集群系統(tǒng)中,使用memcached高性能分布式緩存技術(shù),在大量考生同時參與考試時,使得服務(wù)器正常工作的同時,還保證了效率和性能。這相比線下考試具有更大的靈活性和穩(wěn)定性。另外,在日常生活中中我們訪問的大量的web應(yīng)用程序都是使用javastructs、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)級別的底層開發(fā)(尤其是游戲服務(wù)器)。之所以使用C++語言是因為C不適合大型項目或具有通用性和代碼可高度可重用性的開發(fā)。國內(nèi)外的web網(wǎng)站幾乎都會用到程序連接訪問數(shù)據(jù)庫,而大量地訪問數(shù)據(jù)庫,會給應(yīng)用程序帶來很多負擔,解決方案是除了使用memcached高性能的分布式緩存服務(wù)器外,可以在語言上做出選擇。大部分數(shù)據(jù)庫對于C/C++語言都提供了源碼級別的支持,再加上C/C++程序執(zhí)行效率高,這對于頻繁訪問數(shù)據(jù)庫的web應(yīng)用是一個不錯的選擇。和前文提到的類似,由于web應(yīng)用需要大量地訪問數(shù)據(jù)庫,可以考慮在服務(wù)器端部署memcached分布式緩存服務(wù)器以減少應(yīng)用程序?qū)?shù)據(jù)庫的訪問次數(shù),從而提高web動態(tài)應(yīng)用的響應(yīng)速度和可擴展性。本文主要是為了在C/C++開發(fā)高并發(fā)響應(yīng)的web應(yīng)用方面做出一些嘗試。(一)環(huán)境簡介整個考試系統(tǒng)涉及的開發(fā)語言、開發(fā)平臺、運行平臺、運行環(huán)境要求及限制、使用的技術(shù)手段的詳細信息參見表1-1。表1-1 系統(tǒng)環(huán)境匯總表開發(fā)語言C++開發(fā)平臺Linux(Centos6.664bits)Web反向代理服務(wù)器nginx數(shù)據(jù)庫mysqlWeb文檔Html2.0(>=)緩存服務(wù)器memcached其他輔助開發(fā)工具模板引擎、js/cssfcgi后端服務(wù)器運行環(huán)境任何unix-like的操作系統(tǒng)。本系統(tǒng)使用的是Centos6.6。Web客戶端運行環(huán)境操作系統(tǒng)平臺:Winall/Linux/Unix-like/Mac-OS瀏覽器:Google(推薦)、IE、firefox等主流瀏覽器。(二)nginx簡介Nginx(“enginex”)最早是由俄國軟件工程師Igor.Sysoev采用C語言、Linux系統(tǒng)平臺的epollIO多路復用技術(shù)、kqueue網(wǎng)絡(luò)IO模型編寫的httpweb反向代理服務(wù)器。在高并發(fā)大數(shù)據(jù)量連接的場景下,nginx是Apache非常好的不二選擇。并且具有效率高、穩(wěn)定性好、高并發(fā)、負載均衡、內(nèi)存、CPU等硬件資源消耗低的優(yōu)點,以至于Nginx在國內(nèi)外眾多的互聯(lián)網(wǎng)門戶網(wǎng)站的應(yīng)用已經(jīng)呈現(xiàn)出銳不可當之勢。比如Facebook、騰訊3G下載、網(wǎng)易新聞、迅雷安全中心、新浪博客播客、酷六、豆瓣、六間房、水木社區(qū)、新華網(wǎng)RSS訂閱頻道等國內(nèi)外知名的門戶網(wǎng)站。Nginx在http代理和反向代理服務(wù)器方面的應(yīng)用幾乎會取代Apache(本文并沒有任何詆毀和輕蔑Apache在行業(yè)中的地位,僅僅是個人的預測)。同其他的http服務(wù)器和反向代理服務(wù)器一樣,Nginx既可以響應(yīng)靜態(tài)頁面請求(即http服務(wù)器),又可以響應(yīng)動態(tài)頁面請求(通過與后端服務(wù)器fcgi或cgi交互,把數(shù)據(jù)返回給客戶端瀏覽器)。下面歸納總結(jié)了使用nginx相對于其他老牌服務(wù)器(Apache為例)的優(yōu)缺點對比,參見表3-2。表1-2 各服務(wù)器優(yōu)缺點對比nginxApache是否輕量級是(線程級別)否,重量級(進程級別)靜態(tài)頁面處理能力約平均是Apache的3倍性能高并發(fā)性能nginx處理請求是異步非阻塞的,因此支持高并發(fā)。Apache則是阻塞型的,高并發(fā)連接下會出現(xiàn)大量錯誤或拒絕客服端訪問。資源消耗內(nèi)存,CPU消耗低高并發(fā)下,資源消耗非常大是否支持負載均衡是否是否支持熱部署是否Rewrite模塊遜于Apacherewrite,比nginx的rewrite強大對動態(tài)頁面的響應(yīng)不太好非常好因為,兩者都支持http服務(wù)和反向代理、正向代理。又基于兩者各自的優(yōu)缺點,在一些應(yīng)用場景下,已經(jīng)考慮讓nginx和Apache共存,以提供給客戶端更優(yōu)質(zhì)的響應(yīng)。在性能方面,Nginx是專門為性能優(yōu)化而開發(fā)的,在實現(xiàn)上非常注重效率。Nginx在高并發(fā)連接和大量靜態(tài)頁面請求下,性能出眾,穩(wěn)定性好?;谛蕛?yōu)先的前提,本系統(tǒng)采用nginx作為http服務(wù)器和反向代理服務(wù)器。(三)cgi與f-cgi原理簡介在說明FastCGI之前,先說說CGI的前世今生。CGI即CommonGatewayInterface公共網(wǎng)關(guān)接口。CGI后端服務(wù)器程序的原理是:每次當客戶請求到來時(即請求CGI),http服務(wù)器或反向代理服務(wù)器就會fork+exec生成替換一個新的CGI進程處理客戶請求。當CGI執(zhí)行完畢后,該CGI子進程將會被服務(wù)器進程kill掉。也就是說由服務(wù)器管理著處理客戶請求的CGI子進程。顯而易見,當高并發(fā)連接環(huán)境下,這樣的工作模式是很受程序員詬病的。因為頻繁地創(chuàng)建和銷毀子進程將加大系統(tǒng)的開銷和負擔。FastCGI(即fcgi,后文將用fcgi簡言之),本質(zhì)上是對CGI的改進。其工作原理是將用于處理客戶連接請求的子進程,即CGI解釋器進程長期駐留于內(nèi)存中并因此獲得在性能上的提高。fcgi克服了CGI的弊病,CGI解釋器的反復加載是CGI性能低下的主要原因,相反,用fcgi進程管理器調(diào)度管理常駐在內(nèi)存中的CGI解釋器會明顯提高服務(wù)器的性能。fcgi完整的工作過程如下所述:首先,fcgi進程管理器(nginx下fcgi與反向代理服務(wù)器是分離的)在http服務(wù)器或反向代理服務(wù)器啟動時即載入內(nèi)存。接著,fcgi進程管理器進行初始化,隨后同時啟動多個CGI解釋器進程,等待來自客戶端的連接。緊接著,當客戶端連接請求到達Http服務(wù)器或反向代理服務(wù)器時,fcgi進程管理器選擇并連接到一個CGI解釋器進程。由我們的Http服務(wù)器或反向代理服務(wù)器將CGI環(huán)境變量和標準輸入重定向到fcgi子進程。fcgi子進程執(zhí)行完處理后將標準輸出和錯誤信息重定位到客戶端瀏覽器。這就是本系統(tǒng)客戶端和服務(wù)器交互通信的原理。當fcgi子進程關(guān)閉連接時,請求便告處理完成。fcgi子進程接著等待并處理來自fcgi進程管理器(運行在Http服務(wù)器或反向代理服務(wù)器中)的下一個連接,而不急著退出系統(tǒng),換出到磁盤。而CGI進程在傳統(tǒng)的CGI模式中,執(zhí)行完后就不存在了。顯而易見的是,CGI相對于fcgi相當慢。每一個Web請求到來都要生成一個子進程去處理請求,完成請求時又被主進程析構(gòu)掉。使用fcgi,所有這些都只在nginx主進程啟動時發(fā)生一次。一個額外的好處是,持續(xù)數(shù)據(jù)庫連接可以工作并運行良好。簡單地說,fcgi服務(wù)器優(yōu)于cgi服務(wù)器。因為每次有新的客戶鏈接請求到來時,fcgi使用的是多線程處理方式去處理請求,而cgi則是fork+exec復制替換一個進程去處理請求,存在多進程的開銷和負擔。(四)memcached簡介Memcached是一款分布式內(nèi)存對象緩存軟件,主要用途是動態(tài)Web應(yīng)用中,減輕數(shù)據(jù)庫負載。它通過將已經(jīng)訪問過的數(shù)據(jù)和對象緩存于內(nèi)存中,減少對數(shù)據(jù)庫的讀訪問次數(shù),提高訪問數(shù)據(jù)庫的速度。Memcached內(nèi)部數(shù)據(jù)結(jié)構(gòu)使用一個存儲鍵值對的哈希表(HashMap),用C語言編寫的守護進程(daemon),而客戶端可以采用任何語言編寫只需要遵循memcached約定的應(yīng)用層協(xié)議即可與memcached服務(wù)器端守護進程通信。因此,memcached具有極強的分布式緩存的能力。memcached的存儲機制是,其API使用循環(huán)冗余校驗計算出存儲鍵值,基于處理哈希沖突的方式尋找出合理的存儲數(shù)據(jù)的服務(wù)器,當內(nèi)部HashMap表格滿后,采用LRU(最近未使用的算法)替換出那些不太重要的數(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ù)的速度和性能會非常糟糕,最終導致服務(wù)器端和客戶端響應(yīng)時延加長,網(wǎng)站訪問速度極慢。memcached就可以非常好的解決這個問題。從前文的介紹中不難得出,memcached是一款性能極高的分布式緩存服務(wù)器,其主要用途是:通過緩存數(shù)據(jù)庫查詢結(jié)果,減少對數(shù)據(jù)庫訪問次數(shù),提高動態(tài)Web應(yīng)用的響應(yīng)速度。本文只是引進對memcached的使用,并非是一個對memcached的歷史、發(fā)展、使用目的、用途、通信機制和原理、存儲算法和優(yōu)化、安裝配置使用的完全指南。更過這方面的細節(jié),可以關(guān)注網(wǎng)上或圖書中關(guān)于memcached的詳細介紹。總而言之,與memcached通信是十分簡單可行的,因為他們遵循的是應(yīng)用層的協(xié)議,只要遵循這種協(xié)議通信機制,任何語言都可以和memcached服務(wù)器端通信。比如:Perl、PHP、Python、Ruby、C#、C/C++、Lua。這就是本系統(tǒng)選擇memcached作為緩存機制的最好詮釋。(五)mysql數(shù)據(jù)庫簡介Mysql數(shù)據(jù)庫是一種開源關(guān)系型數(shù)據(jù)庫(RDBMS)軟件,后被oracle公司收購。mysql廣泛使用于應(yīng)用程序的后臺數(shù)據(jù)庫或企業(yè)管理日常數(shù)據(jù)。對于其社區(qū)版本(免費版)提供的功能完全足夠用于本系統(tǒng)的開發(fā)。Mysql在windows、Linux、類unix操作系統(tǒng)下都有對應(yīng)版本可供安裝使用。二、可行性研究可行性研究是軟件進行之前必須做的工作,可行性分析的結(jié)果最終決定了是否繼續(xù)開發(fā)這個項目。本系統(tǒng)主要研究了在經(jīng)濟、技術(shù)、法律方面的可行性以及在可行性研究階段,以概括的形式表達對現(xiàn)有系統(tǒng)的認識的工具:系統(tǒng)流程圖、數(shù)據(jù)流圖、數(shù)據(jù)字典。(一)經(jīng)濟可行性本系統(tǒng)一定是具有很好的經(jīng)濟效益的,并且所獲得的經(jīng)濟效益并不會少于或略高于其開發(fā)成本。隨著線上線下O2O概念的流行,越來越多的企業(yè)或個人經(jīng)營者都愿意出資將自身的服務(wù)掛牌在網(wǎng)上,使之得到良好的宣傳、推廣、盈利。假設(shè)開發(fā)系統(tǒng)的周期為21工作日,各個團隊的每日平均工資如表2-1統(tǒng)計所示。表2-1 工程團隊的資金流預算單位:人數(shù)/人工資/元天數(shù)/天人數(shù)日工資工作天數(shù)開發(fā)團隊530020需求分析團隊102406測試團隊101808系統(tǒng)設(shè)計團隊830010根據(jù)以上預算,項目總支出為:8.28w。一旦上線,則按每日代理的企業(yè)和學校等其他需要在線考試的單位所獲得的平均報酬為1600/d,那么預估兩年后將會獲得116.8w的收入,凈利潤為108.52w。很顯然這在兩年內(nèi)的價值已經(jīng)是一個相當可觀的收入了。(二)技術(shù)可行性當今現(xiàn)有的技術(shù)水平以及開發(fā)團隊的素質(zhì)對于實現(xiàn)學生在線登錄、注冊、答題、查詢考試成績以及管理員管理試題、發(fā)布試題、批閱試題、發(fā)布成績等功能具有高度可行性。系統(tǒng)擬采用c++編寫后端服務(wù)器邏輯處理(即功能),使用nginx作為反向代理服務(wù)器以支持高并發(fā)大數(shù)據(jù)處理,獲得性能和效率上的可行性。另外,memcached這種高級的緩存技術(shù),在國內(nèi)外應(yīng)用早就變得十分成熟。因此,系統(tǒng)在技術(shù)上的可行性也就非常明顯。(三)法律可行性系統(tǒng)在開發(fā)過程中完全遵循獨立自主的開發(fā)流程,開發(fā)過程中使用到的一部分技術(shù)也是FSF(自由軟件基金會)范圍的開源軟件或工具,不存在知識產(chǎn)權(quán)和產(chǎn)品最終解釋權(quán)的糾紛。項目中的各部分合同也經(jīng)過法律程序反復校驗,所以,系統(tǒng)在法律方面的可行性是順理成章的。(四)系統(tǒng)流程圖在可行性分析階段,主要的圖表是系統(tǒng)流程圖。該圖表是概括的描繪物理系統(tǒng)的傳統(tǒng)工具。其基本思想是用圖形符號以黑盒子形式描繪組成系統(tǒng)的各個部件(程序、文件、數(shù)據(jù)庫、人工過程、表格等)。系統(tǒng)流程圖是描繪數(shù)據(jù)在系統(tǒng)各個部件之間的流動情況,不是對數(shù)據(jù)進行加工處理的控制過程。如圖2-1。圖2-1 系統(tǒng)流程圖(五)數(shù)據(jù)流圖DFD數(shù)據(jù)流圖是指信息流和數(shù)據(jù)從數(shù)據(jù)源點輸入開始,經(jīng)系統(tǒng)各個程序模塊之間經(jīng)變換處理輸出到終點的過程中的流動狀態(tài)的一種圖形化技術(shù)。數(shù)據(jù)流圖只關(guān)心系統(tǒng)做什么,而不關(guān)心如何做的問題。不同于系統(tǒng)流程圖,在數(shù)據(jù)流圖中的數(shù)據(jù)和信息流不能經(jīng)過任何的物理部件。是一種邏輯模型,其很好地描述了系統(tǒng)的各個邏輯功能。這對于計算機專業(yè)人員和非專業(yè)人員的用戶來說,非常便于溝通和反饋。同時,這將在日后的實際開發(fā)中起到非常重要的作用,實際的開發(fā)必須立足于此。下面是系統(tǒng)的頂層和分層的數(shù)據(jù)流圖展示。圖2-2頂層數(shù)據(jù)流圖圖2-3學生模塊數(shù)據(jù)流圖圖2-4管理員模塊數(shù)據(jù)流圖(六)數(shù)據(jù)字典DD數(shù)據(jù)字典也是一種邏輯模型。數(shù)據(jù)字典服務(wù)器數(shù)據(jù)流圖,其用于描述數(shù)據(jù)流圖中涉及到的所有元素,包括數(shù)據(jù)源點/終點、信息流、變換處理、數(shù)據(jù)存儲等。盡管數(shù)據(jù)字典如前所述定義了數(shù)據(jù)流、數(shù)據(jù)流分量、數(shù)據(jù)存儲、數(shù)據(jù)處理。一般可以把數(shù)據(jù)流圖中的數(shù)據(jù)處理用別的形式加以描述(如IPO圖或PDL圖)。需要注意的是數(shù)據(jù)元素允許別名,對別名的使用與直接使用該數(shù)據(jù)元素的名字具有等價意義。如何定義數(shù)據(jù)流圖中存在的元素,標準是什么,是本節(jié)關(guān)心的重點。一般而言,定義一個事物,通常是定義組成改事物的成分的組合。但是這些組成事物的成分可能還是一個需要分解的事物。因此,數(shù)據(jù)定義是一個自頂向下的逐步分解過程。當分解的元素并不需要重新去定義時,這個分解過程就完成了。基于此,下面圖表給出了上文數(shù)據(jù)流圖的數(shù)據(jù)字典。表2-2 IO處理進程數(shù)據(jù)字典標識符DFD_top01名字用戶瀏覽器終端IO處理進程別名fcgi程序的標準IO描述接受來自用戶的輸入或把web文檔顯示在終端顯示屏定義用戶瀏覽器終端IO處理進程=[fcgi標準輸入|fcgi標準輸出]位置頂層數(shù)據(jù)流圖表2-3 http請求數(shù)據(jù)字典標識符DFD_top02名字Http請求別名描述一切以客戶端瀏覽器形式向服務(wù)器端發(fā)送請求的基于http協(xié)議的字節(jié)流定義Http請求=http請求報文頭+(http數(shù)據(jù)部分)位置頂層數(shù)據(jù)流圖表2-4 http應(yīng)答數(shù)據(jù)字典標識符DFD_top03名字http應(yīng)答別名描述服務(wù)器返回基于http協(xié)議的字節(jié)流給客戶端瀏覽器定義Http請求=http應(yīng)答報文頭+(http數(shù)據(jù)部分)位置頂層數(shù)據(jù)流圖表2-5 后臺數(shù)據(jù)數(shù)據(jù)字典標識符DFD_top04名字后臺數(shù)據(jù)描述Fcgi程序邏輯處理的一切中間結(jié)果或某些重要數(shù)據(jù)的備份定義后臺數(shù)據(jù)=學生數(shù)據(jù)+試題數(shù)據(jù)+題目數(shù)據(jù)位置頂層數(shù)據(jù)流圖表2-6 數(shù)據(jù)字典之查詢結(jié)果集標識符DFD_top05名字查詢結(jié)果集描述Fcgi程序邏輯處理過程中需要的某些存放在本地數(shù)據(jù)庫中的數(shù)據(jù)集合定義查詢結(jié)果集=0{[學生數(shù)據(jù)|試題數(shù)據(jù)|題目數(shù)據(jù)]}3位置頂層數(shù)據(jù)流圖標識符DFD_stu01名字學生事務(wù)描述和學生有關(guān)的操作。比如注冊、登錄、答題、查詢成績。定義學生事務(wù)=[注冊|登錄|答題|查詢成績]位置學生模塊數(shù)據(jù)流圖表2-7 數(shù)據(jù)字典之網(wǎng)頁數(shù)據(jù)標識符DFD_stu02名字網(wǎng)頁數(shù)據(jù)描述將相應(yīng)事務(wù)的處理結(jié)果以web文檔的形式返回給客戶端定義網(wǎng)頁數(shù)據(jù)=處理結(jié)果的html文檔位置學生模塊數(shù)據(jù)流圖、管理員模塊數(shù)據(jù)流圖表2-8 數(shù)據(jù)字典之學生事務(wù)處理結(jié)果標識符DFD_stu03名字學生事務(wù)處理結(jié)果描述通過fcgi邏輯處理程序把相應(yīng)事務(wù)的處理結(jié)果反饋給客戶端定義學生事務(wù)處理結(jié)果=網(wǎng)頁數(shù)據(jù)位置學生模塊數(shù)據(jù)流圖表2-9 數(shù)據(jù)字典之管理員事務(wù)標識符DFD_admin01名字管理員事務(wù)描述與管理員有關(guān)的操作。比如管理試題、發(fā)布試題、批閱試卷、發(fā)布成績定義管理員事務(wù)=[管理試題|發(fā)布試題|批閱試卷|發(fā)布成績]位置管理員模塊表2-10 數(shù)據(jù)字典之管理員事務(wù)處理結(jié)果標識符DFD_admin02名字管理員事務(wù)處理結(jié)果描述通過fcgi邏輯處理程序把相應(yīng)事務(wù)的處理結(jié)果反饋給客戶端定義管理員事務(wù)處理結(jié)果=網(wǎng)頁數(shù)據(jù)位置管理員模塊三、需求分析需求分析的主要任務(wù)是提煉出客戶的所有需求,需求分析人員必須對客戶的每一點需求明確無誤。在需求分析階段會使用SA(結(jié)構(gòu)化)分析的思想對系統(tǒng)進行“自頂向下,逐步細化”的求精分析。所以該過程主要會產(chǎn)生實體聯(lián)系圖(ER圖)。以下章節(jié)將逐步詳解。(一)功能需求功能需求主要描述用戶對于系統(tǒng)需要完成哪些功能做的約束。通過用例圖則可以很好地描述。用例圖如圖3-1所示。圖3-1系統(tǒng)用例圖(二)性能需求1)大量考生同時在線,系統(tǒng)不能因為大數(shù)據(jù)量連接而中斷考生的請求;2)系統(tǒng)對于任意考生的響應(yīng)速度控制在2秒內(nèi);3)經(jīng)常訪問的數(shù)據(jù)提供緩存機制;4)服務(wù)器工作的穩(wěn)定性必須良好,不能再考試過程中出現(xiàn)故障;5)大量考生相同的請求,不能以加重對數(shù)據(jù)庫的訪問代價而實現(xiàn);6)必須確保后端服務(wù)器集群的穩(wěn)定工作;(三)ER圖實體聯(lián)系圖是一種概念性的數(shù)據(jù)模型。其描述了實體、實體的屬性以及實體之間的關(guān)系。實體聯(lián)系圖ER圖如圖3-2。圖3-2系統(tǒng)ER圖四、總體設(shè)計(概要設(shè)計)(一)系統(tǒng)概要設(shè)計系統(tǒng)概要設(shè)計主要是系統(tǒng)功能和后臺數(shù)據(jù)庫的概要設(shè)計。1.WBS圖系統(tǒng)概要設(shè)計就是得出系統(tǒng)由哪些功能模塊組成。用WBS圖則可以很好地描述系統(tǒng)功能模塊的組成和模塊之間的關(guān)系。圖4-1系統(tǒng)WBS2.系統(tǒng)功能模塊與界面設(shè)計學生模塊最核心的功能就是:注冊,登錄,答題,查詢成績。管理員是本系統(tǒng)的最高權(quán)限者,操持著對學生、試題、企業(yè)、圖片、音樂等各方面資源的生殺大權(quán)。其界面的設(shè)計可以稍微簡約。比如以命令行的方式來管理系統(tǒng)中的資源,因為省去了太多的資源加載和響應(yīng)時間,當涉及到大量用戶動態(tài)地企圖修改服務(wù)器端資源的請求時,如果因為加載時延太大,會大大影響服務(wù)器的實時響應(yīng)效率。Linux系統(tǒng)就是這種哲學,因此,許多服務(wù)器部署在Linux上會獲得更大的穩(wěn)定性和效率。而管理員模塊則可以以控制臺命令行的方式來管理試題、發(fā)布試卷、閱卷、發(fā)布成績等操作。因此界面設(shè)計主要是考生用戶的界面設(shè)計。學生注冊(RegisterForStudent):任何學生最終可能會被管理員和用人單位聯(lián)系到。所以需要有個唯一標識用戶存在的帳號,供學生登錄,使用系統(tǒng)。但是在登錄注冊之前,需要為考生提供一個使用系統(tǒng)前的前臺索引頁面,此索引界面有兩個入口,學生登錄入口和注冊入口??忌c擊點擊相應(yīng)入口即可跳轉(zhuǎn)到具體頁面。學生登錄(LoginForStudent):為了保證登陸的安全性,建議使用考試帳號登錄和注冊。此考號可以唯一地標識學生在本系統(tǒng)中的身份。因為,當用戶名和密碼重復時,不一定保證學生正確登陸系統(tǒng)。也可以使用郵箱登陸,因為郵箱帳號是唯一的。學生必須填寫正確的帳號和密碼的表單,點擊登錄,方可登陸系統(tǒng),然后,系統(tǒng)會匹配數(shù)據(jù)庫中的學生,判斷是否讓其登陸。為提高容錯性:系統(tǒng)必須提供檢測帳號或密碼是否任一為空,是否有任一不正確,以錯誤信息提示給學生。登錄成功的學生可以進入網(wǎng)站首頁main.html,否則,系統(tǒng)再次輸出登錄頁給學生。個人主頁界面:個人主頁功能可以展示考生的基本信息和詳細信息,個人在必要的時候還可以修改保存?zhèn)€人的資料。網(wǎng)站主界面:這是學生登錄系統(tǒng)后的第一個界面main.html,所有的功能請求都將通過此界面跳轉(zhuǎn),直接或間接地得到實現(xiàn)??忌梢酝ㄟ^此頁面獲取近期的考試安排,考試進度,考試結(jié)束后的成績查詢,訪問個人主頁,聯(lián)系管理員等。(二)數(shù)據(jù)庫概要設(shè)計數(shù)據(jù)庫概要設(shè)計主要工作是得出該數(shù)據(jù)庫的ER模型和相關(guān)數(shù)據(jù)庫表。1.ER模型本系統(tǒng)涉及的實體主要有:考生、考試、試題、管理員。以及實體間的關(guān)系,考生需要在考試開考前提前預約自己期望的考試場次,學生在預約指定場次的在線考試時,還需答題,在成績放榜后,學生需要查詢成績。管理員需要管理試題、發(fā)布試題、發(fā)布考試成績等。因此,系統(tǒng)涉及的所有用戶實體和實體間關(guān)系,詳細見下表3-1。ER模型圖在需求分析就已經(jīng)給出。參見需求分析中的圖3-2。2.關(guān)系模型設(shè)計關(guān)系模型請參見表4-1。表4-1 實體間關(guān)系匯總表關(guān)系名稱參與雙方關(guān)系類型描述可省補充考生、考生資料(1,1)作為考生的詳細說明管理考生考生、管理員(m,n)管理員管理考生信息預約考試考生、試卷(m,n)考生預約考試考試考生、題目(m,n)考生答題管理試題管理員、題目(m,n)管理試題集管理考試管理員、試卷(m,n)管理員管理試卷包含隸屬試卷、題目(1,n)若干試題只能出現(xiàn)在一套試卷中五、詳細設(shè)計詳細設(shè)計的主要任務(wù)是確定如何具體的設(shè)計系統(tǒng),但不是具體的編碼。但是在這個過程中設(shè)計的好壞直接關(guān)乎到軟件實現(xiàn)的質(zhì)量。而詳細設(shè)計主要是系統(tǒng)的人機交互界面設(shè)計和數(shù)據(jù)庫的詳細設(shè)計。(一)功能設(shè)計系統(tǒng)分為兩大模塊:學生功能模塊和網(wǎng)站管理員模塊。以下是各個模塊在其身份范圍內(nèi)所具有的功能。使用程序流程圖來描述每個模塊的邏輯處理過程。1.學生功能模塊(StudentModule)1)學生注冊(RegisterForStudent):不是所有用戶都可以使用系統(tǒng),因為那樣的話,就失去了系統(tǒng)的意義。系統(tǒng)旨在為學生提供一個網(wǎng)上考試平臺供學生檢測掌握知識的程度,以及用人單位企業(yè)甚至管理員可以聯(lián)系到考生,所以需要審核用戶是否是合法的學生身份。故而需要填寫關(guān)于個人資料的表單,完成注冊,提交給服務(wù)器。如圖5-1。2)登錄(LoginForStudent):考生所有的操作都應(yīng)該在登錄到系統(tǒng)才能完成。如圖5-2。3)答題(AnswerExamPaper):提供考生在規(guī)定時間內(nèi)答題,提交前提醒考生是否真的確定提交,且支持邊做邊保存功能。如圖5-3。4)查詢成績(QuerExamGrades):在成績放榜后學生可以登錄系統(tǒng)查詢。支持在線查看成績和導出生成成績單。成績由各大題的分值組成、參與考試的學生排名。還支持糾錯功能。如果考生有疑問可以點擊“對成績,我有疑問”,對比自己的答案和標準答案進行求證。若有考生認為標準答案有錯誤,可以嘗試聯(lián)系管理員以更正標準答案和所有學生的成績、排名。如圖5-4。圖5-1學生注冊邏輯流程圖圖5-2學生登錄邏輯流程圖圖5-3學生答題邏輯流程圖圖5-4學生查詢成績邏輯流程圖2.網(wǎng)站管理員模塊(AdminModule)1)發(fā)布試題(ReleaseExamination):在首頁點擊發(fā)布試題,跳到試題管理頁面,完成增刪改試題后,點擊發(fā)布,生成試題html,供后續(xù)考試使用,并返回首頁。當管理本次試題(增刪改試題列表)、涉及到頁面和數(shù)據(jù)庫題號的變動。經(jīng)過管理員確認最終的試題集之后,點擊發(fā)布,相關(guān)題就被寫入題目html及服務(wù)器的后臺數(shù)據(jù)庫。所有靠攀升通過訪問此頁面進行答題。如圖5-5。2)批改試卷(CorrectExamPaper):客觀題部分把學生提交的答案與標準答案進行比對。并計算相應(yīng)分值。編程題部分的評分標準,可由企業(yè)或教師直接與管理員商議。學生提交的答案和標準答案都存放在數(shù)據(jù)庫中。如圖5-6。3)登記成績(EnrollExamGrades):此功能先顯示所有考生的成績,輸入指定考生的考生號和成績,將把新的數(shù)據(jù)重寫到數(shù)據(jù)庫,并顯示在此頁。點擊返回將返回到網(wǎng)站首頁。提供首次登記成績及以后更改成績使用。如圖5-7。4)發(fā)布成績(ReleaseExamination):此功能先顯示所有考生的成績,點擊發(fā)布成績按鈕,將把所有考生的成績格式化輸出到studentsGrades.html頁面,供學生查詢成績。格式如下:前三名高亮顯示,狀元、榜眼、探花。顯示所有考生的成績排名。通過上一頁下一頁實現(xiàn)跳轉(zhuǎn)查看。如圖5-8。圖5-5管理試卷邏輯流程圖圖5-6批閱試卷邏輯流程圖圖5-7登記成績邏輯流程圖5-8發(fā)布成績流程程圖(二)數(shù)據(jù)庫表詳細設(shè)計表5-1 考生基本信息表(tBasicInfo_stu)字段類型描述examNoint(7)用于唯一標識考生。登錄、使用系統(tǒng)時使用。主鍵約束。passWordvarchar(12)考生密碼,登錄時使用。sNamevarchar(20)考生姓名。sSexchar(4)考生性別。sTelNochar(11)手機號,方便管理員聯(lián)系考生?;蛴糜谝院竺艽a找回或帳號激活行為。sEmailvarchar(30)郵箱,方便管理員聯(lián)系考生?;蛴糜谝院竺艽a找回或帳號激活行為。sBirthDate出生日期。sAgetinyint(3)考生年齡。isAlivedtinyint(2)是否激活。激活帳號才可以登錄使用系統(tǒng)。表5-2 考生詳細信息表(tDetailInfo_stu)字段類型描述該表的所有字段作為保留字段。在后續(xù)的需求中可能會用到。表5-3 考試基本信息表(tBasicInfo_exam)字段類型描述examIDint(7)唯一標識某場考試。主鍵約束。examNamevarchar(30)考試名稱。描述當場考試。examTypevarchar(30)考試類型。描述當場考試。examDatedatetime考試日期和具體時間。examTimevarchar(30)考試時長。單位:分鐘examStatusvarchar(30)考試狀態(tài),總共5有種考試狀態(tài):已發(fā)布試題、未發(fā)布試題、未發(fā)布成績、已發(fā)布成績、考試已結(jié)束、考試正在進行、此考試已下架。不同的狀態(tài)描述了考試的進度,方便管理和考生查詢。numOfStudentsint(7)此場考試的學生人數(shù)。表5-4 考試詳細信息表(tDetailInfo_exam)字段類型描述該表的所有字段作為保留字段。在后續(xù)的需求中可能會用到。表5-5 學生考試成績表(tGradesInfo_stu)字段類型描述examIDint(7)唯一標識某場考試。外鍵約束,碼字段。examNoint(7)用于唯一標識考生。登錄、使用系統(tǒng)時使用。外鍵約束,碼字段。sGradesdouble(3,2)學生成績。examStatusvarchar(30)考試狀態(tài),總共5有種考試狀態(tài):已發(fā)布試題、未發(fā)布試題、未發(fā)布成績、已發(fā)布成績、考試已結(jié)束、考試正在進行、此考試已下架。不同的狀態(tài)描述了考試的進度,方便管理和考生查詢。表5-6考試題目信息表(tItemInfo_exam)字段類型描述examIDint(7)唯一標識某場考試。外鍵約束,碼字段。itemNotinyint(3)唯一標識某道題。碼字段。itemAnsvarchar(512)題的正確答案。itemQusvarchar(256)描述題干信息。itemPathvarchar(256)部分需要涉及圖片的題目。itemPointstinyint(2)每題的分值不超過2位數(shù)。表5-7學生答案表(tStuAns)字段類型描述examIDint(7)唯一標識某場考試。外鍵約束,碼字段。examNoint(7)用于唯一標識考生。登錄、使用系統(tǒng)時使用。外鍵約束,碼字段。itemNotinyint(3)唯一標識某道題。外鍵約束,碼字段。stuAnsvarchar(300)學生關(guān)于此題的答案。

六、編碼與單元測試編碼和單元測試其實屬于同一個階段。每當程序員實現(xiàn)出一個單元的邏輯,就需要對這個單元的邏輯進行測試。因為,“邊編碼,邊測試,反復測試”總是一個好的指導思想。而單元測試正是檢測軟件設(shè)計中的最小單元--模塊。(一)單元編碼本節(jié)將列出系統(tǒng)的主要的八大功能的邏輯實現(xiàn),對于底層調(diào)用的更多子例程不會詳細介紹。感興趣的讀者可以參見系統(tǒng)源碼?;蛘哧P(guān)注CSDN等網(wǎng)站,作者將會以開源的形式上傳源碼。偽代碼形式說明模塊的執(zhí)行流程。boolCStudent::registerForStudent():此函數(shù)用于實現(xiàn)考生登錄。算法如下:考生點擊登錄,是,則2,否則顯示登錄頁面;帳號、密碼任意一個為空或錯誤,打印準確的錯誤提示給考生,否則3);帳號存在,已激活否,是則4),否則,出錯;登錄成功。boolCStudent::registerForStudent():此函數(shù)用于實現(xiàn)考生注冊。算法如下:1)考生點擊注冊,是,則2,否則顯示注冊頁面;2)考生填寫的任意一個基本項為空或錯誤,打印準確的錯誤提示給考生,否則3);3)點擊注冊,系統(tǒng)生成新的考生號給考生。并要求考生確認激活帳號。constCStudent::CGrades*CStudent::queryExamGrades(intexamID):此函數(shù)用于實現(xiàn)考生查詢成績。算法如下:1)考生點擊查詢成績鏈接;2)輸入要查詢的考試場次examID,及人數(shù);3)輸入無效,則出錯,否則4;4)系統(tǒng)根據(jù)examID查詢考試進度,最終返回給考生。voidCStudent::answerExamPaper():此函數(shù)用于實現(xiàn)考生在線答題。算法如下:1)考生點擊開始答題鏈接;2)輸入要進行的考試場次examID;3)輸入無效,則出錯,否則4;4)系統(tǒng)根據(jù)examID查詢考試進度,若進度為正在考試或?qū)⒁荚嚕瑒t進入考試,否則出錯。boolCAdministrator::manageExamPaper(intexamID,intop):此函數(shù)用于實現(xiàn)管理員管理試卷。算法如下:1)管理員點擊管理試題鏈接,進入管理界面2)輸入要操作的考試場次examID及操作類型;3)輸入無效,則出錯,否則4;4)系統(tǒng)根據(jù)examID查詢數(shù)據(jù)庫表,并更新到所有關(guān)聯(lián)的表。boolCAdministrator::publicExamPaper(intexamID):此函數(shù)用于實現(xiàn)管理員發(fā)布試卷。算法如下:1)管理員點擊發(fā)布試題鏈接,進入發(fā)題界面(一般根據(jù)約定,將在考試前十分鐘發(fā)卷);2)輸入要發(fā)布的考試場次examID;3)輸入無效,則出錯,否則4;4)系統(tǒng)根據(jù)examID查詢數(shù)據(jù)庫表,并更新到所有關(guān)聯(lián)的表。boolCAdministrator::correctExamPaper(intexamID):此函數(shù)用于實現(xiàn)管理員批改試卷。算法如下:管理員點擊閱卷試鏈接;輸入要閱卷的考試場次examID;3)輸入無效,則出錯,否則4;4)系統(tǒng)根據(jù)examID查詢數(shù)據(jù)庫表,遍歷數(shù)據(jù)庫中的所有當前考試的考生、試題、成績,程序進行計算成績并更新到所有關(guān)聯(lián)的表。boolCAdministrator::publicExamGrades(intexamID):參見發(fā)布試卷的算法。(二)界面展示根據(jù)系統(tǒng)的概要設(shè)計,學生模塊包括注冊,登錄,答題,查詢成績。管理員模塊全程在類似于控制臺命令行的方式操作。下面依次展示了編碼實現(xiàn)后的各模塊的界面。圖6-1考生索引界面圖6-2學生登錄界面圖6-3學生登錄界面圖6-4學生答題界面圖6-5學生查詢成績界面圖6-6個人博客界面圖6-7網(wǎng)站主界面(三)單元測試單元測試關(guān)心的是模塊能否正常的工作,將模塊看成是黑盒子,不關(guān)心其內(nèi)部具體實現(xiàn)。假設(shè)系統(tǒng)有個1024539,密碼是11的學生,且有場過期的考試examID為1102009,測試用例如表6-1。表6-1 單元測試用例表模塊測試用例預期輸出登錄examNo=1024539,passwd=11ok注冊examNo=1024539,passwd=11error答題examID=1102009error查詢成績examID=1102009error管理試題examID=1102009,op=delok[發(fā)布試題|發(fā)布成績|閱卷]examID=1102009error七、系統(tǒng)測試在軟件開發(fā)過程中,測試一直是個很重要的主題之一。甚至可以和需求分析階段的重要程度并駕齊驅(qū)。軟件測試是為了找出并糾正軟件中的潛在缺陷,是軟件質(zhì)量保證中的重要一環(huán)。隨著軟件測試技術(shù)的興起和發(fā)展,軟件測試分為黑盒測試、白盒測試、功能測試、性能測試、容錯測試、集成測試、系統(tǒng)測試等。本章節(jié)的主要內(nèi)容是結(jié)合模塊實例圍繞黑盒測試和白盒測試展開。黑盒測試關(guān)心接口或模塊的功能是否正確地實現(xiàn),而這些測試已經(jīng)在上一章的單元測試得以體現(xiàn),這里就不再贅述。假設(shè)系統(tǒng)有個1024539,密碼是11的學生,且有場過期的考試examID為1102009,有場正在進行的考試examID=1024668,有場已經(jīng)閱完卷的考試examID=1668998。系統(tǒng)測試階段的所有測試用例參見表7-1。表7-1 系統(tǒng)測試用例表測試對象測試用例測試類別覆蓋類別預期輸出CStudent::registerForStudent()uName=”LiMing”passWord=”123”rePassWord=”123”emailAddr=“myEmail@126.com”tel=nfisifsiiAgree=true白盒測試判定覆蓋電話號碼不是11位手機號格式。CStudent::loginForStudent()examNo=1024539passwd=“qq”白盒測試判定覆蓋密碼不正確。CStudent::queryExamGrades(intexamID)examID=1102009白盒測試判定覆蓋該考試已下架。CStudent::answerExamPaper()isAlived=truecurrentStatus=LOGINEDisNextItemClicked=true白盒測試判定覆蓋輸出下一題。CAdministrator::manageExamPaper(intexamID,intop)examID=1102009op=DELETE白盒測試語句覆蓋刪除試題成功。CAdministrator::publicExamPaper(intexamID)examID=1102009白盒測試判定覆蓋發(fā)布試題失敗,該考試已下架。CAdministrator::correctExamPaper(intexamID)測試用例1{examID=1002894}測試用例2{examID=1024668}白盒測試條件組合覆蓋用例1測試無效的考試examID(必須是7位數(shù)字);用例2。用例2測試正在進行的考試examID(必須是7位數(shù)字),閱卷失敗。CAdministrator::publicExamGrades(intexamID)examID=1668998白盒測試判定覆蓋發(fā)布試題成功。八、系統(tǒng)維護(一)項目部署與網(wǎng)站發(fā)布系統(tǒng)開發(fā)完成后,后端服務(wù)器源碼在Linux平臺編譯、運行,通過nginx反向代理允許考生在線登錄、使用。有關(guān)nginx的安裝在網(wǎng)絡(luò)鏈接如此發(fā)達的今天,可以便捷地因特網(wǎng)上搜索到在Linux上的安裝配置與使用,這里不再贅述。將網(wǎng)站發(fā)布出去,只需要將nginx的服務(wù)器目錄下的location段(因特網(wǎng)用戶訪問網(wǎng)站服務(wù)器的根目錄)設(shè)置為后端服務(wù)器所在目錄即可。(二)性能調(diào)優(yōu)和運維后期系統(tǒng)的維護主要任務(wù)就是維護nginx性能和效率。這些內(nèi)容在nginx使用手冊上隨處可見。在一個正規(guī)的OTO公司中必然設(shè)有系統(tǒng)運維方面的職位,這方面的工作也就落在這部分專業(yè)人士的身上。比如,一般nginx可以在連續(xù)7天工作(甚至更長)不宕機,但是,如果nginx配置文件修改需要重啟nginx,而重啟可能會使得當前的用戶請求中斷,nginx在慢啟動、平滑升級等功能支持很好。這使得可以既保證考生的實時請求不會受到影響,還能實現(xiàn)nginx的重啟工作。一個好的運維工程師一定對于這些知識胸有成竹、了然于心。在系統(tǒng)維護上,企業(yè)和web應(yīng)用開發(fā)團隊應(yīng)該高度引起重視,因為,軟件維護是也是軟件生命周期中的一部分,而且也不容忽視,當客戶的需求變更或升級都會在原版本系統(tǒng)上做出更改。結(jié)論本系統(tǒng)的開發(fā)落下帷幕。關(guān)于前文提到的所有功能也完全實現(xiàn)??梢钥吹剑瑢W生相關(guān)的操作,注冊、登錄、答題、查詢成績以及管理員管理試題、發(fā)布試題、批閱試卷、發(fā)布成績都可以運行良好。最重要的是,本系統(tǒng)在Linux下模擬了上萬的客戶連接并提供超長時間的服務(wù)。系統(tǒng)也達到了預期的設(shè)想。即高并發(fā)條件下保持著出色的性能和效率,且健壯而穩(wěn)定,對于用戶的操作都能快速的響應(yīng)。

溫馨提示

  • 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

提交評論