教学动态

您当前的位置: 首页 > 本科教育 > 教学动态 > 正文

2014届优秀毕业论文(二)
来源: 时间:2018-09-12 作者:

基于Android的移动办公系统的设计与实现

软件工程   201000809   刘四平

指导老师   火久元(高级工程师)

 

在学校教职工的基于WEB的网上办公系统已经建设成熟的情况下,有必要在基于Android的手机端开发办公系统的移动终端应用,使教职工便捷地获取信息。

本文对应用系统的开发过程作了详细的阐述。首先进行需求分析,接着进行概要设计,建立UML模型,并进行数据库设计。接着进行详细设计,最后编码实现。采用Eclipse开发工具,开发服务器端的Java Web应用和移动客户端的Android应用,对系统的功能进行测试,完成整个移动办公系统的设计和实现。

关键词:办公自动化系统;移动互联网;Android;UML模型

The Design and Implementation of Mobile Office Automation System Based on Android

Abstract

While WEB-based online office system that school faculty use has been mature situation, it is necessary to develop Android based mobile phone terminal-side office automation system application so that school faculty access to information convenient.

In this paper, the development process of application made in detail. First, requirement analysis. Then, A summary of the design, building UML models, and database design. Followed by detailed design, code implementation finally. Using the Eclipse development tools to develop server-side Java Web application and Android based mobile client application, then test the function of the system. Finally, complete the design and implementation of the entire mobile office automation system application.

Keywords:Office Automation System, Mobile Internet, Android, UML Model

1  引言

办公自动化是实现办公信息处理的自动化,本课题结合了学校办公自动化系统的实际需求,在已建立的基于B/S的系统办公系统基础上,开发基于Android的移动办公系统客户端,来实现日常信息的快速获取和事务的高效解决,提高实时共享性,使获取信息更加便捷,达到提升工作效率的目的。

2  系统分析

系统分析是在软件开发的过程中,明确系统的目标和用户对新系统的具体需求,完整、准确地描述需求的内容,以满足用户的需要。

2.1 需求分析

在明确设计目标,并掌握Android平台开发基础后,根据学校基于Web的协同办公系统的功能需求,获取基于Android平台的移动办公系统应用的功能需求。主要的功能包括:我的桌面、信息管理、通讯管理、文档管理、流程管理等5大功能模块。

2.2 系统的功能需求

本系统的功能模块主要有我的桌面、信息管理、通讯管理、文档管理、流程管理。各个模块的具体功能分析如下:

1)我的桌面:公告列表;

2)信息管理:公告列表、快讯列表;

3)通讯管理:通讯录、邮件列表;

4)文档管理:个人文档、共享文档和学校文件,下载文件;

5)流程管理:用户可以新建流程、查看我的申请、待办事项。

3  系统设计

系统设计是根据系统分析得到的用户需求,设计满足用户需要的逻辑模型,将功能需求转化为具体的解决方案,即建立新系统的物理模型。本应用是基于网络的Android应用程序,需要在网络连接的条件下向Web服务器发送HTTP请求,Web服务器响应用户的请求向Web应用发送请求,Web应用从数据库服务器中获得数据后以JSON格式返回给Android客户端应用程序,由客户端应用解析数据,再将信息展现给用户。

3.1 系统流程图

系统的流程图显示整个系统是如何工作的。在执行过程中,用户点击按钮,Android客户端应用向服务器端Web应用发送HTTP请求,Web应用响应用户的登录请求,向LDAP服务器请求用户登录认证,Web应用根据返回的认证信息作出相应处理,将数据以JSON格式返回给客户端,客户端解析JSON数据。若是合法的系统用户和相应密码,则进入系统的主界面,系统根据登录用户的权限,允许登录用户进行相关操作;若不合法则弹出用户账号或者密码不正确信息。除了登录需要Web应用请求LDAP服务器进行登录认证外,对于其他的HTTP请求,Web应用只需要进行数据库操作,并把得到的数据以JSON格式返回给Android客户端应用,由客户端解析并展现信息给用户。

系统流程图描述了客户端发送请求,服务器端响应请求的流程,如图3.1所示:

3.1 系统流程图

3.2 数据库设计

数据库设计是对给定的应用环境,构造性能良好的、能够满足用户的应用需求的数据库模式,在服务器上建立数据库以及它的应用系统,让数据库能够有效地存储数据。本系统涉及到的实体类型转变成关系模型如下(主码由@标记):

用户(@用户ID,用户名,性别,密码,邮件,所属部门,职位,电话,地址,邮编,相片存储路径,入职时间,状态,教育,全名,删除标记);

