基于Android的教學(xué)課程系統(tǒng)設(shè)計與開發(fā) 計算機專業(yè)_第1頁
基于Android的教學(xué)課程系統(tǒng)設(shè)計與開發(fā) 計算機專業(yè)_第2頁
基于Android的教學(xué)課程系統(tǒng)設(shè)計與開發(fā) 計算機專業(yè)_第3頁
基于Android的教學(xué)課程系統(tǒng)設(shè)計與開發(fā) 計算機專業(yè)_第4頁
基于Android的教學(xué)課程系統(tǒng)設(shè)計與開發(fā) 計算機專業(yè)_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

大連理工大學(xué)畢業(yè)設(shè)計(論文)格式規(guī)范-引言隨著軟件科技和網(wǎng)絡(luò)技術(shù)的發(fā)展,以及智能手機的普及,移動應(yīng)用已經(jīng)成為人們生活必不可缺的一部分。移動應(yīng)用有著廣大的受眾,它方便快捷,種類繁多,在生活的方方面面都涉及的到。移動應(yīng)用的種類可以說是數(shù)不勝數(shù),幾乎覆蓋所有領(lǐng)域,常見的例如購物,移動支付,聊天社交,影音,游戲,辦公,閱讀,搜索等等。移動應(yīng)用的開發(fā)也一直是一個熱門的話題,移動應(yīng)用開發(fā)的成本低廉,開發(fā)平臺繁多,開發(fā)的語言也多種多樣。移動應(yīng)用的開發(fā),應(yīng)該遵循這樣幾點,首先,要做到操作便捷,簡潔大方,交互的步驟越少越好,便于用戶的使用,提高體驗感;其次,要注重信息的即時性和有效性,信息作為移動應(yīng)用最重要的一部分,必須保持“新鮮”;還有,一個移動應(yīng)用應(yīng)該要有效率和集中性,展現(xiàn)給用戶的是最高效和常用的功能,要做到精簡。Android作為一個開源的開發(fā)軟件,適用性強,擴展性強,其開發(fā)簡單,用JAVA語言即可進行開發(fā),并且具有豐富多樣的類庫和開發(fā)框架,能實現(xiàn)各種功能。Android開發(fā)的應(yīng)用界面多樣化,便于設(shè)計出個性化的產(chǎn)品。考慮到大學(xué)生在學(xué)習(xí)類移動應(yīng)用中最常用的幾個功能,例如課表查看,日程表功能,再結(jié)合我們軟院自身的情況,例如借教室,爾雅課堂等,再綜合現(xiàn)有的學(xué)習(xí)相關(guān)的移動應(yīng)用,設(shè)計出一款基于Android的針對軟件學(xué)院學(xué)生的教學(xué)課程APP。該移動應(yīng)用主要分為我的課表,我的日程,我的學(xué)習(xí),教室預(yù)約,我的班級和我的成績六個主要模塊,主要用于和學(xué)生之間的信息管理和互動,從軟件開發(fā)的層次去實現(xiàn)一個教學(xué)課程系統(tǒng)。本論文從軟件開發(fā)的角度,從需求分析,功能分析,數(shù)據(jù)設(shè)計,詳細設(shè)計等方面,詳細介紹了一個移動應(yīng)用的開發(fā)過程,盡量做到使APP有較高的針對性和實用性,并非做到完美。

1緒論1.1開發(fā)背景和目的隨著軟件科技和網(wǎng)絡(luò)技術(shù)的發(fā)展,以及智能手機的普及,移動應(yīng)用已經(jīng)成為人們生活必不可缺的一部分。移動應(yīng)用的種類可以說是數(shù)不勝數(shù),幾乎覆蓋所有領(lǐng)域,常見的例如購物,移動支付,聊天社交,影音,游戲,辦公,閱讀,搜索等等。移動應(yīng)用的開發(fā)也一直是一個熱門的話題,移動應(yīng)用開發(fā)的成本低廉,開發(fā)平臺繁多,開發(fā)的語言也多種多樣。由于手機的操作系統(tǒng)品種繁多,所以相關(guān)的移動應(yīng)用開發(fā)也多種多樣,其中最廣泛的應(yīng)該就是Android系統(tǒng)和iOS系統(tǒng),考慮到開發(fā)的難易程度和開發(fā)工具,選擇Android是比較容易實現(xiàn)的。大學(xué)生身為移動應(yīng)用的最大用戶群體,在生活學(xué)習(xí)娛樂各個方面都與移動應(yīng)用有著緊密聯(lián)系,然而針對大學(xué)生校園學(xué)習(xí)的移動應(yīng)用卻寥寥無幾,比較熱門的有課程格子,超級課程表等等,但是因為不同的學(xué)校,甚至不同的院系,都有著自己獨特的情況,所以市面上的校園移動應(yīng)用不能做到真正的有針對性和適用。為了方便軟件學(xué)院學(xué)生的日常生活和學(xué)習(xí),結(jié)合軟件學(xué)院自身的情況,例如教室外借,通識課爾雅課程的情況,我想設(shè)計出一款移動應(yīng)用,能滿足同學(xué)的需求,為同學(xué)們帶來一些便利,讓同學(xué)們能更輕松地進行網(wǎng)上學(xué)習(xí),查看自己學(xué)習(xí)課程相關(guān)的信息。并且,通過這一次的開發(fā)研究,更深一步了解掌握軟件開發(fā),尤其是移動應(yīng)用開發(fā)的流程。1.2開發(fā)環(huán)境1.2.1移動端移動Android端的開發(fā),選取的工具是AndroidStudio。AndroidStudio是一個Android集成開發(fā)工具,基于IntelliJIDEA,類似EclipseADT,AndroidStudio提供了集成的Android開發(fā)工具用于開發(fā)和調(diào)試。[1]

在IDEA的基礎(chǔ)上,AndroidStudio提供:(1)基于Gradle的構(gòu)建支持(2)Android專屬的重構(gòu)和快速修復(fù)(3)提示工具以捕獲性能、可用性、版本兼容性等問題(4)基于模板的向?qū)砩沙S玫腁ndroid應(yīng)用設(shè)計和組件(5)功能強大的布局編輯器,可以讓你拖拉UI控件并進行效果預(yù)覽圖1.1,圖1.2是AndroidStudio的開發(fā)界面。圖1.1AndroidStudio的編程界面圖1.2AndroidStudio的UI設(shè)計界面AndroidStudio作為一種Android集成開發(fā)工具,具有許多優(yōu)點:(1)Google針對Android的特點開發(fā)而成,是基于IntelliJidea改造的IDE,上升空間非常大(2)啟動速度、響應(yīng)速度快(3)UI界面美觀(4)自動保存,更加智能(5)實時預(yù)覽UI編輯效果(6)內(nèi)置終端(7)支持各種插件,如Git、Markdown、Gradle等等(8)安裝的時候就自帶了如GitHub,Git,SVN等流行的版本控制系統(tǒng)1.2.2服務(wù)器服務(wù)器端的開發(fā),選取的是Node.js。Node.js是一個Javascript運行環(huán)境(runtime)。實際上它是對GoogleV8引擎進行了封裝。V8引擎執(zhí)行Javascript的速度非??欤阅芊浅:?。Node.js對一些特殊用例進行了優(yōu)化,提供了替代的API,使得V8在非瀏覽器環(huán)境下運行得更好。Node.js是一個基于ChromeJavaScript運行時建立的平臺,用于方便地搭建響應(yīng)速度快、易于擴展的網(wǎng)絡(luò)應(yīng)用。Node.js使用事件驅(qū)動,非阻塞I/O

