点餐系统设计_第1页
点餐系统设计_第2页
点餐系统设计_第3页
点餐系统设计_第4页
点餐系统设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上 题目:点餐系统的设计与实现学 号 98 姓 名:巩金明(40%)专 业: 15信管一班 负责内容:大部分代码编写(含关键部分)学 号 23 姓 名:楼轩宇(30%) 专 业: 15信管一班 负责内容:需求分析以及总体设计 学 号 39 姓 名:郭新波(30%) 专 业: 15信管一班 负责内容:详细设计以及小部分代码编写论文完成日期:二一七年六月四日1、系统需求分析客户端功能需求分析:登录、注册:使用者想要运行系统必须登录,如果未申请账号能够通过注册模块申请;菜谱查询:查询目前餐厅店菜单列表数据;详情查询:可以查询一个菜的全部数据,有价格、介绍和数量;在线点餐:支持

2、用户在线下单点餐;选择座位:支持使用者在Android手机上选座位;我的订单:支持使能够查看自己已经下单的数据,能够删掉自己的订单;人工服务:客户端可以呼叫服务员;服务端功能分析:登录模块:管理员登录使用系统;菜谱管理:管理员能够查看当前界面的数据,能够添加、修改或者删除一个菜谱数据;用户管理:管理员能够查看到当前系统已经存在的用户信息,能够删掉一个用户信息;原材料管理:管理员可以查看当前系统的原材料信息,可以添加、修改或者删除一个原材料信息,原材料库存较低时会警报;订单管理:管理员可以查看到当前的所有订单信息,可以修改订单状态,例如把一个进行中的订单修改为已经完成;具体的系统功能全部作用如下

3、图:点餐系统后台部分前台部分点餐个人信息我的订单人工服务登录注册人工服务管理菜谱管理订单管理用户信息管理原材料管理登录退出2、目标可行性分析智能手机的出现减少了很多方面的限制,具有很多优势,人们可以随时随地的传递信息,订购商品,不论时间不论地点,正是这个优点使得智能手机能够受到越来越多人是喜爱,比如,用户智能手机点餐速度迅速比传统的点餐要快的多,大大提高了效率。1.经济可行性由于世界经济水平的突飞猛进,科技水平得到了前所未有的巨大发展,社会正步入一个崭新的网路信息时期。因为社会持续发展的生活与工作水平,人们的非物质需求正在逐渐增加,伴随出现的就是网络技术的持续进步,当代社会网络应用变得愈加广泛

4、,人们之间的相互沟通日趋广泛、交流也愈加简便,所有这些,使得人们的生产生活方式发生了巨大转变。是故,由于网络技术的进步,电商领域逐渐发展,极大程度上改变了人们的购物方式。在如今这个年代,几乎所有计算机使用者都能够进行网上购物的操作,而且往往乐此不疲。从长久的角度来想,安卓点餐系统的开发与应用还是存在很大的经济前景。2.技术可行性技术可行性一般是因为现在已经存在的的技术因素而控制的,比如,是否可以进行平稳的功能开发,软、硬件功能会不会达到系统所规定的条件。如今这个时代,是网络资源化的时代,网络资源爆发式增长,这引起了所有其他相关技术的进步,所以对于技术条件来说是能够实现的。本系统单个用java语

5、言,使用ssh技术与MySQL数据库进行开发,上述技术在现在已经很广泛且很成熟,已经无数次被应用于软件与系统研究中,所有,这个系统对科学水平来说是能够实现的。3、系统流程分析为了使得完成的软件能够平稳运行,完善了系统流程的所有环节。对每个流程要用到的关键技术也做了充分准备,如下图:4、总体设计4.1 系统设计原则系统设计和系统编码是一个统一的整体,每一部分都不可缺少。在系统设计中制定良好的编码规范和开发流程,能够确保无二义性,使得开发顺利进行,这也能提高开发这的开发效率。此外,在进行系统设计过程中,还应该遵循的主要原则如下。1、适用性原则好的系统开发出来首先要能够完成基本的功能,即满足用户的要

