計算機本科畢業論文-在線答題系統的設計與實現_第1頁
計算機本科畢業論文-在線答題系統的設計與實現_第2頁
計算機本科畢業論文-在線答題系統的設計與實現_第3頁
計算機本科畢業論文-在線答題系統的設計與實現_第4頁
計算機本科畢業論文-在線答題系統的設計與實現_第5頁
已閱讀5頁,還剩22頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

摘要如今,計算機網絡技術日益成熟和校園網絡的普及,為網絡答題考試系統提供了良好的基礎。利用計算機以及網絡技術實現答題考試的信息化,具有傳統考試不可比的優點。因此開發適應信息時代的網絡答題考試系統是有必要的。首先本文對整個系統的設計需求和思路進行了分析,并對各個部分進行分析,形成一個科學的設計方案。在設計的過程中,采用了PyCharm作為系統開發工具,Django作為開發框架,以MySQL作為數據庫管理系統,然后對系統進行詳細的數據庫設計。然后,對系統的各個模塊組成進行一一實現。在本設計的最后對系統的性能進行了測試,根據調試結果,提出了改進,以促進此系統在今后的工作中更好的運行。本系統實現了用戶注冊、登錄,授權機制,機構注冊,答題首頁設計,比賽詳情頁面,答題功能實現,提交答案,批量錄入題庫和管理員后臺管理頁面等功能。關鍵詞:在線答題系統;PyCharm;Django;MySQL;設計與實現

