国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

實(shí)驗室預(yù)約平臺APP的設(shè)計與開發(fā)

2018-01-29 17:26王澤奇,陳靜嫻,鄧大略,蔡劉璐
軟件工程 2017年12期
關(guān)鍵詞:Android系統(tǒng)

王澤奇,陳靜嫻,鄧大略,蔡劉璐

摘 要:隨著時代的發(fā)展和科技的進(jìn)步,實(shí)踐教學(xué)逐漸成為大學(xué)教育的主要教學(xué)方式之一,傳統(tǒng)的實(shí)驗室管理方式已經(jīng)不能滿足教師和學(xué)生對實(shí)驗室的需求。該系統(tǒng)服務(wù)器端采用struts+spring+hibernate框架設(shè)計、前端基于Android系統(tǒng),具有更高的可靠性和可復(fù)用性。教師可開放實(shí)驗室,審核學(xué)生申請,管理學(xué)生意見;學(xué)生可預(yù)約實(shí)驗室,進(jìn)行意見反饋。

關(guān)鍵詞:實(shí)驗室預(yù)約;Android系統(tǒng);APP

中圖分類號:TP311.5 文獻(xiàn)標(biāo)識碼:A

Development and Implementation of the Laboratory Reservation APP

WANG Zeqi,CHEN Jingxian,DENG Dalüe,CAI Liulu

(Hainan Medical University,Haikou 570100,China)

Abstract:With the development of science and technology,practice teaching has gradually become one of the main teaching methods in higher education.The traditional laboratory management method can no longer meet the requirements of teachers and students for laboratories.The server side of the system is designed with the struts+spring+hibernate framework and the front end is based on the Android system,with higher reliability and reusability.Teachers can open laboratories,examine students' application and manage students' suggestions,while students can reserve laboratories and offer feedback.

Keywords:laboratory reservation;Android system;APP

1 引言(Introduction)

據(jù)調(diào)查,國內(nèi)智能手機(jī)的普及率已超過70%,而大學(xué)生群體中這一比例更高[1]。教師和學(xué)生對實(shí)驗室的需求也進(jìn)一步增大。如何設(shè)計并開發(fā)出能夠滿足與日俱增需求的軟件,并進(jìn)一步改進(jìn)并完善我校的實(shí)驗室預(yù)約系統(tǒng)?這就是本款A(yù)PP設(shè)計和開發(fā)的目的。

目前,實(shí)踐教學(xué)比重的日益增加。就國內(nèi)而言,教育部規(guī)定各個高校實(shí)驗課程必須達(dá)到80%以上[2]。美國、日本、德國、法國等國家高校的實(shí)踐教學(xué)占總教學(xué)時數(shù)的比例(因?qū)W院及專業(yè)的性質(zhì)而異),理科為17.1%—33.6%,工科為5.6%—12.5%,農(nóng)科為15.7%—40.3%,醫(yī)科為25.1%—45%(摘自高校實(shí)驗室管理系統(tǒng)方案)。在實(shí)踐教學(xué)如此被重視的環(huán)境之下,實(shí)驗室管理系統(tǒng)的創(chuàng)建迫在眉睫,然而,現(xiàn)所存在的實(shí)驗室管理系統(tǒng)多是基于web端創(chuàng)建的。海南醫(yī)學(xué)院作為醫(yī)學(xué)院校,擁有眾多為開展實(shí)踐教學(xué)的實(shí)驗設(shè)備和實(shí)驗室,大部分教師和學(xué)生認(rèn)為網(wǎng)頁申請實(shí)驗室過于繁瑣,且學(xué)生不能及時收到申請反饋。這都導(dǎo)致教師和學(xué)生使用web端進(jìn)行實(shí)驗室預(yù)約的積極性降低。此系統(tǒng)基于Android手機(jī)端進(jìn)行設(shè)計并開發(fā),具有更高的靈活性和普遍性。且該系統(tǒng)根據(jù)不同使用人群設(shè)置不同的權(quán)限,保證了系統(tǒng)的安全性,最大限度滿足教師和學(xué)生的使用需求,提高實(shí)驗室的使用效率。