文档(@文档ID,文档名称,内容,创建时间,更新时间,目录编号,用户编号,全称,是否有附件,共享用户ID,共享用户名称,共享角色ID,共享角色名称,是否共享);

邮件(@邮件ID,发送人,发送人ID,重要性,发送时间,邮件内容,邮件标题,抄送人姓名列表,抄送人ID列表,收件人姓名列表,收件人ID列表,邮件状态,附件列表,附件名称列表);

快讯(@快讯ID,类型ID,主题,快讯标题,作者,创建时间,回复数,浏览数,内容,状态);

通告(@通告ID,发布人,标题,内容,生效时间,失效时间,状态,是否有附件,用户ID,角色ID,部门ID);

4  系统实现

系统实现是对系统设计的细化,详细描述模块的实现方法。本系统的服务器端应用是采用SSH框架设计的,主要通过3层架构规范管理整个项目的逻辑,使用Oracle数据库服务器,Tomcat作为Web服务器。客户端是Android应用程序,使用Genymotion模拟器作为测试环境。

4.1 应用开发环境

开发工具:MyEclipse10.0Eclipse+ADT插件;

数据库:Oracle10g

开发平台:JDK7

Web服务器:Tomcat7.0

操作系统:Windows 7 64位操作系统,内存4G

模拟测试环境:Genymotion模拟器+Android 4.4

4.2 系统的详细设计

在程序开发阶段,首先使用开发工具建立工程,服务器端应用建立Java Web工程,客户端应用建立Android工程。根据面向对象编程的思想和Android开发的过程,系统的主要实现步骤如下:

1SSHStrutsSpringHibernate)框架是Web应用的核心技术,3大框架相互配合,分工明确,分别完成3层架构模型的实现。

① 数据访问(DAO)层:采用JDBC连接方式,使用C3P0连接池技术,Hibernate框架控制访问和操作(增,删,改),实现对象关系映射模型。

② 业务逻辑(Service)层:调用相应的DAO层来处理业务逻辑,如增、删、改、查等。

③ 控制(Action)层:通过Struts2的过滤器拦截用户(Android客户端)的请求,跳转到相应的控制类,调用的业务逻辑层返回数据,最后对应跳转返回响应信息。

2)配置数据库连接

利用Hibernate框架进行数据库的连接,配置数据源时使用的是C3P0数据库连接池技术,数据库连接池负责连接对象的获取,缓存数据。需要做的就是将其需要的jar包导进项目,如c3p0-0.9.1.jar等,在applicationContext.xml配置文件的dataSource bean的配置信息,其中jdbcUrldriverClassuserpassword等数据库服务器信息配置在jdbc.properties文件中,格式为“关键词=值”,每个关键词占一行,DAO层使用sessionFactory进行相应的操作,先在applicationContext.xml配置文件中配置sessionFactory bean,引用dataSource bean,连接Hibernate配置文件中的实体及配置信息,同时配置HibernateTransactionManager的相关信息进行事务处理操作,在代码实现时直接调用即可。底层的BaseDao抽象类的实现增(save)、删(delete)、改(update)、查(getById)操作如下:

public abstract class BaseDaoImpl<T> implements BaseDao<T> {

@Resource

private SessionFactory sessionFactory;

protected Class<T> clazz;

public BaseDaoImpl() {

// 通过反射得到T的真实类型

ParameterizedType pt=(ParameterizedType) this.getClass().getGenericSuperclass();

this.clazz = (Class) pt.getActualTypeArguments()[0];

}

3)业务层的逻辑实现

Spring主要负责业务逻辑的处理层(Service层),该层主要是处理一些复杂的业务逻辑,通过继承BaseDaoImpl抽象类,实现DAO层的操作,包括增、删、改等操作,将其操作的结果返回给逻辑层,然后进行一系列的业务逻辑操作,并将得到的结果返回给控制层。根据Spring的控制翻转(IOC)特性,所有的bean都通过Spring自动扫描和装配。例如业务层的逻辑实现类UserServiceImpl,通过继承BaseDaoImpl并实现UserService接口。

4)控制层的逻辑实现

Struts负责该层的逻辑控制任务,该层的主要任务是实现请求的跳转,并分发请求响应过程。通过调用业务逻辑层,实现对用户请求信息的处理和获取业务逻辑相关的信息,并将信息以JSON格式的数据响应用户请求。在封装JSON数据时,使用Struts-json工具包,由Struts自动将配置好的对象封装成JSON格式数据。同时为体现面向对象的模块化设计思想,将公用的请求信息封装到BaseAction中,并以泛型抽象类的方式实现整个ModelDrivenBaseAction并继承BaseAction,方便所有的Action类复用该模块,只需要继承该类即可,具体实现如下:

