基于Android平台的代买代送系统的设计与实现

2018-07-20 01:40刘荣袁嵩金鸣
电脑知识与技术 2018年13期

刘荣 袁嵩 金鸣

摘要:随着地图应用的发展、互联网技术的提升,各种地图的衍生应用得到普及。利用移动互联网技术,结合百度地图API、MVC架构设计了一款基于Android平台的代买代送移动应用系统,给出了系统架构、系统功能、系统数据库设计,重点阐述了系统实现的视图模块、控制模块和数据模块三大模块。

关键词:Android;MVC;百度地图API

中图分类号:TP302.1 文献标识码:A 文章编号:1009-3044(2018)13-0081-04

Design and Implementation of Buy-and-Run Delivery System Based on Android Platform

LIU Rong, YUAN Song, JIN Ming

(College of Computer Science and Technology Wuhan University of Science and Technology, Wuhan 430065, China)

Abstract: With the development of map applications and the advancement of Internet technologies, various map derivative applications have become popular. Using mobile Internet technology, combined with Baidu Maps API, MVC architecture to design a mobile application system based on the Android platform, gives the system architecture, system functions, system database design, focusing on the system to achieve the view module, Control module and data module three major modules.

Key words: Android; MVC; Baidu Maps API

1 背景

随着移动互联网的不断发展以及百度、高德等地图平台开放接口的提供以及移动设备的普及,应用市场上涌现出一大批地图应用衍生的移动应用[1],涵盖了人们日常生活的各个方面,带给了人们极大的便利,并且完成了从方便生活到引导生活的华丽转型[2]。为了达到共享时间、共享交通设备、便捷生活的目的,共享单车穿梭于街头;各种顺风车流行市场;airbnb共享房屋横扫全球。基于移动平台的代买代送应用逐渐彰显出其重要性。通过基于移动平台的代买代送应用,人们可以充分利用碎片时间,顺手完成其他人发布的代买代送等任务,并获得一定报酬,实现双方的互利互惠。该文基于Android平台,利用百度地图API以及MVC架构设计并实现了一款代买代送应用系统。

2 系统设计

2.1 系统架构

该系统基于Android平台,使用MySQL数据库管理系统,将数据库放在服务端,Android端通过向服务端发送请求在服务端对数据库进行增删查改,服务端再将结果传回Android端。系统架构如图1所示。

2.2 系统功能

该系统提倡服务者根据自己的行程安排,随程代买、代送、代取、代排队。系统主要包括用户管理、订单管理、费用管理、地图管理、评论管理五个模块。用户通过该系统Android客户端可以进行发布代买代送任务订单、申请成为服务者、接受订单、查看订单、评价订单等操作。系统功能结构图如图2所示。

2.3 系统数据库设计

数据库设计如图3所示。

2.4 系统主要业务流程

该系统的主要业务流程如图4所示(以代送流程为例):用户发布代买代送服务订单之后,系统根据定位信息向周围服务者推送订单,服务者接单之后,如果双方都不取消订单则业务正常进行直至物品交接订单完成。如果服务者接单之后,用户取消订单申请退款则需与服务者协商取得同意之后方可成功取消订单;服务者取消订单会向发单用户发送提示,但不必经过发单用户的同意就可以成功取消订单。

图4 代送业务流程图

3 系统实现

3.1 系统技术说明

该系统Android端基于Android Studio开发平台,按照MVC架构将系统划分为视图模块、控制模块和数据模块三大模块。Android端利用HttpUtils工具类请求网络成功后,视图模块通过控制模块将数据封装并发送给服务端,实现与服务端的通信,数据模块采用轻量级数据格式JSON创建交互数据模型。此外,Android端还导入了百度地图SDK,利用百度地图API提供的相关方法实现地址管理模块的位置共享、地图定位等功能。

3.2 視图模块

视图模块定义应用界面和用户触发的接口,包括设计用户管理、订单管理、费用管理、地址管理和费用管理等功能模块的交互界面,力求达到用户界面友好,事件响应迅速的标准。通过定义XML文件来设计用户界面的效率高,便于代码理解和重用 [3]。因此该系统Android端通过XML文件实现界面布局,再在Activity中为布局中各控件绑定监听事件并通过服务与相应活动绑定。

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.register);

initViewRegister();//初始化界面控件

}

private void initViewRegister(){

setContentView(R.layout.register);

register_do=(Button)findViewById(R.id.register_do);

register_do.setOnClickListener(this);

}