模型而得以輕量和高效,非常適合在分布式設(shè)備上運行數(shù)據(jù)密集型的實時應(yīng)用。[2]Nodejs作為一個新興的前端框架,后臺語言,有許多突出的優(yōu)點:(1)它采用RESTfulAPI(2)它是采用單線程進行操作(3)Node.js可以在維持原來線程正常工作的情況下,不創(chuàng)建額外的線程,對任務(wù)進行并發(fā)處理,它通過事件輪詢(eventloop)來實現(xiàn)并發(fā)操作,所以,這一點可以用來避免阻塞操作。(4)非阻塞IO(5)V8虛擬機(6)事件驅(qū)動1.2.3數(shù)據(jù)庫數(shù)據(jù)庫的設(shè)計,采用MongoDB。MongoDB是一個基于分布式文件存儲的數(shù)據(jù)庫。由C++語言編寫。旨在為WEB應(yīng)用提供可擴展的高性能數(shù)據(jù)存儲解決方案。MongoDB

是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。他支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bson格式,因此可以存儲比較復(fù)雜的數(shù)據(jù)類型。Mongo最大的特點是他支持的查詢語言非常強大,其語法有點類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引。[3]

MongoDB具有一些優(yōu)勢:(1)快速,MongoDB擁有適量級內(nèi)存,將數(shù)據(jù)存儲在在物理內(nèi)存中(2)高擴展性(3)自身的failover機制(4)json的存儲格式

2可行性研究可行性研究是一項確定建設(shè)項目前具有決定性意義的工作,它對擬建項目有關(guān)的自然、社會、經(jīng)濟、技術(shù)等進行調(diào)研、分析比較以及預(yù)測建成后的社會經(jīng)濟效益。在此基礎(chǔ)上,綜合論證項目建設(shè)的必要性,財務(wù)的盈利性,經(jīng)濟上的合理性,技術(shù)上的先進性和適應(yīng)性以及建設(shè)條件的可能性和可行性,從而為投資決策提供科學(xué)依據(jù)。(1)技術(shù)可行性本項目用AndroidStudio作為移動端的開發(fā),可直接將項目打包成APK。在實時的Web連接上,Node.js采用的是基于WebSocket的推送技術(shù),可以保證及時,有效,雙向連接的web應(yīng)用,客戶端和服務(wù)器端都可以主動地發(fā)起通信,也能夠有效安全地接收數(shù)據(jù)。MongoDB

的數(shù)據(jù)存儲格式為json,方便列表性數(shù)據(jù)的傳輸。(2)經(jīng)濟可行性本項目用AndroidStudio作為移動端的開發(fā),無需開發(fā)花費,開發(fā)時間短,用自己的電腦作為服務(wù)器,也無需花費,若想投入真正的實用中,可將學(xué)?;蛘哕浽旱木W(wǎng)站作為服務(wù)器,開發(fā)費用較低,利用率高,經(jīng)濟可行。(3)操作可行性本項目界面簡潔大方,功能模塊明確,有較完善的操作和信息的提示機制,輸入較少,以信息的展示為主,容易操作。(4)社會可行性本項目未涉及政治,法律,宗教,道德等問題,為違反相關(guān)規(guī)定。

