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

下載本文檔

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

文檔簡介

大連理工大學(xué)畢業(yè)設(shè)計(論文)格式規(guī)范

-

I

-

摘要

移動應(yīng)用已經(jīng)成為人們生活必不可缺的一部分,大學(xué)生身為移動應(yīng)用的最大用戶群體,在生活學(xué)習(xí)娛樂各個方面都與移動應(yīng)用有著緊密聯(lián)系,然而針對大學(xué)生校園學(xué)習(xí)的移動應(yīng)用卻寥寥無幾,因為不同的學(xué)校,甚至不同的院系,都有著自己獨(dú)特的情況。

該項目借鑒了現(xiàn)有的一些和學(xué)習(xí)相關(guān)的移動應(yīng)用,結(jié)合軟件學(xué)院的特點(diǎn),針對軟件學(xué)院的學(xué)生,提供了學(xué)生日常學(xué)習(xí)生活常用的一些功能。主要分為我的課表,我的日程,我的學(xué)習(xí),教室預(yù)約,我的班級和我的成績六個主要模塊,給學(xué)生用戶提供課表,學(xué)校公告,課程成績等相關(guān)信息,用戶還可以自定義自己的日程,也可以進(jìn)行在線的學(xué)習(xí)。

該項目最重要的移動端采用Android開發(fā),用AndroidStudio作為移動端的開發(fā)工具。

在服務(wù)器端和數(shù)據(jù)庫方面,采用Node.js結(jié)合MongoDB,直接將自己的電腦模擬成服務(wù)器,因為數(shù)據(jù)較為簡單,所以采用以便于HTTP協(xié)議傳輸?shù)膉son格式儲存數(shù)據(jù)的MongoDB作為數(shù)據(jù)庫。

最終該項目經(jīng)過功能和性能的測試,基本實現(xiàn)各個功能模塊,成功實現(xiàn)服務(wù)器和移動端的數(shù)據(jù)交互。

關(guān)鍵詞:移動應(yīng)用;Android;MongoDB

基于Android的教學(xué)課程系統(tǒng)設(shè)計與開發(fā)

-

IV

-

DesignanddevelopmentofcampusmobileapplicationbasedonAndroid

Abstract

Themobileapplicationhasbecomepartofpeople'slife,andcollegestudentsasthelargestgroupofusersofmobileapplications,havecloseconnectionwithmobileapplicationsinlearning,entertainment,andlife.However,therearefewmobileapplicationsaimedatcollegestudents,becausedifferentschools,andevendifferentdepartments,havetheirownuniquesituation.

Theprojectlearningfromsomemobileapplicationsrelatedtolearning,combingwiththecharacteristicsofthesoftwareinstitute,aimedtostudentsinsoftwareinstitute,providesstudentssomeofthefunctionswhichtheymayusuallyuseintheirdailylearningandlife.Andtheprojectmainlydividedintosixmainmodules,mycourse-table,myschedule,mystudy,classroomreservation,myclassandmygrades.Andtotoprovidestudentswiththecurriculum,theschoolbulletin,gradesandotherinformation.Studentscanalsocustomizetheirownschedules,andcanalsostudy

on

the

Internet.

ThemostimportantmobileendoftheprojectisdevelopedbyAndroid,andthedevelopmenttoolusingAndroidStudioasthemobileterminalisadopted.

Attheendoftheserverandthedatabase,usingNode.jscombinedwithMongoDB,directlyusethecomputerintotheserver.Becausethedataisrelativelysimple,MongoDBisusedasthedatabaseforstoringdataintheJSONformatthatfacilitatesthetransmissionofHTTPprotocols.

Finally,thefunctionandperformanceoftheprojectistested,thebasicfunctionmodulesareimplemented,andthedataexchangebetweentheserverandthemobileterminalissuccessfullyrealized.

KeyWords:Mobileapplications;Android;MongoDB

目錄

16961

摘要

III

15235

引言

1

1408

1緒論

2

24986

1.1開發(fā)背景和目的

2

23689

1.2開發(fā)環(huán)境 2

17843

1.2.1移動端

2

9542

1.2.2服務(wù)器

4

31374

1.2.3數(shù)據(jù)庫

4

3873

2可行性研究

5

6469

3需求分析

6

14447

3.1功能需求分析

6

28765

3.2非功能需求分析

6

21760

3.2.1性能分析

6

23487

3.2.2易用性分析

7

