基于HTTP通信協(xié)議課程提醒系統(tǒng)的方案設計_第1頁
基于HTTP通信協(xié)議課程提醒系統(tǒng)的方案設計_第2頁
基于HTTP通信協(xié)議課程提醒系統(tǒng)的方案設計_第3頁
基于HTTP通信協(xié)議課程提醒系統(tǒng)的方案設計_第4頁
基于HTTP通信協(xié)議課程提醒系統(tǒng)的方案設計_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGE4PAGE5基于HTTP通信協(xié)議課程提醒系統(tǒng)的方案設計摘要:“基于HTTP通信協(xié)議課程提醒系統(tǒng)的方案設計”設計的是一個管理課程安排的系統(tǒng),系統(tǒng)數(shù)據(jù)包括課程表和通知信息,通過廣泛使用的HTTP通信協(xié)議、客戶端和服務端技術,對在校大學生所有與課程相關的信息進行收集,解決了課程信息的查詢、提醒和更新相關問題。該系統(tǒng)針對不同的使用者身份定義了多種使用權限,實現(xiàn)使用權限的分級管理,是一個帶有云端服務器和手機客戶端的管理系統(tǒng),可以滿足用戶對課程的添加、提醒、更新、刪除的需求,以方便在校大學生更清晰的了解學校課程安排、事務分配和通知下達等。關鍵詞:課程表;HTTP通信協(xié)議;通信;

目錄30360第一章緒論 1308711.1設計背景 174441.2設計目的 2262691.3開發(fā)環(huán)境 24371.3.1硬件開發(fā)環(huán)境 2131261.3.2軟件開發(fā)環(huán)境 261941.4技術介紹 2138241.4.1HTTP 227071.4.2Java 320061.4.3SpringBoot 3205571.4.4Android 325238第二章系統(tǒng)分析 490552.1可行性分析 425702.2功能分析 4274302.2.1整體功能分析 461232.2.2服務端功能分析 5130582.2.3客戶端APP功能分析 52169第三章系統(tǒng)設計 7130663.1設計原則 753513.2數(shù)據(jù)庫設計 7254283.2.1概念模型 745923.2.2E-R圖(關系模型) 857983.2.3表 10318273.3模塊設計 13162683.3.1基于HTTP通信協(xié)議課程提醒系統(tǒng) 13271543.3.2課程提醒APP 13233253.3.3云端服務 1437373.4流程設計 1558843.4.1客戶端使用流程 15126093.4.2云端服務使用流程 1613400第四章關鍵問題解決與系統(tǒng)實現(xiàn) 17124914.1要解決的關鍵問題 17307154.1.1賬戶管理問題 17173464.1.2數(shù)據(jù)處理問題 17142384.1.3數(shù)據(jù)同步問題 18258314.2客戶端實現(xiàn) 18223064.2.1客戶端APP頁面(activity+fragment) 1851474.2.2客戶端登錄 19236524.2.3客戶端數(shù)據(jù)庫 2259784.2.4客戶端其它數(shù)據(jù)處理 23140114.3服務端實現(xiàn) 2412164.3.1Entity 25326144.3.2JpaRepository 26260504.3.3Service 26252064.3.4Controller 2712634.3.5Enum 2871584.3.6服務器的配置 28171444.3.7數(shù)據(jù)庫創(chuàng)建與同步 294958第五章客戶端與服務端的信息交互(HTTP協(xié)議) 32299135.1HTTP協(xié)議描述 32121805.2傳輸報文架構 3372465.3Post和Get請求的使用 3341085.3.1Get請求 3353785.3.2Post請求 3531680第六章系統(tǒng)測試 38256216.1客戶端APP測試 3874506.1.1注冊測試 3812586.1.2登錄后數(shù)據(jù)獲取測試 3866686.1.3數(shù)據(jù)提交測試 4195716.2服務端測試 43209556.2.1通過IDEA進行的test 4353576.2.2調用接口的測試 4457496.2.3jar包的導出 4512996.3測試結論 459545第七章總結 46285207.1項目成果概述 4610117.2主要困難及難點 46215167.2.1頁面的轉跳與銷毀 46182397.2.2本周課程展示 46238377.2.3系統(tǒng)的構建 46162077.3不足與改進 4658317.3.1系統(tǒng)不足 4666337.3.2改進思想 47104577.4收獲心得體會 4721557第八章結語 499739參考文獻 50計PAGE52PAGE51第一章緒論1.1設計背景目前絕大多數(shù)的Web開發(fā),都是構建在HTTP協(xié)議之上的Web應用[1]。課程提醒系統(tǒng)也是這樣的設定。在當今的社會,大學生是一個龐大的群體,大學招生人數(shù)也在逐年增長,在校大學生數(shù)量也隨著增長,因此,大學生的個人課程表就成了每個大學生必不可少的工具,課程表也越來越不滿足于老式的紙質文檔形式,需要更多的創(chuàng)新。有人認為,時間表問題是最困難的作業(yè)調度問題之一。大學課程表問題以其規(guī)模大、涉及因素多、結構復雜著稱,故由集成系統(tǒng)較為困難。[2]應用市場已經(jīng)出現(xiàn)了一些優(yōu)秀的課表系統(tǒng),如“超級課程表”等?!俺壵n程表”是廣州超級周末科技有限公司旗下一款針對大學生的校園應用。它功能強大且復雜,但是不可避免的,“超級課程表”與類似APP都忽略了教師群體,且針對教師所設計的超級課程表顯得過于簡單,無法滿足需要[3]。“超級課程表”的其中一個弊端就是所含的信息非常駁雜,更傾向“大學社交”、“信息交流”之類,對學生干擾嚴重,大有發(fā)展成娛樂系統(tǒng)的趨勢。學校老師和領導也幾乎不會采用。這些信息化的課表使教學和學生幾乎脫節(jié),無法滿足學生真正的需求。大學的上課方式與高中最大的不同是沒有固定的教室,學生需要在不同的地方上課。這種靈活的上課安排,一旦變動,如老師病假或其它原因需要補課調課的話,事情就變得很復雜。除了上課的安排,作業(yè)的上交通知、輔導員的信息收集通知,班會的召開通知等也是需要靈活安排的事務。課程調動或者其它通知都需要傳達給我們這些學生,通常我們是在微信群或者QQ群里面發(fā)送消息進行通知。在我看來群消息過分駁雜,幾乎是任何人都有在群里發(fā)言的權力。通知過早會被其它消息“刷”上去,通知過晚則學生來不及準備也可能沒有來得及發(fā)現(xiàn)消息。也經(jīng)常會有同學錯過一些通知,上課跑錯教室,作業(yè)忘記攜帶也是常有的事情。這些疏忽可能是部分學生個人原因,但是我認為消息傳達的方式也是造成這種現(xiàn)象的重要原因。為了避免駁雜的消息干擾的學生對有用信息的獲取,“基于HTTP通信協(xié)議課程提醒系統(tǒng)的方案設計”設想就出現(xiàn)了。需要用到的技術包括HTTP協(xié)議、Web服務器和Android技術。

