郝祥康,鮑軍委,葉鏈旭,梁瀟,劉浩
(南京航空航天大學(xué)理學(xué)院,江蘇南京,211106)
基于Android平臺(tái)的物理實(shí)驗(yàn)開放教學(xué)管理系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)
郝祥康,鮑軍委,葉鏈旭,梁瀟,劉浩
(南京航空航天大學(xué)理學(xué)院,江蘇南京,211106)
隨著移動(dòng)互聯(lián)網(wǎng)的快速發(fā)展,大學(xué)生群體對(duì)隨身攜帶的手機(jī)等移動(dòng)終端表現(xiàn)出高依賴性。為滿足大學(xué)物理實(shí)驗(yàn)教學(xué)和學(xué)生學(xué)習(xí)需求,基于Android平臺(tái),設(shè)計(jì)開發(fā)一款交互界面友好、查詢功能完善、數(shù)據(jù)處理準(zhǔn)確、可實(shí)時(shí)與教學(xué)管理網(wǎng)站交互的物理實(shí)驗(yàn)開放教學(xué)管理系統(tǒng)。
Android;移動(dòng)互聯(lián)應(yīng)用;實(shí)驗(yàn)數(shù)據(jù)處理
隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,手機(jī)已經(jīng)成為絕大部分大學(xué)生不可或缺的隨身物品。對(duì)于此種現(xiàn)狀,除了倡導(dǎo)學(xué)生減少手機(jī)的娛樂、社交等使用量之外,還應(yīng)當(dāng)對(duì)學(xué)生進(jìn)行因勢(shì)利導(dǎo),引導(dǎo)學(xué)生將時(shí)間固定、地點(diǎn)固定的學(xué)習(xí)進(jìn)行多維的延伸,逐漸將手機(jī)等移動(dòng)設(shè)備投入于學(xué)習(xí)和相關(guān)的使用上。
大學(xué)物理實(shí)驗(yàn)課是高等學(xué)校理工類專業(yè)對(duì)學(xué)生進(jìn)行科學(xué)實(shí)驗(yàn)基本訓(xùn)練的必修課程,在人才培養(yǎng)中具有其它課程不可替代的重要作用[1]。為方便實(shí)驗(yàn)教學(xué)和學(xué)生學(xué)習(xí),設(shè)計(jì)與開發(fā)一套基于移動(dòng)平臺(tái)的物理實(shí)驗(yàn)開放教學(xué)管理系統(tǒng),可以與基于電腦平臺(tái)的實(shí)驗(yàn)教學(xué)管理系統(tǒng)結(jié)合,使學(xué)生可以方便地在移動(dòng)終端查詢已預(yù)約實(shí)驗(yàn)、實(shí)驗(yàn)成績(jī),及時(shí)收到各種實(shí)驗(yàn)教學(xué)相關(guān)信息,并可以處理數(shù)據(jù)等。由于Android發(fā)展日益成熟完善,在移動(dòng)市場(chǎng)占據(jù)了很大的份額的同時(shí),依然擁有著廣闊的前景[2]。本系統(tǒng)基于Android平臺(tái)開發(fā)。
1.1 環(huán)境條件
系統(tǒng)的最終搭載對(duì)象為使用Android操作系統(tǒng)的各種手機(jī)終端,選擇傳統(tǒng)的Eclipse作為開發(fā)環(huán)境。Eclipse是基于Java的、開放源代碼的可擴(kuò)展開發(fā)平臺(tái),它能較容易地創(chuàng)建、集成和使用軟件工具[3],使開發(fā)更輕松便捷。
1.2 功能分析
軟件主要有兩大主功能:數(shù)據(jù)處理、信息查詢,一項(xiàng)輔助功能:時(shí)間提醒。
1.2.1 數(shù)據(jù)處理
承擔(dān)教學(xué)任務(wù)的教師與全體參與實(shí)驗(yàn)的學(xué)生是本系統(tǒng)的服務(wù)對(duì)象,故需做到以下幾點(diǎn)。
(1)數(shù)據(jù)準(zhǔn)確。實(shí)驗(yàn)數(shù)據(jù)處理過程的每一步數(shù)據(jù)類型、輸入精度與實(shí)驗(yàn)數(shù)據(jù)吻合。能按要求自動(dòng)保留有效數(shù)字位數(shù),使輸出數(shù)據(jù)結(jié)果精度和有效性符合實(shí)驗(yàn)要求。
(2)數(shù)據(jù)計(jì)算符合大學(xué)物理實(shí)驗(yàn)規(guī)則。計(jì)算過程符合有效數(shù)字的運(yùn)算規(guī)則,有效數(shù)字符合物理實(shí)驗(yàn)保留原則。
(3)功能友好。用戶輸入數(shù)據(jù)過程中若輸入了錯(cuò)誤的數(shù)據(jù)類型參數(shù)或者漏輸數(shù)據(jù),系統(tǒng)將自動(dòng)提示用戶輸入錯(cuò)誤或漏輸數(shù)據(jù),可清空重置并重新輸入正確的數(shù)據(jù)。
1.2.2 信息查詢
信息查詢功能面向的用戶是學(xué)生。該功能主要針對(duì)學(xué)生對(duì)實(shí)驗(yàn)信息獲取較為麻煩的問題而設(shè)計(jì),以方便學(xué)生快速查詢實(shí)驗(yàn)信息。故要求有以下兩個(gè)方面。
(1)安全性。設(shè)置身份識(shí)別模塊,每位學(xué)生獲取實(shí)驗(yàn)信息時(shí)為單方面獲取,要保證每位學(xué)生的物理實(shí)驗(yàn)數(shù)據(jù)信息存儲(chǔ)的安全性,防止他人刪改。
(2)準(zhǔn)確性。學(xué)生在查詢實(shí)驗(yàn)信息過程中,要求本系統(tǒng)與電腦平臺(tái)網(wǎng)站上的數(shù)據(jù)同步,保證學(xué)生所獲取信息準(zhǔn)確。
1.2.3 時(shí)間提醒
時(shí)間提醒功能為輔助功能,有一定可替代性。其主要針對(duì)學(xué)生可能忘記的已預(yù)約實(shí)驗(yàn)進(jìn)行提醒,保證學(xué)生和教學(xué)體系的良好溝通。要求有以下兩點(diǎn)。
(1)即時(shí)性。保證已預(yù)約實(shí)驗(yàn)消息在實(shí)驗(yàn)前一定的時(shí)間內(nèi)完成消息推送,且用戶可自主設(shè)定鬧鐘,擁有一定自主性。
(2)準(zhǔn)確性。所推送消息必須準(zhǔn)確有效。
2.1 系統(tǒng)主要功能
根據(jù)系統(tǒng)需求分析,本系統(tǒng)包含四個(gè)子模塊:前置身份識(shí)別驗(yàn)證模塊、數(shù)據(jù)處理模塊、信息查詢模塊、設(shè)置模塊。
2.1.1 各模塊基本事件流
前置身份識(shí)別驗(yàn)證模塊:①用戶點(diǎn)擊本軟件圖標(biāo)開啟Activity。②用戶進(jìn)入登錄界面。③用戶點(diǎn)擊EditText控件(輸入框)輸入學(xué)號(hào)和密碼。④選擇是否記住學(xué)號(hào)和密碼(默認(rèn)選中)。⑤點(diǎn)擊“登錄”按鈕,根據(jù)輸入判斷是否有此用戶,從數(shù)據(jù)庫查找并對(duì)比。⑥跳轉(zhuǎn)至功能主菜單界面。
數(shù)據(jù)處理模塊:①從功能主菜單中選擇“數(shù)據(jù)處理”選項(xiàng)卡。②選擇實(shí)驗(yàn)項(xiàng)目。③進(jìn)入該實(shí)驗(yàn)項(xiàng)目數(shù)據(jù)處理界面。④輸入實(shí)驗(yàn)中記錄的數(shù)據(jù)。⑤點(diǎn)擊“計(jì)算”按鈕,系統(tǒng)開始處理數(shù)據(jù)。⑥輸出數(shù)據(jù)處理結(jié)果。⑦返回功能菜單。
信息查詢模塊:①從功能主菜單中選擇“信息查詢”選項(xiàng)卡。②選擇要查詢的實(shí)驗(yàn)欄(已預(yù)約實(shí)驗(yàn)、實(shí)驗(yàn)成績(jī)等)。③向服務(wù)器發(fā)送標(biāo)識(shí)資源訪問請(qǐng)求(網(wǎng)絡(luò)已打開)。④獲取資源并解析數(shù)據(jù)。⑤顯示所查詢信息。⑥返回功能菜單。
設(shè)置模塊:①點(diǎn)擊設(shè)置圖標(biāo)。②進(jìn)入設(shè)置界面。③瀏覽設(shè)置內(nèi)容。④點(diǎn)擊選擇各選項(xiàng)進(jìn)行相應(yīng)設(shè)置。⑤點(diǎn)擊“退出登錄”按鈕,返回登錄界面。
2.1.2 各模塊其他時(shí)間流
前置身份識(shí)別驗(yàn)證模塊:①點(diǎn)擊“登錄”按鈕前可選擇是否記住用戶名和密碼。②若輸入錯(cuò)誤或切換其他用戶,可點(diǎn)擊“重置”按鈕,清空輸入。
數(shù)據(jù)處理模塊:①若數(shù)據(jù)輸入錯(cuò)誤,可選擇EditText控件(輸入框)刪除并更正。②重復(fù)輸入或計(jì)算多組數(shù)據(jù),可點(diǎn)擊“重置”按鈕同時(shí)清空多個(gè)EditText,以便重新輸入。
設(shè)置模塊:①點(diǎn)擊“時(shí)間提醒”可設(shè)置鬧鐘進(jìn)行提醒。②點(diǎn)擊“切換賬號(hào)”可跳轉(zhuǎn)回登錄界面重新輸入用戶信息。③點(diǎn)擊返回圖標(biāo)返回上一個(gè)Activity。
2.1.3 各模塊異常事件流
前置身份識(shí)別驗(yàn)證模塊:①提示用戶身份信息錯(cuò)誤,系統(tǒng)自動(dòng)清空輸入,重新輸入用戶名或密碼。②用戶輸入空信息或無效內(nèi)容,提示用戶身份信息為空或無效,請(qǐng)重新輸入。
數(shù)據(jù)處理模塊:①若數(shù)據(jù)輸入為空或無效,提示用戶重新輸入有效數(shù)據(jù)。②系統(tǒng)自動(dòng)計(jì)算實(shí)驗(yàn)誤差,誤差過大,提示用戶重做實(shí)驗(yàn),記錄新的實(shí)驗(yàn)數(shù)據(jù)再次重新輸入。
2.2 系統(tǒng)結(jié)構(gòu)
2.2.1 主功能模塊
系統(tǒng)兩大主功能模塊為數(shù)據(jù)處理模塊和信息查詢模塊。
2.2.2 系統(tǒng)數(shù)據(jù)流圖
采用數(shù)據(jù)流圖Data Flow Diagram(DFD)能夠?qū)哟位貏澐窒到y(tǒng)結(jié)構(gòu),表示出系統(tǒng)的數(shù)據(jù)流向。如圖1所示。
圖1 DFD圖
3.1 UI設(shè)計(jì)
一個(gè)友好的UI設(shè)計(jì)能很好地提升用戶體驗(yàn)。本軟件利用Eclipse進(jìn)行開發(fā),它為添加UI組件(例如視圖、菜單)定義了擴(kuò)展點(diǎn)。UI 框架包括UI 控件庫和基于 Tab的UI模板兩個(gè)部分,其具有提升用戶交互編程效率的作用。
在工程的res/layout/目錄下創(chuàng)建布局文件,從UI控件庫中選擇Button、EditText、CheckBox以及ImageButton等控件以TableLayout(表格布局)、RelativeLayout(相對(duì)布局)等布局方式進(jìn)行布局,構(gòu)件平臺(tái)可通過這些基礎(chǔ)描述自動(dòng)生成各種UI元素[4]。同時(shí)收集并加工素材,設(shè)計(jì)圖標(biāo),完成身份驗(yàn)證界面、實(shí)驗(yàn)選擇界面、數(shù)據(jù)處理界面和設(shè)置界面的設(shè)計(jì),布局同時(shí)需注意各控件id的設(shè)置。利用選項(xiàng)卡進(jìn)行功能主菜單界面的設(shè)計(jì),創(chuàng)建FuncAcitvity繼承TabActivity,通過調(diào)用getTabHost()方法得到tabhost對(duì)象,并加載入自己的布局文件即可實(shí)現(xiàn)。選項(xiàng)卡部分代碼如下:
public class FuncActivity extends TabActivity {
private SharedPreferences mSpSettings=null;
private static final String PREFS_NAME=”NamePwd”;
protected void onCreate(Bundle savedInstanceState) {
super onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
TabHost tabHost= getTabHost();
//設(shè)置使用TabHost布局
LayoutInflater from(this) inflate(R layout func,tabHost.getTabContentView(),true);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_ TITLE,R.layout.mycustomtitle);
tabHost.addTab(tabHost.newTabSpec(“tab1”).setIndicator(view1).setContent(R.id.tab01));}}
//添加第一個(gè)標(biāo)簽頁
3.2 模塊功能的實(shí)現(xiàn)和程序測(cè)試調(diào)優(yōu)
人機(jī)交互的前提是模塊功能的有效性與完整性。模塊功能的實(shí)現(xiàn)需注意是否導(dǎo)入了支持類(例如:import android. widget.*)以及各Activity間的繼承關(guān)系,各Activity編譯完成后,在AndroidManifest.xml文件中聲明該Activity。保存用戶名和密碼以Preference存儲(chǔ)方式進(jìn)行存儲(chǔ)。
數(shù)據(jù)處理功能為選擇實(shí)驗(yàn)后該實(shí)驗(yàn)數(shù)據(jù)處理代碼執(zhí)行的結(jié)果,首先為按鈕控件設(shè)置監(jiān)聽器,用OnClick()方法實(shí)現(xiàn),其次由于多數(shù)據(jù)輸入,應(yīng)注意各id對(duì)應(yīng)數(shù)據(jù)關(guān)系,最后還要仔細(xì)確認(rèn)數(shù)據(jù)類型以及有效數(shù)字的保留,確保數(shù)據(jù)處理結(jié)果準(zhǔn)確有效并根據(jù)實(shí)際情況不斷優(yōu)化算法以貼合實(shí)驗(yàn)。
信息查詢功能為選擇查詢項(xiàng)目后的代碼執(zhí)行結(jié)果,主要包括HTTP請(qǐng)求發(fā)起和結(jié)果解析兩個(gè)部分。通過POST請(qǐng)求方式向服務(wù)器發(fā)送請(qǐng)求,從而接收URI所標(biāo)識(shí)確定訪問路徑指向的資源,得到服務(wù)器返回的JSON數(shù)據(jù)。分析其JSON數(shù)據(jù)格式:
List<ContentValues>jsonList=new ArrayList<ContentValues>();
@Override
public void readJSONObject(JSONObject jsonObject) throws Exception {
if(Log.LOGV) Log.d(TAG, “前:”+jsonObject. toString());
jsonObject = (JSONObject) jsonObject.get(“resp”);
if(Log.LOGV) Log.d(TAG, “后:”+jsonObject. toString());
if(Log.LOGV) Log.d(TAG,“——JSON數(shù)據(jù)——”);
readJsonResult(jsonObject);
readJsonPage(jsonObject);
}
解析JSON數(shù)據(jù),最終將信息數(shù)據(jù)顯示在移動(dòng)終端。部分代碼如下:
JSONObject demoJson = new JSONObject(jsonString);
J S O N A r r a y n u m b e r L i s t = d e m o J s o n. getJSONArray(“score”);
for(int i=0; i<numberList.length(); i++){
System out println(numberList getJSONObject(i) getString(“name”));
}
設(shè)置功能包含四個(gè)功能選項(xiàng),其中時(shí)間提醒選項(xiàng)為用戶自主設(shè)置鬧鐘進(jìn)行提醒,可通過向系統(tǒng)發(fā)送Intent請(qǐng)求,以AlarmClock.ACTION_SET_ALARM操作調(diào)用鬧鐘進(jìn)行響應(yīng)來實(shí)現(xiàn),消息推送利用Push長(zhǎng)連接方式,應(yīng)用AlarmManager類進(jìn)行實(shí)現(xiàn)[5]。意見建議選項(xiàng)只以Textview控件顯示反饋接收信息。切換賬戶以及退出登錄選項(xiàng)都以自定義的Finishactivities()方法進(jìn)行實(shí)現(xiàn),通過ArrayList()構(gòu)造一個(gè)元素列表,添加所有Activity到列表中并finish,來實(shí)現(xiàn)該方法,最終跳轉(zhuǎn)至登錄界面。
3.3 軟件整體性能測(cè)試
在虛擬機(jī)中首次完整測(cè)試后,在不同品牌不同型號(hào)的Android操作系統(tǒng)手機(jī)終端進(jìn)行測(cè)試。滿足以下要求則說明軟件測(cè)試通過:登錄界面要求身份識(shí)別驗(yàn)證與用戶信息數(shù)據(jù)吻合方可通過,其他非法信息均不可通過。數(shù)據(jù)處理功能上首先要求輸入理論數(shù)據(jù)得到的數(shù)據(jù)結(jié)果與理論值嚴(yán)格吻合,其次,要求處理所得實(shí)驗(yàn)結(jié)果符合物理實(shí)驗(yàn)要求。信息查詢功能要求與電腦平臺(tái)網(wǎng)站數(shù)據(jù)同步且準(zhǔn)確穩(wěn)定。最終用戶可安全退出本系統(tǒng)。
本系統(tǒng)設(shè)計(jì)開發(fā)在實(shí)驗(yàn)教師指導(dǎo)下完成,功能符合物理實(shí)驗(yàn)要求,經(jīng)推廣可作為大學(xué)物理實(shí)驗(yàn)教學(xué)輔導(dǎo)工具使用。由于大學(xué)物理實(shí)驗(yàn)課是高等院校理工科類專業(yè)學(xué)生的必修基礎(chǔ)課程,受眾群體較為廣大。由此也可窺見本類系統(tǒng)應(yīng)用在高校教育教學(xué)領(lǐng)域的廣泛需求,諸如體育、網(wǎng)絡(luò)學(xué)習(xí)等方面。借此也可引導(dǎo)學(xué)生建立對(duì)移動(dòng)設(shè)備的良性依賴,提高學(xué)生學(xué)習(xí)積極性,促進(jìn)學(xué)生身心健康。
[1] 李香蓮.大學(xué)物理實(shí)驗(yàn)[M]. 北京:高等教育出版社,2015.
[2] 譚國(guó)堅(jiān).基于Android的移動(dòng)互聯(lián)網(wǎng)應(yīng)用的關(guān)鍵技術(shù)研究[D].華南理工大學(xué),2014.
[3] 劉洪星,謝玉山. Eclipse開發(fā)平臺(tái)及其應(yīng)用[J]. 武漢理工大學(xué)學(xué)報(bào)(信息與管理工程版),2005,27(02):89-92.
[4] 黃凱.基于Eclipse體系的構(gòu)件開發(fā)管理平臺(tái)的設(shè)計(jì)實(shí)現(xiàn)[J].科學(xué)技術(shù)與工程,2005,5(14):994-997+1005.
[5] 倪紅軍.基于Android平臺(tái)的消息推送研究與實(shí)現(xiàn)[J]. 實(shí)驗(yàn)室研究與探索,2014,33(05):96-100.
Design and Implementation of Physics Experiment Management System Based on Android Platform
Hao Xiangkang, Bao Junwei,Ye Lianxu, Liang Xiao, Liu Hao
(College of Science, Nanjing University of Aeronautics and Astronautics, Nanjing Jiangsu, 211106)
Mobile devices, such as mobile phones and pads, have become more inextricable among the youth, due to the rapid development of mobile internet. To meet the teaching needs of college physics experiment and the learning needs of student, an physics experiment management system is indispensable to be designed based on Android platform, which has friendly interface, perfect query function, accurate data processing, and able to interactive with teaching management site real-time ,
Android; mobile internet applications; data processing system
郝祥康(1996- ),男,貴州畢節(jié)人,本科,應(yīng)用物理學(xué)專業(yè)。
鮑軍委(1978- ),男,山東菏澤人,講師,研究方向?yàn)槲锢韺?shí)驗(yàn)教學(xué)、無線信道建模。
南京航空航天大學(xué)2015年教學(xué)改革項(xiàng)目(編號(hào):08201505JG08);南京航空航天大學(xué)2016年度創(chuàng)新訓(xùn)練計(jì)劃項(xiàng)目(編號(hào):2016CX00814)。