23485

3.2.3安全性分析

8

18561

3.2.4可維護(hù)性分析

8

32686

3.2.5界面分析

8

22188

3.3用例分析

9

14447

3.4參考系統(tǒng) 1

0

15694

4詳細(xì)設(shè)計

10

25347

4.1功能模塊設(shè)計析

14

20419

4.1.1登錄和登出

14

28630

4.1.2我的課表模塊

15

7384

4.1.3我的學(xué)習(xí)模塊

16

13756

4.1.4教室預(yù)約模塊

19

10518

4.1.5我的日程模塊

20

15066

4.1.6我的班級模塊

20

5255

4.1.7我的成績模塊

23

9027

4.2數(shù)據(jù)設(shè)計

23

9027

4.3數(shù)據(jù)E-R圖

23

11384

5編碼實現(xiàn)

29

22335

5.1編碼風(fēng)格

29

7589

5.2功能模塊實現(xiàn)

29

14128

5.2.1登錄與登出

29

8582

5.2.2我的課表模塊

30

1551

5.2.3我的學(xué)習(xí)模塊

31

21638

5.2.4教室預(yù)約模塊

32

218

5.2.5我的日程模塊

33

20707

5.2.6我的班級模塊

34

19757

5.2.7我的成績模塊

34

4308

5.2功能模塊實現(xiàn)

34

25408

5.2.1登錄和登出

34

32520

5.2.2我的課表模塊

35

28921

5.2.3我的學(xué)習(xí)模塊

35

4089

5.2.4教室預(yù)約模塊

39

18030

5.2.5我的日程模塊

40

21216

5.2.6我的班級模塊

41

8069

5.2.7我的成績模塊

42

8021

6測試與分析

43

31643

6.1功能測試

43

27867

6.2性能測試

46

31573

6.3分析與展望

46

3051

6.3.1現(xiàn)狀分析

46

15881

6.3.2改進(jìn)與展望

47

29758

設(shè)計總結(jié) 4

4

17251

參考文獻(xiàn)

49

14938

致謝

50

大連理工大學(xué)畢業(yè)設(shè)計(論文)格式規(guī)范

基于Android的教學(xué)課程系統(tǒng)設(shè)計與開發(fā)

-

引言

隨著軟件科技和網(wǎng)絡(luò)技術(shù)的發(fā)展,以及智能手機(jī)的普及,移動應(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)該遵循這樣幾點(diǎn),首先,要做到操作便捷,簡潔大方,交互的步驟越少越好,便于用戶的使用,提高體驗感;其次,要注重信息的即時性和有效性,信息作為移動應(yīng)用最重要的一部分,必須保持“新鮮”;還有,一個移動應(yīng)用應(yīng)該要有效率和集中性,展現(xiàn)給用戶的是最高效和常用的功能,要做到精簡。

Android作為一個開源的開發(fā)軟件,適用性強(qiáng),擴(kuò)展性強(qiáng),其開發(fā)簡單,用JAVA語言即可進(jìn)行開發(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è)計,詳細(xì)設(shè)計等方面,詳細(xì)介紹了一個移動應(yīng)用的開發(fā)過程,盡量做到使APP有較高的針對性和實用性,并非做到完美。

1緒論

1.1開發(fā)背景和目的

隨著軟件科技和網(wǎng)絡(luò)技術(shù)的發(fā)展,以及智能手機(jī)的普及,移動應(yīng)用已經(jīng)成為人們生活必不可缺的一部分。移動應(yīng)用的種類可以說是數(shù)不勝數(shù),幾乎覆蓋所有領(lǐng)域,常見的例如購物,移動支付,聊天社交,影音,游戲,辦公,閱讀,搜索等等。

移動應(yīng)用的開發(fā)也一直是一個熱門的話題,移動應(yīng)用開發(fā)的成本低廉,開發(fā)平臺繁多,開發(fā)的語言也多種多樣。由于手機(jī)的操作系統(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é)校,甚至不同的院系,都有著自己獨(dú)特的情況,所以市面上的校園移動應(yīng)用不能做到真正的有針對性和適用。

為了方便軟件學(xué)院學(xué)生的日常生活和學(xué)習(xí),結(jié)合軟件學(xué)院自身的情況,例如教室外借,通識課爾雅課程的情況,我想設(shè)計出一款移動應(yīng)用,能滿足同學(xué)的需求,為同學(xué)們帶來一些便利,讓同學(xué)們能更輕松地進(jìn)行網(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)功能強(qiáng)大的布局編輯器,可以讓你拖拉UI控件并進(jìn)行效果預(yù)覽