1.2設計目的基于HTTP通信協(xié)議的課程提醒系統(tǒng)是一個管理課程安排的系統(tǒng),系統(tǒng)數(shù)據(jù)包括課程表和課程通知,旨在將在校大學生所有與課程相關的信息收集起來,避免大學生因為事情過多而無法準確接收到有用信息的情況。該系統(tǒng)的用戶包括學校管理者(輔導員或院長等)、學校教授者(教授、講師等老師)、班級管理者(學習委員)、普通學生。所有用戶身份的權限各不相同。1.3開發(fā)環(huán)境1.3.1硬件開發(fā)環(huán)境處理器:Intel(R)Corei5-6200UCPU@2.3GHz(4CPUs),-2.4GHz內存:4096MBRAM1.3.2軟件開發(fā)環(huán)境操作系統(tǒng):Windows10專業(yè)版軟硬件開發(fā)工具:AndroidStudio、KeiluVision5、IntelliJIDEA2019.2x64數(shù)據(jù)庫工具:MySQLWorkbench6.3CE、NavicatPremium開發(fā)語言:Java、C++調試查看工作:Postman、GoogleChrome瀏覽器、InternetExplorer瀏覽器項目管理工具:MindMaster、GitHab1.4技術介紹1.4.1HTTPHTTP是目前在Internet上應用最廣泛的通信協(xié)議之一。HTTP通信協(xié)議允許用戶提出HTTP“請求”,然后由服務器視實際處理結果傳回HTIP“回應”。基本運行方式為:當用戶向Web服務器送出請求時,Web服務器將會開啟一個新連接。通過這個連接,用戶可以將HTIP請求傳送給Web服務器。當Web服務器收到HTTP請求時,將進行解析與處理,并將處理結果包裝成HTTP回應。最后,Web服務器會將HTTP回應傳送至用戶。只要用戶接收到HTTP回應,Web服務器就會關閉這個連接,用戶的執(zhí)行狀態(tài)不會被保存。[4]

1.4.2JavaJava是一門面向對象編程語言,具有功能強大和簡單易用兩個特征。Java語言作為靜態(tài)面向對象編程語言的代表,極好地實現(xiàn)了面向對象理論。Java具有簡單性、面向對象、分布式、健壯性、安全性、平臺獨立與可移植性、多線程、動態(tài)性等特點。Java可以編寫桌面應用程序、Web應用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應用程序等。[5]1.4.3SpringBootSpringBoot是由Pivotal團隊提供的全新框架,它基于Spring4.0設計,不僅繼承了Spring框架原有的優(yōu)秀特性,而且還通過簡化配置來進一步簡化了Spring應用的整個搭建和開發(fā)過程。另外SpringBoot通過集成大量的框架使得依賴包的版本沖突,以及引用的不穩(wěn)定性等問題得到了很好的解決。[6]1.4.4AndroidAndroid是一種基于Linux的自由及開放源代碼的操作系統(tǒng),Android分為四個層,從高層到低層分別是應用程序層、應用程序框架層、系統(tǒng)運行庫層和Linux內核層。谷歌公司推出了開源的Android系統(tǒng),現(xiàn)在應用非常廣泛,開發(fā)環(huán)境不會受到各種條條框框的限制,開發(fā)者任意修改開放的源代碼來實現(xiàn)與開發(fā)各種實用的手機App軟件,具有高級圖形顯示、界面友好等特點。[7]

第二章系統(tǒng)分析2.1可行性分析通過HTTP通信協(xié)議完成客戶端和服務端的數(shù)據(jù)傳輸,實現(xiàn)用戶對數(shù)據(jù)的添加、查詢、更改、刪除操作。采用HTTP通信協(xié)議進行客戶端與云端數(shù)據(jù)交互。采用騰訊云服務器進行云端服務器的搭建。使用java語言+AndroidStudio進行手機APP的開發(fā)。使用java語言+IntelliJIDEA+SpringBoot框架進行云端服務器搭建。使用SQLite作為APP內部數(shù)據(jù)存儲的數(shù)據(jù)庫。使用MySQL作為云端服務局的數(shù)據(jù)庫。以上所述均為已經(jīng)成熟的技術,整體上運行穩(wěn)定,故障率低,只有部分系統(tǒng)優(yōu)化時,需要采用一些算法。因為課程表和事件通知不存在保密需求,所以不必采用加密算法。除此之外,安卓開發(fā)的部分功能實現(xiàn)需要進行學習,學習量在可承受范圍內。2.2功能分析2.2.1整體功能分析賬戶管理功能初定計劃為單個大學設計,可運行在學校私有服務器上,提供給該校學生賬戶。如果需要擴展為運行在某個服務器且為多個高校學生賬戶提供服務,有數(shù)據(jù)沖突概率,但基本可行。賬戶身份包括:待定、管理員、教師、學委、學生。由管理員賬戶更改普通用戶賬戶的身份分類同時系統(tǒng)將賦予被分類用戶各種操作權限。用戶上傳功能可上傳與用戶本人賬戶相關的信息??缮蟼鲗ζ渌芾砣藛T的通知信息。可上傳對其所管理人員賬戶的更改信息。管理者可上傳其所在學校的學校信息。管理者可上傳與課程相關的一切信息。教師和學委可上傳對“課時表”的更改信息,即可以多次更改單節(jié)課程安排。用戶查詢功能用戶可查詢所有自己有上傳權限的信息。學生和學委可以查詢自己所在班級的開課信息。所有用戶都可以查看自己所在學校的學校信息。系統(tǒng)顯示功能不提供網(wǎng)頁端操作的用戶系統(tǒng)顯示,僅提供服務器的開發(fā)者操作系統(tǒng)。提供手機安卓客戶端系統(tǒng)操作顯示,且根據(jù)用戶權限不同所顯示的內容略有不同。2.2.2服務端功能分析作為云端服務,服務端提供了課程提醒的各種訪問請求接口,包括:用戶注冊信息的增刪查改接口用戶身份信息的增刪改查接口課程表的增刪改查接口選修表的增刪改查接口課時表的增刪改查接口通知表的增刪改查接口學校信息表的增刪改查接口除此之外,服務端有MySQL數(shù)據(jù)庫的存在,可以直接對數(shù)據(jù)庫進行修改,大大減輕了移動端的功能需求壓力。2.2.3客戶端APP功能分析用戶可進行賬號注冊,注冊賬號默認身份信息為“待定”,等待管理員更改身份信息。用戶可登錄自身賬號,并對部分賬號信息做出修改。用戶可獲取用戶表信息,即自身的基本信息。移動端根據(jù)登錄賬號的用戶身份判斷并獲取對應身份的身份信息。如:課時安排、通知信息、查詢權限等。用戶獲取課時安排信息,身份不同,課時安排不同。用戶獲取通知信息,身份不同,通知信息不同。用戶如果為“教師”身份,可查詢全校學生基本信息。用戶如果為“學委”身份,可查詢同班級學生基本信息。所有身份非“待定”用戶,均可查詢學校信息,即OtherInfo表信息。“學生”或“學委”身份,可以查看自己班級選修情況。“教師”身份可以查看自己教授課程的選修情況。移動端需負責計算當前周是第幾周,并查詢顯示當前周課程安排。

