dr-helper项目设计介绍(一个包括移动端和Web端的点餐管理系统)

一、源代码路径

https://github.com/weiganyi/dr-helper

二、界面

通过浏览器訪问Web服务,能够看到界面例如以下:


ADT-Bundle编译project生成dr-helper.apk。安装后能够看到应用界面例如以下:

三、背景

Java诞生后主要就是用于Web开发,随着Android的兴起,其在移动领域也应用广泛。我在学习了Java相关的一系列技术后,想找个项目来实际运用一下。因此我考虑能够基于Java相关的技术来构建一个包含移动端和Web端的餐厅管理系统,在这个项目里我会综合运用各种的技术,并尽量使它们贴合使用场景。

这个系统会服务于餐厅里的三类角色。首先是点餐服务员,他们採用手机Android APP来进行点餐操作。其次是厨房的厨师,他们将採用Web服务来获取点的菜品,菜品完毕后能够通过Web服务给点餐服务员发送上菜通知。最后是收银台的管理员,他们也是通过Web服务来进行相关的订单管理,比方付款操作。以及整套系统的其它管理工作。

在技术方案上包含了移动前后端和Web前后端,移动前端就是一个Android应用,移动后端採用Tomcat容器Servlet来提供服务。两者通过JSON消息交换数据,这样可以减少两者交互的数据量。Web后端也是採用的Tomcat容器Servlet来提供服务。然后通过JSP来生成前端Web页面。

在数据库选择上,对于传统关系性较强且数量有限的数据,我选择用Mysql来存储,而对于像订单这样的可能数量巨大的数据,我选择用Mongodb来存储,这样能充分利用各自的长处。

四、功能实现

1、Android端支持例如以下功能

基本功能:登录/注销、主页、查桌、开桌、查单、订单、菜单、点菜、转台、并台、更新、配置

通知功能:空桌通知、上菜通知

2、Web端支持例如以下功能

基础功能:登录/注销

厨房功能:下单菜品管理、完毕菜品管理

柜台功能:订单管理(含结帐。通过单号、桌号查询)、用户管理、餐桌管理、菜单类别管理、菜单管理、配置管理

五、整体设计思路

1、数据库设计

1)当中dr_user表存储用户帐号信息,dr_table表存储餐桌信息,dr_menu_type表存储菜品类型信息。dr_menu表存储菜品信息,dr_option表存储配置选项信息,这5个表为关系型表。使用Mysql数据库存储。

它们的详细字段例如以下:

create tabledr_user(

    user_id int(4) not null primary keyauto_increment,

    user_name char(255) not null,

    user_passwd char(255) not null,

    user_auth enum('waiter', 'chef', 'admin')not null);

create tabledr_table(

    table_id int(4) not null primary keyauto_increment,

    table_num int(4) not null,

    table_seat_num int(4) not null,

    table_empty int(1) not null);

create tabledr_menu_type(

    menu_type_id int(4) not null primary keyauto_increment,

    menu_type_name char(255) not null);

create tabledr_menu(

    menu_id int(4) not null primary keyauto_increment,

    menu_name char(255) not null,

    menu_price int(16) not null,

    menu_type_id int(4) not null);

create tabledr_option(

    option_id int(4) not null primary keyauto_increment,

    option_name char(255) not null,

option_value char(255) not null);

2)还剩下一个dr_order为非关系型集合,使用Mongodb数据库存储,包括订单信息,它的结构例如以下:

dr_order:{"id":"xxx", "order":1, "table":1,"waiter":"xxx", "time":"xxx","admin":"xxx", "pay":true,"detail":[{"menu":"xxx", "price":12,"amount":1, "chef":"xxx","finish":true, "remark":"xxx"}]}

3)Mysql和Mongodb数据库的连接參数等信息。存储在后台的properties配置文件。

4)部分数据库存储操作使用了存储过程。这些能够在项目文件夹下的drhelper_db数据库文件夹里的数据库备份文件里能够查看到。

2、Android前端应用设计

1)其每项基本功能都由一个Activity和一个AsyncTask构成,Activity载入布局xml来构造操作界面。

当用户运行某个操作后,须要运行通信对象的JSON序列化,向后台发生HTTP请求。等待HTTP响应,响应消息运行JSON反序列化,依据结果进行反馈处理。这一系列的处理因为有网络通信在当中。实际运行时间可长可短。所以Activity要启动一个AsyncTask线程来运行这些后台操作,以避免Activity运行超过5秒报异常的问题,也吻合界面与逻辑处理要线程分离的通用思想。