圖1.1,圖1.2是AndroidStudio的開發(fā)界面。

圖1.1AndroidStudio的編程界面

圖1.2AndroidStudio的UI設(shè)計界面

AndroidStudio作為一種Android集成開發(fā)工具,具有許多優(yōu)點(diǎn):

(1)Google針對Android的特點(diǎn)開發(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運(yùn)行環(huán)境(runtime)。實際上它是對GoogleV8引擎進(jìn)行了封裝。V8引擎執(zhí)行Javascript的速度非???,性能非常好。Node.js對一些特殊用例進(jìn)行了優(yōu)化,提供了替代的API,使得V8在非瀏覽器環(huán)境下運(yùn)行得更好。

Node.js是一個基于ChromeJavaScript運(yùn)行時建立的平臺,用于方便地搭建響應(yīng)速度快、易于擴(kuò)展的網(wǎng)絡(luò)應(yīng)用。Node.js使用

事件驅(qū)動

,非阻塞

I/O

模型而得以輕量和高效,非常適合在分布式設(shè)備上運(yùn)行數(shù)據(jù)密集型的實時應(yīng)用。[2]

Nodejs作為一個新興的前端框架,后臺語言,有許多突出的優(yōu)點(diǎn):

(1)它采用RESTfulAPI

(2)它是采用單線程進(jìn)行操作

(3)Node.js可以在維持原來線程正常工作的情況下,不創(chuàng)建額外的線程,對任務(wù)進(jìn)行并發(fā)處理,它通過事件輪詢(eventloop)來實現(xiàn)并發(fā)操作,所以,這一點(diǎn)可以用來避免阻塞操作。

(4)非阻塞IO

(5)V8虛擬機(jī)

(6)事件驅(qū)動

1.2.3數(shù)據(jù)庫

數(shù)據(jù)庫的設(shè)計,采用MongoDB。

MongoDB是一個基于分布式文件存儲的數(shù)據(jù)庫。由

C++

語言編寫。旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(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最大的特點(diǎn)是他支持的查詢語言非常強(qiáng)大,其語法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立

索引

。[3]

MongoDB具有一些優(yōu)勢:

(1)快速,MongoDB擁有適量級內(nèi)存,將數(shù)據(jù)存儲在在物理內(nèi)存中

(2)高擴(kuò)展性

(3)自身的failover機(jī)制

(4)json的存儲格式

2可行性研究

可行性研究是一項確定

建設(shè)項目

前具有決定性意義的工作,它對擬建項目有關(guān)的自然、社會、經(jīng)濟(jì)、技術(shù)等進(jìn)行調(diào)研、分析比較以及預(yù)測建成后的社會經(jīng)濟(jì)效益。在此基礎(chǔ)上,綜合論證

項目建設(shè)

的必要性,財務(wù)的盈利性,經(jīng)濟(jì)上的合理性,技術(shù)上的先進(jìn)性和適應(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)濟(jì)可行性

本項目用AndroidStudio作為移動端的開發(fā),無需開發(fā)花費(fèi),開發(fā)時間短,用自己的電腦作為服務(wù)器,也無需花費(fèi),若想投入真正的實用中,可將學(xué)?;蛘哕浽旱木W(wǎng)站作為服務(wù)器,開發(fā)費(fèi)用較低,利用率高,經(jīng)濟(jì)可行。

(3)操作可行性

本項目界面簡潔大方,功能模塊明確,有較完善的操作和信息的提示機(jī)制,輸入較少,以信息的展示為主,容易操作。

(4)社會可行性

本項目未涉及政治,法律,宗教,道德等問題,為違反相關(guān)規(guī)定。

3需求分析

本章將從功能需求,性能需求,用例三個大方向?qū)υ搼?yīng)用開發(fā)進(jìn)行詳細(xì)分析,并且提出該應(yīng)用應(yīng)該達(dá)到的一些標(biāo)準(zhǔn)。在3.4節(jié)中,舉例了一些現(xiàn)有的基于Android系統(tǒng)的移動應(yīng)用,用于參考借鑒,以便能更好地開發(fā)。

3.1功能需求分析

(1)登錄與登出