3需求分析本章將從功能需求,性能需求,用例三個大方向?qū)υ搼?yīng)用開發(fā)進行詳細分析,并且提出該應(yīng)用應(yīng)該達到的一些標(biāo)準(zhǔn)。在3.4節(jié)中,舉例了一些現(xiàn)有的基于Android系統(tǒng)的移動應(yīng)用,用于參考借鑒,以便能更好地開發(fā)。3.1功能需求分析(1)登錄與登出用戶輸入正確的賬號密碼后,即可登錄應(yīng)用,進行相關(guān)操作,登陸過的賬號密碼應(yīng)該自動保存,用戶下次打開應(yīng)用時無需再次輸入賬號密碼,可自動登錄。用戶退出登錄時,保存的賬號密碼以及相關(guān)信息也應(yīng)該刪除。 (2)個人信息查看用戶可在應(yīng)用內(nèi)查看自己相關(guān)信息,例如學(xué)號,院系,班級,郵箱等。 (3)課程表的查看用戶可以查看本學(xué)期自己所選的所有課程及其相關(guān)信息,例如上課時間,所在教室,授課教師等,在應(yīng)用中以一周為顯示單位。 (4)在線學(xué)習(xí)用戶可以在應(yīng)用中查看可供在線學(xué)習(xí)的課程列表,選擇相關(guān)課程,進入學(xué)習(xí),根據(jù)章節(jié)觀看視頻,可以選擇題庫進行習(xí)題練習(xí),每道題做完后都可以查看正確答案,也可進行測試,加深知識點的鞏固。 (5)日程管理用戶可以添加,刪除,修改自己的日程,可以查看任意一天的日程,在應(yīng)用中以一周為顯示單位。 (6)教室預(yù)約用戶可以查看教室列表,選擇有空閑時間段的教室,填寫預(yù)約的時間及其相關(guān)預(yù)約信息,預(yù)約成功后提示用戶。 (7)班級信息查看用戶可以查看自己班級中同學(xué)的相關(guān)信息,如姓名,學(xué)號,聯(lián)系方式等,還可以查看創(chuàng)建班級公告,及時獲取信息。 (8)成績查詢用戶可以查看自己所選課程的成績,沒有參加考試的課程無需顯示成績。3.2非功能需求分析3.2.1性能分析(1)響應(yīng)時間①啟動應(yīng)用時間<2S②頁面切換時間<1S③與服務(wù)器交互數(shù)據(jù)時間(網(wǎng)絡(luò)流暢時)<2S(與服務(wù)器交互數(shù)據(jù)時間視網(wǎng)絡(luò)具體情況而定)(2)內(nèi)存占用①(沒有觀看視頻時)不超過物理內(nèi)存20%②(觀看視頻時)不超過物理內(nèi)存50%(3)并發(fā)用戶數(shù)①(未連接服務(wù)器)數(shù)量不限②(連接服務(wù)器)500人(4)穩(wěn)定性①持續(xù)時間>7*24小時②出錯率<0.01%(5)耗電量①(沒有觀看視頻時)不超過總耗電量的10%②(觀看視頻時)不超過總耗電量的50%3.2.2易用性分析(1)信息顯示應(yīng)用在向用戶提供信息時,顯示的信息必須正確完整,簡單易懂,并且具有及時性;復(fù)雜的信息可采用分段或者分頁顯示的方法;同一頁面顯示的信息不可過多;不同的信息內(nèi)容要用不同的樣式或者大小區(qū)分。(2)操作簡單應(yīng)用應(yīng)該易于操作,頁面控件不可過多,控件的文字應(yīng)當(dāng)簡潔明了;減少用戶的輸入操作,盡量用選擇操作代替輸入;頁面的層次不可過多,減少頁面的跳轉(zhuǎn);對于一些操作,要采用默認(rèn)的方法,避免出現(xiàn)特殊的操作。(3)消息提醒對于一些交互性的操作,應(yīng)當(dāng)有操作成功或者失敗的消息提醒;退出某些特殊頁面的時候,應(yīng)當(dāng)提醒是否確定退出;進行無法修改或恢復(fù)的操作時,應(yīng)當(dāng)提醒是否進行操作。(4)功能劃分應(yīng)用的所有功能應(yīng)該有明確的劃分,不同的模塊針對不同的功能需求,一個模塊最好只突出一個主要功能;各個功能之間要避免交叉重復(fù);避免無用功能。3.2.3安全性分析(1)保密性只有輸入正確賬號密碼的用戶才可登錄應(yīng)用,對應(yīng)用進行相關(guān)操作用戶在退出登錄時,保存的賬號密碼應(yīng)及時刪除(2)完整性信息的展示,修改和必須保證完整性,以規(guī)定的數(shù)據(jù)格式進行數(shù)據(jù)交互(3)可用性和抗毀性應(yīng)用備份機制、容錯機制,防止在應(yīng)用出現(xiàn)錯誤時,系統(tǒng)的備份機制保證應(yīng)用的正常運行。3.2.4可維護性分析(1)可理解性命名方式和編碼方式要統(tǒng)一,要有良好的編碼規(guī)范,適當(dāng)添加注釋。(2)可測試性功能模塊化,能進行每一個功能的單獨測試;測試的內(nèi)容越少越好;通過控制測試范圍,能夠更好地分解問題,執(zhí)行更靈巧的再測試;測試對應(yīng)用造成的破壞越小越好,減少改變。(3)可修改性采用標(biāo)準(zhǔn)化的文檔資料結(jié)構(gòu),及時記錄開發(fā)過程,采用可維護的程序設(shè)計語言,要有健全程序的文檔。(4)可靠性規(guī)定測試時間內(nèi),規(guī)定測試條件下,特定功能應(yīng)該做到能正常使用,平均故障間隔時間(MTBF)、平均修復(fù)時間(MTTR)、可用度都要達到標(biāo)準(zhǔn)指定要求。(5)可移植性應(yīng)用要適用于不同的Android系統(tǒng)手機,能成功安裝,所用功能都應(yīng)該正常使用,界面也必須適應(yīng)不同機型。(6)可使用性應(yīng)用應(yīng)該易于使用,便于操作;數(shù)據(jù)交互步驟要有進度提示,具有一定的容錯能力,并且有報錯機制。3.2.5界面分析(1)風(fēng)格統(tǒng)一應(yīng)用整體的風(fēng)格要統(tǒng)一,控件,圖標(biāo),圖片,提示等,相同功能或者操作的事物的UI要一致。(2)簡潔大方應(yīng)用整體的風(fēng)格和配色要漂亮大方,同一頁面上的控件和展示信息不可過多。(3)便于操作用按鈕和選擇控件代替輸入編輯控件,減少操作;對同一事物的添加,修改,刪除,查看功能要有不同的操作;要用默認(rèn)規(guī)范的操作方法。(4)避免重復(fù)不同的控件要用不同的UI設(shè)計;同一頁面內(nèi),不同的信息需要用不同展示方式,避免重復(fù)和混亂。3.3用例分析圖3.1應(yīng)用用例圖圖3.1為本應(yīng)用的用例分析。用戶可登陸,登出應(yīng)用,登陸應(yīng)用后可進行先關(guān)功能的操作,當(dāng)輸入錯誤的賬號密碼時,應(yīng)該有提醒。登陸應(yīng)用后,主頁面為六個主功能模塊,個人頁面即顯示用戶的相關(guān)信息,也可在該頁面登出。該應(yīng)用主要分為六個模塊:進入日程模塊①用戶可以查看自己任意一天的日程②用戶可以修改任意一天的某一日程③用戶可以刪除任意一天的某一日程進入課程表模塊①用戶可以查看自己一周的課程表進入教室預(yù)約模塊①用戶可以進行教室預(yù)約進入在線學(xué)習(xí)模塊①用戶可以對選擇某一課程的某一章節(jié)進行在線觀看視頻②用戶可以對選擇某一課程進行習(xí)題練習(xí)③用戶可以對選擇某一課程進行測試訓(xùn)練進入查看成績模塊①用戶可以查看自己所有課程的成績進入班級模塊①用戶可以查看自己所在班級同學(xué)的相關(guān)信息②用戶可以查看自己班級的公告③用戶可以添加自己班級的公告3.4參考系統(tǒng)參考現(xiàn)有的針對大學(xué)生的移動應(yīng)用,以及大學(xué)生常用的應(yīng)用,能更好地完善需求,制定更好地開發(fā)方向,使移動應(yīng)用的功能更貼近學(xué)生的要求,更符合日常生活,方便學(xué)生的使用?,F(xiàn)有的基于Android的移動應(yīng)用已經(jīng)較為成熟,種類繁多,在學(xué)習(xí)類方面,較為廣泛應(yīng)用的有課程格子,超級課程表等綜合向的,還有扇貝單詞,網(wǎng)易公開課等提供在線學(xué)習(xí)的。課程表圖3.2為課程格子課程表頁面。圖3.2課程格子應(yīng)用課程表頁面縱觀現(xiàn)有的學(xué)習(xí)類移動應(yīng)用,課程表是必備的功能,這也是大學(xué)生用學(xué)習(xí)類移動應(yīng)用最常用的應(yīng)用。課程格子作為現(xiàn)在較為成功的一個學(xué)習(xí)類移動應(yīng)用,它最出名的就是課程表的完善系統(tǒng),其界面也是較為美觀。在線學(xué)習(xí)圖3.3元貝駕考應(yīng)用題庫選擇頁面圖3.4元貝駕考應(yīng)用答題頁面圖3.3,圖3.4為元貝駕考的應(yīng)用頁面,參考同學(xué)們比較常用的在線學(xué)習(xí)應(yīng)用,元貝駕考是身邊的同學(xué)最為常用且體驗感較好的一款應(yīng)用。元貝駕考的操作較為簡單,對每一科目進行選擇,然后選擇相對應(yīng)的題庫即可進行練習(xí),每道題做完后可以查看正確答案,并對自己的答案進行判斷。圖3.5元貝駕考應(yīng)用功能頁面圖3.5為元貝駕考應(yīng)用功能頁面,可以看到,元貝駕考應(yīng)用在習(xí)題這一塊做得比較詳細,分為練習(xí)和模擬測試這兩個模塊,在練習(xí)中又有細分。圖3.6網(wǎng)易云公開課視頻播放頁面圖3.6為網(wǎng)易云公開課視頻播放頁面,每個視頻應(yīng)該結(jié)合目錄,可以根據(jù)章節(jié)選擇。日程管理圖3.7點擊操作時間選擇器圖3.8滑動操作時間選擇器圖3.7,圖3.8為時間選擇器,可以看出,在日程管理這一模塊中,對比傳統(tǒng)的點擊操作時間選擇器,滑動操作時間選擇器的操作更為簡單快捷,現(xiàn)有的新興的移動應(yīng)用大多都選擇滑動操作時間選擇器,這一點在日程創(chuàng)建和管理上可以提供很好的幫助。圖3.9日程表結(jié)合日歷圖3.9為日程表,一般的日程表都會結(jié)合日歷,方便查看,不過在校大學(xué)生的日程多以一周為單位,在設(shè)計的時候要考慮到這一點,也要適當(dāng)結(jié)合日歷。

