郭一晶 李兆才
摘 要: 介紹了基于Android系統(tǒng)開發(fā)的教務(wù)系統(tǒng)。該系統(tǒng)可幫助廈門大學(xué)嘉庚學(xué)院教師Android用戶便捷訪問教務(wù)系統(tǒng)和校園資源。在Eclipse開發(fā)環(huán)境下,使用Http通信協(xié)議、開源jsoup解析、json解析和SQLite數(shù)據(jù)庫等開發(fā)技術(shù)完成系統(tǒng)開發(fā),系統(tǒng)主要功能包括查詢課程表、查詢課程班信息、查看考試安排、查看今日課程、查看天氣、查看開課通知單、查詢學(xué)生評教、查看學(xué)院新聞和搖一搖點(diǎn)名等。
關(guān)鍵詞: 教務(wù)系統(tǒng); Android平臺; 網(wǎng)頁解析; SQLite數(shù)據(jù)庫
中圖分類號:TP315 文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2014)06-38-03
0 引言
隨著移動(dòng)互聯(lián)網(wǎng)以及智能手機(jī)的快速發(fā)展,以前只能在PC上處理的事務(wù)漸漸被轉(zhuǎn)移到移動(dòng)終端,我們逐漸邁入移動(dòng)互聯(lián)網(wǎng)的時(shí)代。本設(shè)計(jì)將綜合教務(wù)系統(tǒng)的功能拓展到Android手機(jī)終端上,為方便移植,直接采用了網(wǎng)頁解析和交互的方法,以便教師快捷獲取教務(wù)系統(tǒng)信息、學(xué)院新聞和天氣等服務(wù),提高教學(xué)工作的效率。
1 系統(tǒng)設(shè)計(jì)架構(gòu)
1.1 需求分析
本系統(tǒng)將滿足用戶隨時(shí)隨地利用移動(dòng)設(shè)備訪問校內(nèi)資源的需求,并可解決傳統(tǒng)移動(dòng)設(shè)備訪問校園網(wǎng)絡(luò)的弊端和局限[1]??蛻舳斯δ苄枨蟀ǎ旱卿?、查詢課程表、查詢課程班、查看通告信息、查看開課通知單、查看考試安排、查詢學(xué)生評教、查看通知公告、查看學(xué)院新聞、查看教務(wù)新聞、查看天氣、記事本、查看今日課程、加載學(xué)院網(wǎng)頁版主頁和搖一搖點(diǎn)名等。
1.2 系統(tǒng)流程圖
該應(yīng)用開始加載后要求用戶登錄,登錄成功后進(jìn)入系統(tǒng)主界面,當(dāng)用戶點(diǎn)擊視圖時(shí),程序從主界面跳轉(zhuǎn)到相應(yīng)的Activity上,響應(yīng)相應(yīng)的用戶請求[2],也可以選擇退出應(yīng)用,系統(tǒng)流程圖如圖1所示。
1.3 功能模塊設(shè)計(jì)
系統(tǒng)按功能劃分可分為三個(gè)模塊:我的教務(wù)、新聞中心和工具模塊。
⑴ 我的教務(wù)模塊
本模塊包括綜合教務(wù)系統(tǒng)的七個(gè)常用功能:課程表、課程班信息、通告信息、開課通知單、考試安排和學(xué)生評教等。
⑵ 新聞中心模塊
本模塊包括學(xué)院新聞、通知公告、高教動(dòng)態(tài)、教務(wù)新聞等欄目。
⑶ 工具模塊
本模塊包括天氣、記事本、今日課程、web學(xué)院主頁和搖一搖等。
1.4 數(shù)據(jù)庫設(shè)計(jì)
Android上的數(shù)據(jù)存儲可以采用SQLite來完成,SQLite是集成在Android平臺上的一個(gè)嵌入式關(guān)系數(shù)據(jù)庫,其最大特點(diǎn)是SQLite可以保存任何類型的數(shù)據(jù)到任何字段中[3]。為了實(shí)現(xiàn)記事本的功能,創(chuàng)建數(shù)據(jù)庫Notes.db,記事表表名為notes_table,其結(jié)構(gòu)如表1所示。
2 具體實(shí)現(xiàn)
2.1 界面設(shè)計(jì)
本系統(tǒng)主界面采用TAB標(biāo)簽進(jìn)行分頁顯示,分別為圖塊菜單頁、列表菜單頁等。
圖塊菜單頁,采用長方形或正方形圖塊顯示系統(tǒng)功能菜單,簡潔清爽,色彩感較好,且學(xué)校日歷和天氣能夠動(dòng)態(tài)顯示,界面效果圖如圖2所示。
列表菜單頁,將菜單項(xiàng)按功能進(jìn)行分類,分為我的教務(wù)、新聞中心、工具三大類,分別以條形框的形式顯示,方便查找,其中我的教務(wù)模塊界面效果圖如圖3所示。
2.2 各模塊實(shí)現(xiàn)
⑴ 登錄功能實(shí)現(xiàn)
用戶使用本系統(tǒng)首先要通過登錄驗(yàn)證。登錄包括三個(gè)過程,啟動(dòng)系統(tǒng)時(shí)首先檢測當(dāng)前是否有可用網(wǎng)絡(luò),如果沒有網(wǎng)絡(luò),彈出是否設(shè)置網(wǎng)絡(luò)對話框;在可用網(wǎng)絡(luò)情況下,登錄視圖根據(jù)上次是否已有用戶登錄成功記錄,若用戶之前設(shè)置了“記住我”,則使用存儲用戶名和密碼到xml文件的key-value鍵值對數(shù)據(jù),默認(rèn)將數(shù)據(jù)存放在系統(tǒng)路徑[4],登錄時(shí)讀取之后執(zhí)行登錄Handle,否則系統(tǒng)提示用戶輸入用戶名和密碼;登錄是通過向本地服務(wù)器傳遞用戶名和密碼數(shù)據(jù)實(shí)現(xiàn),即手機(jī)客戶端把教師用戶名和密碼、通過網(wǎng)絡(luò)傳遞給本地服務(wù)器, 本地服務(wù)器再通過網(wǎng)絡(luò)POST請求教務(wù)系統(tǒng)服務(wù)器,取得響應(yīng)結(jié)果,此處是網(wǎng)頁源代碼,本地服務(wù)器端進(jìn)行網(wǎng)頁解析,若網(wǎng)頁源文件存在登錄成功標(biāo)識“歡迎您”則成功登錄,進(jìn)入到系統(tǒng)主頁面,否則提示相應(yīng)錯(cuò)誤。
⑵ 我的教務(wù)模塊實(shí)現(xiàn)
教務(wù)模塊實(shí)現(xiàn),主要是通過向本地服務(wù)器端發(fā)送請求,本地服務(wù)器再通過請求教務(wù)系統(tǒng)服務(wù)器得到網(wǎng)頁源代碼,通過jsoup解析得到需要的信息。解析的結(jié)果再以json或網(wǎng)頁的形式傳送給客戶端。此過程需定義string型的url,用來連接服務(wù)器端,向服務(wù)器端發(fā)送請求,url的值就是服務(wù)器端的地址[5]。在服務(wù)器端,系統(tǒng)將數(shù)據(jù)集合并且組裝為XML文件,在客戶端來解析這個(gè)文件[6]。
如“查詢課程表”的功能實(shí)現(xiàn)過程是:GET請求本地服務(wù)器,本地服務(wù)器再GET請求教務(wù)系統(tǒng)服務(wù)器,取得課表首頁源代碼,通過jsoup解析獲取學(xué)期信息列表,以json格式傳遞給客戶端,客戶端解析后顯示到界面上,再根據(jù)當(dāng)前所選學(xué)期即本學(xué)期,發(fā)送鏈接標(biāo)識給本地服務(wù)器,本地服務(wù)器再次根據(jù)鏈接獲取網(wǎng)頁的源代碼,截取課程表格那部分源代碼,以網(wǎng)頁的格式傳送給客戶端,客戶端獲取后附加上本地CSS樣式文件,用WebView組件進(jìn)行加載,即可顯示成網(wǎng)頁版樣式的的課表,通過選擇不同學(xué)期發(fā)送請求獲取相應(yīng)課程表。課程表如圖4所示。
類似地,可依次實(shí)現(xiàn)課程班信息、通告信息、開課通知單、考試安排和學(xué)生評教等功能。
⑶ 新聞模塊實(shí)現(xiàn)
客戶端使用HttpURLConnection發(fā)送 GET請求學(xué)院新聞欄目的RSS服務(wù)器,獲得服務(wù)器返回的數(shù)據(jù)流,通過XmlPullParser解析器來解析得到新聞列表,其中包含標(biāo)題、發(fā)布時(shí)間、新聞描述和新聞鏈接,以自定義的列表顯示所有新聞的標(biāo)題和發(fā)布時(shí)間,用戶可以選擇自己想看的新聞進(jìn)行點(diǎn)擊,點(diǎn)擊后跳轉(zhuǎn)到顯示新聞具體信息的界面,顯示標(biāo)題、發(fā)布時(shí)間、描述和瀏覽原文的鏈接,點(diǎn)擊瀏覽原文的鏈接,可以用WebView加載該鏈接顯示新聞原網(wǎng)頁。
⑷ 工具模塊實(shí)現(xiàn)
① 天氣查看
天氣服務(wù)功能是通過調(diào)用服務(wù)器端的方法來獲取天氣數(shù)據(jù)。其核心是通過調(diào)用通信協(xié)議SOAP(Simple Object Access Protocol)的接口,從Web Service 提供商中提取信息。本模塊使用Ksoap2標(biāo)準(zhǔn),調(diào)用webxml.com.cn網(wǎng)站提供的免費(fèi)天氣服務(wù)接口,其天氣數(shù)據(jù)來源于中國氣象局,數(shù)據(jù)每2.5小時(shí)左右自動(dòng)更新一次,準(zhǔn)確可靠。本文實(shí)現(xiàn)了獲得漳州和廈門的最近三天的天氣狀況,其中包括:天氣現(xiàn)象、溫度、風(fēng)向、和風(fēng)速。
② 實(shí)現(xiàn)記事本
編寫一個(gè)類繼承SQLiteOpenHelper,通過getWritableDatabase()獲得一個(gè)SQLiteDatabase數(shù)據(jù)庫,建立增刪改查操作方法。在記事本界面上,建立標(biāo)題和內(nèi)容兩個(gè)文本輸入框,用戶輸入完成后點(diǎn)擊添加按鈕,執(zhí)行數(shù)據(jù)庫中添加方法,若添加成功,更新顯示事件列表,點(diǎn)擊事件可以查看事件詳情,也可以在詳情界面選擇刪除該事件。
③ 今日課程
先獲取學(xué)校首頁日歷,當(dāng)判斷存在“本學(xué)期”時(shí),再次判斷系統(tǒng)時(shí)間是星期幾,加載當(dāng)日的課表,其他情況如春假、秋假和學(xué)生寒暑假等情況,不加載今日課程表。
④ 訪問學(xué)院主頁
使用系統(tǒng)WebView視圖學(xué)院的加載Web網(wǎng)站,實(shí)現(xiàn)了簡單瀏覽器的功能,可以如瀏覽器訪問學(xué)院網(wǎng)站。
⑤ 搖一搖點(diǎn)名
客戶端使用HttpURLConnection發(fā)送 GET請求本地服務(wù)器,本地服務(wù)器通過GET請求獲取課程班頁面源代碼,解析獲取課程班信息,其中包括上課人數(shù)和學(xué)生名單鏈接,存儲到課程班集合,以json格式返回給客戶端,客戶端根據(jù)所選課程班信息,GET請求服務(wù)器得到該課程的學(xué)生名單,應(yīng)用加速度傳感器的工作原理,快速晃動(dòng)手機(jī),即搖一搖[7],隨機(jī)抽取1到5個(gè)學(xué)生,將抽取到的學(xué)生信息以列表顯示到屏幕上。
點(diǎn)擊“查看名單”按鈕,可查看當(dāng)前課程班的所有學(xué)生,搖動(dòng)手機(jī)或點(diǎn)擊該按鈕可以隨機(jī)取得指定數(shù)目的學(xué)生。結(jié)果顯示到按鈕下面的自定義列表中,輕點(diǎn)單行學(xué)生可以進(jìn)行選擇登記請假或曠課到記事本的操作,長按單行學(xué)生信息,可以將該學(xué)生信息持久化,增大下次被搖到的概率。點(diǎn)名界面如圖5所示。
3 結(jié)束語
本文介紹了基于Android平臺的教務(wù)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),該系統(tǒng)豐富了教師對教務(wù)相關(guān)信息等校園資源的獲取方式,教師可隨時(shí)通過手機(jī)登錄,獲取教務(wù)系統(tǒng)信息、學(xué)院新聞和天氣等服務(wù),同時(shí)本系統(tǒng)加入了“搖一搖點(diǎn)名”功能,幫助教師實(shí)現(xiàn)考勤或提問點(diǎn)名的簡單化和趣味化。技術(shù)實(shí)現(xiàn)上通過直接采用網(wǎng)頁解析和交互的方法,方便擴(kuò)展和移植。
本系統(tǒng)仍存在不足之處,如用戶操作界面還不夠精美,RSS新聞每次點(diǎn)擊都需重新獲取等,這些問題需要進(jìn)一步改進(jìn)。同時(shí),本系統(tǒng)還可以進(jìn)一步擴(kuò)展常用功能,帶給用戶更多更周到的體驗(yàn)。
參考文獻(xiàn):
[1] 趙英,王飛.手持移動(dòng)設(shè)備在校園信息系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)技術(shù)與發(fā)展,2012.22:195-197
[2] 林永興.基于Android的校園助手手機(jī)應(yīng)用程序的研究與設(shè)計(jì)[J].硅谷,2012.3:60
[3] 韓迪.Android創(chuàng)意實(shí)例詳解[M].北京郵電大學(xué)出版社,2012.
[4] 尹京花.基于Android開發(fā)的數(shù)據(jù)存儲[J].數(shù)字通信,2012.6:79-81
[5] 關(guān)東升,趙志榮.Android開發(fā)案例驅(qū)動(dòng)教程[M].北京:機(jī)械工業(yè)出版社,2011.
[6] 張新柱.基于Android手機(jī)終端信息查詢系統(tǒng)的設(shè)計(jì)[J].齊齊哈爾大學(xué)學(xué)報(bào),2012(4):47-50
[7] 張思民.Android應(yīng)用程序設(shè)計(jì)[M].清華大學(xué)出版社,2013.