6、求,这是软件开发的首要目的。如果开发出来的软件不能满足用户的需求,那么此软件注定是失败的开发。在此基础上还要考虑软件的的操作性,要能保证软件在运行环境下没有bug,能让用户操作起来简单,明了,还要功能全面易用化。不应该只考虑软件的收益,否则必将面临很大的问题。2、可靠性安全性原则随着计算机网络的发展,网络除了带人人们便利之外也带开了很多安全隐患,如,隐私安全、个人财产安全等等,虽然此次开发的系统简单,但是安全问题是每个系统都必须考虑的问题。网上订餐系统中既要保护用户个人信息的安全,保证不被泄露,还要保证他们的财产安全。只有具备安全措施的系统才能够让用户放心。3、可扩展性原则现在的科技发展速度之

7、快,不仅是研发的快,更新换代的速度也令人惊讶,科技技术不断退陈旧新,因此,为了适应时代的发展速度,系统的可扩展能力也是开发过程中要考虑的事情。那么如何提高系统的可扩展性呢?这里就充分体现了设计在开发中的重要作用。在软件设计的过程中,将网上订餐系统划分成不同的功能模块,并降低模块之间的耦合度来提高系统的扩展性。4.2 系统设计目标在系统开发之前要对系统进行需求分析,功能概括,难点解析等等的工作,之后对于系统大概要完成什么目标,系统的界面和设计等问题的思考来满足用户的要求。系统设计过程中将系统分解为很多不同的小的系统,然后对分成的小的系统的功能、技术进行分析讨论,制定规定,在之后的开发中,先开发小

8、的系统之后进行整合,逐步完成开发。本系统是设计目标是建立一个基于Android技术的点餐系统,可以满足用户对手机订餐的需求。根据需求分析还有自己的生活体会,在线点餐系统一定要有以下基本的要求。(1)界面看着新颖活力、大方美观,吸引用户。(2)具有易调试性和没有bug性。(3)用户能够方便的查看所有的食品信息和单个用户的详细信息内容。 (4)具有操作方便、功能完善的管理功能。4.3 系统总体结构设计系统的总体结构设计是在软件开发之前必须要做好的一件基本工作,作为一个优秀的程序员不仅要有很强的编码能力,对于系统的总体结构的设计也要很精通。做好系统的总体结构设计会让系统开发顺利进行,做到事半功倍。在

9、此次系统的总体结构设计过程中,系统分为客户端和服务端,客户端是可以在安卓智能手机上使用的,服务端采用Servlet提供服务,持久化层采用MySQL,因为MySQL的安装和配置都适合小型的系统。在进行系统的总体设计之后紧接着就是数据库的需求设计。系统整体框架采用C/S模式,即客户端/服务器模式,其中客户端一方面与用户交互,提供良好的用户界面,另一方面与服务器端进行数据交换。服务器端向客户端提供数据。管理员可以对数据进行增,删,改,查等操作。5、系统详细设计与实现5.1登模块的实现本系统使用前用户需要登录验证,在登录界面中,通过继承一个Activity来实现,界面上的控件用到了EditText、B

10、utton和CheckBox等等组件, EditText主要用来实现用户帐号和密码的输入。登录过程中用户需要输入账号与密码,并且经由登录按钮来表达登录意图,意图表达完成,系统会经由HTTP的过程将帐号与密码发送到服务器端验证,并返回服务端的验证结果,如果验证正确那么提示使用者登录完成,然后自行转入主界面;如果错误,那么提示使用者登录失败。该界面具有保存密码成功,假如使用者在登录时勾选了“保存密码”复选框,则下次再进入到本界面用户将不需要再次输入密码,而只需要点击登录按钮即可实现登录操作,记住密码的过程是通过Android平台提供的SharedPreferences来实现的。当然如果用户还没有登