4詳細設(shè)計4.1功能模塊設(shè)計析詳細設(shè)計是軟件工程中軟件開發(fā)前期的一個重要步驟,在詳細設(shè)計階段,主要是根據(jù)需求分析,設(shè)計出滿足用戶需求的應(yīng)用功能。良好的詳細設(shè)計是成功的軟件開發(fā)的必要保障,并且在這一階段必須花費一定的時間和精力,保證設(shè)計的質(zhì)量。這一章節(jié),將對該移動應(yīng)用進行詳細的設(shè)計,從時序圖出發(fā),詳細介紹每個模塊中每個功能的操作步驟,以及服務(wù)器端和移動端的交互,并且對數(shù)據(jù)庫進行系統(tǒng)的設(shè)計,設(shè)計每一個類的屬性,用E-R圖表明各個類的關(guān)系。4.1.1登錄和登出圖4.1登錄和登出時序圖圖4.1為登錄和登出的時序圖。用戶輸入賬號密碼后,移動端將賬號密碼發(fā)送給服務(wù)器,服務(wù)器進行驗證后,返回成功碼給移動端,移動端進行頁面跳轉(zhuǎn),進入應(yīng)用。用戶選擇登出,移動端退出應(yīng)用,返回到登錄界面,并且刪除用戶留在本地的相關(guān)數(shù)據(jù)。圖4.2查看個人信息時序圖圖4.2為查看個人信息的時序圖。用戶進入“個人”頁面,移動端自動獲取用戶的ID,并向服務(wù)器發(fā)起獲取用戶信息的需求,服務(wù)器端返回用戶的個人信息,移動端自動保存這些數(shù)據(jù),下次查看時可自動提取移動端本地的數(shù)據(jù)。4.1.2我的課表模塊圖4.3查看課表時序圖圖4.3為查看課表的時序圖。用戶點擊“我的課表”按鈕,進行頁面跳轉(zhuǎn),移動端自動將保存在本地用戶的ID發(fā)送給服務(wù)器,服務(wù)器根據(jù)用戶ID將用戶的課表發(fā)送給移動端,移動端展示給用戶。4.1.3我的學(xué)習(xí)模塊圖4.4在線學(xué)習(xí)視頻觀看時序圖圖4.4為在線學(xué)習(xí)視頻觀看的時序圖。用戶點擊“我的學(xué)習(xí)”按鈕,進行頁面跳轉(zhuǎn),移動端向服務(wù)器發(fā)送獲取列表請求,服務(wù)器返回所有相關(guān)的課程信息,用戶再點擊自己想學(xué)習(xí)的課程,移動端將課程ID發(fā)送給服務(wù)器,服務(wù)器返回該門課程的章節(jié)和相關(guān)視頻的信息,用戶再點擊某個視頻,移動端將視頻ID發(fā)送給服務(wù)器,服務(wù)器返回給移動端視頻的存放路徑,移動端根據(jù)路徑,找到視頻,進行播放處理。圖4.5在線學(xué)習(xí)習(xí)題練習(xí)時序圖圖4.5為在線學(xué)習(xí)習(xí)題練習(xí)的時序圖。用戶點擊“我的學(xué)習(xí)”按鈕,進行頁面跳轉(zhuǎn),移動端向服務(wù)器發(fā)送獲取課程列表請求,服務(wù)器返回相關(guān)的課程信息,用戶點擊自己想學(xué)習(xí)的課程,移動端將課程ID發(fā)送給服務(wù)器,服務(wù)器返回該門課程的章節(jié)和相關(guān)視頻的信息,用戶再點擊“習(xí)題”按鈕,移動端向服務(wù)器發(fā)送獲取該門課程題庫的請求,用戶選擇某個題庫,移動端將題庫ID發(fā)送給服務(wù)器端,服務(wù)器返回給移動端該題庫的題目,用戶即可做題,每做完一道題目,用戶可以點擊“確定”按鈕,移動端會顯示每道題目的答案并對用戶的答案進行判斷。圖4.6在線學(xué)習(xí)習(xí)題測試時序圖圖4.6為在線學(xué)習(xí)習(xí)題測試的時序圖。用戶點擊“我的學(xué)習(xí)”按鈕,進行頁面跳轉(zhuǎn),移動端向服務(wù)器發(fā)送獲取課程列表請求,服務(wù)器返回所有相關(guān)的課程信息,用戶再點擊自己想學(xué)習(xí)的課程,移動端將課程ID發(fā)送給服務(wù)器,服務(wù)器返回該門課程的章節(jié)和相關(guān)視頻的信息,用戶再點擊“測試”按鈕,移動端向服務(wù)器發(fā)送課程ID,服務(wù)器端返回該門課程的測試題目,用戶進行測試,測試完畢,點擊“交卷”,移動端對測試卷進行判卷。并給出成績顯示每道題的結(jié)果。4.1.4教室預(yù)約模塊圖4.7教室預(yù)約時序圖圖4.7為教室預(yù)約的時序圖。用戶點擊“教室預(yù)約”按鈕,進行頁面跳轉(zhuǎn),移動端向服務(wù)器發(fā)送獲取教室列表請求,服務(wù)器返回所有相關(guān)的教室信息,用戶點擊某個可預(yù)約的教室,移動端進行頁面跳轉(zhuǎn),顯示預(yù)約界面,用戶填寫預(yù)約周次和星期,點擊“節(jié)次”按鈕,服務(wù)器將教室ID,預(yù)約周次和星期發(fā)送給服務(wù)器端,服務(wù)器進行判沖,選出可以預(yù)約的時間段,返回給移動端,用戶選擇合適的時間段,再填寫好所有的預(yù)約信息,點擊“提交”按鈕,移動端將教室ID以及相關(guān)預(yù)約信息發(fā)送給服務(wù)器端,服務(wù)器進行數(shù)據(jù)處理,返回給移動端預(yù)約成功或失敗的信息,移動端高職用戶,并且自動刷新教室列表頁面。4.1.5我的日程模塊圖4.8創(chuàng)建日程,修改日程,刪除日程時序圖圖4.8為用戶管理日程的時序圖。用戶點擊“我的日程”按鈕,移動端進行頁面跳轉(zhuǎn),顯示日程列表,用戶點擊“創(chuàng)建日程”按鈕,移動端彈出日程創(chuàng)建對話框,用戶填寫相關(guān)信息,提交,移動端將日程數(shù)據(jù)保存到移動端本地數(shù)據(jù)庫,并且刷新日程列表。用戶點擊某個日程,移動端彈出帶有該日程相關(guān)信息的對話框,用戶修改日程信息,提交,移動端將日程數(shù)據(jù)保存到移動端本地數(shù)據(jù)庫,并且刷新日程列表。用戶長按某個日程,移動端彈出對話框,詢問用戶是否刪除該日程,用戶點擊“確定”后,移動端將該日程數(shù)據(jù)從移動端本地數(shù)據(jù)庫刪除,并且刷新日程列表。4.1.6我的班級模塊圖4.9查看班級成員時序圖圖4.9為查看班級成員的時序圖。用戶點擊“我的班級”按鈕,進行頁面跳轉(zhuǎn),移動端自動將保存在本地用戶的ID發(fā)送給服務(wù)器,服務(wù)器根據(jù)用戶ID將用戶所在班級的相關(guān)信息發(fā)送給移動端,用戶再點擊“班級成員”按鈕,移動端進行頁面跳轉(zhuǎn),顯示班級成員列表。圖4.10查看班級公告時序圖圖4.10為查看班級公告的時序圖。用戶點擊“我的班級”按鈕,進行頁面跳轉(zhuǎn),移動端自動將保存在本地用戶的ID發(fā)送給服務(wù)器,服務(wù)器根據(jù)用戶ID將用戶所在班級的相關(guān)信息發(fā)送給移動端,移動端顯示班級公告列表,用戶再點擊某個公告,移動端將該公告ID發(fā)送給服務(wù)器端,服務(wù)器返回該公告相關(guān)信息。圖4.11創(chuàng)建班級公告時序圖圖4.11為創(chuàng)建班級公告的時序圖。用戶點擊“我的班級”按鈕,進行頁面跳轉(zhuǎn),移動端自動將保存在本地用戶的ID發(fā)送給服務(wù)器,服務(wù)器根據(jù)用戶ID將用戶所在班級的相關(guān)信息發(fā)送給移動端,移動端顯示班級公告列表,用戶點擊“創(chuàng)建公告”按鈕,移動端進行頁面跳轉(zhuǎn),跳到新建公告頁面,用戶填寫公告相關(guān)的信息,提交,移動端發(fā)送新建公告信息給服務(wù)器端,服務(wù)器端進行數(shù)據(jù)處理,返回給移動端創(chuàng)建成功或失敗的信息,移動端告知用戶,并刷新班級公告列表頁面。4.1.7我的成績模塊圖4.12查看我的成績時序圖圖4.12為查看我的成績的時序圖。用戶點擊“我的成績”按鈕,進行頁面跳轉(zhuǎn),移動端自動將保存在本地用戶的ID發(fā)送給服務(wù)器,服務(wù)器根據(jù)用戶ID將用戶的所有課程成績發(fā)送給移動端,移動端展示給用戶。4.2數(shù)據(jù)表結(jié)構(gòu)設(shè)計表4.1Student類表字段名數(shù)據(jù)類型意義stuNumString學(xué)生學(xué)號stuNameString學(xué)生姓名stuSexString學(xué)生性別stuMajorString學(xué)生所在院系stuClassString學(xué)生所在班級stuPhoneString學(xué)生的聯(lián)系電話stuEmailString學(xué)生的郵箱passwordString學(xué)生的密碼Student表用來記錄學(xué)生用戶的相關(guān)信息,stuNum為主鍵,只有在表中有記錄并且輸入正確的賬號密碼的用戶才能登陸系統(tǒng)。表4.2Course類表字段名數(shù)據(jù)類型意義itemNumString課程編號courseNumberString課程號courseNameString課程名稱weekdayString周幾上課start_classint開始節(jié)次end_classint結(jié)束節(jié)次sectionSpanint跨幾節(jié)課classroomString所在教室cnameString任課老師start_weekint開始周次end_weekint結(jié)束周次Course表用來記錄所有課程的相關(guān)信息,itemNum為主鍵。表4.3SchoolWeek類表字段名數(shù)據(jù)類型意義weekDateint日期weekint周次weekdayint星期幾SchoolWeek表用來記錄校歷相關(guān)信息,weekDate為主鍵,以便課表與相對應(yīng)日期的顯示。表4.4LearningCourse類表字段名數(shù)據(jù)類型意義idint課程號titleString課程標(biāo)題cnameString授課教師isOpenint是否開放LearningCourse表用來記錄所有網(wǎng)上學(xué)習(xí)課程的相關(guān)信息,id為主鍵,這里的課程與學(xué)生平時在教室所上的課程沒有關(guān)系,是獨立的部分。表4.5Stu_Cou類表字段名數(shù)據(jù)類型意義stuNumString學(xué)生學(xué)號itemNumString課程編號Stu_Cou表用來記錄學(xué)生選的課程,stuNum為主鍵。ItemNum為外鍵。表4.6LearningChapter類表字段名數(shù)據(jù)類型意義idint章節(jié)號titleString章節(jié)名稱courseIdint課程號LearningChapter表用來記錄所有網(wǎng)上學(xué)習(xí)課程的相關(guān)章節(jié)信息,id為主鍵,courseId為外鍵。表4.7Video類表字段名數(shù)據(jù)類型意義idint視頻浩chapterIdint章節(jié)號titleString視頻名稱videoPathString視頻路徑Video表用來記錄所有網(wǎng)上學(xué)習(xí)課程的相關(guān)視頻信息,id為主鍵,chapterId為外鍵。表4.8QuestionPool類表字段名數(shù)據(jù)類型意義idint題庫號titleString題庫名稱courseIdint課程號QuestionPool表用來記錄網(wǎng)上學(xué)習(xí)課程的題庫信息,id為主鍵,courseId為外鍵。表4.9Question類表字段名數(shù)據(jù)類型意義idint題目號descriptionString題干textList<String>選項answerList<int>答案,1為正確答案,0為錯誤答案typeint題目類型,1為多選,2為單選PoolIdint題庫號QuestionPool表用來記錄所有網(wǎng)上學(xué)習(xí)課程的相關(guān)題庫信息,id為主鍵,courseId為外鍵。表4.10Schedule類表字段名數(shù)據(jù)類型意義idint日程號dateString日期,格式為yyyy-MM-ddtimeString時間,格式為hh:mm-hh:mmcontentString日程內(nèi)容hourFromSelectionint日程開始的小時,從0-24minuteFromSelectionint日程開始的分鐘,從0-60hourToSelectionint日程結(jié)束的小時,從0-24minuteToSelectionint日程結(jié)束的分鐘,從0-60Schedule表用來記錄學(xué)生日程的相關(guān)信息,id為主鍵,courseId為外鍵。表4.11ClassX類表字段名數(shù)據(jù)類型意義idint預(yù)約號weekint周次weekDayint星期幾sectionint節(jié)次,從1到13contentString預(yù)約內(nèi)容studentString預(yù)約學(xué)生psString備注ClassX表用來記錄教室預(yù)約的相關(guān)信息,id為主鍵,ClassX中的X表示教室,一個教室對應(yīng)著一張表格。表4.12Announcement類表字段名數(shù)據(jù)類型意義idint公告號titleString公告標(biāo)題timeString公告創(chuàng)建時間sponsorString公告創(chuàng)建者contentString公告內(nèi)容classString公告所在班級Announcement表用來記錄所有公告的相關(guān)信息,id為主鍵。表4.13Grade類表字段名數(shù)據(jù)類型意義idint成績號stuNumint學(xué)生學(xué)號courseIdint課程號gradeint成績Grade表用來記錄所有學(xué)生課程成績的相關(guān)信息,id為主鍵,stuNum,courseId為外鍵。