2)对于两个通知功能,空桌通知和上菜通知,我须要实现一个消息推送机制,Androidclient须要创建和维持与后台的TCP长连接消息推送通道。

实现方案是这样,用户启用通知订阅后,先创建一个Service,然后在Service里再创建一个线程,这是由于Android的Service可能和Activity处于同一个线程运行,这样的TCP长连接任务须要有独立线程来运行,所以要再启动一个线程。

在这个线程里创建一个与后台推送服务的TCP Socket,发起登录请求消息,并定期发送心跳消息来维持TCP长连接,还要依据Androidclient的通知预定配置发起通知预定请求消息。

当通过这个Socket收到后台的通知推送消息后。再发起HTTP请求去获取详细的通知内容,收到响应后依据通知类型发出对应的Android通知消息。

这里有一些异常情况须要处理,比方当服务端退出时须要检測出来并直接退出Service。这时没有再进行重登录尝试是由于。当服务端退出后除了这个通知服务的登录信息没有外,整个应用的登录信息也没有了,所以这时须要退出整个应用并重登录,当应用重登录后也会再发起通知服务的登录。

另外,当用户依据通知订阅操作界面关闭通知功能时。要能中断通知Service自身。还有由于Android手机可能会杀死后台的服务线程,所以须要在这样的情况下须要发送一个广播消息给Service,由Service又一次拉起服务线程。

3)对于Activity的退出,採用注冊广播接收程序的方式实现。

当用户退出登录时。会发出退出广播,Activity堆栈的各个Activity收到后,就各自退出并销毁自身。Service的退出实现也类似。

4)应用须要频繁读取的两个表是dr_menu_type和dr_menu,而且这两个表不会发生频繁的变化,所以把它们存储一份在Android的SQLite里,这样可以显著的节省与后台的数据交换量,然后通过专门的更新功能。来与后台同步这两个表的数据。在实现上通过ContentProvider机制来封装对底层SQLite的訪问,以实现对业务层接口的友好。

5)对于已经登录的帐号信息,server地址、通知订阅等配置信息,都存储在首选项里,并依据选项菜单进行配置。

3、Web前端设计

1)採用单页式站点风格,点击页面的button或者链接,通过Ajax请求来向后端提交数据。并获取新生成局部页面。最后把局部页面更新到相应的位置。相关的JS操作採用Jquery库来进行。以取得较好的浏览器兼容性。

2)在HTML页面的构造上,採用JSP脚本来完毕。依据后台Servlet逻辑处理完后生成的Java Bean对象,在JSP文件内。通过Java脚本或者JSTL等JSP技术。获取Java Bean对象拼装成所须要的HTML页面。

4、Java后台服务设计

1)通过Tomcat容器的Servlet来进行后台处理。为实现MVC。Servlet里仅仅进行消息内容提取、服务调用和消息转发等控制逻辑,详细的业务逻辑在相应的Service里进行。包含对数据库的操作。

2)对数据库的操作通过一个代理进行,这样可以屏蔽两种数据的差异。给上层以统一的数据操作接口。

3)在消息推送服务后台实现上。採用创建一个servlet的上下文监听器,这样这个监听器就能够在Tomcat容器启动时调用,容器退出时才退出。

再在这个监听器里创建一个线程。这个线程监听一个TCP Socket。当有来自Androidclient的连接时。创建处理连接并管理起来。当业务逻辑触发到有空桌事件或上菜事件时,通过Androidclient的预定通知列表。找到对于的处理连接,发送通知推送消息来通知Androidclient获取详细的通知内容。在与Androidclient的连接维护上,除了须要回应Androidclient的心跳消息外,还须要启动定时器来检測心跳消息的存在,当检測到无心跳消息时表明对应的Androidclient已经异常退出,这时就须要清除这个失效的连接。

4)为了可以在响应消息中传送中文字符。须要设置响应消息的编解码方式为UTF-8,这对于每一个Servlet都须要进行。所以就创建一个过滤器来统一做这个设置。

5)不论是移动端还是Web端,前台用户信息的保存,因为其都是基于HTTP协议进行前后台通信的。所以採用cookie来完毕。在后台处理上。Servlet有封装的session对cookie的处理提供了支持。直接使用即可了。

6)在服务部署上,使用nginx做反向代理,把请求转发到后端的tomcatserver上进行处理。这也是经常使用的部署方式,由于眼下系统文件比較少,所以没有把图片等静态资源放到nginx下这样的动静分离的做法。