用戶輸入正確的賬號密碼后,即可登錄應(yīng)用,進(jìn)行相關(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)課程,進(jìn)入學(xué)習(xí),根據(jù)章節(jié)觀看視頻,可以選擇題庫進(jìn)行習(xí)題練習(xí),每道題做完后都可以查看正確答案,也可進(jìn)行測試,加深知識點(diǎn)的鞏固。

(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)提醒是否確定退出;進(jìn)行無法修改或恢復(fù)的操作時,應(yīng)當(dāng)提醒是否進(jìn)行操作。

(4)功能劃分

應(yīng)用的所有功能應(yīng)該有明確的劃分,不同的模塊針對不同的功能需求,一個模塊最好只突出一個主要功能;各個功能之間要避免交叉重復(fù);避免無用功能。

3.2.3安全性分析

(1)保密性

只有輸入正確賬號密碼的用戶才可登錄應(yīng)用,對應(yīng)用進(jìn)行相關(guān)操作用戶在退出登錄時,保存的賬號密碼應(yīng)及時刪除

(2)完整性

信息的展示,修改和必須保證完整性,以規(guī)定的數(shù)據(jù)格式進(jìn)行數(shù)據(jù)交互

(3)可用性和抗毀性

應(yīng)用備份機(jī)制、容錯機(jī)制,防止在應(yīng)用出現(xiàn)錯誤時,系統(tǒng)的備份機(jī)制保證應(yīng)用的正常運(yùn)行。

3.2.4可維護(hù)性分析

(1)可理解性

命名方式和編碼方式要統(tǒng)一,要有良好的編碼規(guī)范,適當(dāng)添加注釋。

(2)

可測試性

功能模塊化,能進(jìn)行每一個功能的單獨(dú)測試;測試的內(nèi)容越少越好;通過控制測試范圍,能夠更好地分解問題,執(zhí)行更靈巧的再測試;測試對應(yīng)用造成的破壞越小越好,減少改變。

(3)可修改性

采用標(biāo)準(zhǔn)化的文檔資料結(jié)構(gòu),及時記錄開發(fā)過程,采用可維護(hù)的

程序設(shè)計語言

,要有健全程序的文檔。

(4)可靠性

規(guī)定測試時間內(nèi),規(guī)定測試條件下,特定功能應(yīng)該做到能正常使用,平均故障間隔時間(

MTBF

)、

平均修復(fù)時間

(

MTTR

)、可用度都要達(dá)到標(biāo)準(zhǔn)指定要求。

(5)可移植性

應(yīng)用要適用于不同的Android系統(tǒng)手機(jī),能成功安裝,所用功能都應(yīng)該正常使用,界面也必須適應(yīng)不同機(jī)型。

(6)可使用性

應(yīng)用應(yīng)該易于使用,便于操作;數(shù)據(jù)交互步驟要有進(jìn)度提示,具有一定的容錯能力,并且有報錯機(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)用后可進(jìn)行先關(guān)功能的操作,當(dāng)輸入錯誤的賬號密碼時,應(yīng)該有提醒。

登陸應(yīng)用后,主頁面為六個主功能模塊,個人頁面即顯示用戶的相關(guān)信息,也可在該頁面登出。

該應(yīng)用主要分為六個模塊:

進(jìn)入日程模塊

①用戶可以查看自己任意一天的日程

②用戶可以修改任意一天的某一日程

③用戶可以刪除任意一天的某一日程

進(jìn)入課程表模塊

①用戶可以查看自己一周的課程表

進(jìn)入教室預(yù)約模塊

①用戶可以進(jìn)行教室預(yù)約

進(jìn)入在線學(xué)習(xí)模塊

①用戶可以對選擇某一課程的某一章節(jié)進(jìn)行在線觀看視頻

②用戶可以對選擇某一課程進(jìn)行習(xí)題練習(xí)

③用戶可以對選擇某一課程進(jìn)行測試訓(xùn)練

進(jìn)入查看成績模塊

①用戶可以查看自己所有課程的成績

進(jìn)入班級模塊

①用戶可以查看自己所在班級同學(xué)的相關(guān)信息

②用戶可以查看自己班級的公告

③用戶可以添加自己班級的公告

3.4參考系統(tǒng)

參考現(xiàn)有的針對大學(xué)生的移動應(yīng)用,以及大學(xué)生常用的應(yīng)用,能更好地完善需求,制定更好地開發(fā)方向,使移動應(yīng)用的功能更貼近學(xué)生的要求,更符合日常生活,方便學(xué)生的使用。