11、录账号,则能够通过“注册”选项链接到用户注册界面,从而注册一个新号码;具体的实现效果如图所示:实现的核心代码如下:loginActivity 的 doInBackground 的方法发起url请求,发送用户名,密码protected String doInBackground(String. params) String urlString = AppConstant.getUrl(getApplicationContext() + "ServletService?Action=login" urlString += "&loginid=" +

12、etLoginID.getText() + "&passwords=" + etPassword.getText();String json = httpHelper.HttpRequest(urlString);return json;loginActivity 的 onPostExecute 的方法 获取服务器返回json,验证密码是否正确loginActivity 的 dealLogin 是当密码验证成功后 跳转到DishesListActivityOnLineUser model = new OnLineUser();/设置登陆成功的用户属性model.se

13、tId(jsonObject.getInt("id");model.setLoginid(etLoginID.getText().toString();model.setName(jsonObject.getString("name");application.setLoginUser(model);/弹出提示框toastUtil.show(model.getName() + ",登录成功");/跳转到登陆成功页面intent = new Intent(LoginActivity.this, DishesListActivity.cl

14、ass);startActivity(intent);5.2菜谱模块的实现用户成功登陆进入系统之后可以查看到当前系统所有菜谱信息,包括菜谱的图片、名称、单价和详细介绍信息,系统用了一个ListView组件来显示系统的菜谱信息,同时用户也可以通过界面左上角的搜索按钮来搜索菜谱信息,用户点击一条信息之后可以查看一个菜谱的详细介绍。具体的实现效果如图所示:实现的核心代码如下:/请求获取列表数据的代码Overrideprotected String doInBackground(String. params) String json = null;serverUrl = AppConstant.get

15、Url(getApplicationContext() + "ServletService?Action=getdisheslist&shopid="+ shopid;BaseUtil.LogII(serverUrl);json = httpHelper.HttpRequest(serverUrl);return json;/解析列表数据,并设置适配器的代码list = new ArrayList<dishes>();if (!TextUtils.isEmpty(result.trim() list = gson.fromJson(result, new

16、 TypeToken<List<dishes>>() .getType(); else toastUtil.show("没有数据");adapter = new DishesAdapter(DishesListActivity.this, list);listview1.setAdapter(adapter);点击listview中的一项,会跳转到详情页面,这其中会根据id去调用webservice查询数据库获取到详情数据/界面点击跳转的代码listview1.setOnItemClickListener(new OnItemClickListene

17、r() Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) intent = new Intent(DishesListActivity.this, GoodDetailActivity.class);intent.putExtra("id", list.get(position).getId();startActivity(intent););menu的实现,设置menu按键的弹出事件public boolean onCreateOpt

18、ionsMenu(Menu menu) super.onCreateOptionsMenu(menu);menu.add(0, 99, 0, "人工服务").setIcon(R.drawable.icon_application);menu.add(0, 100, 0, "注销登录").setIcon(R.drawable.icon_application);menu.add(0, 101, 0, "个人信息").setIcon(R.drawable.icon_application);menu.add(0, 106, 0, &quo

19、t;我的订单").setIcon(R.drawable.icon_application);menu.add(0, 102, 0, "退出").setIcon(R.drawable.icon_application);return true;menu选中触发的事件参考onOptionsItemSelected 方法选中 人工服务 按钮后,会执行humanServices方法private void humanServices() final String arg = new String6;for (int i = 0; i < arg.length; i+

20、) argi = (i + 1) + "号桌"new AlertDialog.Builder(this).setTitle("选择服务桌号").setItems(arg, new DialogInterface.OnClickListener() Overridepublic void onClick(DialogInterface dialog, int which) new loadhumanServicesAsyncTask().execute(argwhich);).show();分类按钮点击的代码处理,使用AlertDialog弹出框实现tvT

21、opTitleRight.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) new AlertDialog.Builder(DishesListActivity.this).setTitle("选择分类").setSingleChoiceItems(s, curIndex, new DialogInterface.OnClickListener() Overridepublic void onClick(DialogInterface dialog, int which)

22、 curIndex = which;dialog.dismiss();shopid = listShop.get(curIndex).getId();new loadAsyncTask().execute();).setNegativeButton("取消", null).show(););5.3在线下单模块的实现用户在餐厅菜谱列表当中点击一个Item可以进入到详细的介绍页面,该页面详细描述了所选择的的餐厅菜式信息,包括图片、介绍和价格等信息。同时用户可以在该界面进行下单,下单前需要输入数量,然后点击“提交”按钮来提交订单;具体的实现效果如图所示:图14 在线下单界面实现的

23、核心代码如下:/通过url请求获取详情数据protected String doInBackground(String. params) String urlString = AppConstant.getUrl(getApplicationContext() + "ServletService?Action=getOneRow"urlString = urlString + "&ID=" + params0 + "&Table=dishes"String json = httpHelper.HttpRequest(u

24、rlString);return json;/解析返回的json字符串,把数据展示到界面上protected void onPostExecute(String result) super.onPostExecute(result);dialog.dismiss();if (result.trim().length() > 0) try jsonArray = new JSONArray(result);jsonObject = jsonArray.getJSONObject(0);(TextView) findViewById(R.id.tvTopTitleCenter).setTex

25、t(jsonObject.getString("title");(TextView) findViewById(R.id.tvTopTitleCenter).setTextSize(16);if (!TextUtils.isEmpty(jsonObject.getString("img_url") asyncImageLoader.loadBitmap(serverUrl + "UploadFile/" + jsonObject.getString("img_url"),imageView1);String int

26、ro = "单价:¥" + jsonObject.getString("price") + "n"intro += "数量:" + jsonObject.getString("amount") + "n"intro += "简介:" + jsonObject.getString("intro") + "n配料:" + jsonObject.getString("burdennames");tvIn

27、tro.setText(intro); catch (JSONException e) e.printStackTrace();下单操作 使用post请求,提交数据,实现代码如下/提交订单的代码protected String doInBackground(String. params) String urlString = AppConstant.getUrl(getApplicationContext() + "ServletService"Map<String, Object> map = new HashMap<String, Object>

28、();map.put("Action", "createorder");map.put("dishesid", id);map.put("userid", user.getId();map.put("username", user.getName();map.put("amount", etAmount.getText();String result = httpHelper.HttpPost(urlString, map);return result;/判断订单提交后,we

29、bservice的返回值,提示订单是否提交成功protected void onPostExecute(String result) super.onPostExecute(result);dialog.dismiss();if (result != null && result.trim().equals("1") toastUtil.show("下单成功"); else if (result.trim().equals("-1") toastUtil.show("原料不足,下单失败"); els

30、e toastUtil.show("下单失败");5.4用户订单模块的实现用户的下单信息将会被记录到服务端中,用户可以随时通过智能手机菜单键来打开查看自己已经下过的订单信息,包括菜式信息、下单数量、选择的座位、下单时间和当前的订单状态,同时用户也可以长按一条订单信息来弹出删除菜单,用户可以删除一条订单信息。实现的核心代码如下:/通过url请求获取我的订单数据protected String doInBackground(String. params) String json = null;serverUrl = AppConstant.getUrl(getApplicati

31、onContext() + "ServletService?Action=getmyorderslist&userid="+ user.getId();json = httpHelper.HttpRequest(serverUrl);return json;/解析返回的json字符串,把数据展示到界面上jsonArray = new JSONArray(result);for (int i = 0; i < jsonArray.length(); i+) jsonObject = jsonArray.getJSONObject(i);orders model

32、= new orders();model.setId(jsonObject.getInt("id");model.setAmount(jsonObject.getDouble("amount");model.setCreatetime(jsonObject.getString("createtime"); model.setPrice(jsonObject.getDouble("price");model.setUsername(jsonObject.getString("title");mod

33、el.setImg_url(jsonObject.getString("img_url");model.setStatus(jsonObject.getInt("status");list.add(model);/设置listview的适配器adapter = new OrdersAdapter(MyOrdersListActivity.this, list);listview1.setAdapter(adapter);取消订单界面,是通过弹出框实现,实现代码如下/设置弹出取消订单的提示框new AlertDialog.Builder(this).set

34、Title("选择操作").setItems(arg, new DialogInterface.OnClickListener() Overridepublic void onClick(DialogInterface dialog, int which) switch (which) case 0:/ 取消new deleteAsyncTask().execute(list.get(position).getId() + "");).show();取消订单实现代码/发送取消订单的url请求protected String doInBackground(

35、String. params) serverUrl = AppConstant.getUrl(getApplicationContext() + "ServletService?Action=cancelOrders&ID="+ params0;String json = httpHelper.HttpRequest(serverUrl);return json;/判定webservice的返回值,提示是否取消成功protected void onPostExecute(String result) super.onPostExecute(result);dialo

36、g.dismiss();if (result != null && result.trim().length() > 0) toastUtil.show("取消成功");new loadAsyncTask().execute(); else toastUtil.show("取消失败");5.5服务端模块的实现服务端模块具有两方面作用,其一是给客户端提供数据服务接口,客户端调用服务端的接口来得到数据库里面的菜谱、订单等所有数据,然后显示在客户端界面上。服务端存在另外一个作用:保证信息的动态维护,比如菜谱信息维护、用户信息维护、订单信息维护以及菜谱类型信息维护。比如管理员能够于服务端依据真实状况增加一个菜式数据、删除一个菜式数据等操作。5.5.1人工服务模块的实现使用者在前台呼叫人工服务的操作不可以马上执行,需要管理员于后台进行信息管理审核以确认它的操作性,管理员单击后台界面中的“人工服务”进入用户人工服务处理页面,该页面会显示近期所以的用户呼叫的人工服务。人工服务处理页面显示的是呼

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论