实验室预约平台APP的设计与开发

2018-01-29 17:26王泽奇,陈静娴,邓大略,蔡刘璐
软件工程 2017年12期
关键词:Android系统

王泽奇,陈静娴,邓大略,蔡刘璐

摘 要:随着时代的发展和科技的进步,实践教学逐渐成为大学教育的主要教学方式之一,传统的实验室管理方式已经不能满足教师和学生对实验室的需求。该系统服务器端采用struts+spring+hibernate框架设计、前端基于Android系统,具有更高的可靠性和可复用性。教师可开放实验室,审核学生申请,管理学生意见;学生可预约实验室,进行意见反馈。

关键词:实验室预约;Android系统;APP

中图分类号:TP311.5 文献标识码: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)

據调查,国内智能手机的普及率已超过70%,而大学生群体中这一比例更高[1]。教师和学生对实验室的需求也进一步增大。如何设计并开发出能够满足与日俱增需求的软件,并进一步改进并完善我校的实验室预约系统?这就是本款APP设计和开发的目的。

目前,实践教学比重的日益增加。就国内而言,教育部规定各个高校实验课程必须达到80%以上[2]。美国、日本、德国、法国等国家高校的实践教学占总教学时数的比例(因学院及专业的性质而异),理科为17.1%—33.6%,工科为5.6%—12.5%,农科为15.7%—40.3%,医科为25.1%—45%(摘自高校实验室管理系统方案)。在实践教学如此被重视的环境之下,实验室管理系统的创建迫在眉睫,然而,现所存在的实验室管理系统多是基于web端创建的。海南医学院作为医学院校,拥有众多为开展实践教学的实验设备和实验室,大部分教师和学生认为网页申请实验室过于繁琐,且学生不能及时收到申请反馈。这都导致教师和学生使用web端进行实验室预约的积极性降低。此系统基于Android手机端进行设计并开发,具有更高的灵活性和普遍性。且该系统根据不同使用人群设置不同的权限,保证了系统的安全性,最大限度满足教师和学生的使用需求,提高实验室的使用效率。

2 功能介绍(Functional introduction)

该系统主要的用户群体是教师和学生。学生主要通过该App进行实验室预约申请,教师则主要作为管理员对实验室进行管理,因此针对不同角色设计不同的功能是该APP的基本需求[3]。APP主要分为三大功能模块:(1)学生功能模块;(2)实验室管理员功能模块(教师功能模块);(3)系统管理员功能模块。

2.1 学生功能模块

学生用户只有输入正确的用户名和密码,才能成功登录。学生登录APP后,可预约开放的实验课和查看申请的实验课结果。学生功能模块又分为三个子模块,如图1所示。

查询预约记录:学生可以查询自己曾预约的实验室、实验内容和时间、地点。

预约实验课:学生可根据自己的需要预约开放性实验,实验管理员对学生提交的申请进行审核,学生可随时随地对审核结果进行查询。

意见反馈:学生在使用系统的过程中,有任何的意见和建议均可通过意见反馈功能提交反馈意见至实验室管理员。

2.2 实验室管理员功能模块

实验室管理员功能模块:实验室管理员输入用户名和密码后,系统自动将其与数据库中所存信息进行核对,核对正确后才允许进入该系统,在系统内进行相关的操作。实验室管理员主要负责对学生的预约信息进行审核和管理,以及对实验课状态进行修改、添加和删除操作。实验室管理员功能又分为四个子模块:审核学生预约信息、开放实验课管理、个人信息管理、学生意见管理。如图2所示。

审核学生预约信息:实验管理员对学生预约实验室的申请进行审核或撤销。

开放实验室管理:管理员根据教学需求添加、修改、删除和开放进行相应实验课的实验室。

个人信息管理:实验管理员可根据需要修改自己的信息和密码。

学生意见管理:实验室管理员可看见与相关实验室的意见反馈信息,并根据需要进行回复,以达到师生互动的效果。endprint

2.3 系统管理员管理模块

系统管理员主要负责在Web端进行学生数据的录入、学期设置等一些基本参数的维护工作。

3 系统架构(System architecture)

实验室预约平台APP采用Struts+Spring+Hibernate框架实现本系统的相关开发(图3)。Struts是一款开源的Web应用框架,它扩展了Java Servlet API,采用model-view-controller(即MVC)架构,从而实现了代码的松耦合,提高了代码的可复用性,主要运用于表现层和业务控制层;Spring是一个开源的設计层面框架,它解决业务逻辑层和其他各层的松耦合问题。它是一个轻量级的应用,主要运用于业务逻辑层;Hibernate是一个开源的对象关系映射(OR Mapping)框架,hibernate可以自动生成SQL语句,从而实现了使用对象编程思维来操作数据库。

在校教师或学生可通过Web浏览器或Android手机访问本系统。如果用户使用Android手机访问本系统,系统将自动采用OKHttp来封装用户的请求。OKHttp是一个处理网络请求的开源项目,是安卓端使用最多的轻量级框架。系统将根据struts.xml的配置找到相应的Action类来处理请求。Action类中会调用相应的服务类(Service)来处理相应的业务逻辑,在Service类中调用相应的DAO处理类,来实现与数据的交互。最后将处理结果以Json的形式返回给Android客户端。如果用户使用Web浏览器访问本系统,则以HTML页面的形式返回给浏览器。

利用Struts+Spring+Hibernate框架,实现了视图、控制器与模型、业务逻辑、操作数据库的分离。Struts+Spring+Hibernate框架结构清晰,功能分明,可达到各个模块间松耦合的目的,从而可以提高开发效率,提高系统的可扩展性[4]。

