曹雙雙
摘要:教育信息化促使校園建設(shè)不斷完善,信息移動(dòng)化正逐漸走進(jìn)校園生活。為了提高高校信息化水平,方便Android智能手機(jī)用戶查詢學(xué)校相關(guān)信息,在深入進(jìn)行需求分析基礎(chǔ)上,利用Android技術(shù)和SQLite數(shù)據(jù)庫(kù),以湖北師范學(xué)院為例,研究了校園移動(dòng)平臺(tái)客戶端的設(shè)計(jì)與實(shí)現(xiàn)過(guò)程。該客戶端基于Java語(yǔ)言開(kāi)發(fā)完成,實(shí)現(xiàn)了校園新聞公告查詢、課程表查詢、空教室查詢和教務(wù)信息查詢等功能,并且已經(jīng)在Android5.0仿真設(shè)備上測(cè)試通過(guò)。
關(guān)鍵詞:Android;校園移動(dòng)平臺(tái);平臺(tái)設(shè)計(jì)
DOIDOI:10.11907/rjdk.151754
中圖分類號(hào):TP319
文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào)文章編號(hào):16727800(2015)008017903
0 引言
隨著移動(dòng)終端的普及,移動(dòng)互聯(lián)網(wǎng)發(fā)展正日漸升溫,在無(wú)線通訊網(wǎng)絡(luò)技術(shù)發(fā)展成熟的大環(huán)境下,大學(xué)生這一特殊群體中Android智能機(jī)的使用率較高,且手機(jī)的智能化程度越來(lái)越高,手機(jī)的傳輸速度越來(lái)越快,手機(jī)也早已突破傳統(tǒng)的功能應(yīng)用。近年來(lái),隨著高校擴(kuò)招,學(xué)院師生數(shù)量急劇膨脹,加上信息社會(huì)的快速發(fā)展,校園的信息量也逐漸變得龐大。在高校日常工作中,利用智能手機(jī)操作教務(wù)系統(tǒng)實(shí)時(shí)發(fā)布學(xué)生信息、教務(wù)信息、放假信息等內(nèi)容,可以讓教學(xué)工作有序進(jìn)行,師生使用智能手機(jī)等移動(dòng)終端實(shí)現(xiàn)校園信息化管理具有深刻的現(xiàn)實(shí)意義與極高的應(yīng)用價(jià)值[1]。
1 相關(guān)技術(shù)
1.1 Java技術(shù)
Java是一種可以撰寫(xiě)跨平臺(tái)的、面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,擁有卓越的通用性、高效性、平臺(tái)移植性和安全性等優(yōu)良特性,在Android開(kāi)發(fā)中是主要開(kāi)發(fā)語(yǔ)言之一。
1.2 XML技術(shù)與MVC架構(gòu)
XML(eXtensible Markup Language)中文名為可擴(kuò)展標(biāo)記語(yǔ)言,是互聯(lián)網(wǎng)聯(lián)盟(W3C)于1998年制定的一種語(yǔ)言規(guī)范,是全新的描述結(jié)構(gòu)化數(shù)據(jù)的語(yǔ)言[2]。在Android開(kāi)發(fā)中,XML主要用于應(yīng)用權(quán)限配置、Activity注冊(cè)、布局文件編寫(xiě)、資源存儲(chǔ)與標(biāo)記等。
MVC是一種架構(gòu)型模式,用來(lái)指導(dǎo)開(kāi)發(fā)者改善應(yīng)用程序架構(gòu),使得開(kāi)發(fā)和維護(hù)效率更高。在MVC中,應(yīng)用程序被劃分為模型(Model)、視圖(View)、控制器(Controller)3部分。運(yùn)用MVC模式進(jìn)行開(kāi)發(fā),將有利于數(shù)據(jù)維護(hù)并提升開(kāi)發(fā)效率。
1.3 Android開(kāi)發(fā)技術(shù)
Android是一種基于Linux的開(kāi)放源碼系統(tǒng)。據(jù)CNET報(bào)道,調(diào)研機(jī)構(gòu)Strategy Analytics最新的第三季度報(bào)告中顯示,Android以83.6%的市場(chǎng)占有率穩(wěn)居移動(dòng)操作系統(tǒng)市場(chǎng)之首。因此,選用Android系統(tǒng)進(jìn)行開(kāi)發(fā)有利于用戶量的提升[4]。
1.4 SQLite數(shù)據(jù)庫(kù)
SQLite是Android系統(tǒng)自帶的輕量型、運(yùn)算速度極快的嵌入式關(guān)系型數(shù)據(jù)庫(kù),它不僅支持標(biāo)準(zhǔn)的SQL語(yǔ)法,還可以對(duì)Android封裝好的API進(jìn)行操作,讓存儲(chǔ)和讀取數(shù)據(jù)變得方便。使用SQLite可以方便地調(diào)用后臺(tái)數(shù)據(jù)庫(kù)。
2 系統(tǒng)分析與設(shè)計(jì)
2.1 需求分析
2.1.1 開(kāi)發(fā)平臺(tái)需求和運(yùn)行需求
本系統(tǒng)在win7操作系統(tǒng)上開(kāi)發(fā),開(kāi)發(fā)環(huán)境包括eclipse、JDK、android SDK、Android eclipse ADT。開(kāi)發(fā)后能在大部分Android手機(jī)上使用,支持Android最新系統(tǒng)版本。其安全性、可靠性和易用性等非功能性需求也可得到保障。
2.1.2 功能需求
系統(tǒng)將滿足用戶隨時(shí)隨地利用移動(dòng)設(shè)備訪問(wèn)校內(nèi)資源的需求,并可解決傳統(tǒng)移動(dòng)設(shè)備訪問(wèn)校園網(wǎng)絡(luò)的弊端與局限??蛻舳斯δ苄枨蟀ń虅?wù)信息查詢、校園新聞公告、圖書(shū)館信息查詢、內(nèi)置瀏覽器等。
2.2 功能模塊設(shè)計(jì)
2.2.1 模擬登錄
模擬登錄主要通過(guò)使用模擬登錄界面,獲取學(xué)號(hào)與密碼以及用戶類別,運(yùn)用HttpURLConnection、HttpClient訪問(wèn)教務(wù)系統(tǒng)。關(guān)鍵代碼如下:
//設(shè)置編碼方式
HttpEntity entity = new UrlEncodedFormEntity (params,HTTP.UTF_8); httpRequest.setEntity(entity);
//新建 HTTP 客戶端
HttpClient httpClient = new DefaultHttpClient();
//執(zhí)行請(qǐng)求得到響應(yīng)
HttpResponse httpResponse= httpClient.execute (httpRequest);
//判斷響應(yīng)的狀態(tài)是否成功
if (httpResponse.getStatusLine () .getStatusCode () == HttpStatus.SC_OK)
{
//得到結(jié)果字符串
String result = EntityUtils.toString ( httpResponse.getEntity(),"gb2312");
String s1 = " alert ("" ;
if ( result.indexOf (s1) != result.lastIndexOf (s1) && result.indexOf (" expandingWindow (" http:") ==-1)
{ int b1 = result.lastIndexOf ( s1) +s1. length () ;
int b2 = result.lastIndexOf (" ") ;") ;
String outstr = result.substring (b1, b2) ;
txtsearchResult.setText(outstr);
} else {
Header h []= httpResponse.getAllHeaders ();
String sitecookie = "" ;
String c ="" ;
for (int i = 0; i < h.length; i++)
{ c = h [i].getName () ;
if (c.trim () .equals (" Set-Cookie"))
{ sitecookie=h[i].getValue(); } }
2.2.2 教務(wù)信息查詢模塊
通過(guò)教務(wù)系統(tǒng)的模擬登錄可以查詢開(kāi)設(shè)課程、選課,并查看課程表、課程信息和成績(jī)。每個(gè)模塊涉及的類不同,如包含了課程基本屬性及其屬性的get()、set()方法來(lái)獲取、存入和刪除課程信息的類Mcourse,通過(guò)新建HTTP客戶端,獲取網(wǎng)頁(yè)信息,運(yùn)用正則表達(dá)式獲取其中的課程信息,再通過(guò)調(diào)用各類View的setText()方法使課程信息呈現(xiàn)在屏幕控件上。而其它類如MScore包含了成績(jī)基本信息及其屬性的get()、set()方法,以及獲取、存入和刪除課程成績(jī)的數(shù)據(jù)庫(kù)操作;ActivityPickCourse完成查看搜索結(jié)果的界面,取出由ActivitySearchCourse存入數(shù)據(jù)庫(kù)的數(shù)據(jù);ActivityMyScore完成課程表的界面,實(shí)現(xiàn)了在ProtocolMyCourse文件中定義的ProtocolMyCourseDelegate接口等。
該模塊最有特色的一個(gè)地方就是在原有教務(wù)信息查詢系統(tǒng)基礎(chǔ)上增加了空教室查詢功能。由于課程安排與學(xué)生活動(dòng)等原因,無(wú)法通過(guò)計(jì)算來(lái)獲取空教室,因而只能通過(guò)教務(wù)處發(fā)布的自習(xí)教室表格導(dǎo)入數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)空教室的查詢。關(guān)鍵代碼如下:
--如果接受數(shù)據(jù)導(dǎo)入的表已經(jīng)存在
insert into 自習(xí)教室表 select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,
'Excel 5.0; HDR=YES;DATABASE=c:test.xls',sheet1$)
--如果導(dǎo)入數(shù)據(jù)并生成表
select * into 自習(xí)教室表 from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,
'Excel 5.0;HDR=YES;DATABASE=c:test.xls',sheet1$)
此時(shí)使用的數(shù)據(jù)庫(kù)是Android自帶的SQLite輕量級(jí)的嵌入式關(guān)系型數(shù)據(jù)庫(kù),可以大大提高效率。而傳統(tǒng)的JDBC需要消耗大量資源,對(duì)移動(dòng)設(shè)備并不適用,可以使用Android自帶的SQLiteOpenHelpr類對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。
2.2.3 校園新聞公告模塊
通過(guò)ListView控件對(duì)新聞和公告進(jìn)行控制,在完成ListView中各子項(xiàng)的布局后將其填充至Listview控件中;然后創(chuàng)建適配器類AltColorAdapter,讓其繼承SimpleAdapter基類,重寫(xiě)其getView()方法,完成列表中隔行換色顯示效果;接著調(diào)用ListView控件的setAdapter()方法與AltColorAdapter類對(duì)象進(jìn)行綁定;最后調(diào)用ListView控件的setOnItemClickListener()方法來(lái)設(shè)置列表中子項(xiàng)的點(diǎn)擊操作,實(shí)時(shí)獲取學(xué)校官網(wǎng)的新聞與通知公告,運(yùn)用XML存儲(chǔ)新聞標(biāo)題、內(nèi)容、時(shí)間。關(guān)鍵代碼如下:
//使用SimpleAdapter綁定數(shù)據(jù)
private void bindData1()
{
List
List
for(testTable t: list)
{
HashMap
h.put("name", t.getName());
h.put("memo", t.getMemo());
h.put("id", t.getId());
data.add(h);
}
SimpleAdapter adapter=new SimpleAdapter(this, data, R.layout.item,
new String[]{"name","memo"},new int[]{R.id.testname,R.id.testmemo});
listView.setAdapter(adapter);
}
2.2.4 圖書(shū)館信息查詢模塊
圖書(shū)館模塊完成了圖書(shū)搜索、預(yù)約、借閱歷史查看、續(xù)借、已借未還記錄查看5個(gè)功能。根據(jù)手機(jī)界面易用性的非功能性需求,圖書(shū)館模塊分為登錄主界面和兩個(gè)功能模塊,即圖書(shū)搜索(包括搜索和預(yù)約)、圖書(shū)管理(包括查看借閱歷史、查看未還記錄和續(xù)借)。主界面用來(lái)處理普通用戶和管理員登錄的請(qǐng)求。主要代碼如下:
if(user.getPassword().equalsIgnoreCase(password))
{
flag=true;
}else{
flag=false;
}
圖書(shū)搜索主要用于查詢用戶需要的圖書(shū)信息,包括查看是否被預(yù)約。部分代碼如下:
try {
bookList=dao.findBook (bookName);
{
setAtribute(“bookList”,bookList) ;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
管理圖書(shū)模塊主要幫助用戶查詢自己的借閱信息,包括書(shū)籍名稱、借閱歷史、未還記錄和續(xù)借等功能。部分代碼如下:
int number=Integer.parseInt(number);
if(number>0)
{
while(i { Book book1=new Book(); i++; ………… try { LibraryDao.save(book1); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } 2.2.5 內(nèi)置瀏覽器 使用WebView控件可以輕松置入瀏覽器,通過(guò)對(duì)常用網(wǎng)站的設(shè)置,可以方便師生進(jìn)入教務(wù)處、OA辦公系統(tǒng)、教務(wù)系統(tǒng)、以及學(xué)校網(wǎng)站等,極大減少了輸入地址以及尋找超鏈接的時(shí)間。不用單獨(dú)打開(kāi)瀏覽器應(yīng)用,節(jié)約了時(shí)間,減少了內(nèi)存消耗。 2.3 系統(tǒng)框架 系統(tǒng)采用C/S結(jié)構(gòu),有利于降低服務(wù)器的負(fù)擔(dān)。由于后臺(tái)數(shù)據(jù)庫(kù)和服務(wù)器的集中處理,也降低了客戶端的運(yùn)行復(fù)雜程度,減少了對(duì)手機(jī)資源的需求和占用。 2.4 系統(tǒng)維護(hù) 數(shù)據(jù)庫(kù)的維護(hù)和更新需要有專人及時(shí)處理,即將過(guò)時(shí)的信息難以滿足用戶需求。網(wǎng)絡(luò)數(shù)據(jù)的傳輸安全也非常重要,服務(wù)器中存在著大量的個(gè)人信息,如因安全性問(wèn)題導(dǎo)致信息泄漏后果將不堪設(shè)想。這需要在服務(wù)器建設(shè)與維護(hù)中更加注意安全性問(wèn)題,以保證系統(tǒng)的正常運(yùn)行。 3 結(jié)語(yǔ) 隨著“互聯(lián)網(wǎng)+”概念的推出和智能手機(jī)的普及,基于Android手機(jī)的校園應(yīng)用系統(tǒng)得到了廣泛應(yīng)用。本文結(jié)合校園實(shí)際需求,進(jìn)行了基于Android手機(jī)的校園移動(dòng)平臺(tái)設(shè)計(jì),該平臺(tái)能為師生提供便捷的信息查詢等功能,具有一定的應(yīng)用價(jià)值。同時(shí)其可移植性強(qiáng),幾乎所有校園平臺(tái)都可以此為藍(lán)本進(jìn)行二次開(kāi)發(fā),并且對(duì)地方門(mén)戶新聞的應(yīng)用開(kāi)發(fā)也具有一定的參考價(jià)值。 參考文獻(xiàn): [1] 熊健.基于Android平臺(tái)的企業(yè)移動(dòng)應(yīng)用開(kāi)發(fā)框架的分析與設(shè)計(jì)[J].軟件,2012,33(11):4446. [2] 李巖.基于XML的電子政務(wù)架構(gòu)XML_GOV[D].北京:清華大學(xué),2004. [3] 陳臣,王斌,孫琳,等.研磨Struts2[M].北京:清華大學(xué)出版社,2011. [4] 郭霖.第一行代碼Android[M].北京:人民郵電出版社,2014. [5] 趙英,王飛.手持移動(dòng)設(shè)備在校園信息系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)技術(shù)與發(fā)展,2012,22(12):195197. [6] 王述聰.基于Android手機(jī)應(yīng)用的在線課程表查詢[J].電腦編程技巧與維護(hù),2013(22):5254. (責(zé)任編輯:孫 娟)