王英明,郭艷梅
(1.安徽工業(yè)大學(xué)工商學(xué)院 電氣信息系,安徽 馬鞍山 243002; 2.馬鞍山職業(yè)技術(shù)學(xué)院 基礎(chǔ)部,安徽 馬鞍山 243031)
?
基于Android平臺(tái)的掌上校園信息系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)*
王英明1,郭艷梅2
(1.安徽工業(yè)大學(xué)工商學(xué)院 電氣信息系,安徽 馬鞍山 243002; 2.馬鞍山職業(yè)技術(shù)學(xué)院 基礎(chǔ)部,安徽 馬鞍山 243031)
摘要:隨著移動(dòng)互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,以及智能手機(jī)的廣泛普及,基于Android平臺(tái)的校園類APP逐步成為校園信息化建設(shè)的重要組成部分.該文設(shè)計(jì)了一款掌上校園客戶端系統(tǒng),包括學(xué)院導(dǎo)航、教務(wù)信息、就業(yè)信息、學(xué)院通訊錄四大模塊,學(xué)院師生可以通過此軟件及時(shí)掌握學(xué)院動(dòng)態(tài),方便快捷.同時(shí)還詳細(xì)介紹了系統(tǒng)實(shí)現(xiàn)過程中用到的關(guān)鍵技術(shù).
關(guān)鍵詞:掌上校園;MVP;Android
隨著智能手機(jī)的普及,以及大量APP(課程格子、超級(jí)課程表等)的廣泛應(yīng)用,學(xué)生對(duì)于學(xué)校信息的獲取不再局限于通過PC機(jī)來獲取,而更多地傾向于通過手機(jī)獲取,然而出于安全性方面的考慮,學(xué)校部分信息只能通過校園網(wǎng)進(jìn)行訪問,致使許多在校生無法正常獲取這些信息,并且對(duì)于一些可以在公網(wǎng)上訪問的信息,由于未兼容移動(dòng)設(shè)備,致使學(xué)生在通過手機(jī)訪問時(shí)界面需要縮放、移動(dòng),界面不友好.目前,很多高校都已經(jīng)開發(fā)了基于移動(dòng)終端的校園類APP,如浙江工商大學(xué)[1]、 萍鄉(xiāng)學(xué)院[2]等.
鑒于以上原因,本文作者開發(fā)了一款基于Android平臺(tái)的校園類APP,用來滿足廣大在校師生及時(shí)獲取學(xué)院、教務(wù)、就業(yè)信息、課堂考勤的基本要求.
1系統(tǒng)設(shè)計(jì)
1.1主要功能模塊
通過對(duì)現(xiàn)有網(wǎng)絡(luò)資源分析,以及對(duì)在校師生的需求調(diào)查之后,將掌上校園分為四大模塊,系統(tǒng)結(jié)構(gòu)如圖1所示.
(1)學(xué)院導(dǎo)航.主要包括學(xué)院的基本信息,以及學(xué)院的最新新聞、通告等,為了減少客戶端與服務(wù)器端來往數(shù)據(jù)流量,該模塊首次加載從服務(wù)器端獲取,然后緩存至本地 SQLite數(shù)據(jù)庫(kù)中.
圖1 系統(tǒng)功能模塊圖
(2)教務(wù)信息.主要包含教務(wù)通知、考試安排、課表查詢、成績(jī)查詢(學(xué)生)、課堂考勤(教師)等,該模塊數(shù)據(jù)來自學(xué)院教務(wù)網(wǎng)站,登錄后方可查詢.
(3)就業(yè)信息.主要包括招聘會(huì)、招聘信息、就業(yè)網(wǎng)站的通知公告,該模塊數(shù)據(jù)來自學(xué)院就業(yè)網(wǎng)站,為畢業(yè)生提供最新的就業(yè)信息.
(4)其他.包括學(xué)院通訊錄、校歷、意見反饋等,其中通訊錄提供對(duì)學(xué)院各部門及人員聯(lián)系方式的查看操作.
1.2系統(tǒng)網(wǎng)路拓?fù)鋱D
本系統(tǒng)由兩部分組成,一是手機(jī)移動(dòng)客戶端,二是掌上校園服務(wù)器端.學(xué)院師生通過安裝有客戶端APP的移動(dòng)終端,訪問掌上校園服務(wù)器,然后通過服務(wù)器去抓取學(xué)院網(wǎng)站數(shù)據(jù)后返回給客戶端,系統(tǒng)網(wǎng)絡(luò)拓?fù)鋱D如圖2所示.
圖2 系統(tǒng)網(wǎng)絡(luò)拓?fù)鋱D
1.3系統(tǒng)設(shè)計(jì)模式
系統(tǒng)服務(wù)器端采用SSH框架來實(shí)現(xiàn),主要包括兩部分,一是通訊錄與考勤管理系統(tǒng);二是為手機(jī)端提供數(shù)據(jù),以及與手機(jī)端進(jìn)行數(shù)據(jù)交互的REST服務(wù).
Android平臺(tái)客戶端采用基于MVP架構(gòu)的框架進(jìn)行設(shè)計(jì),降低各個(gè)模塊之間的耦合度,其中:
Model 負(fù)責(zé)業(yè)務(wù)邏輯和實(shí)體模型.
View 對(duì)應(yīng)于Activity,負(fù)責(zé)View的繪制,以及與用戶交互.
Presenter 負(fù)責(zé)完成View與Model間的交互,以及與用戶交互.
2系統(tǒng)實(shí)現(xiàn)與關(guān)鍵技術(shù)
2.1掌上校園服務(wù)器端
服務(wù)器端主要包括通訊錄、考勤管理系統(tǒng),以及為手機(jī)端提供數(shù)據(jù)、與手機(jī)端進(jìn)行數(shù)據(jù)交互的REST服務(wù)兩個(gè)方面,這部分是采用SSH框架來實(shí)現(xiàn)的.
客戶端的大部分?jǐn)?shù)據(jù)是通過網(wǎng)頁(yè)抓取的方式從學(xué)院現(xiàn)有的網(wǎng)路資源上獲取的,由于學(xué)院部分站點(diǎn)只能在校園網(wǎng)內(nèi)訪問,所以客戶端先訪問掌上校園服務(wù)器上的REST服務(wù),然后REST服務(wù)根據(jù)請(qǐng)求再去訪問對(duì)應(yīng)的資源,最后通過JSOUP對(duì)響應(yīng)的HTML進(jìn)行解析,將解析結(jié)果返回給客戶端,如圖3所示.
圖3 系統(tǒng)數(shù)據(jù)流向圖
對(duì)于教務(wù)系統(tǒng)中的數(shù)據(jù)的訪問,需要先模擬登錄,記錄下cookie、__VIEWSTATE等必要的信息,在下次訪問時(shí)需攜帶這些信息才能正常訪問.對(duì)于內(nèi)容頁(yè)中(新聞詳細(xì)頁(yè))出現(xiàn)的圖片、附件,需要在返回給客戶端之前,將相對(duì)URL改為絕對(duì)URL.
2.2掌上校園客戶端
客戶端采用MVP架構(gòu)進(jìn)行設(shè)計(jì),工程文件設(shè)計(jì)如圖4所示.
圖4 客戶端工程文檔結(jié)構(gòu)圖
(1)客戶端首頁(yè).客戶端首頁(yè)采用FragmentTabHost + Fragment來實(shí)現(xiàn)各個(gè)功能標(biāo)簽的切換,校園導(dǎo)航fragment包括兩部分,一部分是展示學(xué)院圖片新聞的JazzyViewPager,一部分是顯示功能模塊的GridView,界面效果如圖5所示,部分代碼如下:
JazzyViewPager mJazzy = (JazzyViewPager) view.findViewById(R.id.jazzyViewPager);
mJazzy.setTransitionEffect(TransitionEffect.CubeIn);
mJazzy.setAdapter(new MyJazzyAdapter(list,onClickListener);
圖5 客戶端首頁(yè)
(2)學(xué)院、教務(wù)、就業(yè)信息列表與詳細(xì)內(nèi)容頁(yè)面.學(xué)院、教務(wù)、就業(yè)信息各模塊中的內(nèi)容均由學(xué)院現(xiàn)有網(wǎng)站通過網(wǎng)絡(luò)抓取獲得,界面風(fēng)格一致,分為信息列表和詳細(xì)內(nèi)容兩個(gè)展示頁(yè)面.信息列表頁(yè)面通過自定義下拉刷新列表控件CustomListView實(shí)現(xiàn),數(shù)據(jù)由掌上校園服務(wù)器端抓取學(xué)院網(wǎng)站提供,在請(qǐng)求時(shí)分頁(yè)進(jìn)行請(qǐng)求,當(dāng)用戶向上滑動(dòng)列表時(shí),會(huì)自動(dòng)加載下一頁(yè)數(shù)據(jù).新聞內(nèi)容頁(yè)面是通過WebView進(jìn)行加載,服務(wù)器端根據(jù)請(qǐng)求的新聞URL先去學(xué)院網(wǎng)站抓取數(shù)據(jù),然后將數(shù)據(jù)中的圖片、附件鏈接等相對(duì)地址改為絕對(duì)地址,最后放入HTML框架中返回至客戶端,界面效果如圖6所示,部分代碼如下:
RequestParams params = new RequestParams();
params.put("page", cur); params.put("type", type);
client.get(url,params,textHttpResponseHandler);
圖6 新聞列表與內(nèi)容頁(yè)
(3)課堂考勤.課堂考勤頁(yè)面需要用戶先登錄,登錄賬號(hào)為正方教務(wù)系統(tǒng)賬號(hào),登錄成功后首先點(diǎn)擊“同步”按鈕同步教務(wù)系統(tǒng)課程信息,服務(wù)器端根據(jù)客戶端提供的用戶名、密碼、角色等信息模擬登錄正方教務(wù)系統(tǒng),抓取課程信息以及每門課的選課信息,然后緩存至客戶端SQLite數(shù)據(jù)庫(kù)中,后續(xù)加載直接讀取本地?cái)?shù)據(jù)庫(kù),考勤數(shù)據(jù)只記錄異常情況(曠課、請(qǐng)假),在連接WIFI的情況下同步至服務(wù)端,界面效果如圖7所示,部分代碼如下:
圖7 考勤管理
ListView customListView = (ListView) findViewById(R.id.CourseList);
List
customListView.setAdapter(new MyKaoqinAdapter(activity, list));
(4)通訊錄.通訊錄模塊為全院所有部門及人員的聯(lián)系方式、辦公地點(diǎn),首次使用時(shí)需要從服務(wù)器端(Oracle數(shù)據(jù)庫(kù))同步數(shù)據(jù)至本地,顯示時(shí)從本地?cái)?shù)據(jù)庫(kù)中讀取并轉(zhuǎn)換為TreeElement對(duì)象,然后初始化TreeView控件,設(shè)計(jì)時(shí)采用部門目錄樹的形式顯示,方便操作,界面效果如圖8所示,部分代碼如下:
treeElements = AddressUtil.DeptEntityToTreeElement(sh.getDeptEntityData("1"));
treeView.initData(this, treeElements);
treeView.setLastLevelItemClickCallBack(itemClickCallBack);
圖8 通訊錄
3結(jié)束語
根據(jù)學(xué)院師生實(shí)際需求,本文基于Android平臺(tái)設(shè)計(jì)了一套掌上校園客戶端系統(tǒng),實(shí)現(xiàn)了對(duì)學(xué)校新聞、教務(wù)、就業(yè)等相關(guān)信息的便捷查看.系統(tǒng)界面友好、操作簡(jiǎn)單,不僅為教師教務(wù)提供了新的途徑,也為學(xué)生及時(shí)了解學(xué)院信息、教務(wù)信息、就業(yè)信息提供了方便.
參考文獻(xiàn):
[1]謝文燾,董黎剛.基于Android的校園網(wǎng)移動(dòng)客戶端設(shè)計(jì)與實(shí)現(xiàn)[J].杭州電子科技大學(xué)學(xué)報(bào),2012,32(5):203-206.
[2]馬文科,劉琨.基于Android的數(shù)字化校園客戶端設(shè)計(jì)與實(shí)現(xiàn)[J].萍鄉(xiāng)高等??茖W(xué)校學(xué)報(bào),2014,31(3):55-58.
(責(zé)任編輯:王前)
DOI:10.13877/j.cnki.cn22-1284.2016.06.005
*收稿日期:2016-06-10
基金項(xiàng)目:國(guó)家青年科學(xué)基金資助項(xiàng)目(61300059)
作者簡(jiǎn)介:王英明,男,安徽宿州人,教師.
中圖分類號(hào):TP31
文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1008-7974(2016)03-0012-03
通化師范學(xué)院學(xué)報(bào)2016年6期