Android实训-侯晓蒙-15Word文档格式.doc
《Android实训-侯晓蒙-15Word文档格式.doc》由会员分享,可在线阅读,更多相关《Android实训-侯晓蒙-15Word文档格式.doc(13页珍藏版)》请在冰豆网上搜索。
![Android实训-侯晓蒙-15Word文档格式.doc](https://file1.bdocx.com/fileroot1/2022-10/19/8848edc2-4429-4840-b356-1ab2dcc8dc03/8848edc2-4429-4840-b356-1ab2dcc8dc031.gif)
4.3数据库的逻辑设计 7
4.4连接数据库的设计与实现 9
五、系统实现 10
5.1客户端设计思路 10
5.2主菜单界面 10
5.2.1功能描述 10
5.2.2登录界面的设计 11
5.2.3功能描述 11
5.2.4界面设计 11
5.2.5功能实现及关键代码 11
无线点餐系统的设计与实现
(一)
摘要:
近年来,Android手机的巨大发展,使得设计新式的无线点餐系统成为可能.从客户端、服务器端全面讨论了该点餐系统的设计原理和过程,包括客户端的登陆、点菜、更新、结账等模块,以及服务器端的web服务器、数据库服务器、web工程和MFC工程等模块.经实际测试和应用表明:
该系统具有较高的可靠性和实用性.
关键词:
无线点餐系统;
Android;
客户端;
服务器端
一、系统架构
Android手机的客户端软件通过ApaeheHttp协议,经路由器访问PC机的服务端.PC机必须配置web服务器和数据库服务器.web服务器可以响应客户端的Http请求,并根据相应的请求访问数据库服务器,然后将获得的结果反馈给手机客户端.数据库服务器则用于存储菜单信息、订单信息等内容.
二、功能分配
2.1.浏览功能
菜单库操作模块
顾客操作模块
2.2.查询功能
菜单查询模块
现金结算模块
2.3.插入功能
顾客库操作模块
2.4.修改功能
单库操作模块
访问记录模块
2.5.删除功能
三、内部接口设计
主模块:
输入:
操作系统传递至的各种消息以及用户的输入数据
输出:
用户界面显示
上层模块:
无
下层模块:
顾客点餐、菜单查询、现金结算、系统管理模块
顾客点餐模块:
菜号,菜名
菜肴的基本信息(价格,菜系……)
主模块
提交菜单
菜单查询模块:
菜号,菜名
菜肴的基本信息(价格,菜系……)
显示所查询菜单的基本信息。
现金结算模块:
显示该顾客所消费的菜单信息
显示消费金额
无
系统操作模块:
与系统管理对话框有关的各种用户及系统消息
显示反馈的信息
菜单操作、更改口令、返回
菜单操作模块:
菜号,菜名,单价……
添加后的菜肴基本信息(价格,菜系……)
系统操作模块
四、数据库设计
4.1数据库需求分析
无线点餐系统以酒店服务信息为主体,因此在这个系统中必须要有一个保存菜单信息的表。
所以用编号做主键。
负责登录终端系统的服务人员应该有保存服务人员信息的表,这个表中也是包括一些基本信息。
并且以服务人员的编号作为主键。
在一个点餐系统中,不可避免的要有桌位的编号。
这样的话就必须有一个桌号表,该表保存桌位信息。
顾客可以按照自己的喜好,在酒店布置的桌号中选择自己喜欢的位置。
另外既然是酒店就必须要有一个订单表,该表中包括订单号,点餐时间,用户ID,桌号,人数,是否结账等基本信息。
这样也就还需要一个订单详细表用于存储顾客所点的菜品信息等等。
原准备再弄一个菜品分类表用于区分凉菜,热菜等。
4.2数据库需求分析
数据库的概念设计,即利用数据模型进行概念数据库的模式设计。
根据无线点餐系统的需求,设计出以下的实体-关系模型(E-R)图如图。
图4-1实体联系图
图2-2实体联系图
4.3数据库的逻辑设计
数据库的逻辑设计,即把概念设计得到的概念数据库模式变为逻辑数据模式,它依赖于DBMS。
根据无线点餐系统的需求分析及数据库的感念设计,得到以下的数据库表和表的相关说明如下:
(1)桌号表
桌号表的结构及相关说明如表4-1所示。
表4-1桌号表
序号
字段名称
字段含义
类型
宽度
备注
1
Id
编号
Int
4
Primarykey
2
number
桌位号
3
flag
状态位
description
描述
varchar
16
(2)订单表
订单表的结构及相关说明如表4-2所示。
表4-2订单表
订单号
orderTime
下订单时间
userID
服务员号
tableId
Foreignkey
5
personNum
顾客人数
6
isPay
是否付款
7
remark
(3)订单详细表
订单详细表的结构及相关说明如表4-3所示。
表4-3订单详细表
orderId
下订单号
menuId
菜谱号
点菜数
4.4连接数据库的设计与实现
本系统采用java语言编写,使用jdbc连接Mysql数据库,所以要用到java中的connection对象和mysql驱动连接到数据库。
其实现代码如下所示。
Stringdriver=com.mysql.jdbc.Driver
Stringurl=jdbc:
mysql:
//localhost:
3360/wireless_db?
useUnicode=true&
characterEvcoding=utf-8
Stringusername=root
Stringpassword=
Connectionconn;
Class.forName(driver);
Conn=DriverManager.getConnection(url,username,password)
只有成功连接到了数据库才能进行其他操作,否则就无法开展以下的设计与实现工作了。
可见,连接数据库是一个很关键的步骤。
五、系统实现
5.1客户端设计思路
移动终端是使用者最直接接触的东西,包括是否能够让客户很轻松、方便的使用,操作响应时间、主机连接时间、图片综合质量、首页布局质量、首页信息类型等。
一般来说,一个界面主要由下面几个因素构成:
(1)文字:
文字元素是信息传达的主体部分。
界面中的文字主要包括标题、信息、文字链接几种主要形式。
标题和传统媒体中信息传达的基本作用相同,是内容的简概说明一般比较醒目、优先编排。
文字作为占据页面重要比率的元素,同时又是信息重要载体,它的字体、大小、颜色和排布对页面整体设计影响极大。
(2)图形:
图形在界面中具有重要作用。
合理的运用图形,可以生动直观、形象地表现设计主题。
网页中常用的图形格式包括jpg和gif,这两种格式压缩比高,得到了Android平台的支持,图形元素包括标题、背景、主图、链接图标四种。
(3)界面版式:
版式是界面设计的重要组成部分,它将文字、图形等视觉元素进行组合配置,使页面整体视觉效果美观和谐,便于阅读,操作,实现信息传达的最佳效果。
终端系统的界面设计也是综合了文字,图形等元素。
使每一个功能有文字与图片的共同描述,达到看图就大概知道此键是什么功能的目的,最终的目的还是为了使用者能够快速上手,不至于因为操作的不得当而放弃此系统。
5.2主菜单界面
5.2.1功能描述
主菜单界面包含点菜管理、并台管理、转台管理、查台管理、结台管理、更新管理、注销、设置等八个功能模块。
每个功能模块提供一种服务,包含一组功能操作,界面简单明了方便服务人员操作。
5.2.2登录界面的设计
登录界面主要是由服务人员来操作的,所以要简单明了易操作。
利用数据库对用户信息进行核对,核对正确后利用界面跳转到主菜单界面。
每一位服务人员有自己单独的一个账号密码用来登录,这样可以责任到人,不至于出现混乱,否则出现错误都不知道是哪个环节的问题。
5.2.3功能描述
服务人员可通过用户名和密码进入移动终端首界面来为顾客服务。
而服务人员的账号密码是提前在服务器数据库中设置的,每个服务人员都有自己单独的唯一的一个账号密码用来登录,这样可以达到责任到人。
5.2.4界面设计
图5-1用户登录图
5.2.5功能实现及关键代码
单独建立一个Activity用来控制用户的登录,再用户输入账号与密码时,系统先判断用户账号密码是否为空,为空则跳出一个对话框给用户提示;
如果不为空则再从EditView中取的账号密码与服务器中的账号密码进行匹配,如果匹配成功则利用Intent语句跳转到下一个主菜单界面。
实现登录主要代码及分析:
loginBtn.setOnClickListener(newOnClickListener(){@Overridepublicvoid
onClick(Viewv)
{
if(validate()){//通过validate()判断账号密码是否为空
if(login()){//通过login()连接数据库核对是否一致
Intentintent=newIntent(LoginActivity.this,MainMenuActivity.class);
startActivity(intent);
//启动Activity传递intent来跳转页面
}
Else
showDialog("
用户名称或者密码错误,请重新输入!
"
);
}
}}});
对登录按钮添加监听事件,在服务人员输入账号密码后点击登录后,终端会先判断是否满足validate()方法,此方法是防止账号密码为空时的登录提示,如果为空会跳出一对话框进行提示账号密码是必填项,如果不空,则再判断是否满足login()方法,login()方法是用来与数据库进行连接比较核对是否一致,一致则顺利登录跳转到下一个Activity即主菜单界面,否则出现账号密码错误的提示,登录失败;
privatevoidsaveUserMsg(Stringmsg){//将用户信息保存到配置文件
Stringid="
;
//用户编号
Stringname="
//用户名称
String[]msgs=msg.split(