2 功能介紹(Functional introduction)

該系統(tǒng)主要的用戶群體是教師和學(xué)生。學(xué)生主要通過該App進(jìn)行實(shí)驗室預(yù)約申請,教師則主要作為管理員對實(shí)驗室進(jìn)行管理,因此針對不同角色設(shè)計不同的功能是該APP的基本需求[3]。APP主要分為三大功能模塊:(1)學(xué)生功能模塊;(2)實(shí)驗室管理員功能模塊(教師功能模塊);(3)系統(tǒng)管理員功能模塊。

2.1 學(xué)生功能模塊

學(xué)生用戶只有輸入正確的用戶名和密碼,才能成功登錄。學(xué)生登錄APP后,可預(yù)約開放的實(shí)驗課和查看申請的實(shí)驗課結(jié)果。學(xué)生功能模塊又分為三個子模塊,如圖1所示。

查詢預(yù)約記錄:學(xué)生可以查詢自己曾預(yù)約的實(shí)驗室、實(shí)驗內(nèi)容和時間、地點(diǎn)。

預(yù)約實(shí)驗課:學(xué)生可根據(jù)自己的需要預(yù)約開放性實(shí)驗,實(shí)驗管理員對學(xué)生提交的申請進(jìn)行審核,學(xué)生可隨時隨地對審核結(jié)果進(jìn)行查詢。

意見反饋:學(xué)生在使用系統(tǒng)的過程中,有任何的意見和建議均可通過意見反饋功能提交反饋意見至實(shí)驗室管理員。

2.2 實(shí)驗室管理員功能模塊

實(shí)驗室管理員功能模塊:實(shí)驗室管理員輸入用戶名和密碼后,系統(tǒng)自動將其與數(shù)據(jù)庫中所存信息進(jìn)行核對,核對正確后才允許進(jìn)入該系統(tǒng),在系統(tǒng)內(nèi)進(jìn)行相關(guān)的操作。實(shí)驗室管理員主要負(fù)責(zé)對學(xué)生的預(yù)約信息進(jìn)行審核和管理,以及對實(shí)驗課狀態(tài)進(jìn)行修改、添加和刪除操作。實(shí)驗室管理員功能又分為四個子模塊:審核學(xué)生預(yù)約信息、開放實(shí)驗課管理、個人信息管理、學(xué)生意見管理。如圖2所示。

審核學(xué)生預(yù)約信息:實(shí)驗管理員對學(xué)生預(yù)約實(shí)驗室的申請進(jìn)行審核或撤銷。

開放實(shí)驗室管理:管理員根據(jù)教學(xué)需求添加、修改、刪除和開放進(jìn)行相應(yīng)實(shí)驗課的實(shí)驗室。

個人信息管理:實(shí)驗管理員可根據(jù)需要修改自己的信息和密碼。

學(xué)生意見管理:實(shí)驗室管理員可看見與相關(guān)實(shí)驗室的意見反饋信息,并根據(jù)需要進(jìn)行回復(fù),以達(dá)到師生互動的效果。endprint

2.3 系統(tǒng)管理員管理模塊

系統(tǒng)管理員主要負(fù)責(zé)在Web端進(jìn)行學(xué)生數(shù)據(jù)的錄入、學(xué)期設(shè)置等一些基本參數(shù)的維護(hù)工作。

3 系統(tǒng)架構(gòu)(System architecture)