本系统的数据库采用MySQL,系统ER图如图4所示。

4 系统实现(System implementation)

目前用于Android系统的开发工具众多,该APP设计和开发主要采用了2013年由谷歌推出的Android开发环境——android studio[5]。在设计和开发中,最为关键的部分是如何承载数量众多的在校教师和学生同时在线,该问题采用的解决方案是利用struts+spring+hibernate框架,以提高本系统的可靠性、安全性和可复用性;同时,采用OKHttp协议与服务器端进行通信,以保证Android客户端与服务器端通信的可靠性。

4.1 多线程和异步

用户通过Android客户端发送请求给服务端,请求采用多线程进行处理,实现异步解决系统数据传输问题。在该系统中,客户端需要从服务端获取预约实验室列表。该功能的实现则是通过采用异步类的方法,即在主线程中开启一个子线程,在子线程访问服务端获取预约实验室列表,在主线程收到服务端返回的数据后,更新页面的数据。

以下是代码实现部分。

//调用异步类取得数据

new MylabFragment.ConnectToServer().execute();

//更新预约实验室列表

//String为当调用该类的时候需要传递进来的参数,可以是String数组

private class ConnectToServer extends AsyncTask {

private String errorMessage;

//该方法是运行在后台,开了一子线程

protected Boolean doInBackground(String... strings) {

try{

Mapparams=new HashMap();

//传入sessionID

String sessionID=getSessionID();

params.put("sessionID",sessionID);

//调用myappointRequest这个接口

MyRequest myappointRequest= ServiceManager.MyappointmentRequest(params);

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

//接口连接成功,执行以下内容

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("计算机机房1")) {

mDatas.add(appointment);}}}}

//接口连接失败,执行以下内容

public void onFailed() {

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

myappointRequest.sendInAsyn();

}catch (Exception e){return false;}

return true;}

//当子线程运行结束,执行该方法,更新UI

protected void onPostExecute(Boolean result){

if(result){

//把得到的数据放入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("关闭", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

dialog.dismiss();}});

dialog.show();

}}}}

4.2 JSON

请求响应后返回JSON数据给手机端。JSON即JavaScript Object Notation,是一种利于蜂窝数据网络传输的轻量级的数据交换格式。它是JavaScript的一个子集,采用完全独立于语言的文本格式,容易被阅读和编写,并且方便机器的解析和生成。相对于XML,JSON数据封装的体积小,在网络上传输的效率比XML高,被广泛应用到移动互联的开发领域中。利用JSON在网络数据传输上的优势,将JSON作为实验室管理应用软件客户端与服务端间的数据交换格式[6]。

代码实现部分如下:

从服务端获取到了以下格式的JSON字符串。

{

list:[{week=16, year=2016-2017, checkedNumber=null, lesson=1-3, freeLabID=1, updateTime=2017-05-11, acceptableNumber=30, checkPendingNumber=null, assignedLabs=机房2, semester=2, id=26, day=1,freeDate=2017-06-05, freeLabName=计算机实验室, status=1},{week=14, year=2016-2017, checkedNumber=null, lesson=3-5, freeLabID=1, updateTime=2017-05-14, acceptableNumber=30, checkPendingNumber=null, assignedLabs=机房2, semester=2, id=27, day=3, freeDate=2017-05-24, freeLabName=計算机实验室, status=1}]

}

在客户端就可以使用JSONObject将JSON字符串转换为JSON对象,然后通过对象的方式提取数据。部分代码如下:

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 成果展示

学生用户页面和教师用户页面如图5所示。

5 结论(Conclusion)

日渐成熟的信息技术和日益发达的通讯网络都是为了使人们学习和生活更加快捷方便。对于当代大学生而言,不仅需要丰富的理论知识,同时需要一定的动手能力。通过该款APP的使用,希望可以在一定程度上提高实验室的使用效率,提高大学生的动手能力,实现理论与实践相结合,真正通过信息技术和网络为广大师生带来便利,真正实现实践教学。

参考文献(References)

[1] 谢杭,朱鹏羽,孟庆贺.基于安卓平台的掌上校园APP的设计与开发[J].软件工程,2016,19(3):25-26.

[2] 孙华丽.基于Android平台的实验室预约系统的设计与实现[J].农业网络信息,2016(5):66-68.

[3] 侯晓丽,邓炜,牛天勇.开放式实验室预约系统的功能设计[J].软件设计开发,2017,13(6):102-110.

[4] 张文梅.基于SSH的实验室管理系统设计与实现[J].Computer Knowledge and Technology,2016,12(13):105-106.

[5] 李刚.疯狂Android讲义(3版).北京:电子工业出版社,2015.

[6] 陈惠敏.基于Android的科研成果管理系统设计与实现[J].电脑编程技巧与维护,2015(20):43-44.

作者简介:

王泽奇(1996-),男,本科生.研究领域:软件开发.

陈静娴(1981-),女,硕士,讲师.研究领域:软件开发.

邓大略(1995-),男,本科生.研究领域:软件开发.

蔡刘璐(1997-),女,本科生.研究领域:软件开发.

猜你喜欢
Android系统
Android系统上的移动互联网集成平台开发机制
Android系统核心管理工具设计与实现
Android下的机械式电表数字识别技术研究
基于GPS和iBeacon的智能校园信息发布平台设计与实现
基于增强现实技术的导航系统研究