4.3數(shù)據(jù)E-R圖圖4.1E-R圖圖4.1為該應(yīng)用的E-R圖,以學(xué)生為中心,每個學(xué)生屬于一個班級,每個班級有許多公告,屬于該班級的學(xué)生可以查看本班級的公告;學(xué)生選擇不同的課程,每一門課程都有對應(yīng)的成績;學(xué)生可以管理自己的日程;學(xué)生還可以進行網(wǎng)上學(xué)習(xí),每門課程都有許多章節(jié),每個章節(jié)有對應(yīng)的視頻,每門課程還有對應(yīng)的題庫,題庫里有對應(yīng)的題目,供學(xué)生在線練習(xí)和測試。

5編碼實現(xiàn)5.1編碼風(fēng)格(1)變量命名方式駱駝式命名法(Camel-Case),例如weekNames,mFreshLayout。靜態(tài)變量用大寫。(2)注釋每個類的前端都使用Javadoc標(biāo)準(zhǔn)注釋,寫明每個類的用途。每個變量都在定義時注釋它的意義。每個方法都在定義是注釋它的用途。(3)屬性定義所有屬性應(yīng)定義在文件的開始處,或者定義在使用它的方法的上面。(4)限制行的長度每行字符的個數(shù)不超過80個,保證查看和復(fù)制代碼的便捷性。(5)大括號左括號不換行。(6)類的劃分所有類按功能模塊劃分,公共的類放在Common包內(nèi)。5.2代碼實現(xiàn)5.2.1登錄與登出創(chuàng)建一個線程,使用HTTP協(xié)議,通過URL,將賬號密碼作為參數(shù)傳給服務(wù)器,再通過handler處理從服務(wù)器返回的數(shù)據(jù),判斷賬號密碼是否匹配成功,若匹配成功,則登錄應(yīng)用,跳轉(zhuǎn)到主頁面,并將賬號密碼保存到sharedpreference,保存在移動應(yīng)用本地。

//將賬號密碼發(fā)送給服務(wù)器Stringcontent="username="+userNameValue;

content+="&&password="+passwordValue;//作為get方法的參數(shù)

try{

URLurl=newURL(PATH+"?"+content);

getConnection(url,handlerForLogin);//getConnection是封裝好的利用http協(xié)議連接服務(wù)器的方法

}catch(MalformedURLExceptione){

e.printStackTrace();

}//處理服務(wù)器返回的數(shù)據(jù)publicHandlerhandlerForLogin=newHandler(){