第三章系統(tǒng)設計3.1設計原則本系統(tǒng)遵循以下基本設計原則:實用性:盡量選擇成熟實用的技術,使得整個系統(tǒng)有一個安全、穩(wěn)定的運行環(huán)境。安全性:為了保障系統(tǒng)平穩(wěn)正常的運行,以及數(shù)據(jù)的完整性,整個系統(tǒng)必須有很好的安全性,必須加強數(shù)據(jù)庫的安全保密設計。開放性:該系統(tǒng)在建設上必須加強標準化及采用統(tǒng)一的技術規(guī)范,以實現(xiàn)網(wǎng)絡互聯(lián),資源共享,高效運行和科學管理。[8]3.2數(shù)據(jù)庫設計本次設計共采用兩個數(shù)據(jù)庫類型,一個是安卓自帶數(shù)據(jù)庫(SQLite),一個是服務端數(shù)據(jù)庫(MySOL)。兩個數(shù)據(jù)庫的表完全一致,但是建表方式存在很大區(qū)別。3.2.1概念模型用戶:(用戶賬號、姓名、性別、身份證號、用戶昵稱、用戶密碼、電話號碼、學校代碼、身份)管理者:(管理者編號、用戶賬號、學院名稱、是否admin添加、姓名)教師:(教師編號、用戶賬號、姓名、教師介紹)學生:(學號、姓名、班級編號、管理者編號、用戶賬號)學委:(學號、姓名、班級編號、用戶賬號)課程:(課程編號、課程名、課程介紹)選修:(選修編號、課程編號、課程名、教師編號、教師姓名、班級編號、上課安排)課時:(課時編號、課程編號、教師編號、班級編號、上課地點、周星期節(jié)、課程名、教師姓名)通知:(通知編號、創(chuàng)建人、通知分類、通知內容、發(fā)布時間、失效時間、班級編號、姓名)其它:(學校代碼、學校名稱、第一周日期、作息時間、第一節(jié)、第二節(jié)、第三節(jié)、第四節(jié)、第五節(jié)、第六節(jié)、第七節(jié)、第八節(jié)、第九節(jié)、第十節(jié)、第十一節(jié)、第十二節(jié)、第十三節(jié)、第十四節(jié))班級:(班級編號、班級名、學校代碼、學委學號)

3.2.2E-R圖(關系模型)基于HTTP通信協(xié)議課程提醒系統(tǒng)的數(shù)據(jù)庫E-R圖如圖3-1所示。圖3-1數(shù)據(jù)庫關系模型

基于HTTP通信協(xié)議課程提醒系統(tǒng)的數(shù)據(jù)庫詳細關系模型如圖3-2所示。圖3-2數(shù)據(jù)庫詳細關系模型

3.2.3表數(shù)據(jù)庫表共11個,其中服務端MySQL數(shù)據(jù)表有11個,移動端數(shù)據(jù)表共3個,如表3-1至表3-11所示。表3-1用戶表UserInfo(僅存在于服務端)序號屬性名字段名數(shù)據(jù)類型字段長度字段說明1用戶賬號user-idchar16主鍵,由系統(tǒng)生成,每個用戶唯一(2-17位)2姓名user-namechar16用戶身份證上的名字3性別user-sexchar4用戶的性別(限定)4身份證號id-numberchar32身份證號5用戶昵稱user-nicknamevchar32用戶的昵稱6用戶密碼user-passwordvchar32密碼,長度6-20位7電話號碼user-telephonechar16用戶的聯(lián)系電話8學校代碼school-idvchar16用戶所在學校的編碼9身份user-capacityvchar8用戶身份包括(教師、學生、學委、管理者、待定)表3-2管理者表InstructorInfo(僅存在于服務端)序號屬性名字段名數(shù)據(jù)類型字段長度字段說明1管理者編號instructor-idvchar32主鍵,由管理者設置(學校代碼+管理者編號)2用戶賬號user-idchar16外鍵,用戶表的主鍵3學院名稱institute-namevchar32管理者隸屬學院的名稱(可以為空)4是否admin添加is-adminbit1記錄是否為權限管理員賬戶5姓名user-namechar16管理者的姓名表3-3教師表TeacherInfo(僅存在于服務端)序號屬性名字段名數(shù)據(jù)類型字段長度字段說明1教師編號teacher-idvchar32主鍵,由管理者設置(學校代碼+教師編號)2用戶賬號user-idchar16外鍵,用戶表的主鍵3姓名user-namechar16教師姓名4教師介紹teacher-introductiontext介紹類似職稱和成就等相關信息表3-4學生表StudentInfo(僅存在于服務端)序號屬性名字段名數(shù)據(jù)類型字段長度字段說明1學號student-idvchar32主鍵,由管理者設置規(guī)則(學校代碼+學號)2姓名user-namechar16學生姓名3班級編號class-idvchar32外鍵,班級表的主鍵4管理者編號instructor-idvchar32外鍵,管理者表的主鍵5用戶賬號user-idchar16外鍵,用戶表的主鍵表3-5學委表StudyInfo(僅存在于服務端)序號屬性名字段名數(shù)據(jù)類型字段長度字段說明1學號student-idvchar32主鍵,由管理者設置規(guī)則(學校代碼+學號)2姓名user-namechar16學生姓名3班級編號class-idvchar32外鍵,班級表的主鍵4用戶賬號user-idchar16外鍵,用戶表的主鍵表3-6課程表CurriculumInfo(僅存在于服務端)序號屬性名字段名數(shù)據(jù)類型字段長度字段說明1課程編號curriculum-idvchar32主鍵,由管理者設置(學校代碼+課程編號)2課程名curriculum-namevchar64課程的命名3課程介紹curriculum-introductiontext簡要介紹課程內容表3-7選修表ElectiveInfo(不僅存在于服務端,也存在于移動端)序號屬性名字段名數(shù)據(jù)類型字段長度字段說明1選修編號elective-idvchar32主鍵,由管理員設置,課程對應到上課班級(學校代碼+選修編號)2課程編號curriculum-idvchar32外鍵,課程表的主鍵3課程名curriculum-namevchar64課程的命名4教師編號teacher-idvchar32外鍵,教師表的主鍵5教師姓名teacher-namechar16教師姓名6班級編號class-idvchar32外鍵,班級表的主鍵7上課安排course-arrangementtext用文字存儲上課的時間地點教師等信息表3-8課時表HoursInfo(不僅存在于服務端,也存在于移動端)序號屬性名字段名數(shù)據(jù)類型字段長度字段說明1課時編號hour-idvchar32主鍵,由管理員設置,每節(jié)課都有對應的課時編號(學校代碼+課時編號)2課程編號curriculum-idvchar32外鍵,課程表的主鍵3教師編號teacher-idvchar32外鍵,教師表的主鍵4班級編號class-idvchar32外鍵,班級表的主鍵5上課地點curriculum-placevchar32上課的地點,如教室或者集合地點6周星期節(jié)hour-timevchar8當前課程是第幾周星期幾第幾節(jié)(格式:xx-x-xx)7課程名curriculum-namevchar64課程的命名8教師姓名teacher-namechar16教師姓名