現(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)用。

元貝駕考的操作較為簡單,對每一科目進(jìn)行選擇,然后選擇相對應(yīng)的題庫即可進(jìn)行練習(xí),每道題做完后可以查看正確答案,并對自己的答案進(jìn)行判斷。

圖3.5元貝駕考應(yīng)用功能頁面

圖3.5為元貝駕考應(yīng)用功能頁面,可以看到,元貝駕考應(yīng)用在習(xí)題這一塊做得比較詳細(xì),分為練習(xí)和模擬測試這兩個模塊,在練習(xí)中又有細(xì)分。

圖3.6網(wǎng)易云公開課視頻播放頁面

圖3.6為網(wǎng)易云公開課視頻播放頁面,每個視頻應(yīng)該結(jié)合目錄,可以根據(jù)章節(jié)選擇。

日程管理

圖3.7點(diǎn)擊操作時間選擇器圖3.8滑動操作時間選擇器

圖3.7,圖3.8為時間選擇器,可以看出,在日程管理這一模塊中,對比傳統(tǒng)的點(diǎn)擊操作時間選擇器,滑動操作時間選擇器的操作更為簡單快捷,現(xiàn)有的新興的移動應(yīng)用大多都選擇滑動操作時間選擇器,這一點(diǎn)在日程創(chuàng)建和管理上可以提供很好的幫助。

圖3.9日程表結(jié)合日歷

圖3.9為日程表,一般的日程表都會結(jié)合日歷,方便查看,不過在校大學(xué)生的日程多以一周為單位,在設(shè)計的時候要考慮到這一點(diǎn),也要適當(dāng)結(jié)合日歷。

4詳細(xì)設(shè)計

4.1功能模塊設(shè)計析

詳細(xì)設(shè)計是

軟件工程

中軟件開發(fā)前期的一個重要步驟,在

詳細(xì)設(shè)計

階段,主要是根據(jù)需求分析,設(shè)計出滿足用戶需求的應(yīng)用功能。良好的詳細(xì)設(shè)計是成功的軟件開發(fā)的必要保障,并且在這一階段必須花費(fèi)一定的時間和精力,保證設(shè)計的質(zhì)量。

這一章節(jié),將對該移動應(yīng)用進(jìn)行詳細(xì)的設(shè)計,從時序圖出發(fā),詳細(xì)介紹每個模塊中每個功能的操作步驟,以及服務(wù)器端和移動端的交互,并且對數(shù)據(jù)庫進(jìn)行系統(tǒng)的設(shè)計,設(shè)計每一個類的屬性,用E-R圖表明各個類的關(guān)系。

4.1.1登錄和登出

圖4.1登錄和登出時序圖

圖4.1為登錄和登出的時序圖。

用戶輸入賬號密碼后,移動端將賬號密碼發(fā)送給服務(wù)器,服務(wù)器進(jìn)行驗證后,返回成功碼給移動端,移動端進(jìn)行頁面跳轉(zhuǎn),進(jìn)入應(yīng)用。

用戶選擇登出,移動端退出應(yīng)用,返回到登錄界面,并且刪除用戶留在本地的相關(guān)數(shù)據(jù)。

圖4.2查看個人信息時序圖

圖4.2為查看個人信息的時序圖。

用戶進(jìn)入“個人”頁面,移動端自動獲取用戶的ID,并向服務(wù)器發(fā)起獲取用戶信息的需求,服務(wù)器端返回用戶的個人信息,移動端自動保存這些數(shù)據(jù),下次查看時可自動提取移動端本地的數(shù)據(jù)。

4.1.2我的課表模塊

圖4.3查看課表時序圖

圖4.3為查看課表的時序圖。

用戶點(diǎn)擊“我的課表”按鈕,進(jìn)行頁面跳轉(zhuǎn),移動端自動將保存在本地用戶的ID發(fā)送給服務(wù)器,服務(wù)器根據(jù)用戶ID將用戶的課表發(fā)送給移動端,移動端展示給用戶。

4.1.3我的學(xué)習(xí)模塊

圖4.4在線學(xué)習(xí)視頻觀看時序圖

圖4.4為在線學(xué)習(xí)視頻觀看的時序圖。

