王澤奇,陳靜嫻,鄧大略,蔡劉璐
摘 要:隨著時(shí)代的發(fā)展和科技的進(jìn)步,實(shí)踐教學(xué)逐漸成為大學(xué)教育的主要教學(xué)方式之一,傳統(tǒng)的實(shí)驗(yàn)室管理方式已經(jīng)不能滿足教師和學(xué)生對(duì)實(shí)驗(yàn)室的需求。該系統(tǒng)服務(wù)器端采用struts+spring+hibernate框架設(shè)計(jì)、前端基于Android系統(tǒng),具有更高的可靠性和可復(fù)用性。教師可開(kāi)放實(shí)驗(yàn)室,審核學(xué)生申請(qǐng),管理學(xué)生意見(jiàn);學(xué)生可預(yù)約實(shí)驗(yàn)室,進(jìn)行意見(jiàn)反饋。
關(guān)鍵詞:實(shí)驗(yàn)室預(yù)約;Android系統(tǒng);APP
中圖分類號(hào):TP311.5 文獻(xiàn)標(biāo)識(shí)碼: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)查,國(guó)內(nèi)智能手機(jī)的普及率已超過(guò)70%,而大學(xué)生群體中這一比例更高[1]。教師和學(xué)生對(duì)實(shí)驗(yàn)室的需求也進(jìn)一步增大。如何設(shè)計(jì)并開(kāi)發(fā)出能夠滿足與日俱增需求的軟件,并進(jìn)一步改進(jìn)并完善我校的實(shí)驗(yàn)室預(yù)約系統(tǒng)?這就是本款A(yù)PP設(shè)計(jì)和開(kāi)發(fā)的目的。
目前,實(shí)踐教學(xué)比重的日益增加。就國(guó)內(nèi)而言,教育部規(guī)定各個(gè)高校實(shí)驗(yàn)課程必須達(dá)到80%以上[2]。美國(guó)、日本、德國(guó)、法國(guó)等國(guó)家高校的實(shí)踐教學(xué)占總教學(xué)時(shí)數(shù)的比例(因?qū)W院及專業(yè)的性質(zhì)而異),理科為17.1%—33.6%,工科為5.6%—12.5%,農(nóng)科為15.7%—40.3%,醫(yī)科為25.1%—45%(摘自高校實(shí)驗(yàn)室管理系統(tǒng)方案)。在實(shí)踐教學(xué)如此被重視的環(huán)境之下,實(shí)驗(yàn)室管理系統(tǒng)的創(chuàng)建迫在眉睫,然而,現(xiàn)所存在的實(shí)驗(yàn)室管理系統(tǒng)多是基于web端創(chuàng)建的。海南醫(yī)學(xué)院作為醫(yī)學(xué)院校,擁有眾多為開(kāi)展實(shí)踐教學(xué)的實(shí)驗(yàn)設(shè)備和實(shí)驗(yàn)室,大部分教師和學(xué)生認(rèn)為網(wǎng)頁(yè)申請(qǐng)實(shí)驗(yàn)室過(guò)于繁瑣,且學(xué)生不能及時(shí)收到申請(qǐng)反饋。這都導(dǎo)致教師和學(xué)生使用web端進(jìn)行實(shí)驗(yàn)室預(yù)約的積極性降低。此系統(tǒng)基于Android手機(jī)端進(jìn)行設(shè)計(jì)并開(kāi)發(fā),具有更高的靈活性和普遍性。且該系統(tǒng)根據(jù)不同使用人群設(shè)置不同的權(quán)限,保證了系統(tǒng)的安全性,最大限度滿足教師和學(xué)生的使用需求,提高實(shí)驗(yàn)室的使用效率。
2 功能介紹(Functional introduction)
該系統(tǒng)主要的用戶群體是教師和學(xué)生。學(xué)生主要通過(guò)該App進(jìn)行實(shí)驗(yàn)室預(yù)約申請(qǐng),教師則主要作為管理員對(duì)實(shí)驗(yàn)室進(jìn)行管理,因此針對(duì)不同角色設(shè)計(jì)不同的功能是該APP的基本需求[3]。APP主要分為三大功能模塊:(1)學(xué)生功能模塊;(2)實(shí)驗(yàn)室管理員功能模塊(教師功能模塊);(3)系統(tǒng)管理員功能模塊。
2.1 學(xué)生功能模塊
學(xué)生用戶只有輸入正確的用戶名和密碼,才能成功登錄。學(xué)生登錄APP后,可預(yù)約開(kāi)放的實(shí)驗(yàn)課和查看申請(qǐng)的實(shí)驗(yàn)課結(jié)果。學(xué)生功能模塊又分為三個(gè)子模塊,如圖1所示。
查詢預(yù)約記錄:學(xué)生可以查詢自己曾預(yù)約的實(shí)驗(yàn)室、實(shí)驗(yàn)內(nèi)容和時(shí)間、地點(diǎn)。
預(yù)約實(shí)驗(yàn)課:學(xué)生可根據(jù)自己的需要預(yù)約開(kāi)放性實(shí)驗(yàn),實(shí)驗(yàn)管理員對(duì)學(xué)生提交的申請(qǐng)進(jìn)行審核,學(xué)生可隨時(shí)隨地對(duì)審核結(jié)果進(jìn)行查詢。
意見(jiàn)反饋:學(xué)生在使用系統(tǒng)的過(guò)程中,有任何的意見(jiàn)和建議均可通過(guò)意見(jiàn)反饋功能提交反饋意見(jiàn)至實(shí)驗(yàn)室管理員。
2.2 實(shí)驗(yàn)室管理員功能模塊
實(shí)驗(yàn)室管理員功能模塊:實(shí)驗(yàn)室管理員輸入用戶名和密碼后,系統(tǒng)自動(dòng)將其與數(shù)據(jù)庫(kù)中所存信息進(jìn)行核對(duì),核對(duì)正確后才允許進(jìn)入該系統(tǒng),在系統(tǒng)內(nèi)進(jìn)行相關(guān)的操作。實(shí)驗(yàn)室管理員主要負(fù)責(zé)對(duì)學(xué)生的預(yù)約信息進(jìn)行審核和管理,以及對(duì)實(shí)驗(yàn)課狀態(tài)進(jìn)行修改、添加和刪除操作。實(shí)驗(yàn)室管理員功能又分為四個(gè)子模塊:審核學(xué)生預(yù)約信息、開(kāi)放實(shí)驗(yàn)課管理、個(gè)人信息管理、學(xué)生意見(jiàn)管理。如圖2所示。
審核學(xué)生預(yù)約信息:實(shí)驗(yàn)管理員對(duì)學(xué)生預(yù)約實(shí)驗(yàn)室的申請(qǐng)進(jìn)行審核或撤銷。
開(kāi)放實(shí)驗(yàn)室管理:管理員根據(jù)教學(xué)需求添加、修改、刪除和開(kāi)放進(jìn)行相應(yīng)實(shí)驗(yàn)課的實(shí)驗(yàn)室。
個(gè)人信息管理:實(shí)驗(yàn)管理員可根據(jù)需要修改自己的信息和密碼。
學(xué)生意見(jiàn)管理:實(shí)驗(yàn)室管理員可看見(jiàn)與相關(guān)實(shí)驗(yàn)室的意見(jiàn)反饋信息,并根據(jù)需要進(jìn)行回復(fù),以達(dá)到師生互動(dòng)的效果。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àn)室預(yù)約平臺(tái)APP采用Struts+Spring+Hibernate框架實(shí)現(xiàn)本系統(tǒng)的相關(guān)開(kāi)發(fā)(圖3)。Struts是一款開(kāi)源的Web應(yīng)用框架,它擴(kuò)展了Java Servlet API,采用model-view-controller(即MVC)架構(gòu),從而實(shí)現(xiàn)了代碼的松耦合,提高了代碼的可復(fù)用性,主要運(yùn)用于表現(xiàn)層和業(yè)務(wù)控制層;Spring是一個(gè)開(kāi)源的設(shè)計(jì)層面框架,它解決業(yè)務(wù)邏輯層和其他各層的松耦合問(wèn)題。它是一個(gè)輕量級(jí)的應(yīng)用,主要運(yùn)用于業(yè)務(wù)邏輯層;Hibernate是一個(gè)開(kāi)源的對(duì)象關(guān)系映射(OR Mapping)框架,hibernate可以自動(dòng)生成SQL語(yǔ)句,從而實(shí)現(xiàn)了使用對(duì)象編程思維來(lái)操作數(shù)據(jù)庫(kù)。
在校教師或?qū)W生可通過(guò)Web瀏覽器或Android手機(jī)訪問(wèn)本系統(tǒng)。如果用戶使用Android手機(jī)訪問(wèn)本系統(tǒng),系統(tǒng)將自動(dòng)采用OKHttp來(lái)封裝用戶的請(qǐng)求。OKHttp是一個(gè)處理網(wǎng)絡(luò)請(qǐng)求的開(kāi)源項(xiàng)目,是安卓端使用最多的輕量級(jí)框架。系統(tǒng)將根據(jù)struts.xml的配置找到相應(yīng)的Action類來(lái)處理請(qǐng)求。Action類中會(huì)調(diào)用相應(yīng)的服務(wù)類(Service)來(lái)處理相應(yīng)的業(yè)務(wù)邏輯,在Service類中調(diào)用相應(yīng)的DAO處理類,來(lái)實(shí)現(xiàn)與數(shù)據(jù)的交互。最后將處理結(jié)果以Json的形式返回給Android客戶端。如果用戶使用Web瀏覽器訪問(wèn)本系統(tǒng),則以HTML頁(yè)面的形式返回給瀏覽器。
利用Struts+Spring+Hibernate框架,實(shí)現(xiàn)了視圖、控制器與模型、業(yè)務(wù)邏輯、操作數(shù)據(jù)庫(kù)的分離。Struts+Spring+Hibernate框架結(jié)構(gòu)清晰,功能分明,可達(dá)到各個(gè)模塊間松耦合的目的,從而可以提高開(kāi)發(fā)效率,提高系統(tǒng)的可擴(kuò)展性[4]。
本系統(tǒng)的數(shù)據(jù)庫(kù)采用MySQL,系統(tǒng)ER圖如圖4所示。
4 系統(tǒng)實(shí)現(xiàn)(System implementation)
目前用于Android系統(tǒng)的開(kāi)發(fā)工具眾多,該APP設(shè)計(jì)和開(kāi)發(fā)主要采用了2013年由谷歌推出的Android開(kāi)發(fā)環(huán)境——android studio[5]。在設(shè)計(jì)和開(kāi)發(fā)中,最為關(guān)鍵的部分是如何承載數(shù)量眾多的在校教師和學(xué)生同時(shí)在線,該問(wèn)題采用的解決方案是利用struts+spring+hibernate框架,以提高本系統(tǒng)的可靠性、安全性和可復(fù)用性;同時(shí),采用OKHttp協(xié)議與服務(wù)器端進(jìn)行通信,以保證Android客戶端與服務(wù)器端通信的可靠性。
4.1 多線程和異步
用戶通過(guò)Android客戶端發(fā)送請(qǐng)求給服務(wù)端,請(qǐng)求采用多線程進(jìn)行處理,實(shí)現(xiàn)異步解決系統(tǒng)數(shù)據(jù)傳輸問(wèn)題。在該系統(tǒng)中,客戶端需要從服務(wù)端獲取預(yù)約實(shí)驗(yàn)室列表。該功能的實(shí)現(xiàn)則是通過(guò)采用異步類的方法,即在主線程中開(kāi)啟一個(gè)子線程,在子線程訪問(wèn)服務(wù)端獲取預(yù)約實(shí)驗(yàn)室列表,在主線程收到服務(wù)端返回的數(shù)據(jù)后,更新頁(yè)面的數(shù)據(jù)。
以下是代碼實(shí)現(xiàn)部分。
//調(diào)用異步類取得數(shù)據(jù)
new MylabFragment.ConnectToServer().execute();
//更新預(yù)約實(shí)驗(yàn)室列表
//String為當(dāng)調(diào)用該類的時(shí)候需要傳遞進(jìn)來(lái)的參數(shù),可以是String數(shù)組
private class ConnectToServer extends AsyncTask
private String errorMessage;
//該方法是運(yùn)行在后臺(tái),開(kāi)了一子線程
protected Boolean doInBackground(String... strings) {
try{
Map
//傳入sessionID
String sessionID=getSessionID();
params.put("sessionID",sessionID);
//調(diào)用myappointRequest這個(gè)接口
MyRequest myappointRequest= ServiceManager.MyappointmentRequest(params);
myappointRequest.setMycallback(new Callback(new MessageParser()) {
//接口連接成功,執(zhí)行以下內(nèi)容
public void onSuccess() {
String dataList=getMessage().getRecDataList();
List
if(mDatas1 !=null){
for(Appointment appointment: mDatas1){
if (!appointment.getFreeLabName().equals("計(jì)算機(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
請(qǐng)求響應(yīng)后返回JSON數(shù)據(jù)給手機(jī)端。JSON即JavaScript Object Notation,是一種利于蜂窩數(shù)據(jù)網(wǎng)絡(luò)傳輸?shù)妮p量級(jí)的數(shù)據(jù)交換格式。它是JavaScript的一個(gè)子集,采用完全獨(dú)立于語(yǔ)言的文本格式,容易被閱讀和編寫,并且方便機(jī)器的解析和生成。相對(duì)于XML,JSON數(shù)據(jù)封裝的體積小,在網(wǎng)絡(luò)上傳輸?shù)男时萖ML高,被廣泛應(yīng)用到移動(dòng)互聯(lián)的開(kāi)發(fā)領(lǐng)域中。利用JSON在網(wǎng)絡(luò)數(shù)據(jù)傳輸上的優(yōu)勢(shì),將JSON作為實(shí)驗(yàn)室管理應(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ì)算機(jī)實(shí)驗(yàn)室, 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ì)算機(jī)實(shí)驗(yàn)室, status=1}]
}
在客戶端就可以使用JSONObject將JSON字符串轉(zhuǎn)換為JSON對(duì)象,然后通過(guò)對(duì)象的方式提取數(shù)據(jù)。部分代碼如下:
public static List
List
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é)生用戶頁(yè)面和教師用戶頁(yè)面如圖5所示。 5 結(jié)論(Conclusion) 日漸成熟的信息技術(shù)和日益發(fā)達(dá)的通訊網(wǎng)絡(luò)都是為了使人們學(xué)習(xí)和生活更加快捷方便。對(duì)于當(dāng)代大學(xué)生而言,不僅需要豐富的理論知識(shí),同時(shí)需要一定的動(dòng)手能力。通過(guò)該款A(yù)PP的使用,希望可以在一定程度上提高實(shí)驗(yàn)室的使用效率,提高大學(xué)生的動(dòng)手能力,實(shí)現(xiàn)理論與實(shí)踐相結(jié)合,真正通過(guò)信息技術(shù)和網(wǎng)絡(luò)為廣大師生帶來(lái)便利,真正實(shí)現(xiàn)實(shí)踐教學(xué)。 參考文獻(xiàn)(References) [1] 謝杭,朱鵬羽,孟慶賀.基于安卓平臺(tái)的掌上校園APP的設(shè)計(jì)與開(kāi)發(fā)[J].軟件工程,2016,19(3):25-26. [2] 孫華麗.基于Android平臺(tái)的實(shí)驗(yàn)室預(yù)約系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].農(nóng)業(yè)網(wǎng)絡(luò)信息,2016(5):66-68. [3] 侯曉麗,鄧煒,牛天勇.開(kāi)放式實(shí)驗(yàn)室預(yù)約系統(tǒng)的功能設(shè)計(jì)[J].軟件設(shè)計(jì)開(kāi)發(fā),2017,13(6):102-110. [4] 張文梅.基于SSH的實(shí)驗(yàn)室管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].Computer Knowledge and Technology,2016,12(13):105-106. [5] 李剛.瘋狂Android講義(3版).北京:電子工業(yè)出版社,2015. [6] 陳惠敏.基于Android的科研成果管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].電腦編程技巧與維護(hù),2015(20):43-44. 作者簡(jiǎn)介: 王澤奇(1996-),男,本科生.研究領(lǐng)域:軟件開(kāi)發(fā). 陳靜嫻(1981-),女,碩士,講師.研究領(lǐng)域:軟件開(kāi)發(fā). 鄧大略(1995-),男,本科生.研究領(lǐng)域:軟件開(kāi)發(fā). 蔡劉璐(1997-),女,本科生.研究領(lǐng)域:軟件開(kāi)發(fā).