表3-9通知表NotificationInfo(不僅存在于服務端,也存在于移動端)序號屬性名字段名數(shù)據(jù)類型字段長度字段說明1通知編號notification-idint32主鍵,自動增長2創(chuàng)建人created-byvchar32創(chuàng)建通知的人(用戶賬號)3通知分類notification-classifychar8通知分類(作業(yè)、考試、活動、收集、提示、檢查、課程)4通知內容notification-contenttext詳細描述通知的目標事件5發(fā)布時間release-timevchar32通知生成的時間6失效時間dead-timevchar32通知被自動刪除的時間(默認刪除時間)7班級編號class-idvchar32外鍵,班級表的主鍵8姓名user-namechar16用戶身份證上的名字表3-10其它信息表OtherInfo(僅存在于服務端)序號屬性名字段名數(shù)據(jù)類型字段長度字段說明1學校代碼school-idvchar16主鍵,由管理員設置2學校名稱school-namevchar32學校名稱3第一周日期first-weekvchar16學校開課的日期,實際系統(tǒng)會進行計算4作息時間regular-timevchar8課程持續(xù)時長,單位為分鐘5第一節(jié)lesson-onevchar32第一節(jié)課的開始時間6第二節(jié)lesson-twovchar33第二節(jié)課的開始時間7第三節(jié)lesson-threevchar34第三節(jié)課的開始時間8第四節(jié)lesson-fourvchar35第四節(jié)課的開始時間9第五節(jié)lesson-fivevchar36第五節(jié)課的開始時間10第六節(jié)lesson-sixvchar37第六節(jié)課的開始時間11第七節(jié)lesson-sevenvchar38第七節(jié)課的開始時間12第八節(jié)lesson-eightvchar39第八節(jié)課的開始時間13第九節(jié)lesson-ninevchar40第九節(jié)課的開始時間14第十節(jié)lesson-tenvchar41第十節(jié)課的開始時間15第十一節(jié)lesson-elevenvchar42第十一節(jié)課的開始時間16第十二節(jié)lesson-twelvevchar43第十二節(jié)課的開始時間17第十三節(jié)lesson-thirteenvchar44第十三節(jié)課的開始時間18第十四節(jié)lesson-fourteenvchar45第十四節(jié)課的開始時間表3-11班級表ClassInfo(僅存在于服務端)序號屬性名字段名數(shù)據(jù)類型字段長度字段說明1班級編號class-idvchar32主鍵,由管理員設置(學校代碼+班級編號)2班級名class-namevchar32班級名(如xx級xxxxxx專業(yè)xx班3學校代碼school-idvchar16外鍵,其它信息表的主鍵4學委學號student-idvchar32學委表的主鍵

3.3模塊設計3.3.1基于HTTP通信協(xié)議課程提醒系統(tǒng)基于HTTP通信協(xié)議課程提醒系統(tǒng)分為兩大塊,這兩大模塊之間靠著HTTP通信協(xié)議聯(lián)系,如下圖3-3是課程提醒系統(tǒng)的設計展示。圖3-3基于HTTP通信協(xié)議課程提醒系統(tǒng)概要3.3.2課程提醒APP課程提醒APP含有引導頁面1個,登錄頁面2個,注冊頁面3個,主頁面3個,第二個主頁面含轉跳頁面2個,第三個主頁面含轉跳頁面9個,分別為用戶信息、身份信息、學校信息、身份操作、設置、關于以及三個待定。其中用戶信息頁面含轉跳頁面5個,身份操作含直接轉跳頁面6個,二級轉跳頁面4個。一共35個頁面。如下圖3-4是課程提醒手機APP的設計展示。圖3-4基于HTTP通信協(xié)議課程提醒系統(tǒng)安卓移動端概要

3.3.3云端服務云端服務建立在對數(shù)據(jù)的操作上,包括增刪改查、數(shù)據(jù)傳輸?shù)?。主要是提供與數(shù)據(jù)庫相關的各種接口,包括UserInfo表相關接口、InstructorInfo表相關接口、StudentInfo表相關接口、StudyInfo表相關接口、TeacherInfo表相關接口、CurriculumInfo表相關接口、ElectiveInfo表相關接口、HoursInfo表相關接口、NotificationInfo表相關接口、OtherInfo表相關接口、ClassInfo表相關接口。課程提醒系統(tǒng)后臺接口中,數(shù)據(jù)表字段和入?yún)⒌挠成潢P系如例:class_id>classId每個表的相關接口各不相同,但是接口地址的生成規(guī)則一致,以UserInfo表相關接口為例:|接口地址|接口參數(shù)|接口說明||/table/user/save|入?yún)閁serInfo表的所有字段|傳入賬號信息,返回保存結果||/table/user/findByUserId|userId|傳入用戶賬號,校驗后返回結果||/table/user/findByIdNumber|idNumber|傳入用戶身份證號,校驗后返回結果||/table/user/findBySchoolId|schoolId|傳入學校代碼,校驗后返回結果||/table/user/findByUserIdAndUserPassword|userId,password|傳入用戶賬號和密碼,校驗后返回結果||/table/user/findByIdNumberAndUserPassword|idNumber,password|傳入用戶身份證號和密碼,校驗后返回結果||/table/user/deleteByUserId|userId|根據(jù)傳入的賬號刪除賬號信息||/table/user/deleteByUserIdAndUserPassword|userId,password|根據(jù)傳入的賬號和密碼刪除賬號信息|云端服務概要如圖3-5所示。圖3-5基于HTTP通信協(xié)議課程提醒系統(tǒng)云端接口設計3.4流程設計3.4.1客戶端使用流程該APP不支持游客訪問,如果需要使用,首先需要注冊賬號,填寫部分個人信息和賬號設置信息。注冊賬號后身份默認為“待定”,需等待后臺審核確認注冊者身份,然后才會具有相應的操作權限。如果注冊身份為“學生”或“學委”,則可以在APP“通知”頁查看到下發(fā)給所在班級的通知信息,通知內容包括通知分類、具體事項、通知時間、通知人。如果注冊身份為“學生”或“學委”,可以在APP“課程”頁查看到所在班級的當日詳細課時安排信息、本周大致課時安排、本學期選修課程內容。如果注冊身份為“學委”,可以在APP“我的”進入到身份操作頁面,進行本班級學生信息查詢、針對所在班級的通知插入刪除、針對所在班級的課時更改。如果注冊身份為“教師”或“管理者”,則可以在APP“通知”頁查看到由該賬號下發(fā)給所有班級的通知信息,通知內容包括通知分類、具體事項、通知時間、通知人。如果注冊身份為“教師”或“管理者”,可以在APP“課程”頁查看到與自己相關的當日詳細課時安排信息、本周大致課時安排、本學期選修所需教授的課程內容。如果注冊身份為“教師”或“管理者”,可以在APP“我的”進入到身份操作頁面,進行所有學生基本信息查詢、所有學委基本信息查詢、針對所有班級的通知插入刪除、針對所有班級的課時更改。3.4.2云端服務使用流程服務端主要針對開發(fā)者,由APP調用對應的接口,從而實現(xiàn)相應的功能。沒有web網(wǎng)頁的存在。首先由APP發(fā)起get或post請求,傳入相關信息。服務端根據(jù)收到的請求,判斷應該執(zhí)行的操作,包括(每個表的增刪查改),如果是查取信息,服務端返回查取到的數(shù)據(jù),如果是其它操作,服務端返回massage消息,告知客戶端操作是否成功。除了APP通過HTTP通信協(xié)議訪問云端更改數(shù)據(jù)庫的使用方法外,也可以由服務端管理人員直接對數(shù)據(jù)庫進行增刪改查操作,保證更高效的為使用者提供便捷服務。