public void onClick(View v) {

register();

}

3.3 控制模块

控制模块主要负责处理用户请求,将数据封装发送给服务器,并将服务器返回的数据进行解析,最后通过视图模块显示给用户。例如用户登录时,Android端将从视图中获取的用户信息进行封装,发送给服务端,服务端对接收到的数据进行处理并将结果返回给Android端,Android端再对接收的处理结果进行解析,根据解析结果判断用户是否能够登录系统。

private UserDAO userDAO=new UserDAO();

private void login() {

// 获取用户输入的账号和密码

final String phone = login_phone.getText().toString().trim();

String password = login_psd.getText().toString().trim();

try {

Boolean aBoolean = userDAO.Login(phone,password);

if(aBoolean){

//成功登录...

}else{

//登录失败

}

} catch (IOException e) {

e.printStackTrace();

} catch (NETWorkException e) {

//...

}

}

UserDAO.java中:

public Boolean Login(String username,String password) throws

IOException,NETWorkException{

final String[] result = new String[1];

// 创建hashmap的集合,用来携带参数

final HashMap paramsMap = new HashMap();

// 给hashmap赋值

paramsMap.put("phone",username);

paramsMap.put("password",password);

// 开启子线程访问网络

new Thread() {

public void run() {

try {

result[0] =new HttpUtils().doPost(LOGIN,paramsMap);

} catch (IOException e) {

e.printStackTrace();

} catch (NETWorkException e) {

e.printStackTrace();

}

}

}.start();

if(result[0]==null) {

return false;

}

else {

User user = JsonUtils.parseUser(result[0]);

Been.username = user.getUsername();

Been.password = user.getPassword();

//...

}

return true;

}

3.4 数据模块

数据模块,采用轻量级数据格式JSON,创建交互数据模型。为了数据安全以及降低Android端应用所占手机内存,该系统并未使用Android Studio自带的SQLite数据库,而是使用Mysql数据库管理系统,Android端不直接参与数据库操作,而是将指令信息封装成JSON格式数据发送到服务端,通过服务端间接地对數据库进行增删查改。

public Boolean Register(User user) throws IOException,NETWorkException{

final String[] result = new String[1];

final Map param = new HashMap();

JSONObject jsonObject=new JSONObject();

try {

jsonObject.put("username", user.getUsername());

//将数据封装成JSON格式...

} catch (JSONException e) {

e.printStackTrace();

}

final String str=jsonObject.toString();

param.put("Json",str);

new Thread() { // 开启线程,访问网络数据

public void run() {

try {

result[0] =new HttpUtils().doPost(REGISTER,param);

} catch (IOException e) {

e.printStackTrace();

} catch (NETWorkException e) {

e.printStackTrace();

}

}

}.start();

return Boolean.valueOf(result[0]);

}

3.5 地图定位

地址管理模块最核心的部分就是实现用户的实时定位。在实现该功能的过程中,系统首先调用百度地图API实现地图显示[4],再利用BDLocation类中的getLongitude()和getLatitude()方法获取发单用户和服务者的经纬度信息,然后调用百度地图显示覆盖物的方法,将发单用户和服务者的位置以气泡形式在地图上显示出来,最后利用服务和线程实现订单跟踪。在该过程中,发单用户点击服务者位置时,系统调用百度地图的方向地理编码,将获取的经纬度转换为实际的地理位置。

4 结束语

通过运用移动互联网技术、百度地图API、MVC三层架构,设计了一款基于Android平台的代买代送移动应用系统。用户通过该系统发布和接受代买代送等任务,实现一定程度的资源共享。Android端按照MVC三层架构分为视图模块、控制模块和数据模块。视图模块主要负责用户交互,控制模块主要负责处理用户请求,数据模块利用JSON创建交互式数据模型。系统界面友好、结构清晰,具有较高的实用性。

参考文献:

[1] 姚尚朗, 靳岩. Android开发入门与实战[M]. 北京: 人民邮电出版社, 2013.

[2] 张志勋. 移动终端支持下的家校合作平台的设计与实现[D]. 上海: 华东师范大学, 2015.

[3] 張涛, 黄强, 毛磊雅, 等. 一个基于 JSON 的对象序列化算法[J]. 计算机工程与应用, 2007.

[4] 迟玉梁, 甘新玲, 李永. 基于Android平台的多人实时定位与交流系统的设计与实现[J]. 实验技术与管理, 2015.