六、文件及文件夹介绍

Android:移动端文件夹

Androidlibs:支持包文件夹

Android esdrawable-hdpi:应用的图片文件夹

Android eslayout:布局xml文件文件夹

Android esmenu:系统菜单布局xml文件文件夹

Android esvalues:字符串定义文件文件夹

Androidsrccomdrhelperactivity:Activity文件文件夹

AndroidsrccomdrhelperactivityAfterLoginActivity.java:登录前Activity通用功能,其它Activity继承这个Activity

AndroidsrccomdrhelperactivityBeforeLoginActivity.java:登录后Activity通用功能。继承于AfterLoginActivity,其它Activity继承这个Activity

AndroidsrccomdrhelperactivityChangeTableActivity.java:换台页面的Activity

AndroidsrccomdrhelperactivityCheckOrderActivity.java:查单页面的Activity

AndroidsrccomdrhelperactivityCheckTableActivity.java:查桌页面的Activity

AndroidsrccomdrhelperactivityCreateTableActivity.java:开桌页面的Activity

AndroidsrccomdrhelperactivityLoginActivity.java:登录页面的Activity

AndroidsrccomdrhelperactivityMainActivity.java:主页面的Activity

AndroidsrccomdrhelperactivityMenuActivity.java:菜单显示页面的Activity

AndroidsrccomdrhelperactivityOrderActivity.java:订单显示页面的Activity

AndroidsrccomdrhelperactivityOrderMenuActivity.java:菜单操作页面的Activity

AndroidsrccomdrhelperactivityPrefsActivity.java:偏好配置页面的Activity

AndroidsrccomdrhelperactivityUnionTableActivity.java:并台页面的Activity

AndroidsrccomdrhelperactivityUpdateActivity.java:更新页面的Activity

Androidsrccomdrhelperean:Java Bean对象文件夹

AndroidsrccomdrhelpereanMenuItem.java:菜单显示页面的菜单项Bean

AndroidsrccomdrhelpereanMenuList.java:菜单显示页面的菜单列表Bean

Androidsrccomdrhelpereancom:前后台通信的Java Bean对象文件夹

AndroidsrccomdrhelpereancomEmptyTable.java:查桌页面的通信对象

AndroidsrccomdrhelpereancomEmptyTableList.java:查桌页面的通信对象

AndroidsrccomdrhelpereancomLogin.java:登录页面的通信对象

AndroidsrccomdrhelpereancomMenuList.java:更新页面的通信对象

AndroidsrccomdrhelpereancomMenuTypeList.java:更新页面的通信对象

AndroidsrccomdrhelpereancomNoticeDetail.java:获取通知的通信对象

AndroidsrccomdrhelpereancomNoticeHeartBeat.java:通知心跳的通信对象

AndroidsrccomdrhelpereancomNoticeLogin.java:通知登录的通信对象

AndroidsrccomdrhelpereancomNoticeLogout.java:通知注销的通信对象

AndroidsrccomdrhelpereancomNoticePush.java:通知消息的通信对象

AndroidsrccomdrhelpereancomNoticeSubscribe.java:通知预定的通信对象

AndroidsrccomdrhelpereancomOneTableOneOrder.java:包括一个桌号和一个订单号的通信对象。可用于多处

AndroidsrccomdrhelpereancomOrderInfo.java:订单信息的通信对象

AndroidsrccomdrhelpereancomTwoTableOneOrder.java:包括两个桌号和一个订单号的通信对象,可用于多处

Androidsrccomdrhelperentity:数据库对象文件夹

AndroidsrccomdrhelperentityDetail.java:订单集合中detail字段相应的对象

AndroidsrccomdrhelperentityMenu.java:菜单表相应的对象

AndroidsrccomdrhelperentityMenuType.java:菜单类型表相应的对象

AndroidsrccomdrhelperentityOrder.java:订单集合相应的对象

AndroidsrccomdrhelperproviderMenuProvider.java:菜单和菜单类型表的ContentProvider封装实现

AndroidsrccomdrhelperserviceNoticeService.java:通知服务client实现

Androidsrccomdrhelper ask:AsyncTask实现文件夹

Androidsrccomdrhelper askChangeTableTask.java:换台功能的任务

Androidsrccomdrhelper askCheckOrderTask.java:查单功能的任务

Androidsrccomdrhelper askCheckTableTask.java:查桌功能的任务

