目录
1 绪 论 2
1.1 研究的背景及意义 2
1.2 本文主要内容 2
2.1 系统架构 3
2.2 关键技术 3
2.2.1 JDBC 3
2.2.2 Jquery 4
2.2.3 Ajax 4
2.3 开发环境及平台 5
2.3.1 Eclipse 5
2.3.2 MyEclipse 6
2.3.3 Tomcat服务器 6
2.3.4 应用平台Android 7
3 订餐系统分析与设计 9
3.1需求分析 9
3.1.1 系统目标和要求 9
3.1.2 可行性分析 9
3.2 订餐系统概要设计 10
3.2.1 模块的划分 10
3.2.2 功能模块的设计 10
3.3 数据库设计 11
3.3.1 数据库需求分析 11
3.3.2 数据库E-R图设计 12
3.3.3 数据表设计 13
3.3.4 连接数据库实现 14
4.1安卓平台系统实现 15
4.1.1 功能描述 15
4.1.2 界面展示 15
4.1.3 关键代码 21
} 24
4.1.4 服务器端的实现 24
4.2 网页系统实现 25
4.2.1 界面展示 25
4.2.2 关键代码 28
结 论 32
致 谢 33
参 考 文 献 34
1.2 本文主要内容
本文介绍了无线点餐系统的开发过程。论文详尽论述了从需求分析、系统分析、概要设计、详细设计以及测试与调试的整个开发过程。首先系统地研究了无线点餐系统的背景和意义,分析了当今点餐系统的特点和共性,从而得出设计本系统的思路和方法。接着介绍了实现系统开发的Android平台环境,数据库用MySQL实现。同时简要介绍了以上工具的功能和方法。
概要设计分成后台数据库管理操作设计和客户端操作设计,同时介绍了数据库的建立和维护。详细设计主要阐述了点菜管理、并台管理、查台管理,转台管理,注销等实现,并给出了系统的部分设计代码。
3 订餐系统分析与设计
3.1需求分析
3.1.1 系统目标和要求
首先,我们得确定使用这个系统的用户应该有顾客、服务员、收银员。顾客和服务员应该是系统数据的起点,由他们做出相应的操作,然后系统进行处理;收银员则为系统数据的终点。
该系统在性能功能上应达到如下要求:
1.操作简单、界面友好:完全控件式的页面布局,使得菜品,资讯,座位等信息的
录入工作更简便,许多选项包括餐厅信息,桌位,包房信息等只需要点击鼠标就可以完成;另外,跟踪出现的提示信息也让用户随时清楚自己的操作情况。对常见的类似网站的管理的各个方面:基本信息录入、浏览、删除、修改、搜索等方面都大体实现,顾客对菜品的预定及支付方式;
2.即时可见:对客户预定餐饮信息的处理(包括录入、删除)将立即在另一应用端及服务器的对应栏目显示出来,达到“即时点击、即时见效”的功能;
3.系统运行应该快速、稳定、高效和可靠;
4.在结构上应具有很好的可扩展性,便于将来的功能扩展和维护。
3.1.2 可行性分析
随着经济的快速发展,B2C电子商务越来越受到人们的关注。无线订餐系统,已经如雨后春笋般的出现在了许多城市的大酒店中。特别在大型餐饮集团使用已经成为了趋势。同时,随着全国人民的精神、物质和文化生活高度的提高,人们已经不在仅仅停留在吃饱的程度,不但要吃饱,还要吃好,而且对酒店服务也越来越挑刺,正因为如此无线订餐系统的出现,正好满足了大众的需要,不仅让宾客享受到精美可口的美食,更让他们感受到服务管理的贴心与完善。无线订餐业务在中国有着极大的发展空间以及良好的背景。随着酒店管理的完善,使用这种智能的无线点餐系统必然成为追究卓越的餐饮公司的最爱,也更能够体现信息技术发展之猛烈。
此次毕业设计基于Android平台开发无线订餐系统。Android平台给我们提供了巨大的自由空间,再运用Java面向对象语言,是系统功能更加强大。MySQL 是一个杰出的数据库平台,具有功能强大,安全可靠等特点,可用于中小型联机事务处理、数据仓库及电子商务等。
3.2 订餐系统概要设计
系统的概要设计主要对系统的总体功能如何设计,如何划分模块,系统的数据库如何设计进行研究。它为系统的详细设计做铺垫。在系统的设计过程中起着非常重要的作用。
3.2.1 模块的划分
本系统主要分两部分:
1.Web点餐系统与后台
Web系统主要是给客户点菜;客户只能点菜、拿号。
2.终端设备与后台
终端设备指的是基于安卓平台的一个设备。主要给服务员、收银员等工作人员使用;能更新菜谱,结账,点菜、查看等功能。
3.2.2 功能模块的设计
1.Web点餐系统
1)登录——若没有用户账号,提供注册
2)查看菜单
3)查看菜单详情
4)加入购物车(点菜)
5)下单(提交预定菜单)
6)拿号
图3-1功能描述图
package com.amaker.adapters;
import java.util.List;
import org.json.JSONException;
import org.json.JSONObject;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class JsonArrayAdapter extends ArrayAdapter<JSONObject> {
int resource;
Context context;
int textFieldId;
String textKey;
int dropDownResource;
String[] from;
int[] to;
public JsonArrayAdapter(Context context, int resource,
int textViewResourceId, List objects, String textKey) {
super(context, resource, textViewResourceId, objects);
this.resource = dropDownResource = resource;
this.context = context;
this.textFieldId = textViewResourceId;
this.textKey = textKey;
}
public JsonArrayAdapter(Context context, int resource, List objects,
String[] from, int[] to) {
super(context, resource, 0, objects);
this.resource = dropDownResource = resource;
this.context = context;
this.from = from;
this.to = to;
}
@Override
public void setDropDownViewResource(int resource) {
this.dropDownResource = resource;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
return createViewFromRes(position, convertView, parent,
dropDownResource);
}
private View createViewFromRes(int position, View convertView,
ViewGroup parent, int resource) {
JSONObject obj = getItem(position);
View itemView;
TextView text = null;
if (convertView == null) {
LayoutInflater vi = (LayoutInflater) getContext().getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
itemView = vi.inflate(resource, parent, false);
} else {
itemView = convertView;
}
try {
if (textFieldId == 0) {
if (itemView instanceof TextView) {
text = (TextView) itemView;
} else {
if (to != null && to.length > 0) {
for (int i = 0; i < to.length; i++) {
TextView itemtext = (TextView) itemView
.findViewById(to[i]);
itemtext.setText(obj.getString(from[i]));
}
}
}
} else {
text = (TextView) itemView.findViewById(textFieldId);
}
if (text != null) {
text
.setText(obj.getString(textKey == null ? from[0]
: textKey));
}
} catch (ClassCastException e) {
Log.e("amaker", "布局中的元素不是TextView类型");
} catch (JSONException e) {
Log.e("amaker", "从Json中读取数据出错,textKey:" + textKey, e);
}
return itemView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return createViewFromRes(position, convertView, parent, resource);
}
}