public abstract class ModelDrivenBaseAction<T> extends BaseAction implements ModelDriven<T>{

protected T model;

public int result;

public Object data;

public String msg;

public ModelDrivenBaseAction() {

try {

// 得到model的类型信息

ParameterizedTypept = (ParameterizedType) this.getClass().getGenericSuperclass();

Class clazz = (Class) pt.getActualTypeArguments()[0];

// 通过反射生成model的实例

model = (T) clazz.newInstance();

} catch (Exception e) {

throw new RuntimeException(e);

}

}

Struts.xml中配置信息中,请求返回的类型是JSON格式,参数设置为data(数据),result(状态),msg(消息)。配置如下:

<action name="userAction_*" class="com.lsp.action.UserAction"  method="{1}">

<result type="json">

<param name="ignoreHierarchy">false</param>

<param name="includeProperties">data.*, result, msg</param>

</result>

</action>

5Android客户端主界面MainActivity的实现

Android客户端显示界面是通过继承Activity类来展示的,其他显示界面类的实现同样如此。MainActivity的界面布局是使用android.support.v4.view.ViewPager实现4个菜单界面的切换,可以通过滑动屏幕实现切换,也可以点击菜单中的图标按钮切换,界面视图切换逻辑代码如下:

LayoutInflatermLi = LayoutInflater.from(this);

view1 = mLi.inflate(R.layout.main_tab_list, null);

view2 = mLi.inflate(R.layout.main_tab_info, null);

view3 = mLi.inflate(R.layout.main_tab_address, null);

view4 = mLi.inflate(R.layout.main_tab_settings, null);

// 每个页面的view数据

finalArrayList<View> views = new ArrayList<View>();

views.add(view1);views.add(view2);views.add(view3);views.add(view4);

// 填充ViewPager的数据适配器

PagerAdaptermPagerAdapter = new PagerAdapter();

6Android客户端发送HTTP请求的AsyncTask对象

Android 4.x版本(API 16)之后,应用程序中访问网络的请求过程不能在主线程中进行,否则,会出现异常,应用界面无响应。在Android SDK中提供了AsyncTask类,进行异步任务访问网络,提交请求,并处理响应信息。同时,在Android中访问网络需要在AndroidManifest.xml中配置应用网络访问的权限。通过继承AsyncTask类来实现异步请求任务操作,重写onPreExecutedoInBackgroundonPostExecute方法,分别完成提交HTTP请求相关的准备工作、提交HTTP请求、处理HTTP请求之后的响应信息。

7)多线程下载的实现

下载文件需要启动线程,而单个的线程不能满足下载时间和效率的目标,因此有必要提高文件下载的效率,同时启动多个线程进行下载任务。DownloadThread类继承Thread类,通过构造函数的参数DownloadThreadString pathintthreadIdintstartIndexintendIndex),分别设置下载文件的路径,线程id,线程下载的开始位置,线程下载的结束位置。重写run方法下载文件指定模块的任务。

5  总结与展望

本文主要阐述了如何开发一个办公自动化系统的服务器端Web应用和客户端的Android应用。从Web应用的SSH框架搭建和配置数据库的连接到编码实现3层(DaoServiceAction)架构,再到Android客户端的界面设计和实现,充分考虑无线网络传输数据的格式,即Android客户端通过HTTP协议连接服务器,应用服务器返回JSON格式数据,并进行功能测试,最后完成整个系统的测试。采用模块化的设计思想进行开发设计,便于系统后续开发过程中的扩展和整合。

由于时间和开发经验的原因,该应用系统还存在一些不足,系统功能还不是很完善,接下来需要进一步补充和完善功能,并能投入到学校教职工移动办公的实际使用中。

参考文献

[1] 秦建平.Android编程宝典[M].北京:北京航空航天大学出版社,2013.3.

[2] 佘志龙.Google Android SDK开发范例大全(3)[M].北京:人民邮电出版社,2011.11.

[3] 李刚.轻量级Java EE企业应用实战(第3版)[M].北京:电子工业出版社,2011.3.

[4] 王珊,萨师煊.数据库系统概论(第4版)[M].北京:高等教育出版社,2006.5.

[5] 麻志毅.面向对象分析与设计(2)[M].北京:机械工业出版社,2013.2.