實(shí)驗室預(yù)約平臺APP采用Struts+Spring+Hibernate框架實(shí)現(xiàn)本系統(tǒng)的相關(guān)開發(fā)(圖3)。Struts是一款開源的Web應(yīng)用框架,它擴(kuò)展了Java Servlet API,采用model-view-controller(即MVC)架構(gòu),從而實(shí)現(xiàn)了代碼的松耦合,提高了代碼的可復(fù)用性,主要運(yùn)用于表現(xiàn)層和業(yè)務(wù)控制層;Spring是一個開源的設(shè)計層面框架,它解決業(yè)務(wù)邏輯層和其他各層的松耦合問題。它是一個輕量級的應(yīng)用,主要運(yùn)用于業(yè)務(wù)邏輯層;Hibernate是一個開源的對象關(guān)系映射(OR Mapping)框架,hibernate可以自動生成SQL語句,從而實(shí)現(xiàn)了使用對象編程思維來操作數(shù)據(jù)庫。

在校教師或?qū)W生可通過Web瀏覽器或Android手機(jī)訪問本系統(tǒng)。如果用戶使用Android手機(jī)訪問本系統(tǒng),系統(tǒng)將自動采用OKHttp來封裝用戶的請求。OKHttp是一個處理網(wǎng)絡(luò)請求的開源項目,是安卓端使用最多的輕量級框架。系統(tǒng)將根據(jù)struts.xml的配置找到相應(yīng)的Action類來處理請求。Action類中會調(diào)用相應(yīng)的服務(wù)類(Service)來處理相應(yīng)的業(yè)務(wù)邏輯,在Service類中調(diào)用相應(yīng)的DAO處理類,來實(shí)現(xiàn)與數(shù)據(jù)的交互。最后將處理結(jié)果以Json的形式返回給Android客戶端。如果用戶使用Web瀏覽器訪問本系統(tǒng),則以HTML頁面的形式返回給瀏覽器。

利用Struts+Spring+Hibernate框架,實(shí)現(xiàn)了視圖、控制器與模型、業(yè)務(wù)邏輯、操作數(shù)據(jù)庫的分離。Struts+Spring+Hibernate框架結(jié)構(gòu)清晰,功能分明,可達(dá)到各個模塊間松耦合的目的,從而可以提高開發(fā)效率,提高系統(tǒng)的可擴(kuò)展性[4]。

本系統(tǒng)的數(shù)據(jù)庫采用MySQL,系統(tǒng)ER圖如圖4所示。

4 系統(tǒng)實(shí)現(xiàn)(System implementation)

目前用于Android系統(tǒng)的開發(fā)工具眾多,該APP設(shè)計和開發(fā)主要采用了2013年由谷歌推出的Android開發(fā)環(huán)境——android studio[5]。在設(shè)計和開發(fā)中,最為關(guān)鍵的部分是如何承載數(shù)量眾多的在校教師和學(xué)生同時在線,該問題采用的解決方案是利用struts+spring+hibernate框架,以提高本系統(tǒng)的可靠性、安全性和可復(fù)用性;同時,采用OKHttp協(xié)議與服務(wù)器端進(jìn)行通信,以保證Android客戶端與服務(wù)器端通信的可靠性。

4.1 多線程和異步

用戶通過Android客戶端發(fā)送請求給服務(wù)端,請求采用多線程進(jìn)行處理,實(shí)現(xiàn)異步解決系統(tǒng)數(shù)據(jù)傳輸問題。在該系統(tǒng)中,客戶端需要從服務(wù)端獲取預(yù)約實(shí)驗室列表。該功能的實(shí)現(xiàn)則是通過采用異步類的方法,即在主線程中開啟一個子線程,在子線程訪問服務(wù)端獲取預(yù)約實(shí)驗室列表,在主線程收到服務(wù)端返回的數(shù)據(jù)后,更新頁面的數(shù)據(jù)。

以下是代碼實(shí)現(xiàn)部分。

//調(diào)用異步類取得數(shù)據(jù)

new MylabFragment.ConnectToServer().execute();

//更新預(yù)約實(shí)驗室列表

//String為當(dāng)調(diào)用該類的時候需要傳遞進(jìn)來的參數(shù),可以是String數(shù)組