publicvoidhandleMessage(Messagemsg){

Stringresponse=msg.obj.toString();

//0表示沒有這個賬號,2表示密碼錯誤,1表示登陸成功

intresult=0;

try{

JSONObjectjsonObject=newJSONObject(response.toString());

result=jsonObject.getInt("success");

}catch(JSONExceptione){

//TODO自動生成的catch塊

e.printStackTrace();

}

if(result==1){

//登錄成功才保存用戶信息

SharedPreferences.Editoreditor=sp.edit();

editor.putString("USER_NAME",userNameValue);

editor.putString("PASSWORD",passwordValue);

mit();

//登錄成功,轉(zhuǎn)到主頁面

Intentintent=newIntent(Login.this,MainActivity.class);

startActivity(intent);

finish();

} //省略別的狀態(tài)

}

};5.2.2我的課表模塊移動端通過http協(xié)議,發(fā)送給服務(wù)器學(xué)生的學(xué)號,服務(wù)器返回該學(xué)生選擇的所有課程,將所有課程分為周一至周天七個列表,根據(jù)當(dāng)前日期和校歷,匹配出當(dāng)前的周次,選取該周次的課程,利用自定義的TextView繪出課程。//獲取課程表的信息,并且按照周一,周二,周三。。。的順序存放privatestaticList<CourseModel>[]getCourseData(List<CourseModel>list){

List<CourseModel>courseModels[]=newArrayList[7];

for(inti=0;i<courseModels.length;i++){

courseModels[i]=newArrayList<>();

}

List<CourseModel>models_1=newArrayList<>();

//重復(fù)周二到周天的list

for(inti=0;i<list.size();i++){

if(list.get(i).getWeekday()==1){

models_1.add(newCourseModel(list.get(i).getCourseCodeId(),list.get(i).getItemName(),list.get(i).getStart_class(),list.get(i).getEnd_class(),list.get(i).getWeekday(),list.get(i).getLabRoomName(),list.get(i).getStart_week(),list.get(i).getEnd_week(),list.get(i).getCname(),(int)(Math.random()*10)));

}//重復(fù)周二到周天的list

}

courseModels[0].addAll(models_1);

//重復(fù)周二到周天的list

returncourseModels;

}//初始化課程表格

publicvoidinitWeekPanel(LinearLayoutll,List<CourseModel>data){

//沒有數(shù)據(jù)時,返回

if(ll==null||data==null||data.size()<1)

return;

CourseModelfirstCourse=null;

for(inti=0;i<data.size();i++){

finalCourseModelcourseModel=data.get(i);

if(courseModel.getStart_class()==0||courseModel.getSectionSpan()==0)

return;

//匹配校歷

if(courseModel.getStart_week()<=weekOfSchool&&courseModel.getEnd_week()>=weekOfSchool){

FrameLayoutframeLayout=newFrameLayout(this);

CornerTextViewtv=newCornerTextView(this,

getCourseBgColor(courseModel.getCourseFlag()),

dip2px(this,3));

//省略CornerTextView的參數(shù)設(shè)置

if(i==k){

frameLp.setMargins(0,(courseModel.getStart_class()-1)*itemHeight,0,0);

}else{

frameLp.setMargins(0,(courseModel.getStart_class()-1-firstCourse.getEnd_class())*itemHeight,0,0);

}

}

}5.2.3我的學(xué)習(xí)模塊視頻播放:導(dǎo)入第三方開源庫vitamio。if(!LibsChecker.checkVitamioLibs(this))

return;

//設(shè)置全屏

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);

setContentView(R.layout.activity_video_view);

mVideoPath=VIDEO_PATH;//初始化播放控件

initviews();//初始化控制欄

initController();//初始化視頻設(shè)置

initVideoSettings();//初始化播放器privatevoidpreparePlayVideo(){

startLoadingAnimator();

mVideoView.setOnPreparedListener(newMediaPlayer.OnPreparedListener(){

@Override

publicvoidonPrepared(MediaPlayermediaPlayer){

//TODOAuto-generatedmethodstub

stopLoadingAnimator();

if(currentPosition>0){

mVideoView.seekTo(currentPosition);

}else{

mediaPlayer.setPlaybackSpeed(1.0f);

}

startPlay();

}

});

}答題界面:自定義viewPager,并設(shè)計出自定義的questionAdapter。//答題界面

questionAdapter=newQuestionAdapter(LearningOfQuest.this,viewItems,listOfQuestionForQuest);

viewPagerForQuest.setAdapter(questionAdapter);

viewPagerForQuest.getParent().requestDisallowInterceptTouchEvent(false);倒計時功能:自定義TextView,并創(chuàng)建線程,每隔一秒刷新TextView的內(nèi)容,達到倒計時效果。//倒計時功能,自定義TextView@Override