用戶點(diǎn)擊“我的學(xué)習(xí)”按鈕,進(jìn)行頁面跳轉(zhuǎn),移動端向服務(wù)器發(fā)送獲取列表請求,服務(wù)器返回所有相關(guān)的課程信息,用戶再點(diǎn)擊自己想學(xué)習(xí)的課程,移動端將課程ID發(fā)送給服務(wù)器,服務(wù)器返回該門課程的章節(jié)和相關(guān)視頻的信息,用戶再點(diǎn)擊某個視頻,移動端將視頻ID發(fā)送給服務(wù)器,服務(wù)器返回給移動端視頻的存放路徑,移動端根據(jù)路徑,找到視頻,進(jìn)行播放處理。

圖4.5在線學(xué)習(xí)習(xí)題練習(xí)時序圖

圖4.5為在線學(xué)習(xí)習(xí)題練習(xí)的時序圖。

用戶點(diǎn)擊“我的學(xué)習(xí)”按鈕,進(jìn)行頁面跳轉(zhuǎn),移動端向服務(wù)器發(fā)送獲取課程列表請求,服務(wù)器返回相關(guān)的課程信息,用戶點(diǎn)擊自己想學(xué)習(xí)的課程,移動端將課程ID發(fā)送給服務(wù)器,服務(wù)器返回該門課程的章節(jié)和相關(guān)視頻的信息,用戶再點(diǎn)擊“習(xí)題”按鈕,移動端向服務(wù)器發(fā)送獲取該門課程題庫的請求,用戶選擇某個題庫,移動端將題庫ID發(fā)送給服務(wù)器端,服務(wù)器返回給移動端該題庫的題目,用戶即可做題,每做完一道題目,用戶可以點(diǎn)擊“確定”按鈕,移動端會顯示每道題目的答案并對用戶的答案進(jìn)行判斷。

圖4.6在線學(xué)習(xí)習(xí)題測試時序圖

圖4.6為在線學(xué)習(xí)習(xí)題測試的時序圖。

用戶點(diǎn)擊“我的學(xué)習(xí)”按鈕,進(jìn)行頁面跳轉(zhuǎn),移動端向服務(wù)器發(fā)送獲取課程列表請求,服務(wù)器返回所有相關(guān)的課程信息,用戶再點(diǎn)擊自己想學(xué)習(xí)的課程,移動端將課程ID發(fā)送給服務(wù)器,服務(wù)器返回該門課程的章節(jié)和相關(guān)視頻的信息,用戶再點(diǎn)擊“測試”按鈕,移動端向服務(wù)器發(fā)送課程ID,服務(wù)器端返回該門課程的測試題目,用戶進(jìn)行測試,測試完畢,點(diǎn)擊“交卷”,移動端對測試卷進(jìn)行判卷。并給出成績顯示每道題的結(jié)果。

4.1.4教室預(yù)約模塊

圖4.7教室預(yù)約時序圖

圖4.7為教室預(yù)約的時序圖。

用戶點(diǎn)擊“教室預(yù)約”按鈕,進(jìn)行頁面跳轉(zhuǎn),移動端向服務(wù)器發(fā)送獲取教室列表請求,服務(wù)器返回所有相關(guān)的教室信息,用戶點(diǎn)擊某個可預(yù)約的教室,移動端進(jìn)行頁面跳轉(zhuǎn),顯示預(yù)約界面,用戶填寫預(yù)約周次和星期,點(diǎn)擊“節(jié)次”按鈕,服務(wù)器將教室ID,預(yù)約周次和星期發(fā)送給服務(wù)器端,服務(wù)器進(jìn)行判沖,選出可以預(yù)約的時間段,返回給移動端,用戶選擇合適的時間段,再填寫好所有的預(yù)約信息,點(diǎn)擊“提交”按鈕,移動端將教室ID以及相關(guān)預(yù)約信息發(fā)送給服務(wù)器端,服務(wù)器進(jìn)行數(shù)據(jù)處理,返回給移動端預(yù)約成功或失敗的信息,移動端高職用戶,并且自動刷新教室列表頁面。

4.1.5我的日程模塊

圖4.8創(chuàng)建日程,修改日程,刪除日程時序圖

圖4.8為用戶管理日程的時序圖。

用戶點(diǎn)擊“我的日程”按鈕,移動端進(jìn)行頁面跳轉(zhuǎn),顯示日程列表,用戶點(diǎn)擊“創(chuàng)建日程”按鈕,移動端彈出日程創(chuàng)建對話框,用戶填寫相關(guān)信息,提交,移動端將日程數(shù)據(jù)保存到移動端本地數(shù)據(jù)庫,并且刷新日程列表。