Androidsrccomdrhelper askCreateTableTask.java:开桌功能的任务

Androidsrccomdrhelper askDeleteOrderTask.java:删除订单功能的任务

Androidsrccomdrhelper askLoadOrderTask.java:订单载入功能的任务

Androidsrccomdrhelper askLoginTask.java:登录功能的任务

Androidsrccomdrhelper askSubmitOrderTask.java:提交订单功能的任务

Androidsrccomdrhelper askUnionTableTask.java:并台功能的任务

Androidsrccomdrhelper askUpdateTask.java:更新功能的任务

AndroidsrccomdrhelperutilCookieManager.java:Cookie功能实现

AndroidsrccomdrhelperutilDialogBox.java:提示框功能实现

AndroidsrccomdrhelperutilHttpEngine.java:HTTP通信机制实现

AndroidsrccomdrhelperutilPrefsManager.java:偏好管理对象

Server:服务端文件夹

Serverdrhelper_dbdrhelper_mysql_db.sql:Mysql数据库备份文件

Serverdrhelper_dbdrhelper_mongodbdrhelper:Mongodb数据库备份文件文件夹

Server omcatjsp:JSP文件文件夹

Server omcat esdrhelper.css:项目的CSS文件

Server omcat esdrhelper.js:项目的JS文件

Server omcat esjquery-1.10.1.js:Jquery库的JS文件

Server omcatWEB-INFlib:支持包文件夹

Server omcatWEB-INFsrcDBConfig.properties:数据库配置信息文件

Server omcatWEB-INFsrccomdrhelperandroid:Android后台服务实现文件夹

Server omcatWEB-INFsrccomdrhelperandroideanNoticeEvent.java:通知服务内部使用的通知事件对象

Server omcatWEB-INFsrccomdrhelperandroideanUserSocketChannel.java:通知服务内部使用的username和连接映射对象

Server omcatWEB-INFsrccomdrhelperandroideancom:前后台通信的Java Bean对象文件夹。与Android文件夹中相应文件夹同样

Server omcatWEB-INFsrccomdrhelperandroidlistenerNoticeServerListener.java:通知服务上下文监听器实现

Server omcatWEB-INFsrccomdrhelperandroidserverNoticeServer.java:通知服务后台实现

Server omcatWEB-INFsrccomdrhelperandroidservice:Android后台业务逻辑实现文件夹

Server omcatWEB-INFsrccomdrhelperandroidserviceChangeTableService.java:换台功能业务逻辑实现

Server omcatWEB-INFsrccomdrhelperandroidserviceCheckOrderService.java:查单功能业务逻辑实现

Server omcatWEB-INFsrccomdrhelperandroidserviceCheckTableService.java:查桌功能业务逻辑实现

Server omcatWEB-INFsrccomdrhelperandroidserviceCreateTableService.java:开桌功能业务逻辑实现

Server omcatWEB-INFsrccomdrhelperandroidserviceDeleteOrderService.java:删除订单功能业务逻辑实现

Server omcatWEB-INFsrccomdrhelperandroidserviceGetNoticeService.java:获取通知功能业务逻辑实现

Server omcatWEB-INFsrccomdrhelperandroidserviceLoadOrderService.java:载入订单功能业务逻辑实现

Server omcatWEB-INFsrccomdrhelperandroidserviceLoginService.java:登录功能业务逻辑实现

Server omcatWEB-INFsrccomdrhelperandroidserviceLogoutService.java:注销功能业务逻辑实现

Server omcatWEB-INFsrccomdrhelperandroidserviceService.java:后台业务逻辑抽象类

Server omcatWEB-INFsrccomdrhelperandroidserviceSubmitOrderService.java:提交订单功能业务逻辑实现

Server omcatWEB-INFsrccomdrhelperandroidserviceUnionTableService.java:并台功能业务逻辑实现

Server omcatWEB-INFsrccomdrhelperandroidserviceUpdateMenuService.java:更新功能业务逻辑实现

Server omcatWEB-INFsrccomdrhelperandroidserviceUpdateMenuTypeService.java:更新功能业务逻辑实现

Server omcatWEB-INFsrccomdrhelperandroidservlet:Android后台控制逻辑Servlet实现文件夹

Server omcatWEB-INFsrccomdrhelperandroidservletChangeTableServlet.java:换台功能Servlet实现

Server omcatWEB-INFsrccomdrhelperandroidservletCheckOrderServlet.java:查单功能Servlet实现