publicvoidrun(){

//標(biāo)示已經(jīng)啟動

if(mHour==0&&mMin==0&&mSecond==0){

DialogalertDialog=newAlertDialog.Builder(LearningOfTest.mactivity).

setTitle("時間到,自動交卷").

setPositiveButton("確定",newDialogInterface.OnClickListener(){

@Override

publicvoidonClick(DialogInterfacedialog,intwhich){

//省略跳轉(zhuǎn)頁面代碼}

}).create();

alertDialog.show();

//停止線程

removeCallbacks(this);

}

else{

if(run){

ComputeTime();

//省略設(shè)置時間 //每秒刷新一次時間postDelayed(this,1000);

}else{

removeCallbacks(this);

}

}

}5.2.4教室預(yù)約模塊利用http協(xié)議,從服務(wù)器獲取教室列表,選中教室,點擊按鈕,在dialog中選擇合適的周次和日期,發(fā)送給服務(wù)器,服務(wù)器返回可供選擇的時間段,再填寫相關(guān)信息,發(fā)送給服務(wù)器,服務(wù)器返回是否預(yù)約成功,并且刷新教室列表。選擇日期:創(chuàng)建單選以及多選的dialog,供用戶選擇(以選擇日期為例)。weekDay=(Button)findViewById(R.id.btnChooseWeekDay);

weekDay.setOnClickListener(newView.OnClickListener(){

@Override

publicvoidonClick(Viewv){

//用于標(biāo)記選中哪一天

finalint[]choose={0};

//默認(rèn)顯示是周一

if(mWeekDay==0){

choose[0]=1;

}

else{

choose[0]=mWeekDay;

}

//選項顯示數(shù)組

finalString[]arrayWeekDay=newString[]{"星期一","星期二","星期三","星期四","星期五","星期六","星期天"};

//創(chuàng)建選項框

alertDialogForWeekDay=newAlertDialog.Builder(OrderRoom.this)

.setTitle("請選擇星期")

.setSingleChoiceItems(arrayWeekDay,(choose[0]-1),newDialogInterface.OnClickListener(){

@Override

publicvoidonClick(DialogInterfacedialog,intwhich){

choose[0]=which+1;

mWeekDay=choose[0];

weekDay.setText(arrayWeekDay[mWeekDay-1]);

isChooseWeekDay=1;

}

}).create();

alertDialogForWeekDay.show();

}

});5.2.5我的日程模塊自定義wheelview,結(jié)合自定義的dialog,創(chuàng)建日程。自定義MyDatabaseHelper繼承SQLiteOpenHelper,獲取當(dāng)前日期,或者選中日期,利用MyDatabaseHelper將創(chuàng)建的日程信息和日期保存在SQLite中,查看某一天的日程,只要讀取SQLite中的信息即可,刪除日程只要刪除記錄即可。addShedule=(Button)findViewById(R.id.btnAddSchedule);

addShedule.setOnClickListener(newView.OnClickListener(){

@Override

publicvoidonClick(Viewv){

TimeChooseDialog.Builderbuilder=newTimeChooseDialog.Builder(MySchedule.this);

builder.setPositiveButton("確定",newDialogInterface.OnClickListener(){

publicvoidonClick(DialogInterfacedialog,intwhich){

dialog.dismiss();

ContentValuesvalues=newContentValues();

Stringtime=TimeToStandard(hourFromSelection)+":"+TimeToStandard(minuteFromSelection)+"-"+TimeToStandard(hourToSelection)+":"+TimeToStandard(minuteToSelection);

values.put("date",chooseDate); //。。。。。。省略其他參數(shù)的保存 //保存到數(shù)據(jù)庫

SQLiteDatabasedb=dbHelper.getWritableDatabase();

db.insert("Schedule",null,values);

//刷新頁面

refreshTheList();

}

});

builder.setNegativeButton("取消",

newandroid.content.DialogInterface.OnClickListener(){

publicvoidonClick(DialogInterfacedialog,intwhich){

dialog.dismiss();

}

});

builder.create(0,0,0,0,"",myListener).show();//傳入需要獲得的數(shù)據(jù)

}

});5.2.6我的班級模塊移動端通過http協(xié)議,發(fā)送給服務(wù)器學(xué)生的學(xué)號,服務(wù)器返回該學(xué)生所在班級的公告列表,以及該班級學(xué)生的相關(guān)信息。學(xué)生點擊公告,將公告ID發(fā)送給服務(wù)器,服務(wù)器返回公告的相關(guān)信息。創(chuàng)建公告時,學(xué)生填寫公告標(biāo)題和內(nèi)容,自動生成創(chuàng)建時間,發(fā)送給服務(wù)器,服務(wù)器返回是否成功。5.2.7我的成績模塊移動端通過http協(xié)議,發(fā)送給服務(wù)器學(xué)生的學(xué)號,服務(wù)器返回該學(xué)生所有課程的成績通過listview和自定義的adapter顯示出來。5.3功能實現(xiàn)5.3.1登錄和登出圖5.1登錄界面圖5.2主頁面(首頁)圖5.3個人頁用戶第一次打開移動應(yīng)用,首先進入登錄界面,如圖5.1所示,輸入正確的賬號密碼,點擊“登錄”按鈕,移動端和服務(wù)器進行數(shù)據(jù)交互,傳送賬號密碼,在數(shù)據(jù)庫中進行匹配,若匹配正確,則登陸成功,進入主頁面,如圖5.2所示,之后可進行相關(guān)功能的操作。用戶點擊主頁面最底部的導(dǎo)航欄中的“首頁”和“個人”按鈕,可進入到不同的頁面。主頁是六個功能的按鈕,點擊可進入各個功能的頁面,如圖5.3所示,個人頁面會顯示用戶的個人信息,個人頁面的底端有“退出登錄”按鈕,點擊會彈出提示框,確認(rèn)退出后即可退出登錄。用戶登錄應(yīng)用后,賬號密碼會自動保存在移動應(yīng)用中,下次打開應(yīng)用時會自動登錄,進行退出登錄操作后,賬號密碼會自動刪除。5.3.2我的課表模塊圖5.4課表頁面圖5.5課程詳細信息圖5.4,5.5為課程表頁面,用戶點擊首頁“我的課表”按鈕,即可進入我的課表頁面,查看當(dāng)前周次的課表。頂部會顯示當(dāng)前周次,下方是一周的標(biāo)題,當(dāng)天會用紅色標(biāo)出,左邊是節(jié)次,一天共有13節(jié),可下滑頁面查看完整信息,主體是課程表,不同的課程用不同的顏色標(biāo)出,顯示課程的名稱和所在教室。點擊相應(yīng)的課程,會顯示該門課程的相關(guān)信息。點擊“返回”按鈕即可返回主頁。5.3.3我的學(xué)習(xí)模塊圖5.6課程列表頁面圖5.7視頻列表頁面圖5.8最新視頻列表圖5.9選擇章節(jié)對話框用戶點擊首頁“我的學(xué)習(xí)”按鈕,即可進入我的學(xué)習(xí)頁面,如圖5.6所示,查看當(dāng)前所有在線學(xué)習(xí)的課程,點擊可供開發(fā)的課程,即可跳轉(zhuǎn)到學(xué)習(xí)頁面,如圖5.7所示,同時也是視頻列表頁面,該頁面會顯示該門課程所有的視頻,選中“最新”選擇框,即可查看最新更新的視頻,如圖5.8所示,點擊“選擇章節(jié)”按鈕,彈出選擇章節(jié)對話框,如圖5.9所示,用戶選中某一章節(jié),列表僅顯示該章節(jié)的視頻。點擊“返回”按鈕即可返回主頁或回退到上一個頁面。圖5.10視頻加載頁面圖5.11視頻播放(控制)頁面用戶點擊視頻,即可進入視頻播放頁面,如圖5.10所示,進行一段時間的加載,即可觀看視頻,視頻自動轉(zhuǎn)換為橫屏模式。單擊屏幕,即可調(diào)換出底部控制欄,如圖5.11所示,可暫停/播放視頻,點擊“快進/后退”按鈕調(diào)節(jié)進度,也可移動進度條控制播放的進度,點擊“屏幕”按鈕可切換屏幕的大小,點擊“截圖”按鈕進行截圖,在視頻左部上下滑動可調(diào)節(jié)視頻亮度,在視頻右部上下滑動可調(diào)節(jié)視頻的聲音。點擊“返回”按鈕即可返回主頁或回退到上一個頁面。圖5.12題庫目錄圖5.13答題頁面圖5.14答案判斷頁面圖5.15題目目錄對話框用戶點擊“練習(xí)”按鈕即可進入題庫列表頁面,如圖5.12所示,選擇其中一個題庫,進入練習(xí)頁面每道題有題目和選項,分為單選題或者多選題,如圖5.13所示,進行選擇后,點擊“確定”按鈕,即可查看正確選項,如圖5.14所示,否則會彈出提示框,提醒選擇后再進行判題。底部的菜單欄可以選擇上一題/下一題,到達第一題/最后一題則會彈出提示框。中間的目錄欄會顯示答題的進度,點擊會彈出題目目錄,如圖5.15所示,做過的題顏色加深,點擊題目可以跳轉(zhuǎn)到對應(yīng)的題目。點擊“返回”按鈕即可返回主頁或回退到上一個頁面。圖5.16測試提示框圖5.17測試頁面圖5.18測試結(jié)果頁面用戶點擊“測試”按鈕,彈出提示框,如圖5.16所示,點擊確定即可進入測試頁面,如圖5.17所示,測試頁面左上角有計時功能,時間結(jié)束自動交卷,少于指定時間倒計時顏色變紅,用于提醒。底部的菜單欄可以選擇上一題/下一題,到達第一題/最后一題則會彈出提示框。中間的目錄欄會顯示答題的進度,點擊會彈出題目目錄,做過的題顏色加深,點擊題目可以跳轉(zhuǎn)到對應(yīng)的題目。做到最后一題會出現(xiàn)交卷按鈕,點擊“交卷”即可交卷,立即進行判卷,跳轉(zhuǎn)到測試結(jié)果頁面,如圖5.18所示,顯示每道題的答題情況和得分,并顯示最終成績。點擊“返回”按鈕即可返回主頁或回退到上一個頁面。5.3.4教室預(yù)約模塊圖5.19教室列表頁面圖5.20教室預(yù)約頁面圖5.21選擇星期對話框圖5.22預(yù)約成功提醒用戶點擊“教室預(yù)約”按鈕,即可進入教室列表頁面,如圖5.19所示,查看所有教室的預(yù)約信息,點擊可預(yù)約的教室,即可進入教室預(yù)約頁面,如圖5.20所示。周次,星期,節(jié)次,都是選擇操作,用戶單擊按鈕,即可彈出相應(yīng)對話框,如圖5.21所示,選擇合適的時間段,再填寫預(yù)約相關(guān)內(nèi)容,點擊“清空”按鈕即可清空所有的信息,點擊“提交”按鈕即可提交預(yù)約申請。申請成功后會立即返回“預(yù)約成功”的提醒,退出預(yù)約頁面,如圖5.22所示,教室列表頁面即時刷新,失敗也會返回“預(yù)約失敗”的信息。點擊“返回”按鈕即可返回主頁或回退到上一個頁面。5.3.5我的日程模塊圖5.23空白日程列表圖5.24添加日程對話框圖5.25日程列表圖5.26預(yù)約成功提醒用戶點擊“我的日程”按鈕,即可進入日程列表頁面,如圖5.23所示,頂部是一周的標(biāo)題欄,顯示對應(yīng)的日期,采用國際日期的形式,底部三個按鈕可切換不同的周次,查看對應(yīng)的日程。點擊“添加”按鈕,彈出新建日程的對話框,如圖5.24所示,滑動選擇日程的開始和結(jié)束時間,填寫內(nèi)容,點擊“確定”按鈕,即可添加日程,如圖5.25所示。單擊日程彈出對話框,對日程進行修改,長按彈出提示欄,點擊確定刪除日程。點擊右上角日歷按鈕,即可跳轉(zhuǎn)到日歷頁面,如圖5.26所示,點擊某一天,即可自動跳轉(zhuǎn)到當(dāng)天的日程列表頁面。點擊“返回”按鈕即可返回主頁或回退到上一個頁面。5.3.6我的班級模塊圖5.27公告列表頁面圖5.28公告詳細信息圖5.29新建公告頁面圖5.30班級成員列表用戶點擊首頁“我的班級”按鈕,即可進入我的班級頁面,如圖5.27所示,查看當(dāng)前的班級公告列表,點擊某個公告,即可跳轉(zhuǎn)到對應(yīng)公告的詳細頁面,如圖5.28所示,可以看到公告的詳細信息。點擊公告列表頁面的“添加公告”按鈕,即可進入新增公告頁面,如圖5.29所示,可輸入公告的標(biāo)題和內(nèi)容,發(fā)布人和發(fā)布者自動生成。點擊“清空”按鈕清空所有輸入數(shù)據(jù),點擊“提交”按鈕即可新建公告。點擊我的班級頁面上端的“班級成員”按鈕,如圖5.30所示,可查看班級成員的相關(guān)信息。點擊“返回”按鈕即可返回主頁或回退到上一個頁面。5.3.7我的成績模塊圖5.31我的成績列表頁面成績班級頁面,查看班級公告列表,點擊某個公告,查看課程成績的相關(guān)信息,如圖5.31所示。點擊“返回”按鈕即可返回主頁。

6測試與分析軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。在項目開發(fā)正式完成之前,軟件測試是必須經(jīng)歷的環(huán)節(jié),它能發(fā)現(xiàn)軟件潛在的錯誤,從而提高軟件的質(zhì)量。該項目的測試主要采用黑盒測試,按照需求分析里的對項目的功能和性能要求進行測試。測試參與人員用的測試機是自己的手機,都是在Android4.1版本以上系統(tǒng)的基礎(chǔ)上,在規(guī)定時間和情況下,對該應(yīng)用進行了測試。6.1功能測試登錄和登出表6.1登錄與登出功能測試表功能操作是否成功輸入錯誤的賬號密碼不能登錄應(yīng)用,并且有相對應(yīng)的提示是輸入正確的賬號密碼能成功登錄應(yīng)用,并且提示“登陸成功”是退出應(yīng)用后,下次打開應(yīng)用能夠自動登錄是點擊“退出登錄”按鈕,能成功退出應(yīng)用,并返回到登錄頁面,之前登錄的賬號密碼成功刪除是查看個人信息表6.2查看個人信息功能測試表功能操作是否成功能正確顯示用戶的相關(guān)信息是查看我的課表表6.3查看我的課表功能測試表功能操作是否成功能根據(jù)校歷正確顯示當(dāng)前的周次是能正確顯示當(dāng)前周次的所有課程是點擊某個課程,能正確顯示該門課程的相關(guān)信息,如所在教室,授課教師是在線學(xué)習(xí)表6.4在線學(xué)習(xí)功能測試表功能操作是否成功正確獲取所有可供在線學(xué)習(xí)的課程列表是點擊不開放的課程不進行頁面跳轉(zhuǎn),無更多操作是點擊開放的課程,能進行頁面跳轉(zhuǎn),成功顯示該門課程的所有章節(jié)和視頻列表是點擊“選擇章節(jié)”按鈕,能成功彈出章節(jié)列表的選擇框,進行選擇后,視頻列表僅顯示對應(yīng)章節(jié)的視頻是點擊“全部章節(jié)”按鈕可顯示全部視頻列表是選中“最新”選擇框,僅顯示最新的視頻是點擊“練習(xí)”按鈕,成功跳轉(zhuǎn)到課程對應(yīng)的的題庫列表是點擊某個題庫,成功跳轉(zhuǎn)到答題頁面是答題后,點擊“確定”按鈕,成功進行判題是點擊上一題/下一題,成功進行題目跳轉(zhuǎn)是到達第一題/最后一題,點擊上一題/下一題成功彈出提示是點擊目錄,成功顯示已答題目和未答題目,點擊題號成功進行跳轉(zhuǎn)是點擊“測試”按鈕成功彈出提示框是成功進入測試頁面,能進行答題是倒計時功能成功顯示是點擊答題能成功交卷是倒計時結(jié)束能成功交卷是交卷后能對答案進行判卷,并給出成績是教室預(yù)約表6.5教室預(yù)約功能測試表功能操作是否成功能正確顯示所有教室列表是點擊預(yù)約滿額的教室不進行頁面跳轉(zhuǎn),無更多操作是點擊可預(yù)約的教室,成功進行頁面跳轉(zhuǎn)是點擊“周次選擇”按鈕,成功彈出選擇周次對話框是選擇周次后對話框消失,預(yù)約頁面上顯示選擇的周次是點擊“日期選擇”按鈕,成功彈出選擇日期對話框是選擇日期后對話框消失,預(yù)約頁面上顯示選擇的日期是點擊“節(jié)次選擇”按鈕,成功彈出選擇可供選擇的節(jié)次對話框是選擇節(jié)次后對話框消失,預(yù)約頁面上顯示選擇的節(jié)次是可填寫預(yù)約的相關(guān)信息是 續(xù)表6.5功能操作是否成功點擊“清空”按鈕,所有信息清空是點擊“提交”按鈕,能預(yù)約成功是預(yù)約成功/失敗后,返回信息告訴用戶是預(yù)約后,教室列表頁面自動刷新是我的日程表6.6我的日程功能測試表功能操作是否成功進入日歷主頁面,能正確顯示的當(dāng)前周次日期是點擊“添加”按鈕,能成功彈出日期選擇對話框是能夠滑動選擇日程的時間段是能夠填寫日程內(nèi)容是點擊“確定”能成功創(chuàng)建日程是點擊日程能彈出修改日程對話框是修改日程后,能成功保存是長按日程能夠成功刪除日程是點擊上一周/下一周/本周按鈕,能成功跳轉(zhuǎn)到對應(yīng)周次是點擊“日歷”按鈕,能成功顯示日歷是選中日歷中的某一天,能成功跳轉(zhuǎn)到那一天的日程是日程信息能成功保存在本地數(shù)據(jù)庫中是查看成績表6.7查看成績功能測試表功能操作是否成功能正確顯示用戶所有課程的相關(guān)成績是(8)我的班級表6.8我的班級功能測試表功能操作是否成功能成功顯示用戶所在班級的班級公告是點擊某個公告能成功跳轉(zhuǎn)到該公告的詳細信息頁面是點擊“新增公告”按鈕,能成功跳轉(zhuǎn)到新增公告頁面是能成功填寫公告的標(biāo)題和內(nèi)容是 續(xù)表6.8功能操作是否成功點擊“清空”按鈕能成功清空信息是點擊“提交”

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論