緒論研究背景在現代信息時代,計算機和互聯網在各個領域的應用都越來越成熟和全面。在這一環境下,每個人的需求似乎都可以通過網絡來實現,可以根據用戶的需求來靈活的定制學習,也可以對學習的成果進行快速和準確的評價。在現代教育模式下,教師迫切需要一個科學性高、信息集成能力強的考試系統來提高考試和評閱的效率。而教育機構也希望可以為學生提供一個更加靈活和全面的教育服務,對學生的學習和測試情況進行全面的跟進。本次設計的在線答題測試系統便是基于這樣的一個背景下來開發出來的。此系統集成了先進的互聯網應用技術和功能,通過這一新型考試系統,可以為學校提供更多的選擇,提高了工作的效率和考試標準化水平,也能夠讓學生、教師、教務管理者更好的來組織和參與測試過程。與傳統的測試方式進行比較,在線答題測試系統有著很多優勢。傳統的測試無論是在考試組織、場地安排、紙張印刷、閱卷點評等多個環節上都耗費大量時間,而且效率低、成本高,而且人工批閱考卷也會存在出錯的機會。隨著互聯網技術在教務管理中的應用,像在線答題測試系統這種考試系統就顯得更加有優勢,一方面提高了考試過程的效率,另一方面也大大節約了成本,有效彌補了傳統考試的不足。研究目的與意義本次研究所設計與開發的在線答題測試系統目的在于更好的保障考試的效率和可靠性,提升考務過程的效率,降低了其他方面的時間和成本,更好的順應現代教育信息化的發展要求,這也是未來教育行業的一個發展大趨勢。本次系統通過設計一個面向教學和考試的答題考試管理系統,容易管理,方便維護,兼容性高,可以滿足很多課程的測試和考核需要。通過本系統,能夠為教師開展隨堂測試和期末考試提供一個選擇機會,也更加方便學生去自主學習和測試,同時系統中有大量的題庫可以供學生練習和學習。為了提高系統的科學性、可移植性、可擴展性,在系統設計的過程中,采用的是基于B/S的三層體系結構。這就要求了后臺數據中里面要包含了試題樣庫,教師可以根據需要對試題實施編輯、添加和刪除等操作。教師可以加入新的考試科目,學生答題提交后可以立馬獲得答案,并且分析錯題的問題。這樣以來,可以方便學生及時的發現錯誤的原因,趁熱打鐵,提高學習效果,也可以快速的知道測試結果。此外,系統還可以為教師展示學生錯題較多的地方,方便教師更好的針對性開展教學。另外,本系統還要具有一個操作性能好、用戶界面友好的功能,最大限度的降低操作出錯的問題,且兼具保密性。總的來說,本次所開發的在線答題測試系統和傳統測試方式比有著如下幾個具體的優勢:第一,高效節約。傳統的測試過程從制定測試計劃到試卷的編寫、印刷,再到考試的組織機后續的閱卷、成績統計都需要耗費很多時間,而本次開發的系統是利用網絡技術開發的,答題全程無紙化,而且只需要在電腦面前答題,答題提交后可以立馬顯示成績,并且對分數進行自動合成,節約了很多成本。第二,準確公正。傳統測試是人工批閱,無論是在試卷批改、成績合成和成績匯總的時候,都是由人來完成的,大量的重復性工作很容易產生錯誤。而本次開發的系統采用的是標準化的試卷,利用數據庫的答案來進行自動批改,快速而且準確公正,降低了人的主觀因素導致分數的不客觀。第三,可有效杜絕答題考試的作弊現象。利用計算機答題系統可以打亂學生的試卷內容,即便題目一樣,但是順序和選項的順序也有差異,所以可以避免抄襲問題,提高了考試的公正和公平性。研究內容在本文中,以模擬一套網絡答題系統的業務流程等工作內容為基礎,通過PyCharm工具實現在線答題測試系統的開發。相關技術基礎B/S架構簡介B/S架構即瀏覽器和服務器架構模式。這一架構是隨著網絡技術興起而不斷發展及應用的,這一結構是在原來C/S架構基礎上進行改進和變化后的。便能夠通過瀏覽器進行系統界面操作,實現其想要的功能,在服務器上安裝相關的數據庫。MySQL數據庫簡介MySQL是一種開放源代碼的關系型數據庫管理系統,MySQL數據庫系統使用最常用的數據庫管理語言結構化查詢語言(SQL)進行數據庫管理。SQL簡介SQL(StructuredQueryLanguage,結構查詢語言)是一個功能強大的數據庫語言。由它決定對指定數據存取的最快速度的手段,查詢優化器知道存在什么索引,在哪兒使用索引合適,而用戶則從不需要知道表是否有索引、有什么類型的索引。PyCharm簡介PyCharm是一種PythonIDE,帶有一整套可以幫助用戶在使用python語言開發時提高其效率的工具,比如調試、語法高亮、Project管理、代碼跳轉、智能提示、自動完成、單元測試、版本控制。此外,該IDE提供了一些高級功能,以用于支持Django框架下的專業Web開發。系統結構設計業務需求分析本系統的用戶適用于所有的機構或學校和社會人員,根據登錄、注冊、注冊機構、出題、指定比賽類型、提交、評分等主要功能,具體功能如下:系統結構設計根據需求分析中總結的用戶需求,本系統結構如圖3-1所示。圖3-1系統功能模塊系統流程分析在進行系統流程分析的過程中,就是要對用戶在系統應用時候的工作過程進行分析。在系統打開運行之后,首先是進入到登錄窗體界面,對用戶的登錄信息進行驗證。這其中包含了2個過程:第一是通過系統輸入的賬號和密碼驗證其真實性。第二是確定用戶的類型(學生、教師或管理員)。第一個過程決定用戶是否有權限進行到系統。第二個過程是判斷用戶的類型,決定其以何種權限進行到系統下一步的操作中。假如要對普通用戶實施管理,那么就要進入網站后臺用管理員賬號登錄,否則便是網站登錄首頁的用戶登錄頁面。假如還有其他用戶使用系統,可以在用戶管理模塊進行用戶的添加和創建。在創建的時候,需要輸入賬號、密碼和驗證碼。管理員用戶還可以對普通用戶的賬號進行修改和刪除操作。在本系統中,應該首先驗證用戶的信息,驗證用戶信息有兩點,一個是用戶注冊,另一個是用戶登錄。對于注冊而言,用戶需要填寫注冊信息,然后系統對用戶填寫的注冊信息進行驗證,如果驗證通過,會提示用戶到郵箱進行最后的激活。對于用戶登錄,它的業務流程相對簡單一些,首先用戶填寫登錄信息,然后對用戶填寫的登錄信息進行驗證,驗證成功則登錄成功。登錄成功之后,機構可以上傳題庫,出題時需要錄入題庫,在錄入題庫的平臺會提供一個下載的模板文件,用戶可以根據模板文件輸入題庫,題庫里的題型目前只有兩種:選擇題和填空題,錄入完題庫就可以上傳至題庫,此外答題機構還可以配置比賽,比如配置題庫的類型和比賽的信息等,機構出完踢之后,在規定的時間內,普通用戶就可以答題了,用戶選擇要答的題庫開始答題,在答題時用戶可以選擇上一題或者下一題,答完題點擊交卷提交試卷,答題時有倒計時提醒,如果在規定時間內沒有完成答卷,則不錄入成績,如果答題完成,可以查看排行榜,還可以查看折線圖分析答題結果。本系統中,系統業務流程包括登錄首頁,進行用戶驗證、注冊,機構的驗證、注冊,進行出題、答題,提交,打分,折線圖分析等。系統業務的流程如圖3-2所示。圖3-2系統業務流程數據庫結構設計在線答題測試系統使用MySQL數據庫來存儲數據,數據庫名為exam,共包含12張數據表嗎,分別為:account_profile: 用戶信息表account_useinfo: 用戶填寫信息表business_appconfiginfo: 機構app配置表business_businessaccountinfo: 機構賬戶表business_businessappinfo: 機構app表business_userinfoimage: 表單圖片鏈接表business_userinforegex: 表單驗證正則表competition_bankinfo: 題庫信息表competition_choiceinfo: 選擇題表competition_competitionkindinfo: 比賽信息表competition_competitionqainfo: 答題記錄表competition_fillinblankinfo: 填空題表Account負責用戶信息的處理,包括注冊、登錄、驗證等功能。Analysis負責數據分析功能。Business負責管理機構信息。Competition負責比賽信息的處理。Config負責系統的配置信息,包括數據庫、redis等配置。Utils是一個工具集,封裝了一些系統所用的到工具。Web中存放的是項目的前端代碼文件。Api接口功能。Backup用戶存儲機構賬戶上傳題庫文件的。Tmp存儲log日志的目錄。在業務處理的模塊的每個模塊中都有一個models.py的文件,這個文件封裝了對應模塊的數據庫操作類,在通常情況下,類的成員變量與對應的表中的字段名相同。Profile類用來管理表account_profile的數據庫操作。UserInfo類用來管理表account_useinfo的數據庫操作。BusinessAccountInfo類用來管理表business_businessaccountinfo的數據庫操作。BusinessAppInfo類用來管理表business_businessappinfo的數據庫操作。AppConfigInfo類用來管理表business_appconfiginfo的數據庫操作。UserInfoImage類用來管理表business_userinfoimage的數據庫操作。UserInfoRegex類用來管理表business_userinforegex的數據庫操作。BankInfo類用來管理表competition_bankinfo的數據庫操作。ChoiceInfo類用來管理表competition_choiceinfo的數據庫操作。FillInBlankInfo類用來管理表competition_fillinblankinfo的數據庫操作。CompetitionQAInfo類用來管理表competition_competitionqainfo的數據庫操作。CompetitionKindInfo類用來管理表competition_competitionkindinfo的數據庫操作。1、用戶信息表account_profile,保存授權后的用戶信息,結構如表3-1所示。表3-1表account_profile的結構名類型長度不是nullidint11是statustinyint1是created_atdatetime6是updated_atdatetime6是uidvarchar22user_srcint11是user_statusint11是unionidvarchar32openidvarchar32wxidvarchar32namevarchar32emailvarchar40sexint11是ageint11是nicknamevarchar32avatarvarchar60phonevarchar11countryvarchar32procincevarchar32cityvarchar32locationvarchar60is_upgardeint11是upgarde_timedatetime6expire_timedatetime6upgarde_countint11是2、用戶填寫信息表account_useinfo,保存用戶參與比賽時填寫的信息,結構如表3-2所示。表3-2account_useinfo的結構名類型長度不是nullidint11是statustinyint1是created_atdatetime6是updated_atdatetime6是kind_atvarchar32uidvarchar32namevarchar24sexvarchar1ageint11phonevarchar11wxidvarchar24emailvarchar60pidvarchar18graduated_fromvarchar60addressvarchar603、機構app配置表business_appconfiginfo,保存機構app的配置信息。結構如表3-3所示。表3-3business_appconfiginfo的結構名類型長度不是nullidint11是statustinyint1是created_atdatetime6是updated_atdatetime6是app_idvarchar32是app_namevarchar40rule_textlongtext0is_show_userinfotinyint1是userinfo_fieldsvarchar128option_fieldsvarchar128userinfo_fields_namesvarchar1284、機構賬戶表business_businessaccountinfo,保存機構賬戶的信息。結構如表3-4所示。表3-4business_businessaccountinfo的結構名類型長度不是nullidint11是statustinyint1是created_atdatetime6是updated_atdatetime6是account_idvarchar22是emailvarchar40company_namevarchar60company_descriptionlongtext0company_usernamevarchar32company_phonevarchar16company_locationlongtext0company_typeint11是5、機構app表business_businessappinfo,保存機構應用的信息。結構如表3-5所示。表3-5 表business_businessappinfo的結構名類型長度不是nullidint11是statustinyint1是created_atdatetime6是updated_atdatetime6是account_idvarchar32是app_idvarchar22是app_namevarchar40app_descriptionlongtext05、表單圖片鏈接表business_userinfoimage,保存每個表單圖片字段的鏈接。結構如表3-6所示。表3-6 business_userinfoimage的結構名類型長度不是nullidint11是statustinyint1是created_atdatetime6是updated_atdatetime32是uii_namevarchar60namevarchar60sexvarchar60agevarchar60phonevarchar60wxidvarchar60emailvarchar60pidvarchar60graduated_fromvarchar60addressvarchar60resumevarchar606、表單驗證正則表business_userinforegex,保存每個表單字段的正則表達式信息。結構如表3-7所示。表3-7business_userinforegex的結構名類型長度不是nullidint11是statustinyint1是created_atdatetime6是updated_atdatetime6是field_namevarchar16regexvarchar40descriptionvarchar40是7、題庫信息表competition_bankinfo,保存題庫的信息。結構如表3-8所示。表3-8competition_bankinfo的結構名類型長度不是nullidint11是statustinyint1是created_atdatetime6是updated_atdatetime6是bank_idvarchar22choice_numint11是fillinblank_numint11是bank_typeint11是kind_numint11是bank_namevarchar40uidvarchar32account_idvarchar328、選擇題表competition_choiceinfo,保存選擇題的信息。結構如表3-9所示。表3-9competition_choiceinfo的結構名類型長度不是nullidint11是statustinyint1是created_atdatetime6是updated_atdatetime6是image_urlvarchar255audio_timevarchar255是bank_idint11ctypevarchar32是questionint11answervarchar255item1varchar255item2varchar255item3varchar255item4varchar255sourcevarchar2559、比賽信息表competition_competitionkindinfo,保存比賽的信息和比賽的配置信息。結構如表3-10所示。表3-10competition_competitionkindinfo的結構名類型長度不是nullidint11是statustinyint1是created_atdatetime6是updated_atdatetime6是kind_idvarchar22account_idvarchar32app_idvarchar32bank_idvarchar32kind_typeint11是kind_namevarchar32sponsor_namevarchar60total_sourceInt11是question_numint11是cop_startatdatetime6是perid_timeint11是cop_finishatdatetime6total_partin_numint11是10、答題記錄表competition_competitionqainfo,保存答題記錄的信息。結構如表3-11所示。表3-11competition_competitionqainfo的結構名類型長度不是nullidint11是statustinyint11是created_atdatetime6是updated_atdatetime6是kind_idvarchar32qa_idvarchar22uidvarchar32qsrecordlongtext0asrecordlongtext0aslogrecordlongtext0started_stampbigint20是finished_stampbigint20是expend_stampint11是startedtinyint1是finishedtinyint1是corrected_numint11是incorrected_numint11是total_numint11是scoredouble0是correct_listvarchar10000wrong_listvarchar1000011、填空題表competition_fillinblankinfo,保存填空題的信息。結構如表3-12所示。表3-12competition_fillinblankinfo的結構名類型長度不是nullidint11是statustinyint1是created_atdatetime6是updated_atdatetime6是image_urlvarchar255audio_urlvarchar255audio_timeint11是bank_idvarchar32questionaudio255answervarchar255sourcevarchar255系統詳細設計設計首頁面和主頁面首頁可以理解為是一個系統的歡迎頁面,它的功能很簡單,就是一個友好的頁面,這個頁面只是一張靜態圖片,點擊圖片任意位置跳轉進入主頁面。首頁面如圖:4-1所示。圖4-1首頁面主頁面如圖:4-2所示:圖4-2主頁面首頁面跳轉主頁面的代碼如下:<bodyclass="index-body"><imgid="index"src="{%static'img/index4.PNG'%}"/><script>{#$(document).ready(function(){#}{#$('.index').css('cursor','pointer');#}{#});#}$(document).click(function(){window.location.href='/index'})</script></body>設計登錄頁面當系統從首頁面跳轉到主頁面時,答題的時候需要先進行登錄操作,只有有權限的用戶才能進入答題系統。登錄成功后,將顯示在主頁面上,登錄頁面如圖4-3所示。圖4-3登錄頁面用戶在輸入郵箱、密碼和驗證碼的時候系統會檢測用戶輸入的是否匹配,如果不匹配會提示用戶輸入錯誤,如圖4-4所示。圖4-4用戶信息輸入錯誤匹配成功后,會在原登錄按鈕出顯示出用戶名稱,如圖4-5所示。圖4-5登錄成功后顯示用戶名核心代碼如下:defnormal_login(request):"""普通登錄視圖:paramrequest:請求對象:return:返回json數據:user_info:用戶信息;has_login:用戶是否已登錄"""email=request.POST.get('email','')password=request.POST.get('password','')sign=request.POST.get('sign','')模塊設計模塊包括了,出題、答題和平臺管理員等。出題管理出題模塊主要功能是為用戶提供一個出題的模板,用戶可以按照模板中的規則進行出題,出題完成之后,將模板再次上傳到系統中,就可以配置比賽或者答題,出題的流程如圖4-6所示。圖4-6出題的流程下載模板和上傳題庫的核心代碼如下:defindex(request):"""題庫和比賽導航頁:paramrequest:請求對象:return:渲染視圖和user_info用戶信息數據配置題庫頁面答題流程選擇剛剛我們創建答題,進入答題頁面,點擊開始挑戰,首先需要先填寫用戶信息,填寫完用戶信息,進入答題頁面。答題的過程中,我們的題目是從題庫隨機抽取的,比如說我們題庫中題的數量是10000道,而我們選擇出題的時候,題目數量為10,就是從10000道題里面隨機抽取10道題。打完題后點擊提交,提交之后會統計出分數與排名,可以查看排名。答題的流程如圖4-7所示。圖4-7答題的流程答題功能核心代碼如下:###檢測用戶是否登錄###defcheck_login(func=None):ifnotuid:ifrequest.path.startswith('/bs'):returnrender(request,'err.html',ProfileNotFound)elifrequest.path.startswith('/api'):returnjson_response(*ProfileError.ProfileNotFound)returnfunc(request,*args,**kwargs)平臺管理員平臺管理員擁有最高的權限,管理員可以在后臺添加機構、比賽信息、應用等等。在后臺我們可以查看站點管理的信息,如用戶信息、用戶登記信息、出題賬戶、應用信息等。平臺管理員的功能如圖4-8所示。圖4-8平臺管理員管理員還可以為機構設置比賽類別的信息,進入比賽類別信息,添加一個比賽類別信息,我需要填寫三個id,分別是出題賬戶id、應用id和題庫id,然后根據需求完成信息的填寫,這里可以設置總分數、題目的個數、比賽的時間等功能。這樣可以使系統靈活應用,既可以讓答題機構自己配置比賽,管理員也可以為機構配置比賽。系統測試在本系統當中,由于大部分都是與表單交互的數據處理,所以我們主要采用了黑盒測試為主的測試方法,將系統中所有的流程都按照正常的途徑測試一次。測試點如下:1、頁面是否跳轉異常2、數據庫信息是否按預想結果發生變化3、系統運行是否正確4、數據顯示是否正確在正常操作的基礎上,我們引入了異常處

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論