徐新愛 邱宏偉
摘要:Android課程學(xué)習(xí)系統(tǒng)有助于學(xué)生利用碎片化的時間進(jìn)行自主學(xué)習(xí),在一定程度上減小課堂教學(xué)負(fù)擔(dān)。文章以數(shù)據(jù)結(jié)構(gòu)課程為例,開發(fā)了基于Android的課程學(xué)習(xí)系統(tǒng)。該系統(tǒng)采用C/S模型,以Java編程語言和Android studio工具來設(shè)計并開發(fā),服務(wù)器端以騰訊云提供的云服務(wù)器為基礎(chǔ),利用My SQL數(shù)據(jù)庫存儲,Spring+Hibemate+Apache框架開發(fā)服務(wù)端程序,從需求分析、概要分析、詳細(xì)設(shè)計與實現(xiàn)做了詳細(xì)介紹,對移動學(xué)習(xí)系統(tǒng)的設(shè)計與應(yīng)用具有一定的參考價值。
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu);Android;云平臺;學(xué)習(xí)系統(tǒng)
中圖分類號:TP311
文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2020)03-0101-03
1 背景
隨著計算機(jī)技術(shù)、網(wǎng)絡(luò)技術(shù)和通信技術(shù)的迅速發(fā)展,信息技術(shù)環(huán)境下的學(xué)習(xí)方式發(fā)生了重大變革,移動學(xué)習(xí)成為當(dāng)前的研究熱點[1]。移動學(xué)習(xí)(Mobile Leaming,簡稱M-Leaning)是指利用無線移動通信網(wǎng)絡(luò)技術(shù),以無線移動通信設(shè)備(如PAD、智能手機(jī)等)獲取教育信息、教育資源、教育服務(wù)的一種新型數(shù)字化學(xué)習(xí)形式[2]。其能夠有效改善傳統(tǒng)教學(xué)內(nèi)容和教學(xué)時間死板等問題,促進(jìn)學(xué)生自主和個性化學(xué)習(xí)[3-5]。移動學(xué)習(xí)平臺的存儲依“云”平臺而建。云服務(wù)器(Elastic Compute Service,簡稱ECS)是一種處理能力可彈性伸縮的計算服務(wù)f6]。目前,利用各大科技廠商提供的相關(guān)云服務(wù)來開發(fā)應(yīng)用已經(jīng)非常常見。其中包括基于云平臺的課程資源提供平臺,如騰訊微云、網(wǎng)易公開課、中國大學(xué)MOOC平臺、國家精品課程資源共享平臺等都提供良好的課程資源進(jìn)行共享,且能提供良好的云存儲服務(wù)[7]。
數(shù)據(jù)結(jié)構(gòu)課程是計算機(jī)類專業(yè)的核心基礎(chǔ)課程,其在整個人才培養(yǎng)方案中承擔(dān)著重要角色,但所涉及的內(nèi)容抽象、算法多、課時少等,尤其是課外實踐方面,由于學(xué)生主動學(xué)習(xí)能力不強(qiáng),遇到問題無法及時解決而放棄,老師也無從針對性進(jìn)行指導(dǎo),看不到學(xué)生課外對此門課程的學(xué)習(xí)情況等,教學(xué)效果往往難以如愿,造成后續(xù)一系列相關(guān)課程學(xué)習(xí)出現(xiàn)問題。上課過程中經(jīng)常出現(xiàn)老師費勁地教,學(xué)生吃力地學(xué)的現(xiàn)象[8]。而移動學(xué)習(xí)具有便攜性、碎片式、交互性、及時性、個性化學(xué)習(xí)的特點,可以做到anyone、anytime、anvwhere地進(jìn)行自由式學(xué)習(xí),可以有效緩解傳統(tǒng)教育的課堂教學(xué)壓力。[9]
綜合移動平臺的優(yōu)勢以及當(dāng)前數(shù)據(jù)結(jié)構(gòu)課程教學(xué)過程中的問題,研究的主要內(nèi)容集中在將移動互聯(lián)網(wǎng)技術(shù)融人教學(xué)中,完成教師和學(xué)生、學(xué)生和學(xué)生之間的問題答疑、討論,學(xué)生還可以通過視頻自主學(xué)習(xí)、完成作業(yè)等。[10]在眾多的移動平臺中,基于Linux的自由、開放源代碼的Android操作系統(tǒng)得到眾多運營商和設(shè)備商的全面支持。[11]本系統(tǒng)主要用到的Java技術(shù)包括Apache框架技術(shù)、Spring技術(shù)和Hibernate技術(shù)[12-3],采用MVC框架(Model-View-Controller,即“模型一視圖一控制器”)[14]。
2 系統(tǒng)需求分析
系統(tǒng)需求分析是對用戶需求所做的調(diào)查與分析,是系統(tǒng)設(shè)計、開發(fā)和維護(hù)的依據(jù)。[15]系統(tǒng)采用C/S架構(gòu)。C/S架構(gòu)是指軟件體系的客戶機(jī)/服務(wù)器結(jié)構(gòu)。具體而言,將部分任務(wù)轉(zhuǎn)移到客戶端進(jìn)行處理,從而減小服務(wù)器的負(fù)荷,平衡資源并保證數(shù)據(jù)的一致性和完整性。[16] C/S架構(gòu)分為客戶端(用戶使用)、TCP/IP網(wǎng)絡(luò)以及服務(wù)器端(后臺),具有服務(wù)器端壓力小、儲數(shù)據(jù)及管理過程透明等優(yōu)點。[17]
2.1 客戶端功能需求
客戶端作為用戶進(jìn)行相關(guān)操作的直接途徑,考慮到用戶的計算機(jī)水平參差不齊,對于所有提供的功能,需要為用戶提供對應(yīng)易于操作的可視化界面。客戶端功能架構(gòu)如圖1所示。
客戶端提供的功能主要有:
1)提供《數(shù)據(jù)結(jié)構(gòu)》課程的相關(guān)知識點(圖文、算法實現(xiàn)代碼、算法實現(xiàn)動畫等)展示功能;
2)提供用戶通過郵箱注冊和用戶的信息修改功能;
3)通過接入第三方賬戶的SDK來提供第三方賬戶(QQ、微信)登錄和第三方賬戶綁定郵箱賬號的功能;
4)提供用戶發(fā)布文章和修改本人已發(fā)布的文章信息等的可視化界面接口;
5)提供用戶查看、評論、收藏、點贊、回復(fù)等查看和指正文章信息操作的可視化界面;
6)提供用戶其他操作的可視化界面。
2.2 服務(wù)端功能需求
服務(wù)端作為客戶端數(shù)據(jù)的提供者,同時也作為用戶數(shù)據(jù)的儲存者,一方面需要和客戶端進(jìn)行對接,監(jiān)聽客戶端的相關(guān)請求并進(jìn)行處理,處理完成之后將對應(yīng)結(jié)果返回給客戶端.另一方面需要將客戶端傳人數(shù)據(jù)經(jīng)過處理后儲存到儲存介質(zhì)中。服務(wù)端功能架構(gòu)如圖2所示。
服務(wù)端提供的功能主要有:
1)創(chuàng)建用戶系統(tǒng),儲存不同類型(郵箱、QQ、微信)用戶的相關(guān)信息并支持用戶相關(guān)信息的修改;
2)創(chuàng)建社區(qū)文章管理系統(tǒng),管理所有用戶發(fā)布的文章和相關(guān)(點贊,評論等)信息;
3)監(jiān)聽客戶端請求,根據(jù)客戶端傳遞過來的信息來進(jìn)行對應(yīng)的處理;
4)提供相關(guān)的數(shù)據(jù)獲?。ㄓ脩粜畔?、文章信息)接口來為客戶端提供用于展示的數(shù)據(jù)源;
5)提供相關(guān)的數(shù)據(jù)修改(用戶信息等)接口來為客戶端提供修改數(shù)據(jù)的功能;
6)提供其他的獲取和操作數(shù)據(jù)的功能。
3 概要設(shè)計與分析
客戶端程序和服務(wù)端程序之間通過計算機(jī)網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)交換,采用計算機(jī)網(wǎng)絡(luò)中應(yīng)用層HTTP協(xié)議作為網(wǎng)絡(luò)協(xié)議,還需要一個完善的數(shù)據(jù)內(nèi)容格式約定,這樣才能保證客戶端和云服務(wù)器都能夠“聽懂對方說的話”。目前,主流的客戶端與云服務(wù)器的文本數(shù)據(jù)交換格式有JSON和XML兩種,當(dāng)傳送相同的數(shù)據(jù)時,使用JSON格式進(jìn)行數(shù)據(jù)包裝所占用的體積比使用XML格式所占用的體積要小,同時在進(jìn)行數(shù)據(jù)解析時,JSON格式的解析速度也會更快捷,對機(jī)器比較友好。而相對于JSON來說,XML格式的數(shù)據(jù)的可讀性會比較強(qiáng),對人比較友好。由于客戶端與云服務(wù)器之間的數(shù)據(jù)傳輸和解析對效率要求較高,因此,采用JSON作為客戶端和云服務(wù)器之間的數(shù)據(jù)內(nèi)容格式。
3.1 數(shù)據(jù)庫設(shè)計
根據(jù)功能需求,服務(wù)端數(shù)據(jù)庫需要建立兩類數(shù)據(jù)表來保存相關(guān)信息,分別為用戶信息表和文章信息表。其中用戶信息表用來保存用戶賬戶的信息,包含三個表,分別儲存郵箱賬戶信息、QQ賬戶登錄信息和微信賬戶登錄信息。
文章信息包括文章信息和該文章的評論信息兩部分,因此這部分需要兩個表:文章信息表和評論信息。文章信息表結(jié)構(gòu)包括:文章ID、文章標(biāo)題、文章內(nèi)容URL、文章類別(文章/問題)、文章作者的郵箱賬戶ID、文章發(fā)布時間、文章最后修改的時間、文章的瀏覽量、文章所屬的領(lǐng)域、文章的被收藏數(shù)、文章得到的點贊數(shù)、文章的評論ID數(shù)組、文章狀態(tài)(是否可顯示)等,評論信息表結(jié)構(gòu)包括:評論ID、評論內(nèi)容、評論所屬的文章ID、評論用戶ID、評論發(fā)布時間、評論的父評論f當(dāng)前評論回復(fù)的評論)ID、評論能否顯示等。
3.2 實體類設(shè)計
根據(jù)系統(tǒng)功能需求及數(shù)據(jù)庫表的設(shè)計,定義基礎(chǔ)的用戶信息類(BasicUserlnfo)、郵箱賬戶信息類(EmaiILoginUserlnfo)、QQ賬戶信息類(QQLoginUserlnfo)、文章信息類(Articlelnfo)和評論信息類(Commentlnfo等實體類作為數(shù)據(jù)模型,同時,定義以下功能模塊函數(shù):
1)用戶登錄:public Result login(String input,String pass-word);
2)用戶注冊:public Result register(String password,Stringemail);
3)發(fā)布文章:public Result insertArticle(Articlelnfo,String,String);
4)獲取社區(qū)文章:public Result allArticle(ArticleResult arti-clelnfo);
5)查看文章內(nèi)容:getArticleContent(String)。
4 詳細(xì)設(shè)計與實現(xiàn)
4.1 課程資源模塊設(shè)計與實現(xiàn)
追求實用是移動學(xué)習(xí)資源的最顯著特點[18]。因此,將數(shù)據(jù)結(jié)構(gòu)課程資源以可視化界面的形式展示出來是客戶端的核心功能之一,為了實現(xiàn)這個功能,需要自主編寫自定義結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)課程資源,主要內(nèi)容包括:資源版本信息、資源文件URL和資源更新時間信息。
課程資源信息為xml格式文本,程序在進(jìn)入主界面之后,會從云服務(wù)器中獲取該課程資源信息并解析。解析成功后通過Android系統(tǒng)UI框架在主界面展示。當(dāng)用戶單擊某門課程時,首先會檢測本機(jī)是否存在課程資源文件,如果存在,則進(jìn)入該課程所包含的章節(jié)目錄界面,否則下載課程資源文件,完成之后再進(jìn)入章節(jié)目錄。
對于章節(jié),其資源文件存在一個名為contents.xml的文件,標(biāo)識了該章節(jié)中所有的小節(jié)資源??蛻舳嗽谧x取并解析某個小節(jié)信息時會尋找對應(yīng)的小節(jié)內(nèi)容文件并解析。單擊章節(jié)時會解析章節(jié)信息中的第一個小節(jié)內(nèi)容,完成后以圖形界面的形式展示,可以通過單擊標(biāo)題右邊按鈕來選取小節(jié)顯示。
4.2 登錄功能設(shè)計與實現(xiàn)
當(dāng)客戶端程序未檢測到登錄信息或者登錄信息過期時,會跳轉(zhuǎn)至登錄界面。用戶可以輸入賬戶和密碼進(jìn)行登錄,單擊登錄按鈕之后會將數(shù)據(jù)打包發(fā)送給云服務(wù)器驗證賬號密碼信息是否合法(賬戶是否存在、賬戶密碼是否匹配),如圖3所示。
4.3 注冊功能設(shè)計與實現(xiàn)
在登錄界面可以單擊“去注冊”按鈕進(jìn)入注冊界面,在注冊界面需要輸入賬戶、密碼和確認(rèn)密碼信息來完成注冊。如圖4所示。
4.4 發(fā)布文章功能設(shè)計
如果當(dāng)前用戶是使用郵箱賬戶登錄,則用戶在主頁界面可以單擊底層中間的按鈕來發(fā)布文章。用戶在編輯完成后單擊右上角的“發(fā)布”按鈕時客戶端先會將文章中的圖片上傳到云服務(wù)器上,發(fā)布文章流程如圖5所示。
5 結(jié)束語
針對數(shù)據(jù)結(jié)構(gòu)課程線下教學(xué)過程中出現(xiàn)的問題,開發(fā)了基于Android系統(tǒng)的課程學(xué)習(xí)系統(tǒng)。本系統(tǒng)采用C/S架構(gòu),專用于課程的教學(xué),具有注冊登錄、通知公告、課程信息發(fā)布、教學(xué)資源展示等功能。在接下來的工作中,我們將不僅僅采用基于自組織和自調(diào)節(jié)的社區(qū)結(jié)構(gòu)[19]的推薦算法,構(gòu)建個性化學(xué)習(xí)模型,更會關(guān)注用戶使用移動終端設(shè)備產(chǎn)生大量數(shù)據(jù),促使進(jìn)一步研究大數(shù)據(jù)挖掘技術(shù),讓系統(tǒng)更具有智能陛、交互性和完整性。
參考文獻(xiàn):
[1]劉建設(shè),李青,劉金梅,移動學(xué)習(xí)研究現(xiàn)狀綜述[J].電化教育研究,2007,28(7):21-25,36.
[2] Aleksander Dye et al:Mobile Education-A glance at thefuture[EB/OL]. http://www. nettskolen. com/forskning/mobiie_educa-tion.pdf.
[3] Troussas C,Virvou M, Alepis E.Collaborative learning: groupinteraction in an intelligent mobile-assisted multiple languagelearning system[J]. Informatics in Education. 2014, 13(2):279-292.
[4] Guo M, Qian K,Yang M, et al.Android- based mobile senso-ry system labware for embedded sys-tem education[C]// IEEE,International Conference on Advanced Leaming Technologies.IEEE, 2013: 118-119.
[5]楊威.基于android移動智能終端的教學(xué)信息平臺開發(fā)與研究[D].哈爾濱:哈爾濱工程大學(xué),2015.
[6]胡珊.基于云計算技術(shù)構(gòu)建教學(xué)云平臺[J]河北:當(dāng)代教育實踐與教學(xué)研究,2017(3):1-4.
[7]駱金維.基于云平臺的高職院校課程資源共享系統(tǒng)設(shè)計與實現(xiàn)[D].廣州:華南理工大學(xué),2018.
[8]吳桂芹,數(shù)據(jù)結(jié)構(gòu)教學(xué)思考與改革實踐[J].新西部,2018(33):143-144.
[9][11]亓祥元,嚴(yán)冬梅,基于Android的高校課程學(xué)習(xí)系統(tǒng)設(shè)計與實現(xiàn)[J].計算機(jī)時代,2016(6):48-51.55.
[10]劉帥,李建偉,勾學(xué)榮,互動式移動學(xué)習(xí)系統(tǒng)的設(shè)計與開發(fā)[J].北京郵電大學(xué)學(xué)報:社會科學(xué)版,2014,16(6):111-116.
[12]郭霖,第一行代碼-Android[M].2版,北京:人民郵電出版社,2016.
[13]劉望舒.Android進(jìn)階解密[M].北京:電子工業(yè)出版社,2018.
[14] Paul Deck. Spring MVC學(xué)習(xí)指南[M].林儀明,崔毅,譯.北京:人民郵電出版社,2015.
[15]季益龍,張閃閃,趙俞凌.基于微課程的自主學(xué)習(xí)系統(tǒng)設(shè)計與實現(xiàn)——以計算機(jī)編程類課程為例[J].中國教育信息化,2015(21):88-91.
[16]張雪亞,基于C-B/S混合架構(gòu)的試題庫系統(tǒng)設(shè)計[J].電子科技,2013,26(5):43-46.
[17]朱佳雯.基于Android的移動教學(xué)系統(tǒng)的設(shè)計與實現(xiàn)[J].電子設(shè)計工程,2018,26(23):65-70.
[18]顧小清,顧鳳佳,微型學(xué)習(xí)策略:設(shè)計移動學(xué)習(xí)[J].中國電化教育,2008(3):17-21.
[19] Tumer P J,Jennings N R.Improving the scalability of multi-agent systems[M]//Infrastructure for Agents, Multi-Agent Sys-tems. and Scalable Multi-Agent Systems. Berlin, Heidelberg:Springer Berlin Heidelberg, 2001: 246-262.