外,出了Android客户端应用程序和中间无线网络,还要有强大的数据库支持。本系统Android客户端采用SQLite数据库,服务器端采用MySQL数据库,并提供客户端数据库和服务器端数据的同步功能,提高了程序的运行效率。
系统用户(UserTbl),登录系统使用,结构如图2-2.3所示
A. 餐桌表(TableTbl),用来表示客户在那桌位就坐。表结构如图2-2.4所示
B. 菜谱表(MenuTbl),菜谱表用来保存菜信息,如分类、名称、价格等。结构如图2-2.5所示
C. 订单表(OrderTbl),当顾客开桌时生成的信息,保存到该表,表结构如图2-2.6所示
D. 订餐明细表(OrderDetailTbl),订单明细表和上面的订单表是一对多的关系,即一桌客人点了多份菜。表结构如图2-2.7所示
三、 系统代码的实现
有了上面的分析,接下来我们就开始系统代码的实现了。本系统主要分两部分,前端Android实现和后端服务器实现。我主要做的就是前端Android实现的登录功能、主菜单、点餐、结算功能。
9
1. 登陆模块Android客户端实现
首先,为了提高系统的安全,要想使用该系统进行系统登录。其次,每个点餐信息中都要有登录用户的信息,这样可以做到责任分明、工作严谨。登陆的基本流程是:通过用户输入用户名称和用户密码,到后台数据库做查询,如果该用户则进入系统,否则提示用户输入错误。
为了完成系统登录功能,需要Android客户端和后台服务器程序。这一部分是Android客户端的设计实现。要完成登陆模块的Android客户端的实现需要如下步骤。 1) 创建一个Android工程,名称“WirelessOrder-Client”。 2) 在工程的res\\layout目录下,创建一个名称为“login-system.xml”的布局文件,布局文件外层使用LinearLayout布局,内层嵌套TableLayout完成布局管理。该布局文件中引用一个图片资源来现实背景图片、两个TextView用来显示用户名称和密码、两个EditText用来输入用户名称和用户密码、两个Button用来登录系统和取消登录
xmlns:android=\ android:orientation=\ android:layout_width=\ android:layout_height=\ android:background=\ > 10 android:layout_width=\ android:layout_height=\ android:stretchColumns=\> android:text=\用户名称:\ android:id=\ android:layout_width=\ android:layout_height=\ 11 android:textColor=\ /> android:id=\ android:layout_width=\ android:layout_height=\/> android:text=\用户密码:\ android:id=\ android:layout_width=\ android:layout_height=\ android:textColor=\ /> android:id=\ android:layout_width=\ android:layout_height=\ android:password=\/>
3) 创建一个名称为“LoginActivity”的Activity,在类的顶部声明用到的EditText和Button组建,onCreate()方法中调用setContentVie(R.layout.login-System)方法设置布局视图。通过findViewById()方法实例化EditText和Button对象。程序代码如下所示。
package com.amaker.wlo; import android.app.Activity; import android.app.AlertDialog;
import android.content.DialogInterface; import android.content.Intent;
import android.content.SharedPreferences; import android.os.Bundle; import android.view.View;
import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast;
import com.amaker.util.HttpUtil;
public class LoginActivity extends Activity { // 声明登录、取消按钮 private Button cancelBtn,loginBtn; // 声明用户名、密码输入框 private EditText userEditText,pwdEditText; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 设置标题 setTitle(\掌中宝无线订餐系统-用户登录\ // 设置当前Activity界面布局 setContentView(R.layout.login_system); // 通过findViewById方法实例化组件 cancelBtn = (Button)findViewById(R.id.cancelButton); // 通过findViewById方法实例化组件 loginBtn = (Button)findViewById(R.id.loginButton);
13