郭奇志,陳 光,任卓君,羅金龍
(東華大學(xué)信息科學(xué)與技術(shù)學(xué)院,上海 201620)
可隨身攜帶的智能手機(jī)與電腦比起來(lái),顯然更勝一籌。電腦可以做的,在智能手機(jī)上基本都可以實(shí)現(xiàn)。2015 年2 月國(guó)外權(quán)威機(jī)構(gòu)發(fā)布了2014 年智能手機(jī)市場(chǎng)占有率分析,采用Android 和iOS 操作系統(tǒng)占全部智能手機(jī)的96.3%。其中Android 市場(chǎng)占有率高達(dá)81.5%,Android 智能手機(jī)在高校學(xué)生和老師中的占有率也相當(dāng)高[1]。
隨著高等教育對(duì)學(xué)生實(shí)踐能力的要求不斷提升,實(shí)驗(yàn)教學(xué)越來(lái)越受到重視,高校實(shí)驗(yàn)室建設(shè)一直對(duì)培養(yǎng)學(xué)生的動(dòng)手能力,提高獨(dú)立分析能力起到至關(guān)重要的作用,但是目前高校實(shí)驗(yàn)室管理系統(tǒng)大多是PC 上基于B/S 模式的管理系統(tǒng),甚至是以教師和同學(xué)見(jiàn)面、紙質(zhì)登記的方式進(jìn)行,不能滿足便攜性的需求[2]。同一實(shí)驗(yàn)室或許承擔(dān)了幾門課程、幾個(gè)年級(jí)學(xué)生的實(shí)驗(yàn),如何合理地分配實(shí)驗(yàn)時(shí)間和設(shè)備,方便老師和學(xué)生的交流就顯得十分重要[3],為了更好地利用實(shí)驗(yàn)室資源,提高管理效率,本文設(shè)計(jì)并實(shí)現(xiàn)了具有實(shí)驗(yàn)預(yù)約、通知板、實(shí)驗(yàn)室實(shí)景、實(shí)驗(yàn)指導(dǎo)書功能的實(shí)驗(yàn)管理系統(tǒng)。
通過(guò)客戶端的登錄模塊可以注冊(cè)用戶、登入系統(tǒng),保障系統(tǒng)安全[6]。教師和學(xué)生分別使用工號(hào)、學(xué)號(hào)注冊(cè)后進(jìn)行登錄,系統(tǒng)會(huì)對(duì)賬號(hào)密碼進(jìn)行驗(yàn)證,成功后進(jìn)入相應(yīng)的導(dǎo)航界面。本系統(tǒng)對(duì)教師和學(xué)生用戶的功能模塊進(jìn)行了人性化設(shè)計(jì),除了實(shí)驗(yàn)預(yù)約和通知板2 個(gè)交互功能模塊,教師具有實(shí)驗(yàn)室實(shí)景模塊,學(xué)生具有實(shí)驗(yàn)指導(dǎo)書模塊。其功能設(shè)計(jì)圖如圖1 所示。
圖1 系統(tǒng)功能圖
2.1.1 教師用戶功能設(shè)計(jì)
教師通過(guò)通知發(fā)布功能發(fā)布教學(xué)安排或者課程臨時(shí)變動(dòng),學(xué)生通過(guò)通知板進(jìn)行查看。實(shí)驗(yàn)室實(shí)景功能使教師在需要實(shí)驗(yàn)室助理管理員輔助同學(xué)完成實(shí)驗(yàn),或者當(dāng)實(shí)驗(yàn)室需要打掃衛(wèi)生、設(shè)備升級(jí)維護(hù)時(shí),隨時(shí)通過(guò)手機(jī)客戶端鏈接實(shí)驗(yàn)室監(jiān)控查看實(shí)驗(yàn)室的情況,并且可以截圖保存監(jiān)控畫面。
2.1.2 學(xué)生用戶功能設(shè)計(jì)
實(shí)驗(yàn)指導(dǎo)書采用大綱式設(shè)計(jì),點(diǎn)擊實(shí)驗(yàn)標(biāo)題后會(huì)顯示實(shí)驗(yàn)內(nèi)容、要求、實(shí)驗(yàn)器材和步驟,方便學(xué)生預(yù)習(xí)以及實(shí)驗(yàn)進(jìn)行時(shí)查看。實(shí)驗(yàn)預(yù)約功能是本系統(tǒng)最重要的功能模塊,點(diǎn)擊進(jìn)入后選項(xiàng)有:實(shí)驗(yàn)內(nèi)容、日期、課節(jié)數(shù)、人數(shù),都選擇后預(yù)約信息即可提交至服務(wù)器,同時(shí)顯示在屏幕下方。教師通過(guò)預(yù)約審核功能將審核信息存入MySQL 數(shù)據(jù)庫(kù),由服務(wù)器發(fā)送至客戶端,顯示在預(yù)約信息下方,預(yù)約功能流程如圖2 所示。
圖2 預(yù)約功能流程圖
2.2.1 通信方式和Web 服務(wù)器
企業(yè)實(shí)施人力資源管理信息系統(tǒng),對(duì)人力資源管理從業(yè)人員計(jì)算機(jī)應(yīng)用、軟件編程等方面技能水平提出了更高的要求,企業(yè)人力資源管理者不僅要具有人力資源方面的專業(yè)知識(shí)和技能,同時(shí)要具有一定的信息技術(shù)應(yīng)用能力。這樣才能在應(yīng)用人力資源管理信息系統(tǒng)的過(guò)程中,根據(jù)管理要求隨時(shí)更新相關(guān)內(nèi)容,使整個(gè)系統(tǒng)始終可以滿足公司管理的需要。
Android 提供了HttpURLconnection 和HttpClient這2 個(gè)接口訪問(wèn)網(wǎng)站程序,本系統(tǒng)采用HttpClient 接口開(kāi)發(fā),通過(guò)GET 和POST 這2 種方式與服務(wù)器進(jìn)行交互,GET 操作用于向服務(wù)器讀取信息,POST 操作用來(lái)修改和查詢服務(wù)器內(nèi)容。客戶端通過(guò)無(wú)線網(wǎng)發(fā)出HTTP 通信請(qǐng)求到指定的URL 服務(wù)器[7-8]。系統(tǒng)服務(wù)器采用Tomcat 6.0 版本,由Servlet 技術(shù)進(jìn)行響應(yīng),Servlet 是Java 語(yǔ)言的一個(gè)類,Web 服務(wù)器通過(guò)Servlet來(lái)擴(kuò)展應(yīng)用程序。其中包含字符信息收發(fā)邏輯、信息判斷邏輯、SQL 語(yǔ)句執(zhí)行邏輯。Tomcat 服務(wù)器通過(guò)JDBC 技術(shù)訪問(wèn)MySQL 數(shù)據(jù)庫(kù)。其系統(tǒng)框架圖如圖3所示。
圖3 服務(wù)器和通信方式
2.2.2 數(shù)據(jù)庫(kù)設(shè)計(jì)
本地小型關(guān)系型數(shù)據(jù)庫(kù)SQLite 負(fù)責(zé)存儲(chǔ)賬戶信息表、預(yù)約信息、更新前的通知板信息,運(yùn)行效率高,通過(guò)SQLiteDatabase、SQLiteOpenHelper 這2 個(gè)類,完成創(chuàng)建、刪除、添加、修改、查詢的功能[9]。MySQL 數(shù)據(jù)庫(kù)負(fù)責(zé)用戶登錄驗(yàn)證、預(yù)約模塊和教師更新的通知板的數(shù)據(jù)存儲(chǔ)任務(wù),需要存儲(chǔ)4 張數(shù)據(jù)表:教師信息表、學(xué)生信息表、預(yù)約信息表、通知板信息表,主鍵分別為工號(hào)、學(xué)號(hào),后2 個(gè)表為自增主鍵。
Web 服務(wù)器通過(guò)JDBC 與MySQL 數(shù)據(jù)庫(kù)交互,先使用Class.forName 方法加載驅(qū)動(dòng)程序,再創(chuàng)建Connection 和Statement 對(duì)象,利用對(duì)象的executeUpdate 方法或executeQuery 方法執(zhí)行SQL 語(yǔ)句,最后由ResultSet 對(duì)象獲取從數(shù)據(jù)庫(kù)返回的消息。圖4 為JDBC 技術(shù)訪問(wèn)數(shù)據(jù)庫(kù)流程圖。
圖4 JDBC 技術(shù)訪問(wèn)數(shù)據(jù)庫(kù)流程
Android 客戶端用戶界面是用戶和軟件功能交互的橋梁。編程前需要在操作系統(tǒng)中安裝Java Development Kit (JDK)和Java 集成開(kāi)發(fā)環(huán)境Eclipse、Software Development Kit 和Android Development Tools(ADT)插件。通過(guò)AVD 管理在電腦上創(chuàng)建Android Virtual Device (AVD)即虛擬手機(jī),進(jìn)行客戶端的編寫和調(diào)試。
客戶端界面包括:登錄界面、導(dǎo)航界面、各功能界面。系統(tǒng)使用Android 界面設(shè)計(jì)中的線性布局LinearLayout 和相對(duì)布局RelativeLayout 以及TextView、EditText、Button、ImageView 等基礎(chǔ)控件,Spinner、List-View 高級(jí)控件,使用Java 語(yǔ)言編寫代碼。界面之間使用Android 的Intent(意圖)機(jī)制進(jìn)行跳轉(zhuǎn)。
3.2.1 登錄模塊
首先,采用RelativeLayout 相對(duì)布局,添加2 個(gè)用戶名、密碼輸入控件TextView,并設(shè)置大小和位置,添加登錄和注冊(cè)2 個(gè)Button 按鈕。接著在Java 文件中通過(guò)onClick()方法設(shè)置按鈕的監(jiān)聽(tīng)事件,將輸入的用戶名和密碼與后臺(tái)MySQL 數(shù)據(jù)庫(kù)中的進(jìn)行匹配,若匹配成功則通過(guò)Intent(意圖)機(jī)制跳轉(zhuǎn)到相關(guān)導(dǎo)航界面,否則使用Toast 類的makeText()方法打印錯(cuò)誤信息。
3.2.2 預(yù)約功能模塊與通知板模塊
當(dāng)操作相關(guān)功能時(shí),從客戶端發(fā)出HTTP 請(qǐng)求到服務(wù)器,服務(wù)器進(jìn)行數(shù)據(jù)處理后,返回XML 文件數(shù)據(jù)流,客戶端收到后對(duì)數(shù)據(jù)流進(jìn)行解析以待顯示??蛻舳伺c服務(wù)器的交互如下:
1)引用所需的類包,包括Http 協(xié)議類org.apache.http.* ;消息類org.apache.http.message.* ;手機(jī)端類org.apache.http.client.* 等。定義Web 服務(wù)器的URL public class UriAPI{public static final String TTPCustomer=" http://195.167.158.100:8028/GQZDemo/servlet/CustomerServlet";},服務(wù)器中編寫了Servlet 數(shù)據(jù)處理邏輯,會(huì)對(duì)數(shù)據(jù)按要求進(jìn)行處理。
2)創(chuàng)建Android 客戶端界面,覆蓋Activity 類的方法onCreate(),創(chuàng)建事件監(jiān)聽(tīng)器OnClickListener 對(duì)象對(duì)單擊事件進(jìn)行監(jiān)聽(tīng)。
3)使用HTTP 的GET 和POST 方式完成數(shù)據(jù)交互,此過(guò)程中包括了相關(guān)API 類的引用、數(shù)據(jù)編碼的實(shí)現(xiàn)、服務(wù)器HttpResponse 響應(yīng)數(shù)據(jù)。
從HttpResponse 對(duì)象中取出來(lái)的Web 服務(wù)器響應(yīng)數(shù)據(jù)需要進(jìn)行解析,本系統(tǒng)選擇DOM 解析的方式[10],有以下幾步:
1)獲得DOM 解析器,首先使用方法:Document-BuilderFactory newInstance(),得到解析器的工廠實(shí)例,再使用方法DocumentBuilder newDocumentBuilder()得到DOM 解析器。
2)獲得Document 類。使用方法Document parse(InputStream is)將輸入的XML 文件輸入流,解析得到DOM 文件樹(shù),便于內(nèi)容的獲取。
3)獲得XML 根節(jié)點(diǎn)、子節(jié)點(diǎn)、節(jié)點(diǎn)屬性。使用方法分別為:Element getDocumentElement()、NodeList getChildNodes()、String getAttribute(String name)。
實(shí)驗(yàn)預(yù)約和通知板模塊在Android 模擬器中運(yùn)行結(jié)果如圖5 與圖6 所示。
圖5 實(shí)驗(yàn)預(yù)約界面
圖6 通知板界面
3.2.3 實(shí)驗(yàn)室大綱模塊
結(jié)合Android 的線性布局、TextView、ListView 等控件采用折疊式目錄設(shè)計(jì)[11],單擊每個(gè)實(shí)驗(yàn)項(xiàng)目即可展開(kāi),再次點(diǎn)擊即可折疊,相關(guān)顯示消失。其數(shù)據(jù)存儲(chǔ)在本機(jī)SQLite 數(shù)據(jù)庫(kù)中。
3.2.4 實(shí)驗(yàn)室實(shí)景模塊
連接監(jiān)控?cái)z像頭的電腦必須具有聯(lián)網(wǎng)功能,實(shí)現(xiàn)如下:
1)首先需要?jiǎng)?chuàng)建一個(gè)Java interface:Camera-Source 來(lái)定義連接攝像頭的接口,用Http 方式連接遠(yuǎn)端Server 來(lái)獲取圖像數(shù)據(jù)的代碼,接著創(chuàng)建Java class:Camera 實(shí)現(xiàn)接口CameraSource,在其中創(chuàng)建回調(diào)函數(shù)onPreviewCallback()。
2)在服務(wù)器端編寫Socket 監(jiān)聽(tīng)程序,啟動(dòng)線程后隨時(shí)把JSON 數(shù)據(jù)和發(fā)送給客戶端。
3)客戶端將接收到的數(shù)據(jù)進(jìn)行NV21 解碼。Android 界面設(shè)計(jì)需創(chuàng)建Activity 來(lái)配置連接攝像頭電腦的IP、端口、監(jiān)控截圖保存位置,進(jìn)行相應(yīng)的XML文件配置和邏輯代碼編寫后即可連接實(shí)驗(yàn)室攝像頭查看實(shí)景[12-13]。連接成功一次后,通過(guò)定義一個(gè)工具類DatabaseHelper 來(lái)封裝SQLite 操作,服務(wù)器信息會(huì)被保存在SQLite 數(shù)據(jù)庫(kù)中,以便下次使用。
本系統(tǒng)在Android 平臺(tái)上通過(guò)預(yù)約功能和通知板功能滿足實(shí)驗(yàn)管理需求,并且對(duì)教師用戶和學(xué)生用戶的功能模塊進(jìn)行人性化設(shè)計(jì)。系統(tǒng)實(shí)現(xiàn)的難點(diǎn)在于各模塊的整合,客戶端和服務(wù)器之間數(shù)據(jù)交互時(shí)數(shù)據(jù)格式的轉(zhuǎn)換。選取HttpClient 的方式進(jìn)行網(wǎng)絡(luò)通信比HttpURLConnection 方式更加適合本系統(tǒng)的操作指令與服務(wù)器的交互,將Tomcat 服務(wù)器和Servlet 技術(shù)結(jié)合滿足了系統(tǒng)實(shí)時(shí)性的要求,用戶界面設(shè)計(jì)簡(jiǎn)潔,通過(guò)功能測(cè)試,運(yùn)行穩(wěn)定,提高了教師管理實(shí)驗(yàn)的時(shí)效性、便攜性,具有較強(qiáng)的應(yīng)用價(jià)值。
[1]李艷華.提高遠(yuǎn)程實(shí)驗(yàn)教學(xué)質(zhì)量的探索[J].高校實(shí)驗(yàn)室工作研究,2013(2):102-103.
[2]侯淑英.B/S 模式和C/S 模式優(yōu)勢(shì)比較[J].沈陽(yáng)教育學(xué)院學(xué)報(bào),2007,9(2):98-100.
[3]黃榮懷,Salomaa J.移動(dòng)學(xué)習(xí):理論·現(xiàn)狀·趨勢(shì)[M].北京:科學(xué)出版社,2008:33-36.
[4]沈紅雷,陳夠喜.虛擬文件系統(tǒng)機(jī)制在Android 系統(tǒng)終端控制上的應(yīng)用[J].電腦開(kāi)發(fā)與應(yīng)用,2011,24(2):75-77.
[5]賴超,龍曦,李金霖,等.基于Android 平臺(tái)的手機(jī)后臺(tái)監(jiān)聽(tīng)技術(shù)[J].電腦知識(shí)與技術(shù),2010,6(33):9472-9474.
[6]王培海.基于Android 的移動(dòng)云存儲(chǔ)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].電視技術(shù),2012,35(15):94-97.
[7]姚昱旻,劉衛(wèi)國(guó).Android 的架構(gòu)與應(yīng)用開(kāi)發(fā)研究[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2008,17(11):110-112.
[8]楊豐盛.Android 應(yīng)用開(kāi)發(fā)揭秘[M].北京:機(jī)械工業(yè)出版社,2010:66-69.
[9]陳錦輝,王景皓.XML 與Java 程序設(shè)計(jì)大全[M].北京.中國(guó)鐵道出版社,2002:23-25.
[10]趙亮,張維.基于Android 技術(shù)的界面設(shè)計(jì)與研究[J].電腦知識(shí)與技術(shù),2009,5(29):8183-8185.
[11]靳巖,姚尚朗.Google Android 開(kāi)發(fā)入門與實(shí)戰(zhàn)[M].北京:人民郵電出版社,2009:33-35.
[12]謝欣.移動(dòng)互聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)行業(yè)人才培養(yǎng)模式研究[J].聲屏世界,2011(8):57-58.
[13]Dutko A M.Domo Arigato Mr Androidato:An Introduction to the New Google Mobile Linux Framework,Android[DB/OL].http://www.linuxjournal.com/content/domo-arigato-mr-androidato% E2% 80% 94-introduction-new-googlemobile-linux-framework-android,2008-04-23.