Server omcatWEB-INFsrccomdrhelperandroidservletCheckTableServlet.java:查桌功能Servlet实现

Server omcatWEB-INFsrccomdrhelperandroidservletCreateTableServlet.java:开桌功能Servlet实现

Server omcatWEB-INFsrccomdrhelperandroidservletDeleteOrderServlet.java:删除订单功能Servlet实现

Server omcatWEB-INFsrccomdrhelperandroidservletGetNoticeServlet.java:获取通知功能Servlet实现

Server omcatWEB-INFsrccomdrhelperandroidservletLoadOrderServlet.java:载入订单功能Servlet实现

Server omcatWEB-INFsrccomdrhelperandroidservletLoginServlet.java:登录功能Servlet实现

Server omcatWEB-INFsrccomdrhelperandroidservletLogoutServlet.java:注销功能Servlet实现

Server omcatWEB-INFsrccomdrhelperandroidservletSubmitOrderServlet.java:提交订单功能Servlet实现

Server omcatWEB-INFsrccomdrhelperandroidservletUnionTableServlet.java:并台功能Servlet实现

Server omcatWEB-INFsrccomdrhelperandroidservletUpdateMenuServlet.java:更新功能Servlet实现

Server omcatWEB-INFsrccomdrhelperandroidservletUpdateMenuTypeServlet.java:更新功能Servlet实现

Server omcatWEB-INFsrccomdrhelperandroidutilLogicException.java:程序逻辑异常对象

Server omcatWEB-INFsrccomdrhelperandroidutilTypeConvert.java:String和ByteBuffer对象转换辅助类

Server omcatWEB-INFsrccomdrhelpercommon:后台通用功能实现文件夹

Server omcatWEB-INFsrccomdrhelpercommondbDataBase.java:数据库基类

Server omcatWEB-INFsrccomdrhelpercommondbDBManager.java:数据库操作代理对象

Server omcatWEB-INFsrccomdrhelpercommondbMongoDB.java:Mongodb数据库操作对象

Server omcatWEB-INFsrccomdrhelpercommondbMysqlDB.java:Mysql数据库操作对象

Server omcatWEB-INFsrccomdrhelpercommonentity:数据库对象文件夹,与Android文件夹中相应文件夹同样

Server omcatWEB-INFsrccomdrhelpercommonfilterServletFilter.java:Servlet过滤器实现

Server omcatWEB-INFsrccomdrhelperweb:Web后台服务实现文件夹

Server omcatWEB-INFsrccomdrhelperwebean:用于给JSP页面提供数据的Java Bean对象文件夹

Server omcatWEB-INFsrccomdrhelperwebeanAdminMenu.java:菜单管理页面菜单对象

Server omcatWEB-INFsrccomdrhelperwebeanAdminMenuObject.java:菜单管理页面对象

Server omcatWEB-INFsrccomdrhelperwebeanAdminMenuTypeObject.java:菜单类型管理页面对象

Server omcatWEB-INFsrccomdrhelperwebeanAdminOptionObject.java:配置管理页面对象

Server omcatWEB-INFsrccomdrhelperwebeanAdminOrder.java:订单管理页面订单对象

Server omcatWEB-INFsrccomdrhelperwebeanAdminOrderObject.java:订单管理页面对象

Server omcatWEB-INFsrccomdrhelperwebeanAdminTableObject.java:餐桌管理页面对象

Server omcatWEB-INFsrccomdrhelperwebeanAdminUserObject.java:用户管理页面对象

Server omcatWEB-INFsrccomdrhelperwebeanFinishMenu.java:完毕菜品管理页面菜品对象

Server omcatWEB-INFsrccomdrhelperwebeanFinishMenuObject.java:完毕菜品管理页面对象

Server omcatWEB-INFsrccomdrhelperwebeanIndexObject.java:首页对象

Server omcatWEB-INFsrccomdrhelperwebeanLoginObject.java:登录对象

Server omcatWEB-INFsrccomdrhelperwebeanLogoutObject.java:注销对象

Server omcatWEB-INFsrccomdrhelperwebeanOrderMenu.java:下单菜品管理页面菜品对象

Server omcatWEB-INFsrccomdrhelperwebeanOrderMenuObject.java:下单菜品管理页面对象

Server omcatWEB-INFsrccomdrhelperwebeanPageInfo.java:页号对象

Server omcatWEB-INFsrccomdrhelperwebservice:Ajax后台业务逻辑实现文件夹