第四章關鍵問題解決與系統(tǒng)實現(xiàn)4.1要解決的關鍵問題4.1.1賬戶管理問題賬戶管理問題解決方案如下:采用賬戶分級管理,避免不必要的損失,賬戶權限由高到低為:管理員(admin)、管理員、教師、學委、學生、待定。除待定賬戶以外,所有賬戶均分有兩個數(shù)據(jù)表存儲賬戶信息。因為存在較多賬戶,故建議分學校運行在私有服務器上,避免賬戶數(shù)據(jù)沖突導致混亂。如果無法分學校運行系統(tǒng),則強制給數(shù)據(jù)庫表主鍵加上學校代碼以示區(qū)分,此方法仍存在數(shù)據(jù)過多加載時間過長的缺陷。4.1.2數(shù)據(jù)處理問題數(shù)據(jù)采集處理方法:多為用戶主動錄入數(shù)據(jù)完成采集。管理者通過數(shù)據(jù)庫錄入采集。時間相關的數(shù)據(jù)部分通過安卓系統(tǒng)函數(shù)或數(shù)據(jù)庫函數(shù)聯(lián)網(wǎng)獲取。部分由系統(tǒng)計算生成。數(shù)據(jù)存儲處理方法:服務器端完全采用數(shù)據(jù)庫進行數(shù)據(jù)存儲??蛻舳瞬捎镁W(wǎng)絡+數(shù)據(jù)庫+SharedPreference進行數(shù)據(jù)存儲。數(shù)據(jù)庫設計僅達到并未完全達到3NF,但除了3NF外只有2NF。所有數(shù)據(jù)庫表的其它數(shù)據(jù)元素均依賴于主關鍵字。數(shù)據(jù)檢索處理方法:數(shù)據(jù)庫檢索和SharedPreference取值。進行數(shù)據(jù)加工和變換后方便檢索??蛻舳硕嗖捎肧tring數(shù)據(jù)類型,數(shù)據(jù)庫中有int、char、vchar、text這四種數(shù)據(jù)類型。數(shù)據(jù)傳輸處理方法:采用HTTP通信傳輸協(xié)議,客戶端通過基于時間的輪詢機制和服務端進行通信。通過HTTP的get請求向服務端發(fā)起請求,獲取服務端數(shù)據(jù)。通過HTTP的post請求向服務端提交數(shù)據(jù),服務端將數(shù)據(jù)存入數(shù)據(jù)庫。4.1.3數(shù)據(jù)同步問題數(shù)據(jù)同步問題解決方案如下:處理課程提醒信息的同步時,因為數(shù)據(jù)是提交給服務端進行管理的,所以處理好客戶端和服務端的數(shù)據(jù)同步就好了。服務端不能發(fā)起請求,由客戶端的使用者手動刷新同步或者系統(tǒng)自動時間輪詢刷新同步。處理通知欄消息提醒響應顯示時,采用安卓客戶端Calendar()類進行定時數(shù)據(jù)同步提醒。4.2客戶端實現(xiàn) 客戶端使用AndroidStudio進行APP開發(fā),用到了三種布局格式,分別是:ConstraintLayout(約束布局)、LinearLayout(線性布局)、RelativeLayout(相對布局)。用到了大量控件、包括單選按鈕、普通按鈕、文本框、輸入框、圖像按鈕、滾動條等。除此之外,還使用了Adapter適配器、ListView清單、Spinner列表選項框、Tost提示、AlertDialog對話框、Intent意圖、Fragment碎片、\o"6.2數(shù)據(jù)存儲與訪問之——SharedPreferences保存用戶偏好參數(shù)"SharedPreferences保存用戶偏好參數(shù)、\o"6.3.1數(shù)據(jù)存儲與訪問之——初見SQLite數(shù)據(jù)庫"SQLite數(shù)據(jù)庫存儲、兩種HTTP請求方式、JSON數(shù)據(jù)解析和安卓動畫等。使用以上技術,搭建的客戶端APP實現(xiàn)了通知消息的顯示、查詢、刪除,課程安排的顯示、查詢、刪除,個人信息的顯示、查詢、刪除。4.2.1客戶端APP頁面(activity+fragment)采用activity+fragment的嵌套方式實現(xiàn)APP主頁功能呈現(xiàn),fragment有自己的控制函數(shù),如圖4-1所示。圖4-1fragment控制函數(shù)

4.2.2客戶端登錄采用登錄標記判斷,選擇APP要呈現(xiàn)的頁面,代碼如圖4-2所示。圖4-2判斷引導頁面是否需要顯示的代碼登錄同時將聯(lián)網(wǎng)獲取到的賬號信息或輸入的賬號信息保存到本地數(shù)據(jù)庫中。不僅保存到數(shù)據(jù)庫,而且存入SharedPreferences中,方便后續(xù)驗證和使用。獲取用戶信息和學校信息,如圖4-3:圖4-3用戶信息和學校信息獲取請求代碼

判斷用戶身份并做出相應操作,如圖4-4、圖4-5:圖4-4待定和管理者身份判斷圖4-5教師、學生和學委身份判斷

為了保證數(shù)據(jù)獲取不出錯,采用了兩個handler來等待頁面UI更新時機。如下圖4-6、圖4-7是handler函數(shù)代碼展示:圖4-6handler函數(shù)(1)圖4-7handler函數(shù)(2)4.2.3客戶端數(shù)據(jù)庫選修表建表,如圖4-8:圖4-8選修表建表函數(shù)課時表建表,如圖4-9:圖4-9課時表建表函數(shù)

通知表建表如圖4-10:圖4-10通知表建表函數(shù)4.2.4客戶端其它數(shù)據(jù)處理采用SharedPreferences存儲,SharedPreferences緩存的參數(shù)包括:welcome——存儲判斷賬號是否登錄(start_main)userInfo——存儲用戶的信息(userId,userName,userSex,idNumber,userNickname,userPassword,userTelephone,schoolId,userCapacity)

