1、基于安卓的校园快递基于Android的校园快递平台的设计与实现摘 要:随着智能手机的普及以及移动互联网的快速发展,很多人尤其是在校大学生已经习惯于使用手机应用来享受生活的便利。本文设计了一款基于Android的校园快递平台,该平台可以方便快递人员进行快递的收件和分件。本系统以Android作为开发基础,客户端采用HTTP协议和服务器交互,服务器端使用MyEclipse10.7作为开发工具,tomcat6.0.13作服务器,以MYSQL5.5作为数据库,采用了Hibernate主流框架。本系统采用现如今最流行的Android开发,具有受众面广,易于操作与维护等特征,很好的满足了校园快递的需求。关
2、键字:校园快递;Androi;MySQL;快递人员1 概述自从Google在2008年10月发布第一部Android智能手机以来,Android就以它强大的开源性以及易用性迅速席卷了全球的智能手机市场。2011年第一季度,Android在全球的市场份额跃居第一,这是它首次超过诺基亚的塞班系统。时代在进步,Android的发展也在昂首阔进,正如之前的“诺基亚时代”一样,现在是属于Android的时代。在Android面世的第五个年头,它就已经牢牢占据将近八成的全球市场,全世界采用Android系统的设备数量达到了10亿台。因此,当代大学生拥有一部属于自己的Android手机已经是一件很平常的事情
3、了。Android的流行在于它是一个高度开源的操作系统,拓展性非常强,国内最大的两家手机厂商小米和魅族,他们的手机操作系统都是基于原生Android上定制而成的。对于开发者来说,他们利用Android开发的应用具有无限的可能性,这些Android应用可以涵盖生活的方方面面,无论衣食住行,我们都可以在任意一个Android应用市场上找到与之相关的应用。可以说移动应用已经改变了我们的生活方式,在这种情况下,为了满足人们日愈丰富的移动生活需求,开发基于Android的应用是很必要的。随着Android智能手机的普及,越来越多的大学生已经习惯于使用手机为自己的学习和生活提供便利。在当前的校园生活中,快
4、递已经成为了大学生日常不可缺少的一部分。如何提高快递的发送效率是各个快递员最为关注的问题。基于该背景,我们设计斌2 相关技术简介2.1 Android技术概述Andy Runbin创立了Android公司并开发了Android系统。Android系统的巨大潜力引起了Google的极大注意,并花重金买下了Andy Runbin创立的Android公司。开放手机联盟及开放手机软件平台也应用而生。相比于IOS、黑莓、塞班等系统,Android系统有点更加突出,更加开放。Android系统首先是基于Linux内核而设计,因此Android系统架构的底层为Linux内核,还包括各种设备的驱动程序的,Li
5、nux内核是Android系统最核心的地方。基于Linux内核,Google开发了Android的类库及各种各样的应用程序。安卓系统中具有四大组件,其中Activity是最主要的组件之一。Android系统中Activity的生命周期如图2-1所示。图2-1 安卓Activity的活动周期Activity是Android系统中的重要组件之一。主要完成两个工作:首先是处理业务逻辑,其次是渲染视图。Activity是组成应用的基本元素,不同Activity之间的互联形成整个应用的业务逻辑。在应用程序中,必需要规定某一个Activity作为Main Activity,作用就是将它设置为进入应用时显示
6、的第一个Activity界面。各个Activity之间的跳转非常灵活,Android中利用Intent类就可以实现不同Activity之间的跳转动作。每当某一Activity获得执行焦点,即启动运行时,它的前一个Activity就会停止工作。Android程序中所有的Activity都会被存储在一个栈中,因此停止运行的Activity并不会被销毁,而会存储在栈中。新启动的Activity会先存储于栈中,随即获取活动焦点。如果在某个Activity运行时执行返回操作,就会将当前的Activity从栈中获取并消除,这时前一个Activity就会重新取回活动焦点。2.2 JSP技术JSP的全称为Ja
7、va Server Pages,本质上来时,JSP就是简易的Servlet。JSP语法采用形式。与Servlet相同的是,其操作也是在服务器端运行。儿返回给前端的基本是个HTML文本。所以,JSP的运行非常的灵活,只需要有浏览器就可以。在程序设计中,习惯上把系统分为模型(Model)、视图(View)、控制器(Controller)三种模块的设计方式称为MVC设计模式。MVC设计模式中每个模块的功能均不同,模型(Model)模块的主要功能是描述应用程序的业务逻辑和状态,一般分为业务模型和数据模型两种模型;视图(View)负责向用户提供可交互的界面,向用户显示模型的数据;控制器(Controll
8、er)的主要功能是响应用户的请求,根据接收的客户请求来操作模型,并通过视图把模型的响应结果展示给用户。图4-1是MVC模式的示意图:图4-1MVC模式图采用MVC设计模式来进行系统设计有以下好处:(1)名司其职、互不干涉:在MVC设计模式中,三种模块的功能相对独立,分工明确,如果哪一个模块的需求发生变更,只需要修改相应模块中的代码,对其他模块不造成影响,有效降低了系统的耦合度。(2)有利于开发中的分工:在MVC设计模式中,由于系统模块是按照层次划分的,而每个层是间隔开来的,这样可以更好地在开发过程中进行分工,提高系统的开发效率。如:美工设计人员可以专注于开发系统的界面,对业务熟悉的开发人员可以
9、专注于开发模型中的相关业务处理方法,而其他开发人员可以专注开发控制器,以便更好地进行程序控制。(3)有利于组件的重用:因为MVC设计模式最重要的特征就是把显示与数据分离开来,所以在MVC模式中各个层的组件的重用是很容易实现的。如:控制层的组件可以独立出来成为一个通用的组件,视图层的组件也可以独立出来成为通用的系统操作界面。3. 系统分析与建模3.1. 系统可行性分析本节将从技术可行性、经济可行性、操作可行性等方面对该系统的可行性进行阐述,以表明该系统的实际可行性。技术可行性:android手机客户端开发技术目前已发展多年,网上及图书馆有关android开发的资料也很多,与服务端通信的技术也相对
10、程序。而JSP技术作为目前广泛的应用技术,已经被大量的开发者的所采纳,MVC模型-视图-控制开发模式在实践中也被大量应用,因此在技术上,采用android和JSP技术是完全可行的经济可行性,本系统中服务端采用MyEclipse+Tomcat+Mysql开发软件及平台,其中服务器部署软件Tomcat和数据库软件Mysql都是开源免费的,使得该系统在服务端的开发成本非常的小,只需要一台能够运行Tomcat和Mysql的PC机就可以。而对于客户端,目前几乎人人都有android智能手机,因此用户不需要单独采用任何的设备来使用该android系统。综上所述,该系统在经济上不需要投入太多设备,软件也都是
11、开源的,在经济上完全可行操作可行性,该快递平台运行在Android客户端,只需用户有一台android手机就可以运行,目前几乎人人都在使用智能手机,尤其是年轻一代,对于智能手机的操作得心应手,因此该系统在操作上也完全是可行的。综上所述,该系统在技术、经济、操作等方面都是可行的,3.2. 需求分析经过调研分析,该快递平台主要分为以下二个角色:系统管理员、用户。如图3-1所示。图3-1 校园快递系统角色该个校园快递系统的每个角色的主要功能需求如下所示:管理员:主要完成对系统信息的管理,包括对物品分类、用户、反馈信息以及举报信息的管理等。用户:注册、登录系统,可以查看物品、发布二手物品、举报发布者、
12、收发私信、收藏物品、反馈等功能。系统用例图如图3-2所示。 图3-2 系统顶层用例图3.3. 系统的非功能性需求 通过调研,该系统具有如下的肺功能性需求:(1)整体要求随着移动设备深入人们的生活,移动APP的UI设计越来越重要,该设备维修系统的UI需要简洁大方,各个控件之间的布局合理,UI系统的风格及搭配需要统一。对于用户的点击响应时间应该在4s以为,超过该时间,用户会无法忍受。(2)安全性要求为了防止他人进入系统并保护用户的个人信息,系统在传输数据的过程中应该对敏感数据进行加密。4. 校园快递系统设计4.1. 系统总体架构设计4.1.1. 系统总体架构图本校园快递系统采用MVC(模型-视图-
13、控制)的架构,系统分为服务端和客户端两大部分,android手机通过无线网络访问服务器,如图4-1所示为基于android 的校园快递系统体框架。图4-1 系统的整体架构4.1.2 系统实现流程架构 整个系统的数据流图如图4-2所示。数据请求的过程如下所示:首先android手机端提出数据请求,通过TCP/IP的方式连接至服务端,服务端响应客户端的请求,按照具体的请求对数据库进行操作,操作完成后,将数据按照JSON的方式返回给客户端。图4-2 校园快递系统数据流框架4.2. 系统功能设计4.2.1.服务端设计该服务端采用JSP的MVC框架进行设计与实现。MVC设计模式是指模型(model)、视
14、图(view)、控制器(controller)构成的软件架构模式。M:Model模型。Model是应用程序中用来操作数据逻辑的主要部分,对数据库的操作常放在该层。 V:View视图。View是视图层。用以和用户直接的交互工作,例如用户输入或者提交表单,主要是显示处理结果;在Android应用中一般采用XML数据格式作为用户界面布局语言。 C:Controller控制层。Android控制层的操作需要在Activity中完成,控制层是大多数业务流程的编写部分。主要功能是管理校园地址信息的管理,框图如图4-3所示:4.2.2.客户端功能设计 本客户端主要分为两个角色,快递管理员以及快递人员: 快递
15、管理员的主要功能为:登录系统、收件、发件以及个人资料管理。快递人员的主要功能为:查看分配给自己的快递,快递状态更新以及个人资料管理。客户端的功能框图如图4-3所示:图4-3 客户端功能框图4.3. 数据库简要设计数据库用来存储系统的数据,并供用户查找使用数据,是整个系统的核心所在,根据前面的系统分析,本节设计并实现了如下5个表,分别为管理员表、校园地址表、分件表、快递表、用户表。表4-1 tb_admin管理员表字段类型含义namevarchar(50)用户名,主键passwordvarchar(50)密码表4-2 tb_address校园地址表字段类型含义idint编号,自动加1,主键ana
16、mevarchar(50)名称表4-3 tb_assign 分件表字段类型含义idint编号,自动加1,主键expressidint快递idusernamevarchar(50)快递人员astateint状态adatevarchar(50)日期表4-4 tb_express快递表字段类型含义idint编号,自动加1,主键enovarchar(50)快递编号eaddressvarchar(100)收件地址enamevarchar(50)收件人ephonevarchar(50)联系电话edatevarchar(50)收件日期estateint状态addressedint所属校园地址表4-5 tb_
17、user 用户表字段类型含义accountvarchar(100)账号,主键passwordvarchar(100)密码uphonevarchar(50)电话urealnamevarchar(50)用户名addressidint所属校园地址整个系统ER图如图4-4所示,该ER图表示了各个数据表之间的关系。图4-5 数据库ER图5. 基于Android平台的快递系统实现5.1. 开发环境搭建 整个系统的开发环境如下所示: 开发语言:JSP, android Android手机开发平台:Android系统4.0以上 PC端操作系统平台:WINDOWS Win7 开发工具:Eclipse4.2+My
18、Eclipse10.0+Tomcat6.5+Mysql5.55.2. 关键技术实现5.2.1 数据交换格式本系统的重点是服务端与客户端的良好连接及数据交互。在服务器端通过JSP Servlet与客户端进行通信。其中数据交换主要通过JSON格式。JSON是一种轻量级的数据交换格式,相比于xml等交换格式,JSON格式在可读性及便捷性上有所提高,而且JSON支持大部分的主流平台,因而普及性也比较高。JSON采用的文本格式兼容性很高,与C语言体系的行为类似。JSON的类主要包括以下几个。JSONObject:JSON的基本单元,主要包括键值对,最外被大括号包裹,其中的Key和Value被冒号“:”分
19、隔)。其对于内部(Internal)行为的操作格式略微,例如:new JSONObject().put(JSON, Hello, World!),在Key和Value之间是以逗号,分隔。Value的类型包括:Boolean、JSONArray、JSONObject、Number、String或者默认值JSONObject.NULL object 。JSONArray:它代表一组有序的数值。用方括号包裹,数值以逗号“,”分隔把它转换成String输出(toString)作为它的表现的形式。同时这个类的内部也拥有查询行为,通过利用index索引返回get()和opt()这两种方法指定的数值,添加或
20、者替换数值可以使用put()方法。同样这个类的value类型可以包括:Boolean、JSONArray、JSONObject、Number、String或者默认值JSONObject.NULL object。5.2.2 FragmentAndroid是在Android 3.0发布时使用Fragment的。Fragment能够作为Activity当中的一个模块,与Activity相似,Fragment也有活动周期,同时也具有自己的逻辑和视图,并能单独处理自己的输入。Fragment使用起来非常灵活,可以在Activity运行的时候动态装载或者移除Fragment,也可以将Fragment设计成
21、能够在多个Activity中复用的模块。例如搜索栏,在多个Activity中都需要使用,如果是在Activity中编程,那么就需要重复多次的工作编写同样的代码。如果使用Fragment,将搜索栏作为Activity的一个部件引入,那么将搜索栏的逻辑和页面在Fragment中编写一次即可,需要使用搜索栏模块时,Activity只需要在程序中声明引入即可。Fragment必须重写onCreateView()方法,需要在此方法中完成Fragment的逻辑,并且绑定Fragment的View视图。5.2.3 AsyncTask 客户端和服务端数据交互是整个应用的核心部分,AsyncTask是客户端向服
22、务端请求数据时使用的重要类。Android 4.0版本之后取消了在UI线程进行网络访问的功能,否则会出现android.os.NetworkOnMainThreadException异常。因此,需要启动一个异步线程完成网络连接方面的操作。在Android的设置中,UI的更新只能在主线程中完成,因此异步处理是不可避免的。在Android系统中完成异步操作的方式有两种:Handler和AsyncTask。 Handler方式需要给每个异步任务创建一个新的Thread线程,任务完成后使用Handler的方法向UI主线程发送消息,UI线程收到消息后就会更新界面,这种方法对于异步操作的控制会非常细致,但
23、同时也导致了一些问题,比如代码结构臃肿,在有多个线程任务运行时,不方便对线程进行精确的控制。因此在新版本中,Android提供了专门的异步任务类android.os.AsyncTask,它的使用方法相对Handler而言更加简单易用,不需要定义线程,只需要按照规则重写AsyncTask类方法就能够完成和Handler同样的功能。5.2.4 页面设计Eclipse提供了可视化的UI编辑器,利用XML语言完成元素编写和布局。Activity和Fragment均能定制自己的视图文件。一个视图通常由布局、控件、样式三部分构成。常用的页面布局方式为:LinearLayout线性布局,RelativeLa
24、yout相对布局。LinearLayout是线性布局控件,它包含的子元素会按照横向或纵向的方式排列,按照相对位置来排列各种组件或者其他的容器,内容超过边界时,某些控件将缺失或消失。因此一个纵向线性布局的每一行只能有一个组件或者是容器,而不管它们的宽度是多少,而一个水平线性布局就只会有一个行高。线性布局会保持其子组件或者是子容器之间的间隔以及互相对齐。RelativeLayout布局可以定义其子元素按照相对位置进行布局,因此可以对元素进行任意位置的摆放,因而RelativeLayout比LinearLayout的使用灵活性更高。5.2.5 ListViewListView是应用中最常用的控件之一
25、,它以列表的形式展示数据。基础的ListView控件可以展示文字和图片,还可以给列表中的每个条目绑定点击事件。ListView通常需要三个元素构成:每个条目的视图布局,需要展示的数据和一个数据适配器。适配器实际上就是将数据绑定到ListView的工具,同时,适配器还有自定义列表的功能。有时基础的列表显示是无法满足需求的,若想在列表中添加checkbox、editview等控件,并为这些控件定义事件的话,就必须利用适配器的扩展功能。BaseAdapter是一个基础适配器类,继承此类后可以重写类方法,以此自定义ListView的视图和功能。5.3. 服务端主要功能部分模块的实现与测试为了减少底层数
26、据对上层设计的影响,服务端数据库操作部门采用了Hibernate进行设计实现。图5-1所示为本服务端生产的Hibernate文件,每个表都对应一个hbm.xml文件图5-1 Hibernate文件 其配置信息在hibernate.cfg.xml文件中,具体如下所示: org.hibernate.dialect.MySQLDialect jdbc:mysql:/localhost:3306/testtestdb root 123 com.mysql.jdbc.Driver mysql 服务端的管理员的主界面如图5-2所示,主要实现校园地址的管理功能。图5-2 服务端界面添加校园地址的界面如图5-
27、3所示,其中包括校园地址的名称等。图5-3 添加校园地址的界面添加完成的校园地址列表界面如图5-4所示。图5-4 校园地址列表界面 为了与客户端进行通信,本系统设计了如下7个Servlet,具体信息如表5-1所示。表5-1 与客户端通信的Servlet名称功能AppAddressServlet处理与校园地址有关的操作AppAssigntServlet处理与快递分发有关的操作AppExpressServlet处理与快递有关的操作AppGoodServlet处理与物品有关的操作AppUserServlet处理与用户原有关的操作LoginServlet处理与快递员登录有关的操作RegisterSer
28、vlet处理与注册有关的操作Login2Servlet处理与管理员登录有关的操作 配置信息(以AppAddressServlet为例)如下所示: AppAddressServlet com.wuye.app.servlet. AppAddressServlet AppAddressServlet /servlet/ AppAddressServlet 通过服务端的开发,可以向客户端提供固定的URL地址,这些URL实际对应着不同的JSP servlet,也就是对应不同的后台业务逻辑和返回数据,因此访问每个不同的URL地址会得到相应不同的内容。当Android客户端需要访问数据时,已经知道需要访问的服务端URL地址,再将参数写入已知的URL格式当中,然后构造HttpGet访问对象,以此来访问服务器,如图5-5所示。图5-5 客户端和服务器的交互模型5.4. 客户端主要功能部分模块的实现与测试5.4.1 UI实现客户端UI主要通过ViewPage+Fragment实现,主界面如图5-5所示。该界面中的下方为导航界面,其上方为显示界面。图5-5 系统主界
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1