Server omcatWEB-INFsrccomdrhelperwebserviceAjaxAdminMenuService.java:菜单管理业务逻辑实现

Server omcatWEB-INFsrccomdrhelperwebserviceAjaxAdminMenuTypeService.java:菜单类型管理业务逻辑实现

Server omcatWEB-INFsrccomdrhelperwebserviceAjaxAdminOptionService.java:配置项管理业务逻辑实现

Server omcatWEB-INFsrccomdrhelperwebserviceAjaxAdminOrderService.java:订单管理业务逻辑实现

Server omcatWEB-INFsrccomdrhelperwebserviceAjaxAdminTableService.java:餐桌管理业务逻辑实现

Server omcatWEB-INFsrccomdrhelperwebserviceAjaxAdminUserService.java:用户管理业务逻辑实现

Server omcatWEB-INFsrccomdrhelperwebserviceAjaxFinishMenuService.java:完毕菜品管理业务逻辑实现

Server omcatWEB-INFsrccomdrhelperwebserviceAjaxLoginService.java:登录功能业务逻辑实现

Server omcatWEB-INFsrccomdrhelperwebserviceAjaxLogoutService.java:注销功能业务逻辑实现

Server omcatWEB-INFsrccomdrhelperwebserviceAjaxOrderMenuService.java:下单菜品管理业务逻辑实现

Server omcatWEB-INFsrccomdrhelperwebserviceIndexService.java:首页业务逻辑实现

Server omcatWEB-INFsrccomdrhelperwebserviceService.java:业务逻辑抽象接口

Server omcatWEB-INFsrccomdrhelperwebservlet:Ajax后台控制逻辑Servlet实现文件夹

Server omcatWEB-INFsrccomdrhelperwebservletAjaxAdminMenuServlet.java:菜单管理控制逻辑Servlet实现

Server omcatWEB-INFsrccomdrhelperwebservletAjaxAdminMenuTypeServlet.java:菜单类型管理控制逻辑Servlet实现

Server omcatWEB-INFsrccomdrhelperwebservletAjaxAdminOptionServlet.java:配置项管理控制逻辑Servlet实现

Server omcatWEB-INFsrccomdrhelperwebservletAjaxAdminOrderServlet.java:订单管理控制逻辑Servlet实现

Server omcatWEB-INFsrccomdrhelperwebservletAjaxAdminTableServlet.java:餐桌管理控制逻辑Servlet实现

Server omcatWEB-INFsrccomdrhelperwebservletAjaxAdminUserServlet.java:用户管理控制逻辑Servlet实现

Server omcatWEB-INFsrccomdrhelperwebservletAjaxFinishMenuServlet.java:完毕菜品管理控制逻辑Servlet实现

Server omcatWEB-INFsrccomdrhelperwebservletAjaxLoginServlet.java:登录功能控制逻辑Servlet实现

Server omcatWEB-INFsrccomdrhelperwebservletAjaxLogoutServlet.java:注销功能控制逻辑Servlet实现

Server omcatWEB-INFsrccomdrhelperwebservletAjaxOrderMenuServlet.java:下单菜品管理控制逻辑Servlet实现

Server omcatWEB-INFsrccomdrhelperwebservletIndexServlet.java:首页控制逻辑Servlet实现

Server omcatWEB-INFsrccomdrhelperwebutilServiceUtil.java:业务逻辑辅助功能类

Server omcatWEB-INFsrccomdrhelperwebutilServletUtil.java:Servlet控制逻辑辅助功能类

七、部署方法

1、源代码下载后。用Eclipse编译Server文件夹下的服务端源代码,用adt-bundle编译Android文件夹下的移动端源代码。

2、在server上安装部署Nginx和Tomcat,配置Nginx把全部请求转发到Tomcat。同一时候安装部署好Mysql和Mongodb。

3、在tomcat/webapps下建立项目文件夹drhelper。然后把Server/tomcat文件夹编译生成的文件复制到drhelper下。

4、把Server/ drhelper_db文件夹下的数据库备份文件分别导入Mysql和Mongodb。

5、把Android文件夹下编译生成的apk文件安装到手机上。

6、通过手机上的应用能够正常訪问系统的移动部分,使用服务员角色相关功能,同一时候通过浏览器也能够訪问系统的Web部分,使用厨师和管理员角色相关功能。

(完)

原文地址:https://www.cnblogs.com/mthoutai/p/6806473.html