private class ConnectToServer extends AsyncTask {

private String errorMessage;

//該方法是運(yùn)行在后臺,開了一子線程

protected Boolean doInBackground(String... strings) {

try{

Mapparams=new HashMap();

//傳入sessionID

String sessionID=getSessionID();

params.put("sessionID",sessionID);

//調(diào)用myappointRequest這個接口

MyRequest myappointRequest= ServiceManager.MyappointmentRequest(params);

myappointRequest.setMycallback(new Callback(new MessageParser()) {

//接口連接成功,執(zhí)行以下內(nèi)容

public void onSuccess() {

String dataList=getMessage().getRecDataList();

List mDatas1 =GsonParseUtil.stringToArray(dataList,Appointment[].class);

if(mDatas1 !=null){

for(Appointment appointment: mDatas1){

if (!appointment.getFreeLabName().equals("計算機(jī)機(jī)房1")) {

mDatas.add(appointment);}}}}

//接口連接失敗,執(zhí)行以下內(nèi)容

public void onFailed() {

errorMessage=getMessage().getRecMsg();}});

myappointRequest.sendInAsyn();

}catch (Exception e){return false;}

return true;}

//當(dāng)子線程運(yùn)行結(jié)束,執(zhí)行該方法,更新UI

protected void onPostExecute(Boolean result){

if(result){

//把得到的數(shù)據(jù)放入Fragment中的listview的適配器中

MylabAdapter adapter=new MylabAdapter(getContext(),mDatas);

listView.setAdapter(adapter);

}else{

if(result!=null){

AlertDialog.Builder dialog=new AlertDialog.Builder(getActivity());

dialog.setTitle("提示信息");

dialog.setMessage(errorMessage);

dialog.setCancelable(false);

dialog.setPositiveButton("關(guān)閉", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

dialog.dismiss();}});

dialog.show();

}}}}

4.2 JSON

請求響應(yīng)后返回JSON數(shù)據(jù)給手機(jī)端。JSON即JavaScript Object Notation,是一種利于蜂窩數(shù)據(jù)網(wǎng)絡(luò)傳輸?shù)妮p量級的數(shù)據(jù)交換格式。它是JavaScript的一個子集,采用完全獨(dú)立于語言的文本格式,容易被閱讀和編寫,并且方便機(jī)器的解析和生成。相對于XML,JSON數(shù)據(jù)封裝的體積小,在網(wǎng)絡(luò)上傳輸?shù)男时萖ML高,被廣泛應(yīng)用到移動互聯(lián)的開發(fā)領(lǐng)域中。利用JSON在網(wǎng)絡(luò)數(shù)據(jù)傳輸上的優(yōu)勢,將JSON作為實(shí)驗室管理應(yīng)用軟件客戶端與服務(wù)端間的數(shù)據(jù)交換格式[6]。

代碼實(shí)現(xiàn)部分如下:

從服務(wù)端獲取到了以下格式的JSON字符串。

{

list:[{week=16, year=2016-2017, checkedNumber=null, lesson=1-3, freeLabID=1, updateTime=2017-05-11, acceptableNumber=30, checkPendingNumber=null, assignedLabs=機(jī)房2, semester=2, id=26, day=1,freeDate=2017-06-05, freeLabName=計算機(jī)實(shí)驗室, status=1},{week=14, year=2016-2017, checkedNumber=null, lesson=3-5, freeLabID=1, updateTime=2017-05-14, acceptableNumber=30, checkPendingNumber=null, assignedLabs=機(jī)房2, semester=2, id=27, day=3, freeDate=2017-05-24, freeLabName=計算機(jī)實(shí)驗室, status=1}]

}

在客戶端就可以使用JSONObject將JSON字符串轉(zhuǎn)換為JSON對象,然后通過對象的方式提取數(shù)據(jù)。部分代碼如下:

public static List getTeacherAppointment(String key, String jsonString) {

List list=new ArrayList();

JSONObject jsonObject;

try {

jsonObject=new JSONObject(jsonString);

JSONArray TeacherAppointments=jsonObject.getJSONArray(key);

for (int i=0; i

TeacherAppointment teacherAppointment=new TeacherAppointment();

JSONObject jsonObject2=TeacherAppointments.getJSONObject(i);

teacherAppointment.setWeek(jsonObject2.getString("week"));

...

teacherAppointment.setStatus(jsonObject2.getString("status"));

list.add(teacherAppointment); }

} catch (JSONException e) {

e.printStackTrace(); }

return list; }

