Android实训江延妞07.docx
- 文档编号:5608414
- 上传时间:2022-12-29
- 格式:DOCX
- 页数:72
- 大小:249.75KB
Android实训江延妞07.docx
《Android实训江延妞07.docx》由会员分享,可在线阅读,更多相关《Android实训江延妞07.docx(72页珍藏版)》请在冰豆网上搜索。
Android实训江延妞07
Android
无
线
点
餐
系
统
目录
一、无线点餐系统需求分析1
二、无线点餐系统概要设计1
1.系统物理架构1
2.技术型1
3.系统功能1
1)系统登录功能1
2)系统主菜单1
3)点餐功能1
4.无线点餐概要设计1
1)系统包及资源规划1
2)系统数据库设计1
三、系统代码的实现1
1.登陆模块Android客户端实现1
2.登陆模块服务器端实现1
3.程序主菜单实现1
4.点餐功能客户端的实现1
5.点餐功能服务器端实现1
6.结算模块Android客户端实现1
7.结算模块服务器端实现1
从Android的从业角度分析,Android的开发概括为两类:
一是系统开发,包括底层Linux内核的裁剪和扩展、硬件驱动开发和系统移植等,从业人员主要的工作在硬件厂商的公司里;而是应用开发,主要包括游戏开发、Android互联网客户端开发和工具软件开发等。
从业人士预言,Android系统将成为手机操作系统领域的“Window”。
所有Android互联网客户端应用需求将非常大。
本系统将从需求分析、总体设计、详细设计和系统代码等方面,详细介绍无线点餐系统的应用、功能及具体实现。
一、无线点餐系统需求分析
随着因特网的快速发展,网络已经改变和正在改变我们的生活,通过网络交易的方式已经成了一种时尚,也越来越位大多数的人们所接受和使用,各个行业也将网络营销当成了一种重要的营销手段。
酒店餐饮行业也得益于网络的发展,通过网络更高效便捷的为客户服务的同时增加盈利扩大经营范围。
传统的手工点菜方式由于难计算,难查找,难更改,易出错,效率低等缺点已经逐渐退出了酒店餐饮等消费场所的服务管理平台。
层出不穷的各类酒店餐饮管理系统也应运而生,呈现出多元化的发展。
为了更好的满足广大消费者的多元化消费需求和不同层次的消费水平,提高酒店的服务管理质量,提高酒店工作人员的工作效率。
我们小组在多方面查阅相关资料后,以提高消费者的满意程度和商家的服务水平及其市场占有率为目标,设计了无线点餐系统,该系统一般由无线终端(一般一个PDA)、无线路由器和后台服务器组成。
这种技术架构很成熟,但是存在有一个弊端就是PDA的价格较高,并且PDA只能作为点餐使用,这无形中增加了系统的成本,也造成了资源的浪费。
有了、Android系统,我们就可以在其中开发一套客户端软件来完成点餐功能,android手机的其他功能(如打电话、发短信)照常使用。
这样首先系统的成本就会降低,其次Android系统的功能强大,界面组件丰富,软件的功能自然就会强大很多,用户操作更加流畅,界面展现更加完美。
二、无线点餐系统概要设计
本项目主要面向具有一定规模、需要提高餐厅点餐效率、体现现代化的气氛、改进客人的就餐环境,并借此提高经济效益的餐厅和酒店。
要求项目不会占用太大的预算,并能够尽量沿用原有的成熟技术,与原有系统进行的整合。
本方案主要包括后台数据库服务器、Web服务器、无线网络、Android点餐前端等部分组成。
为了满足系统的需要。
我们将从系统的架构、技术的选型、系统功能几方面详细的介绍该系统
1.系统物理架构
系统的物理架构是这样子的;客户端Android系统智能手机通过无线网络访问后台服务器,如果需要访问后台数据库。
系统的物理架构如图2-1.1所示。
图2-1.1无线点餐系统物理结构
2.技术型
Android客户端应用使用Java技术,网络通信使用ApacheHTTP协议客户端,中间Web服务器采用Servlet响应请求。
后台数据库采用JDBC访问数据库、客户端的一部分数据库存储我们采用SQLite数据库,这里要涉及Android客户端的数据库和服务器中的数据同步问题。
如图2-2.1
图2-2.1技术型
3.系统功能
通过需求分析,我们了解系统的需求。
通过物理架构和技术选择,我们确定了项目的可行性分析。
接下来我们将对系统的功能进行介绍。
本系统的功能说明如下:
1)系统登录功能
为了增强系统的使用安全,使用系统之前我们必须要登录到系统中,登录的过程通过无线网络,在后台的数据库通过用户的名称和密码进行查询、注册后的用户方可进入到系统中。
运行界面如图1-3.1
如图1-3.1
2)系统主菜单
系统登录成功之后便进入了系统主菜单,主菜单通过一个GridView以图形菜单的方式展现系统的功能,有点菜、并台、转台、差台、更新、设置、注销、转台。
单击某个选项便进入功能的操作界面。
运行界面如图1-3.2
图1-3.2
3)点餐功能
点餐功能模块是本系统中的一个重要功能模块,该模块主要完成的任务是操作员输入顾客的点餐信息,通过无线网络及时地将点餐信息传送到后台服务器,进而在厨房终端显示,有利于厨师尽快下厨做菜。
该功能概括了三部分:
开桌、点菜和下单。
运行界面如图1-3.3。
图1-3.3
4)结算功能
顾客就餐结束后需要结算,结算过程是:
操作员根据订单编号查询点餐订单信息和订餐信息详细列表,顾客确认后单击结算按钮进行结算。
运行结果如图1-3.4
图1-3.4
4.无线点餐概要设计
确定系统功能之后,我们就可以进行系统的详细设计。
详细设计系统包及资源规划和系统数据库设计。
1)系统包及资源规划
本系统的主要功能可以分为三大类:
一是访问客户端SQLite数据库;二是Activity界面展示;三是通过网络访问数据库。
客户端的包结果如图2-4.1
包及其资源结构如图2-4.2
图2-4.2
2)系统数据库设计
程序无非就是:
输入、处理、输出。
本系统也不列外,出了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实现的登录功能、主菜单、点餐、结算功能。
1.登陆模块Android客户端实现
首先,为了提高系统的安全,要想使用该系统进行系统登录。
其次,每个点餐信息中都要有登录用户的信息,这样可以做到责任分明、工作严谨。
登陆的基本流程是:
通过用户输入用户名称和用户密码,到后台数据库做查询,如果该用户则进入系统,否则提示用户输入错误。
为了完成系统登录功能,需要Android客户端和后台服务器程序。
这一部分是Android客户端的设计实现。
要完成登陆模块的Android客户端的实现需要如下步骤。
1)创建一个Android工程,名称“WirelessOrder-Client”。
2)在工程的res\layout目录下,创建一个名称为“login-system.xml”的布局文件,布局文件外层使用LinearLayout布局,内层嵌套TableLayout完成布局管理。
该布局文件中引用一个图片资源来现实背景图片、两个TextView用来显示用户名称和密码、两个EditText用来输入用户名称和用户密码、两个Button用来登录系统和取消登录
xmlversion="1.0"encoding="utf-8"?
>
android=" android: orientation="vertical" android: layout_width="fill_parent" android: layout_height="fill_parent" android: background="@drawable/login" > android: layout_width="fill_parent" android: layout_height="fill_parent" android: stretchColumns="1"> text=""/> text=""/> text=""/> text=""/> text=""/> text=""/> text=""/> text=""/> text=""/> text=""/> text=""/> text=""/> text=""/> text=""/> android: text="用户名称: " android: id="@+id/TextView" android: layout_width="wrap_content" android: layout_height="wrap_content" android: textColor="#0000ff" /> android: text="" android: id="@+id/userEditText" android: layout_width="fill_parent" android: layout_height="wrap_content"/> android: text="用户密码: " android: id="@+id/TextView" android: layout_width="wrap_content" android: layout_height="wrap_content" android: textColor="#0000ff" /> android: text="" android: id="@+id/pwdEditText" android: layout_width="fill_parent" android: layout_height="wrap_content" android: password="true"/> android: gravity="right"> 3)创建一个名称为“LoginActivity”的Activity,在类的顶部声明用到的EditText和Button组建,onCreate()方法中调用setContentVie(R.layout.login-System)方法设置布局视图。 通过findViewById()方法实例化EditText和Button对象。 程序代码如下所示。 packagecom.amaker.wlo; importandroid.app.Activity; importandroid.app.AlertDialog; importandroid.content.DialogInterface; importandroid.content.Intent; importandroid.content.SharedPreferences; importandroid.os.Bundle; importandroid.view.View; importandroid.view.View.OnClickListener; importandroid.widget.Button; importandroid.widget.EditText; importandroid.widget.Toast; importcom.amaker.util.HttpUtil; publicclassLoginActivityextendsActivity{ //声明登录、取消按钮 privateButtoncancelBtn,loginBtn; //声明用户名、密码输入框 privateEditTextuserEditText,pwdEditText; @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); //设置标题 setTitle("掌中宝无线订餐系统-用户登录"); //设置当前Activity界面布局 setContentView(R.layout.login_system); //通过findViewById方法实例化组件 cancelBtn=(Button)findViewById(R.id.cancelButton); //通过findViewById方法实例化组件 loginBtn=(Button)findViewById(R.id.loginButton); //通过findViewById方法实例化组件 userEditText=(EditText)findViewById(R.id.userEditText); //通过findViewById方法实例化组件 pwdEditText=(EditText)findViewById(R.id.pwdEditText); 4)为了实现登录的功能,Android需要通过网络方位后台数据库进行查询。 Android访问网络实现的方法有很多,如WebService、HTTP、直接使用WebView浏览器。 Android集成了Apache的HttpClient模块,这样使得使用HTTP访问网络成为了可能。 这里我们使用HTTP访问网络。 HTTP是请求(request)/响应(response)的一种机制,这里我们定义了一种工具类HttpUtil来获得HttpResquest对象和HttpResponse对象,以及发送get和post请求获得返回response信息的方法。 5)定义一个显示信息的对话框方法,用于显示提示信息。 privatevoidshowDialog(Stringmsg){ AlertDialog.Builderbuilder=newAlertDialog.Builder(this); builder.setMessage(msg) .setCancelable(false) .setPositiveButton("确定",newDialogInterface.OnClickListener(){ publicvoidonClick(DialogInterfacedialog,intid){ } }); AlertDialogalert=builder.create(); alert.show(); 6)定义validate()方法,对用户名和密码进行验证。 privatebooleanvalidate(){ Stringusername=userEditText.getText().toString(); if(username.equals("")){ showDialog("用户名称是必填项! "); returnfalse; } Stringpwd=pwdEditText.getText().toString(); if(pwd.equals("")){ showDialog("用户密码是必填项! "); returnfalse; } returntrue; } 7)定义一个query()方法,通过用户名称和密码进行查询,发送Post请求,获得响应结果 //根据用户名称密码查询 privateStringquery(Stringaccount,Stringpassword){ //查询参数 StringqueryString="account="+account+"&password="+password; //url Stringurl=HttpUtil.BASE_URL+"servlet/LoginServlet? "+queryString; //查询返回结果 returnHttpUtil.queryStringForPost(url); } } 8)定义login()方法,该方法调用query()方法,获得查询结果,并将查询结果通过SharedPreferences()保存到XML配置文件,一边在后面程序的点餐中使用用户信息。 Login()方法调用saveUserMsg()方法将用户信息保存到配置文件中。 //将用户信息保存到配置文件 privatevoidsaveUserMsg(Stringmsg){ //用户编号 Stringid=""; //用户名称 Stringname=""; //获得信息数组 String[]msgs=msg.split(";"); intidx=msgs[0].indexOf("="); id=msgs[0].substring(idx+1); idx=msgs[1].indexOf("="); name=msgs[1].substring(idx+1); //共享信息 SharedPreferencespre=getSharedPreferences("user_msg",MODE_WORLD_WRITEABLE); SharedPreferences.Editoreditor=pre.edit(); editor.putString("id",id); editor.putString("name",name); mit(); } 9)为登录的按钮添加监听器,在onClick()方法中,首先调用validate()方法进行验证,如果验证通过在调用login()方法,如果登陆成功,系统将进入主菜单界面否则提示登录失败。 如果验证事失败提示失败信息,请求用户重新输入。 loginBtn.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ if(validate()){ if(login()){ Intentintent=newIntent(LoginActivity.this,MainMenuActivity.class); startActivity(intent); }else{ showDialog("用户名称或者密码错误,请重新输入! "); } } } 10)为取消按钮添加单击监听器,在onClick()方法中调用finish()方法结束该Activity。 cancelBtn.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ finish(); } }); 11)运行结果如图3-1.1 图3-1.1 2.登陆模块服务器端实现 后台的服务器实现采用JDBC访问后台数据库,Servlet响应HttpRequest请求,并返回响应结果。 要完成登录模块服务器实现需要如下步骤。 1)创建一个名称为“WirelessOrder-Server”的Web工程。 2)创建程序需要的包结构。 Dao包用于放置采用DAO设计模式的实现访问数据库接口及其实实现类,entity包用于放置对应数据库表的实体类;servlet包用于放置Servlet类;filter包用于放置过滤器;until包是工具类。 其内容如图3-2.1所示 3)创建访问数据库工具类DBUtil,该类的主要功能打开
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 实训江延妞 07