(instructorId,instituteName,isAdmin)

(studentId,classId)

(teacherId,teacherIntroduction)

(3)otherInfo——存儲和課程相關的信息(schoolName,firstWeek,regularTime,lessonOne,lessonTwo,lessonThree,lessonFour,lessonFive,lessonSix,lessonSeven,lessonEight,lessonNine,lessonTen,lessonEleven,lessonTwelve,lessonThirteen,lessonFourteen)

圖4-11展示了客戶端SharedPreferences存儲代碼。圖4-11SharedPreferences存儲函數(shù)4.3服務端實現(xiàn)服務端的設計分為三個層次,分別是DAO層、Service層、Controller層。在這三個層次構建之前,需要先對服務端應用開發(fā)工具IDEA進行配置,使其關聯(lián)到對應數(shù)據(jù)庫。此外,還需要確認服務端訪問地址以及進行依賴包的配置與下載。DAO即DataAccessObject,負責服務程序與數(shù)據(jù)庫的字段關聯(lián)。Service層用于封裝DAO層操作,使一個方法表現(xiàn)為實現(xiàn)一種功能。Controller層是業(yè)務控制層,負責接收數(shù)據(jù)和請求,并且調用Service層實現(xiàn)對應的業(yè)務邏輯。服務端的搭建代碼文件分為五大板塊,即Entity、JpaRepository、Service、Controller、Enum,這五大板塊的存在構建了整個服務,定義了客戶端請求路徑、響應消息、數(shù)據(jù)格式等。

4.3.1Entity這是一個對應數(shù)據(jù)庫表的類,以選修表的映射為例,如圖4-12。圖4-12選修表的映射為例代碼

4.3.2JpaRepository以選修表的JpaRepository為例,利用自定義接口繼承系統(tǒng)接口,如圖4-13。圖4-13選修表接口函數(shù)代碼4.3.3Service同樣以選修表的service為例。(1)interface,如圖4-14:圖4-14選修表Service函數(shù)代碼(2)serviceImpl,如圖4-15:圖4-15選修表ServiceImpl函數(shù)代碼4.3.4Controller同樣以選修表的controller為例,controller寫完后就可以使用訪問接口了。值得一提的是,controller層會返回json數(shù)據(jù),是云端服務搭建的最后一步,也是最重要的一步。它定義了HTTP協(xié)議訪問請求的路徑,定義了HTTP協(xié)議get請求和post請求的響應效果,controller層函數(shù)代碼如圖4-16。圖4-16選修表controller層函數(shù)代碼

4.3.5Enum枚舉信息提示,定義message和code用于返回給前端或移動端。由于系統(tǒng)未進行詳細完善,故只定義兩個code,如圖4-17。圖4-17服務端枚舉定義代碼4.3.6服務器的配置每個平臺能提供的服務器都會存在或大或小的差異,基于HTTP通信協(xié)議課程提醒系統(tǒng)采用的是阿里云服務器。我購買的阿里云服務器版本是輕量級應用服務器。以下為部分服務器配置過程。設置防火墻規(guī)則允許訪問數(shù)據(jù)庫端口,然后設置允許遠程連接到root權限下的所有數(shù)據(jù)庫,命令:grantallprivilegeson*.*toroot@"%"identifiedby'86Eeef5d70ae';flushprivileges;安裝JDK,我采用的是linux在線安裝JDK,安裝版本為:1.8版本。命令:wget--no-check-certificate--no-cookies--header"Cookie:oraclelicense=accept-securebackup-cookie"/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpmJDK安卓包下載成功后,添加執(zhí)行權限,命令:chmod+xjdk-8u131-linux-x64.rpm執(zhí)行rpm進行安裝,命令:rpm-ivhjdk-8u131-linux-x64.rpm查看JDK是否安裝成功,命令:java-version然后還需要編輯環(huán)境變量,編輯/etc/profile,進行環(huán)境配置。通過XShell連接阿里云,使用拖拽方式將jar等文件上傳到云服務器。也可以使用rz命令進行文件上傳。jar包的運行:方法一:java-jardemo.jar特點:當前ssh窗口被鎖定,可按CTRL+C打斷程序運行,或直接關閉窗口,程序退出方法二:java-jardemo.jar&特點:當前ssh窗口不被鎖定,但是當窗口關閉時,程序中止運行。方法三:nohupjava-jardemo.jar&nohup代表不掛斷運行命令,當賬戶退出或終端關閉時,程序仍然運行。方法四:nohupjava-jardemo.jar>demo.log&其中>demo.log是將command的所有輸出重定向到demo.log文件。如果想殺掉運行中的jar程序,查看進程命令為:psaux|grepgetCimiss-surf.jar將會看到此jar的進程信息data57960.00.0112656996pts/1S+09:110:00grep--color=autogetCimiss-surf.jardata307686.30.435468508576800Sl09:090:08java-jargetCimiss-surf.jar其中30768則為此jar的pid,殺掉進程命令為:kill-9307684.3.7數(shù)據(jù)庫創(chuàng)建與同步在數(shù)據(jù)庫搭建問題上,我采用的是先搭建本地數(shù)據(jù)庫,然后再使用NavicatPremium將數(shù)據(jù)庫同步到云端的方式。數(shù)據(jù)庫創(chuàng)建代碼如下圖4-18至圖4-23:圖4-18curriculum_info的創(chuàng)建代碼圖4-19other_info的創(chuàng)建代碼圖4-20user_info、instructor_info、class_info的創(chuàng)建代碼圖4-21student_info、study_info、teacher_info的創(chuàng)建代碼圖4-22elective_info、hours_info的創(chuàng)建代碼圖4-23notification_info的創(chuàng)建代碼