4.3 成果展示

學(xué)生用戶頁面和教師用戶頁面如圖5所示。

5 結(jié)論(Conclusion)

日漸成熟的信息技術(shù)和日益發(fā)達(dá)的通訊網(wǎng)絡(luò)都是為了使人們學(xué)習(xí)和生活更加快捷方便。對于當(dāng)代大學(xué)生而言,不僅需要豐富的理論知識,同時需要一定的動手能力。通過該款A(yù)PP的使用,希望可以在一定程度上提高實(shí)驗室的使用效率,提高大學(xué)生的動手能力,實(shí)現(xiàn)理論與實(shí)踐相結(jié)合,真正通過信息技術(shù)和網(wǎng)絡(luò)為廣大師生帶來便利,真正實(shí)現(xiàn)實(shí)踐教學(xué)。

參考文獻(xiàn)(References)

[1] 謝杭,朱鵬羽,孟慶賀.基于安卓平臺的掌上校園APP的設(shè)計與開發(fā)[J].軟件工程,2016,19(3):25-26.

[2] 孫華麗.基于Android平臺的實(shí)驗室預(yù)約系統(tǒng)的設(shè)計與實(shí)現(xiàn)[J].農(nóng)業(yè)網(wǎng)絡(luò)信息,2016(5):66-68.

[3] 侯曉麗,鄧煒,牛天勇.開放式實(shí)驗室預(yù)約系統(tǒng)的功能設(shè)計[J].軟件設(shè)計開發(fā),2017,13(6):102-110.

[4] 張文梅.基于SSH的實(shí)驗室管理系統(tǒng)設(shè)計與實(shí)現(xiàn)[J].Computer Knowledge and Technology,2016,12(13):105-106.

[5] 李剛.瘋狂Android講義(3版).北京:電子工業(yè)出版社,2015.

[6] 陳惠敏.基于Android的科研成果管理系統(tǒng)設(shè)計與實(shí)現(xiàn)[J].電腦編程技巧與維護(hù),2015(20):43-44.

作者簡介:

王澤奇(1996-),男,本科生.研究領(lǐng)域:軟件開發(fā).

陳靜嫻(1981-),女,碩士,講師.研究領(lǐng)域:軟件開發(fā).

鄧大略(1995-),男,本科生.研究領(lǐng)域:軟件開發(fā).

蔡劉璐(1997-),女,本科生.研究領(lǐng)域:軟件開發(fā).

猜你喜歡
Android系統(tǒng)
Android系統(tǒng)上的移動互聯(lián)網(wǎng)集成平臺開發(fā)機(jī)制
Android系統(tǒng)核心管理工具設(shè)計與實(shí)現(xiàn)
Android下的機(jī)械式電表數(shù)字識別技術(shù)研究
基于GPS和iBeacon的智能校園信息發(fā)布平臺設(shè)計與實(shí)現(xiàn)
基于增強(qiáng)現(xiàn)實(shí)技術(shù)的導(dǎo)航系統(tǒng)研究
米泉市| 富蕴县| 敦化市| 宜城市| 满洲里市| 环江| 九龙坡区| 东乡县| 阿拉善左旗| 牙克石市| 崇州市| 哈密市| 固始县| 甘泉县| 南乐县| 武隆县| 和田市| 观塘区| 济阳县| 万宁市| 炎陵县| 福贡县| 神木县| 锦屏县| 施秉县| 赤壁市| 仙居县| 通辽市| 陕西省| 卫辉市| 刚察县| 罗江县| 鄂托克前旗| 黑水县| 讷河市| 兴义市| 法库县| 璧山县| 通江县| 佛冈县| 获嘉县|