用戶點(diǎn)擊某個日程,移動端彈出帶有該日程相關(guān)信息的對話框,用戶修改日程信息,提交,移動端將日程數(shù)據(jù)保存到移動端本地數(shù)據(jù)庫,并且刷新日程列表。

用戶長按某個日程,移動端彈出對話框,詢問用戶是否刪除該日程,用戶點(diǎn)擊“確定”后,移動端將該日程數(shù)據(jù)從移動端本地數(shù)據(jù)庫刪除,并且刷新日程列表。

4.1.6我的班級模塊

圖4.9查看班級成員時序圖

圖4.9為查看班級成員的時序圖。

用戶點(diǎn)擊“我的班級”按鈕,進(jìn)行頁面跳轉(zhuǎn),移動端自動將保存在本地用戶的ID發(fā)送給服務(wù)器,服務(wù)器根據(jù)用戶ID將用戶所在班級的相關(guān)信息發(fā)送給移動端,用戶再點(diǎn)擊“班級成員”按鈕,移動端進(jìn)行頁面跳轉(zhuǎn),顯示班級成員列表。

圖4.10查看班級公告時序圖

圖4.10為查看班級公告的時序圖。

用戶點(diǎn)擊“我的班級”按鈕,進(jìn)行頁面跳轉(zhuǎn),移動端自動將保存在本地用戶的ID發(fā)送給服務(wù)器,服務(wù)器根據(jù)用戶ID將用戶所在班級的相關(guān)信息發(fā)送給移動端,移動端顯示班級公告列表,用戶再點(diǎn)擊某個公告,移動端將該公告ID發(fā)送給服務(wù)器端,服務(wù)器返回該公告相關(guān)信息。

圖4.11創(chuàng)建班級公告時序圖

圖4.11為創(chuàng)建班級公告的時序圖。

用戶點(diǎn)擊“我的班級”按鈕,進(jìn)行頁面跳轉(zhuǎn),移動端自動將保存在本地用戶的ID發(fā)送給服務(wù)器,服務(wù)器根據(jù)用戶ID將用戶所在班級的相關(guān)信息發(fā)送給移動端,移動端顯示班級公告列表,用戶點(diǎn)擊“創(chuàng)建公告”按鈕,移動端進(jìn)行頁面跳轉(zhuǎn),跳到新建公告頁面,用戶填寫公告相關(guān)的信息,提交,移動端發(fā)送新建公告信息給服務(wù)器端,服務(wù)器端進(jìn)行數(shù)據(jù)處理,返回給移動端創(chuàng)建成功或失敗的信息,移動端告知用戶,并刷新班級公告列表頁面。

4.1.7我的成績模塊

圖4.12查看我的成績時序圖

圖4.12為查看我的成績的時序圖。

用戶點(diǎn)擊“我的成績”按鈕,進(jìn)行頁面跳轉(zhuǎn),移動端自動將保存在本地用戶的ID發(fā)送給服務(wù)器,服務(wù)器根據(jù)用戶ID將用戶的所有課程成績發(fā)送給移動端,移動端展示給用戶。

4.2數(shù)據(jù)表結(jié)構(gòu)設(shè)計

表4.1Student類表

字段名

數(shù)據(jù)類型

意義

stuNum

String

學(xué)生學(xué)號

stuName

String

學(xué)生姓名

stuSex

String

學(xué)生性別

stuMajor

String

學(xué)生所在院系

stuClass

String

學(xué)生所在班級

stuPhone

String

學(xué)生的聯(lián)系電話

stuEmail

String

學(xué)生的郵箱

password

String

學(xué)生的密碼

Student表用來記錄學(xué)生用戶的相關(guān)信息,stuNum為主鍵,只有在表中有記錄并且輸入正確的賬號密碼的用戶才能登陸系統(tǒng)。

表4.2Course類表

字段名

數(shù)據(jù)類型

意義

itemNum

String

課程編號

courseNumber

String

課程號

courseName

String

課程名稱

weekday

String

周幾上課

start_class

int

開始節(jié)次

end_class

int

結(jié)束節(jié)次

sectionSpan

int

跨幾節(jié)課

classroom

String

所在教室

cname

String

任課老師

start_week

int

開始周次

end_week

int

結(jié)束周次

Course表用來記錄所有課程的相關(guān)信息,itemNum為主鍵。