第五章客戶端與服務端的信息交互(HTTP協(xié)議)5.1HTTP協(xié)議描述(1)HTTP請求/響應步驟:1.客戶端連接到Web服務器(TCP套接字連接)。2.發(fā)送HTTP請求(文本報文)。3.服務器接受請求并返回HTTP響應(解析請求,定位請求資源,將資源復本寫到TCP套接字,客戶端讀?。?。4.釋放連接TCP連接。5.客戶端瀏覽器解析HTML內容。(2)HTTP協(xié)議是基于TCP/IP協(xié)議之上的應用層協(xié)議。基于“請求-響應”的模式工作。必需由客戶端向服務端發(fā)起請求,服務端不能在沒有收到請求報文時主動傳輸數(shù)據(jù)。(3)無狀態(tài)保存,HTTP是一種無狀態(tài)協(xié)議,協(xié)議自身不對請求和響應之間的通信狀態(tài)進行保存,對于發(fā)送過的請求或響應都不做持久化處理。(4)無連接,限制每次連接只處理一個請求。服務器處理完客戶的請求,并收到客戶的應答后,即斷開連接。(5)HTTP協(xié)議中共定義了八種方法來以不同方式操作指定的資源,分別是:GET、HEAD、POST、PUT、DELETE、TRACE、OPTIONS、CONNECT。本設計只采用了GET和POST方法,這里對其做出詳細介紹:1、GET:向指定的資源發(fā)出“顯示”請求。使用GET方法應該只用在讀取數(shù)據(jù)時,其中一個原因是GET可能會被網(wǎng)絡蜘蛛等隨意訪問。2、POST:向指定資源提交數(shù)據(jù),請求服務器進行處理。數(shù)據(jù)被包含在請求本文中。這個請求可能會創(chuàng)建新的資源或修改現(xiàn)有資源,或二者皆有。[9]

5.2傳輸報文架構HTTP通信協(xié)議請求報文和響應報文的格式如下圖5-1、圖5-2所示:圖5-1HTTP請求格式(請求協(xié)議)圖5-2HTTP響應格式(響應協(xié)議)5.3Post和Get請求的使用HTTP協(xié)議是完成安卓端和服務端信息交互不可或缺的協(xié)議,這里我通過HTTP的get請求向服務端發(fā)起請求,獲取服務端數(shù)據(jù)。通過HTTP的post請求向服務端提交數(shù)據(jù),服務端將數(shù)據(jù)存入數(shù)據(jù)庫。可以說HTTP協(xié)議是安卓端和服務端的溝通橋梁,也是課程提醒系統(tǒng)的重中之重。5.3.1Get請求(1)客戶端與服務端的信息交互get請求函數(shù)如圖5-3所示:圖5-3客戶端與服務端的信息交互get請求函數(shù)(2)get請求獲取的josn解析過程:整個安卓移動端共有12個josn解析函數(shù),每個函數(shù)對應不同get請求的返回數(shù)據(jù),用于解析的服務端返回數(shù)據(jù),數(shù)據(jù)解析完成后,可以將其轉存到安卓端數(shù)據(jù)庫或者SharedPreferences里面,如圖5-4所示。圖5-4josn解析函數(shù)

(3)get請求發(fā)起,如圖5-5、圖5-6所示:圖5-5get請求發(fā)起代碼(1)圖5-6get請求發(fā)起代碼(2)5.3.2Post請求(1)客戶端與服務端的信息交互post請求函數(shù)如圖5-7、圖5-8所示:圖5-7post請求函數(shù)代碼(1)圖5-8post請求函數(shù)代碼(2)(2)post請求發(fā)起:整個客戶端共有4個Post數(shù)據(jù)設置函數(shù),分別是注冊用戶賬號、注冊更改賬號信息、發(fā)送通知消息、更改課時。這四個函數(shù)是學生身份無法使用的,函數(shù)代碼如圖5-9、圖5-10所示。圖5-9post請求發(fā)起代碼(1)圖5-10post請求發(fā)起代碼(2)

第六章系統(tǒng)測試6.1客戶端APP測試軟件測試在軟件開發(fā)過程非常重要,在編寫代碼時,測試就開始了。而每一階段編寫完成,又會分模塊進行測試。其中測試用例的選取是很重要的,關系到測試路徑的覆蓋和測試的效果。當然,bug的出現(xiàn)很難避免,我只能盡力完善該系統(tǒng)。6.1.1注冊測試(1)如下圖6-1至圖6-4,為安裝APP后首次啟動的頁面展示到注冊完成的頁面展示測試:圖6-1 圖6-2 圖6-3 圖6-46.1.2登錄后數(shù)據(jù)獲取測試(1)如下圖6-5至圖6-10為“學生”身份登錄后主頁面Activity和Fragment的頁面展示測試:圖6-5 圖6-6 圖6-7圖6-8 圖6-9 圖6-10(2)以下為“學生”身份登錄后個人信息頁面及頁面按鈕點擊后的效果展示:1、用戶信息按鈕點擊效果如圖6-11至圖6-18所示。圖6-11 圖6-12 圖6-13 圖6-14圖6-15 圖6-16 圖6-17 圖6-182、身份信息按鈕點擊效果如圖6-19所示。3、學校信息按鈕點擊效果如圖6-20所示。圖6-19圖6-204、身份操作按鈕點擊效果如圖6-21至圖6-26所示。圖6-21 圖6-22 圖6-23圖6-24 圖6-25 圖6-26登錄身份除了“學生”,還有“管理者”、“教師”、“學委”和“待定”身份。經(jīng)測試,頁面展示大同小異?!敖處煛焙汀肮芾碚摺睋碛猩矸莶僮黜撁嫠械臋嘞?,“學委”擁有查詢學生信息的權限。6.1.3數(shù)據(jù)提交測試這里以教師身份登錄,模擬一次通知插入過程,經(jīng)測試,通知插入成功。如下圖6-27至圖6-35所示:圖6-27 圖6-28 圖6-29圖6-30 圖6-31 圖6-32圖6-33 圖6-34 圖6-35

6.2服務端測試6.2.1通過IDEA進行的test(1)以ClassRepository和ClassService為例,如圖6-36、圖6-37所示:圖6-36ClassRepository函數(shù)圖6-37ClassService函數(shù)

6.2.2調用接口的測試通過post和get請求,訪問服務端接口,修改云端信息并能獲取返回信息。(1)通過瀏覽器以網(wǎng)頁get方式訪問接口的返回數(shù)據(jù),6為阿里云服務器地址,訪問響應如圖6-38所示。圖6-38通過瀏覽器訪問服務端接口(2)postman采用post方式訪問接口的測試,訪問響應如圖6-39所示。圖6-39通過postman訪問服務端接口

6.2.3jar包的導出當服務端功能實現(xiàn)后,在Idea里面將工程打包成jar包,導出后可在電腦和云端服務器上運行。運行如圖6-40所示。圖6-40jar包運行圖示6.3測試結論經(jīng)測試,服務端運行良好,可通過Get和Post請求正常訪問。無論是通過瀏覽器、postman測試工具,還是在客戶端的測試過程中都表現(xiàn)良好。在客戶端的測試過程中,各頁面顯示良好,操作響應迅速,響應結果符合預期。成功實現(xiàn)了通知信息的加載和刪除、當天課程的加載、本周課程的加載、學期選修課程的顯示、個人信息的獲取與顯示、個人信息的修改、學校信息的展示、“學生”與“學委”身份的用戶信息查詢、課時信息的增刪改查,刷新操作也取得了較好的效果。綜上所述,基于HTTP通信協(xié)議課程提醒系統(tǒng)通過測試,不同身份的賬戶使用體驗良好,沒有出現(xiàn)數(shù)據(jù)沖突情況,客戶端的刪除、更改、插入請求也在服務端得到良好的同步,達成預期。

第七章總結7.1項目成果概述實現(xiàn)了服務端和移動端通過HTTP通信協(xié)議進行的信息同步和交互。實現(xiàn)了對課程信息和通知信息的更新和管理。實現(xiàn)了身份權限的區(qū)分操作。7.2主要困難及難點7.2.1頁面的轉跳與銷毀頁面轉跳十分簡單,但是由于嵌套了Fragment,跳轉時可能會出現(xiàn)找不到Fragment的現(xiàn)象。為了解決該錯誤,需要在主頁面不可見時及時銷毀相關的Fragment,讓主頁面可見時能夠重新查詢到Fragment。7.2.2本周課程展示按星期展示課程的方式有很多種,可以通過增加數(shù)據(jù)庫字段來達到查詢需求。但是字段的增加也會增高異常風險,還要考慮到時延問題。所以我自己重新設置的字段內容的格式,用到了一些簡單的算法,實現(xiàn)了按星期展示課程的需求。7.2.3系統(tǒng)的構建剛開始構思課程提醒系統(tǒng)時困難重重,數(shù)據(jù)表的設計和HTTP返回數(shù)據(jù)的需求設計都很具有挑戰(zhàn)性。由于沒有可供借鑒的設計,只能折中處理,最終方案數(shù)據(jù)庫只達到了2NF,存在冗余。而安卓移動端的信息更改操作受限,部分操作只能直接對數(shù)據(jù)庫進行。7.3不足與改進7.3.1系統(tǒng)不足基于HTTP通信協(xié)議的課程提醒系統(tǒng),重在通信協(xié)議和“提醒”。通信協(xié)議是整個系統(tǒng)連接的橋梁毋庸置疑,但是“提醒”的地位有待提升。該系統(tǒng)最終效果需要使用者手動刷新,這一點有待改善。測試用例可能存在路徑不能完全覆蓋的問題,即部分bug未被發(fā)現(xiàn)。身份信息的更改、身份表的插入,需要通過數(shù)據(jù)庫進行,客戶端不夠完善。因為該系統(tǒng)面向大學生而設計,所有沒有考慮信息加密問題,存在安全隱患。同時,沒有身份驗證也是系統(tǒng)的缺陷。7.3.2改進思想采用時間輪詢刷新,獲取服務端最新數(shù)據(jù),保證客戶端和服務端高效同步。增加鬧鐘或鈴聲,作為課時更改和通知下達后的提醒方式。增加通知欄消息提醒。增加移動端post請求函數(shù),增加移動端修改和添加信息的操作,減小數(shù)據(jù)庫管理的壓力。優(yōu)化完善身份操作權限。7.4收獲心得體會通過這次的項目設計,我發(fā)現(xiàn)了自己存在大量的不足。項目的實現(xiàn)過程經(jīng)歷了漫長的時間,整個開發(fā)過程充滿曲折。首先,我對知識點并不熟悉,實現(xiàn)過程都是邊學邊用。好處是在學習的同時可以運用,加深了印象。壞處是浪費時間,功能實現(xiàn)過于拖沓,而且無法對自己項目的實現(xiàn)過程擁有正確的估計和判斷,往往自己設定的目標超過了自己的能力,不能完成開發(fā)任務。進度估計的錯誤導致自己一度感受到巨大的壓力,好在最終也算完成了項目的開發(fā)。說到項目的完成,雖然目前系統(tǒng)可以使用,但是是在原定功能上進行了大量的壓縮和折中處理?,F(xiàn)在的系統(tǒng)放棄了很多功能的實現(xiàn),所以有較大的優(yōu)化空間,可以變得更加完善和高級。以上是我對項目實現(xiàn)程度的總結,在實現(xiàn)過程中,我也學到了很多東西。我對Java語言和C++語言更加熟悉了。不管是什么編程語言,總是有他們的共通之處。java我并沒有系統(tǒng)學習過,但是在開發(fā)時,我依靠對零星的知識點加以運用,也無疑加深了我的熟練度。除此之外,我在使用studio時,也學習到了更多控件的使用方式,了解了一些接口的實現(xiàn)過程,并且學會運用很多新的定義函數(shù)和數(shù)據(jù)類型。然后是IDEA的使用,IDEA是搭建云端服務的工具。這雖然不是我第一次接觸到云端服務,但是依舊只能依靠框架實現(xiàn)需求。我通過學習了SpringBoot,完成了整個搭建過程。同時,我還學習了了MySQL數(shù)據(jù)庫,由于我對MySQL的使用需求不大,學習過程比較輕松。在搭建云端服務的過程中,我學習了一些阿里云的使用知識,包括Linux命令、服務器配置、域名綁定等。當然我也對服務器進行了很多測試,我學會了利用“Postman”發(fā)送post請求、學會了用NavicatPremium查看數(shù)據(jù)庫、學會了用natapp進行內網(wǎng)穿透訪問、學會了jar包的運行和查看調試。所有以上的操作都是為實現(xiàn)項目需求服務,為了更好的管理自己的項目,我嘗試使用了GitHub進行項目托管,托管到云端后就不怕本地數(shù)據(jù)丟失了,而且每次提交都可以看到自己對項目做出了哪些修改。完成項目的過程雖然艱辛,但是也收獲滿滿,果然付出與收獲都是成正比的。不過,我雖然實現(xiàn)了項目需求,但是仍離預期有一定的差距。對各種知識的學習依舊停留在表面,算是會用,并沒有深入了解它們的原理,也做不到舉一反三。甚至在使用的過程還可能存在沒有及時發(fā)現(xiàn)的不規(guī)范使用方式。部分已經(jīng)發(fā)現(xiàn)的不規(guī)范使用方式目前找不到修改方式。所以我還要繼續(xù)努力。

第八章結語IT行業(yè)是一個長盛不衰的行業(yè),5G時代的到來也為它的發(fā)展提供了無限的可能。目前市面上的各類APP已經(jīng)數(shù)不勝數(shù)了,隨著編程的門檻貶低,越來越多的技術人才也紛紛涌現(xiàn)。想要在如此艱難的環(huán)境中為自己的設計找到一席之地實非易事。我清楚的知道基于HTTP通信協(xié)議課程提醒系統(tǒng)還不夠完善,無論是系統(tǒng)的架構還是系統(tǒng)的功能,還無法達到發(fā)布和推廣的要求。但是該系統(tǒng)的設想面向大學生群體,就目前我畢業(yè)前所用過的APP對比而言,基于HTTP通信協(xié)議課程提醒系統(tǒng)的設想如果完全實現(xiàn),也能解決一些在課程提醒客觀問題,為在校大學生提供學習上的便利。雖然最終系統(tǒng)成果沒能徹底達到預期效果,但是整個系統(tǒng)構建過程也讓我受益匪淺。從畢業(yè)設計選題到設計論文的撰寫,我付出了足夠的努力,看著自己的系統(tǒng)一點點完善,也會有一點小小的成就感。

參考文獻[1]祝瑞[1],車敏[1].基于HTTP協(xié)議的服務器程序分析[J].現(xiàn)代電子技術,2012(4).[2]王能斌,錢祥根.大學課程表調度系統(tǒng)——UTSS[J].計算機學報(05):65-71.[3]肖軍[1,2],李濤[1,2].基于

溫馨提示

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

最新文檔

評論

0/150

提交評論