表4.3SchoolWeek類表

字段名

數(shù)據(jù)類型

意義

weekDate

int

日期

week

int

周次

weekday

int

星期幾

SchoolWeek表用來記錄校歷相關(guān)信息,weekDate為主鍵,以便課表與相對應(yīng)日期的顯示。

表4.4LearningCourse類表

字段名

數(shù)據(jù)類型

意義

id

int

課程號

title

String

課程標(biāo)題

cname

String

授課教師

isOpen

int

是否開放

LearningCourse表用來記錄所有網(wǎng)上學(xué)習(xí)課程的相關(guān)信息,id為主鍵,這里的課程與學(xué)生平時在教室所上的課程沒有關(guān)系,是獨(dú)立的部分。

表4.5Stu_Cou類表

字段名

數(shù)據(jù)類型

意義

stuNum

String

學(xué)生學(xué)號

itemNum

String

課程編號

Stu_Cou表用來記錄學(xué)生選的課程,stuNum為主鍵。ItemNum為外鍵。

表4.6LearningChapter類表

字段名

數(shù)據(jù)類型

意義

id

int

章節(jié)號

title

String

章節(jié)名稱

courseId

int

課程號

LearningChapter表用來記錄所有網(wǎng)上學(xué)習(xí)課程的相關(guān)章節(jié)信息,id為主鍵,courseId為外鍵。

表4.7Video類表

字段名

數(shù)據(jù)類型

意義

id

int

視頻浩

chapterId

int

章節(jié)號

title

String

視頻名稱

videoPath

String

視頻路徑

Video表用來記錄所有網(wǎng)上學(xué)習(xí)課程的相關(guān)視頻信息,id為主鍵,chapterId為外鍵。

表4.8QuestionPool類表

字段名

數(shù)據(jù)類型

意義

id

int

題庫號

title

String

題庫名稱

courseId

int

課程號

QuestionPool表用來記錄網(wǎng)上學(xué)習(xí)課程的題庫信息,id為主鍵,courseId為外鍵。

表4.9Question類表

字段名

數(shù)據(jù)類型

意義

id

int

題目號

description

String

題干

text

List<String>

選項

answer

List<int>

答案,1為正確答案,0為錯誤答案

type

int

題目類型,1為多選,2為單選

PoolId

int

題庫號

QuestionPool表用來記錄所有網(wǎng)上學(xué)習(xí)課程的相關(guān)題庫信息,id為主鍵,courseId為外鍵。

表4.10Schedule類表

字段名

數(shù)據(jù)類型

意義

id

int

日程號

date

String

日期,格式為yyyy-MM-dd

time

String

時間,格式為hh:mm-hh:mm

content

String

日程內(nèi)容

hourFromSelection

int

日程開始的小時,從0-24

minuteFromSelection

int

日程開始的分鐘,從0-60

hourToSelection

int

日程結(jié)束的小時,從0-24

minuteToSelection

int

日程結(jié)束的分鐘,從0-60

Schedule表用來記錄學(xué)生日程的相關(guān)信息,id為主鍵,courseId為外鍵。

表4.11ClassX類表

字段名

數(shù)據(jù)類型

意義

id

int

預(yù)約號

week

int

周次

weekDay

int

星期幾

section

int

節(jié)次,從1到13

content

String

預(yù)約內(nèi)容

student

String

預(yù)約學(xué)生

ps

String

備注

ClassX表用來記錄教室預(yù)約的相關(guān)信息,id為主鍵,ClassX中的X表示教室,一個教室對應(yīng)著一張表格。

表4.12Announcement類表

字段名

數(shù)據(jù)類型

意義

id

int

公告號

title

String

公告標(biāo)題

time

String

公告創(chuàng)建時間

sponsor

String

公告創(chuàng)建者

content

String

公告內(nèi)容

class

String

公告所在班級

Announcement表用來記錄所有公告的相關(guān)信息,id為主鍵。

表4.13Grade類表

字段名

數(shù)據(jù)類型

意義

id

int

成績號

stuNum

int

學(xué)生學(xué)號

courseId

int

課程號

grade

int

成績

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é)生還可以進(jìn)行網(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)容,達(dá)到倒計時效果。

//倒計時功能,自定義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ù)器獲取教室列表,選中教室,點(diǎn)擊按鈕,在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(){

@O

溫馨提示

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

評論

0/150

提交評論