基于Android实现的小型在线订餐APP饿了么

person 匿名

发布日期: 2020-06-14 17:07:26 浏览量: 176
评分:
star star star star star star star star star star
*转载请注明来自write-bug.com

1 绪论

1.1 研究背景

进入到移动互联时代,人们会愈加频繁地使用手机,安卓系统占据了智能手机界很大市场份额,安卓开发,在今后的一段时间之内,依旧会是热门之一。为实现人们网上在线点外卖的需求,需要开发一个安卓外卖app,实现包括商品的查看,下单,支付,用户信息修改等功能。

网上在线订餐作为手机购物的一种表现形式,采用将图片和文字内容相结合的方式将商品信息展现给用户,这个方式使用户可以查看不同来源的商品信息以及不同层次的信息,以最大程度上了解商品的具体信息,同时可以搜索距离较近的商品信息。

在线订餐客户端市场已经成为移动媒体竞争的焦点,互联网各大门户网站纷纷使出浑身解数希望占领尽可能多的移动在线订餐客户端市场份额。根据数据显示,在中国,在线订餐客户端市场排名前三的客户端分别为美团,饿了么和口碑,其中,这些在线订餐客户端在功能上过于繁重,对Android的设备系统版本有一定的要求,没有很好地做到向下兼容低版本,在较低版本的手机无法成功安装这些在线订餐客户端。

1.2 研究现状

目前市场上我们所见的个性化在线订餐APP 就是以“饿了么”为代表的,这些个性化在线订餐 APP 大多通过大数据进行用户行为分析,了解到受众的需求,然后利用算法技术,将受众感兴趣的美食商品信息推送给用户的 APP.在线订餐 APP 拥有强大的技术基础,满足了大部分受众的“使用与满足”需求,因而能在传统新闻资讯诸APP 中脱颖而出并长期占据领先地位。

饿了么通过用户行为分析和精准定位给用户个性化进行个性化资讯推荐,这一切都依赖于饿了么的算法技术,依靠算法技术对大数据进行分析,而这算法技术的核心就是网络爬虫和矩阵筛选。

在信息大爆炸的今天,用户身上贴满了各式各样的标签,性别、年龄、职业等都是受众的标签,根据这些标签将用户进行简单的分类。但是饿了么利用算法数据对受众的个性化特征进行更加精确的分析,通过受众登录客户端的第三方账户的社交情况或者直接注册登录客户端的浏览信息情况进行算法分析,从而得出受众的使用需求。

随着互联网和移动终端的发展,用户对信息获取的要求越来越高,从以前单一的接受信息到现在想要获取自己感兴趣的资讯。饿了么涉及各种外卖信息,可以快速搜素到商品品信息,也可以推荐用户关心的内容。

除了首页的个性化推荐商品之外,饿了么还有药品、便利卖场等多个频道,用户可以选择设置自己感兴趣的频道进行内容浏览,在用户浏览这些内容时产生的数据也会被今日头条记录下来形成更加精确的图谱,随着使用次数的不断深入,用户的使用图谱也会更加精确,越来越符合用户的使用需求。

1.3 研究目的与意义

本文分析了小型餐饮店管理与发展的现状和面临的问题,发现传统的服务模式已经不能适应市场发展的需求。随着网络技术的发展和普及,方便、快捷、个性化的网.上订餐服务正在进入人们的生活。针对这类问题,结合当代科技发展的最新成果,我们开发的这款饿了么app,目的是为了便于使用者方便地在线订餐,并且,支持个人信息的个性化设置,以便于其获取喜欢的商品信息。

此外,Android 平台在线订餐客户端软件的开发可以进一步扩大各个商家的商品信息的覆盖面, 让广大公众能够随时随地方便快捷地获取商品信息,了解喜好的商家和商品。

2 需求分析

本系统的需求分析部分,主要是通过对系统用例图、系统整体的业务需求、系统功能需求、系统性能需求以及对系统的可行性分析等的分析与总结,对系统的需求有一个整体的了解,再根据这些需求确定系统的功能,同时确保系统的可扩展性。

2.1 系统用例图

2.2 业务需求分析

伴随着我国市场经济的高度发展,企业越来越依赖于市场和客户,这种依赖关系已经开始逐步提升到关乎企业生存的高度。如何获得更多客流量,如何通过小的代价而使商家获得更大的知名度,这是使企业得以生存、发展、壮大的关键。年销售过亿的众多电子商务案例让人们看到了更多的商机。与应用场景相当有限的PC (个人电脑)相比,生而具备便携属性的手机给了电商们更大的想象空间。移动电子商务由此产生了。移动电子商务就是利用手机、PDA及掌上电脑等无线终端进行的B2B、B2C或C2C的电子商务。它将因特网、移动通信技术、短距离通信技术及其它信息处理技术完美的结合,使人们可以在任何时间、任何地点进行各种商贸活动,实现随时随地、线上线下的购物与交易、在线电子支付以及各种交易活动、商务活动、金融活动和相关的综合服务活动等。

而Android操作系统凭借着自己开放的平台允许任何移动终端厂商加入到Android联盟中,从而使得越来越多的用户倾向于选择操作系统为Android的手机品牌。选择设计基于Android平台的软件,毫无疑问能覆盖更多的受众。

随着移动互联网的快速发展,在线订餐APP也成为了大多用户的一部分,只要有智能手机,就能随时随地点餐,而且能在指定时间内送达指定地点,完全给了用户足不出门的理由,当之无愧的偷懒神器!本课题研究的是制作一个小型的在线订餐APP——“饿了吗?”,主要是为人们提供一个在线平台,了解附近餐厅的具体情况,在线购买,方便快捷!

2.3 功能需求分析

根据上文中对业务需求的调研,本系统的具体功能需求如下:

  • 登录:点击登录按钮,根据注册的手机号和密码进行登录

  • 注册:用户根据系统提示,填写信息,完成注册

  • 修改信息:已登录APP的用户点击头像,可以进入修改信息界面,按照提示修改信息

  • 进入首页:已登录的用户在“饿了吗”首页可以选择店家,也可以在搜索栏搜索店家和菜品

  • 管理订单:已登录的用户可以点击订单,可以查看历史订单,已配送和未配送订单,对于交易成功的订单可以对该店家进行评价

  • 进入店家:选择心仪菜品加入购物车,并在购物车下单

2.4 性能需求分析

  • 在线支持用户并发业务数据的综合处理时间不超过2秒

  • 系统的最大并发用户数为100

  • 系统运行稳定,故障率较低,并且可维护性高

  • 系统具有可扩展性,添加功能模块不需要对系统进行重构,只需将新开发的功能接口接入即可

2.5 系统可行性分析

本章节主要对本课题的系统可行性进行分析,系统可行性分析主要包括技术可行性分析和经济可行性分析两方面的内容。技术可行性分析是对开发本系统所采用的技术进行简单的介绍,并且对其进行分析;经济可行性分析则是从系统的成本到用户使用的经济效应进行分析。

实现“饿了吗?”在线订餐系统需要使用Windows系统和Android Studio工具进行开发,后端云服务器BMOB为整个应用提供数据支持,Android端采用传统的MVC三层架构进行开发。

3 系统总体设计

本系统的总体设计部分主要是对本系统的设计方案进行论证,并对系统的总体进行设计,最后对系统功能的设计思路以及系统的业务流程进行说明,其中包括数据库的选择,开发框架的选择等。

3.1 系统总体设计

3.2 功能模块设计

3.2.1 首页模块功能设计

首页模块的功能有店家显示和搜索界面。

3.2.2 个人信息模块功能设计

用户登录后,可以处理登录信息和修改个人信息。可修改的内容包括性别,昵称,生日和地区。

3.2.3 登录模块功能设计

登录功能是保障系统安全的屏障。本系统采用手机号密码登录这一种登录方式。

3.2.4 注册模块功能设计

用户可以通过输入手机号和密码来进行注册,并确认密码保证正确。

3.2.5 店家详情模块功能设计

用户可以点击进入店家详情查看店家菜品,加入购物车以及下单。

3.2.6 订单详情模块功能设计

用户点击订单后,订单详情展示,用户可以评论该订单。

3.3 数据库设计

本节将对本系统的数据库设计进行叙述,包括数据库的E-R图设计,以及数据库表的设计。表设计部分以每张表为单位对表的字段、字段类型、字段作用等进行叙述并以表格的形式进行详细展示。

3.3.1 数据库E-R图

用户表

商家表

商品表

订单表

评价表

3.3.2 系统数据库表设计

本系统数据库表共有5张,下面将展示每张表的设计以及详细说明。

(1)用户表(User)

用户表主要用于保存用户的登录信息,包括唯一标识number,密码,性别,头像,生日,昵称,地址。这张表尤为重要,是系统能否进入的关键表。

Number Password Sex Image Birth Name Address
17600006117 123456 Tx1jpg 1.24 赵先生 南京市秦淮区
15600007996 123456 Tx2.jpg 4.30 何先生 盐城市阜宁县
15600003302 123456 Tx3.jpg 12.13 陈先生 南京市江宁区
…… …… …… …… …… …… ……

(2)商家表(Store)

商家表主要用于保存商家的信息,包括唯一标识id,商家名,商家图片,评分,类型,销售量,起送费。其中type类型为0表示美食,为1表示水果,为3表示饮品。

Id Name Image Score Type Sales Qisong
1 香儿麦 Tx1.jpg 4.4 0 223 12
2 何记花甲 Tx2.jpg 4.6 0 301 13
3 桥头排骨 Tx3.jpg 4.8 0 449 15
4 水果先知 Sgtx1.jpg 4.7 1 324 13
5 百果园 Sgtx2.jpg 4.2 1 199 14
6 果小露 Sgtx3.jpg 4.1 1 179 15
7 CoCo Yptx1.jpg 4.3 2 219 17
8 一点点 Yptx2.jpg 4.5 2 327 16
9 五十岚 Yptx3.jpg 4.7 2 408 12
…… …… …… …… …… ……

(3)商品表

商品表主要用于保存商品信息,包括唯一标识id,商家id,iamge,价格,内容,销售量,好评率。其中通过商家id,可以定位到该商品是哪个商家的。

Id Sid Image Price Content Sales Like
1 1 Hb.jpg 10 香辣鸡腿堡 198 93%
2 1 Jk.jpg 7 黑椒鸡块 7 80%
3 1 Kb.jpg 8 奥尔良烤堡 46 100%
4 2 Jzghj.jpg 11 金针菇花甲 214 98%
5 2 Kchj.jpg 13 烤肠花甲 152 95%
6 2 Xghj.jpg 12 香菇花甲 124 98%
7 5 Hlg.jpg 3.5 海南火龙果 101 100%
8 5 Jxmj.jpg 7.8 江西蜜桔 176 97%
9 5 Fjbl.jpg 5.8 福建白梨 89 95%
…… …… …… …… …… ……

(4)订单表(Order)

订单表主要用于保存订单的信息,包括唯一标识id,商品id,用户id,地址。

Id Goods id Uid Address
1 1 17600006117 南京市秦淮区
2 9 17600006117 南京市秦淮区
3 2 15600007996 盐城市阜宁县
4 7 15600003302 南京市江宁区
…… …… …… ……

(5)评论表(Evaluate)

评论表主要用于保存评论的信息,包括唯一标识id,商家id,用户id,时间,点赞,内容。

Id Sid Uid Time Like Contents
1 1 17600006117 2019-12-08 1 好吃
2 7 17600006117 2019-12-08 3 还不错
3 13 15600007996 2019-12-08 5 口味nice
4 9 15600003302 2019-12-08 6 Very good!
…… …… …… …… …… ……

4 系统详细设计

系统详细设计部分将对本系统的每个模块的详细设计进行叙述,为本系统的开发提供更为全面的指导。

4.1 登录模块详细设计

用户进入个人中心页面,点击“用户名”栏,跳出登录页面,若已注册用户,则输入账号和密码进行登录。

4.2 注册模块详细设计

用户进入个人中心页面,点击“立即注册”,根据提示信息完成注册操作,然后返回登录界面,通过账号密码登录APP。

4.3 点餐模块详细设计

用户进入APP首页,可以查看店家,点击某店家可以进入该店家浏览菜品,勾选菜品点击加入购物车,进入购物车,勾选其中菜品点击下单以购买美食。

4.4 个人信息模块详细设计

成功登录APP的用户进入个人页面,点击用户名一栏,跳转至修改信息页面,用户可以根据自己的需求修改自己的个人信息,然后保存返回;若用户不想做任何修改,则直接返回退出。

4.5 搜索模块详细设计

用户进入“饿了吗?”APP首页,点击最上方的搜索框,输入关键词,即可查找想要了解的菜品和店家。

5 系统实现

系统实现部分对已开发好的系统功能的实现进行详细的描述,对每一个主要功能通过语言描述和页面截图对本系统进行全面的展示。

5.1 店面界面

  1. import java.io.Serializable;
  2. public class store implements Serializable {
  3. private int id;
  4. private String name;
  5. private int score;
  6. private int image;
  7. private int type;
  8. private int sales;
  9. private int qisong;
  10. public store(int id, String name, int score, int image, int type, int sales, int qisong) {
  11. this.id = id;
  12. this.name = name;
  13. this.score = score;
  14. this.image = image;
  15. this.type = type;
  16. this.sales = sales;
  17. this.qisong = qisong;
  18. }
  19. public int getId() {
  20. return id;
  21. }
  22. public void setId(int id) {
  23. this.id = id;
  24. }
  25. public String getName() {
  26. return name;
  27. }
  28. public void setName(String name) {
  29. this.name = name;
  30. }
  31. public int getScore() {
  32. return score;
  33. }
  34. public void setScore(int score) {
  35. this.score = score;
  36. }
  37. public int getImage() {
  38. return image;
  39. }
  40. public void setImage(int image) {
  41. this.image = image;
  42. }
  43. public int getType() {
  44. return type;
  45. }
  46. public void setType(int type) {
  47. this.type = type;
  48. }
  49. public int getSales() {
  50. return sales;
  51. }
  52. public void setSales(int sales) {
  53. this.sales = sales;
  54. }
  55. public int getQisong() {
  56. return qisong;
  57. }
  58. public void setQisong(int qisong) {
  59. this.qisong = qisong;
  60. }
  61. }

5.2 storeActivity.java代码

  1. package com.example.a11469.food;
  2. import android.content.ContentValues;
  3. import android.content.DialogInterface;
  4. import android.content.Intent;
  5. import android.support.v7.app.AlertDialog;
  6. import android.support.v7.app.AppCompatActivity;
  7. import android.os.Bundle;
  8. import android.view.View;
  9. import android.widget.AdapterView;
  10. import android.widget.ImageView;
  11. import android.widget.ListView;
  12. import android.widget.TextView;
  13. import java.util.ArrayList;
  14. import java.util.List;
  15. import java.util.Vector;
  16. public class StoreActivity extends AppCompatActivity {
  17. int flag=0;
  18. GoodsAdapter goodsAdapter;
  19. List<Goods> goodsList;
  20. ListView listView;
  21. List<Goods> myList;
  22. List<Evaluate> evaluateList;
  23. List<Evaluate> evList;
  24. Intent intent;
  25. Bundle bundle;
  26. int id;
  27. store s;
  28. String sname;
  29. ImageView im;
  30. TextView tv_name;
  31. TextView tv_want;
  32. TextView tv_pj;
  33. int image;
  34. EvaluateDBHelper evaluateDBHelper;
  35. EvaluateAdapter evaluateAdapter;
  36. GoodsDBHelper goodsDBHelper =new GoodsDBHelper(this,"goods.db",null,1);
  37. public static String name;
  38. @Override
  39. protected void onCreate(Bundle savedInstanceState) {
  40. super.onCreate(savedInstanceState);
  41. setContentView(R.layout.activity_store);
  42. intent = getIntent();
  43. name=intent.getStringExtra("zhanghao");
  44. bundle = intent.getExtras();
  45. s = (store)bundle.get("Storer");
  46. evaluateDBHelper= new EvaluateDBHelper(this,"evaluate.db",null,1);
  47. id = s.getId();
  48. sname = s.getName();
  49. image = s.getImage();
  50. im=findViewById(R.id.Store_image);
  51. tv_name=(TextView) findViewById(R.id.Store_name);
  52. tv_want=findViewById(R.id.Store_wantfood);
  53. tv_pj=findViewById(R.id.Store_pingjia);
  54. im.setImageResource(image);
  55. tv_name.setText(sname);
  56. setTitle("店家界面");
  57. listView=findViewById(R.id.Store_list);
  58. myList = new ArrayList<>();
  59. goodsList = new ArrayList<>();
  60. evList = new ArrayList<>();
  61. evaluateList = new ArrayList<>();
  62. Goods goods1 = new Goods(1,1,"34",R.drawable.jirou,"鸡胸肉+精致米饭",62,57,"鸡胸肉能量餐");
  63. Goods goods2 = new Goods(2,1,"25",R.drawable.niu,"牛肉+精致米饭",50,44,"牛排能量餐");
  64. Goods goods3 = new Goods(3,1,"42",R.drawable.xia,"牛油果+虾仁",14,12,"牛油果大虾沙拉");
  65. Goods goods4 = new Goods(4,1,"36",R.drawable.kao,"圣女果+橙子+沙拉",15,14,"经典考伯沙拉");
  66. Goods goods5 = new Goods(5,2,"30",R.drawable.ji,"鸡+精致米饭",87,72,"三杯鸡便当");
  67. Goods goods6 = new Goods(6,2,"30",R.drawable.zhu,"猪肉+梅干菜+精致米饭",27,24,"梅干菜扣肉饭");
  68. Goods goods7 = new Goods(7,2,"25",R.drawable.rou,"烤肉+精致米饭",24,23,"烤肉饭");
  69. Goods goods8 = new Goods(8,2,"24",R.drawable.jipai,"奥尔良鸡排+精致米饭",24,12,"奥尔良鸡排饭");
  70. Goods goods9 = new Goods(9,3,"20",R.drawable.sanxian,"鸡蛋+火腿+精致米饭",27,18,"解馋三鲜炒饭");
  71. Goods goods10 = new Goods(10,3,"20",R.drawable.zhutourou,"猪头肉+精致米饭",45,40,"猪头肉炒饭");
  72. Goods goods11 = new Goods(11,3,"18",R.drawable.huo,"火腿+精致米饭",39,26,"火腿炒饭");
  73. Goods goods12 = new Goods(12,3,"15",R.drawable.jidan,"鸡蛋+精致米饭",78,74,"鸡蛋炒饭");
  74. Goods goods13 = new Goods(13,4,"10",R.drawable.ydd,"奶+绿茶",35,35,"奶绿");
  75. Goods goods14 = new Goods(14,4,"10",R.drawable.ydd,"奶+红茶",65,64,"奶茶");
  76. Goods goods15 = new Goods(15,4,"15",R.drawable.ydd,"奶+乌龙茶",41,35,"乌龙奶茶");
  77. Goods goods16 = new Goods(16,4,"10",R.drawable.ydd,"奶+四季春茶",78,34,"四季奶绿");
  78. Goods goods17 = new Goods(17,5,"9",R.drawable.yeguo,"椰果+奶茶",44,42,"椰果奶茶");
  79. Goods goods18 = new Goods(18,5,"11",R.drawable.xianyu,"鲜芋+奶茶",98,89,"鲜芋奶茶");
  80. Goods goods19 = new Goods(19,5,"11",R.drawable.hongdou,"红豆+奶茶",36,35,"红豆奶茶");
  81. Goods goods20 = new Goods(20,5,"10",R.drawable.zhengzhu,"珍珠+奶茶",68,66,"珍珠+奶茶");
  82. Goods goods21 = new Goods(21,6,"13",R.drawable.nai,"奶霜+不知春茶",87,82,"奶霜不知春");
  83. Goods goods22 = new Goods(22,6,"18",R.drawable.jin,"芒果+酸奶+西米+芦荟粒",97,92,"金玉甘露");
  84. Goods goods23 = new Goods(23,6,"18",R.drawable.qing,"柠檬+绿茶",89,79,"青柠眷贵妃");
  85. Goods goods24 = new Goods(24,6,"18",R.drawable.cao,"草莓+酸奶",65,64,"草莓小确幸");
  86. Goods goods25 = new Goods(25,7,"9",R.drawable.xigua,"西瓜",69,67,"西瓜现切");
  87. Goods goods26 = new Goods(26,7,"9",R.drawable.qian,"千禧",36,35,"千禧");
  88. Goods goods27 = new Goods(27,7,"9",R.drawable.aaa,"波罗蜜",97,95,"波罗蜜");
  89. Goods goods28 = new Goods(28,7,"9",R.drawable.cheng,"手剥橙",31,20,"手剥橙");
  90. Goods goods29 = new Goods(29,8,"6",R.drawable.lizi,"砀山梨",85,75,"砀山梨");
  91. Goods goods30 = new Goods(30,8,"8",R.drawable.tao,"猕猴桃",69,65,"猕猴桃两只");
  92. Goods goods31 = new Goods(31,8,"8",R.drawable.pingguo,"苹果",69,59,"冰糖心苹果250g");
  93. Goods goods32 = new Goods(32,7,"8",R.drawable.tizi,"红提",26,24,"红提250g");
  94. Goods goods33 = new Goods(33,9,"11",R.drawable.liqie,"冰糖梨",90,88,"冰糖梨切");
  95. Goods goods34 = new Goods(34,9,"12",R.drawable.migua,"蜜瓜",28,24,"沙漠蜜瓜");
  96. Goods goods35 = new Goods(35,9,"14",R.drawable.yezi,"椰青",22,21,"泰国椰青");
  97. Goods goods36 = new Goods(36,9,"16",R.drawable.guozi,"火龙果",27,26,"进口火龙果");
  98. goodsList.add(goods1);
  99. goodsList.add(goods2);
  100. goodsList.add(goods3);
  101. goodsList.add(goods4);
  102. goodsList.add(goods5);
  103. goodsList.add(goods6);
  104. goodsList.add(goods7);
  105. goodsList.add(goods8);
  106. goodsList.add(goods9);
  107. goodsList.add(goods10);
  108. goodsList.add(goods11);
  109. goodsList.add(goods12);
  110. goodsList.add(goods13);
  111. goodsList.add(goods14);
  112. goodsList.add(goods15);
  113. goodsList.add(goods16);
  114. goodsList.add(goods17);
  115. goodsList.add(goods18);
  116. goodsList.add(goods19);
  117. goodsList.add(goods20);
  118. goodsList.add(goods21);
  119. goodsList.add(goods22);
  120. goodsList.add(goods23);
  121. goodsList.add(goods24);
  122. goodsList.add(goods25);
  123. goodsList.add(goods26);
  124. goodsList.add(goods27);
  125. goodsList.add(goods28);
  126. goodsList.add(goods29);
  127. goodsList.add(goods30);
  128. goodsList.add(goods31);
  129. goodsList.add(goods32);
  130. goodsList.add(goods33);
  131. goodsList.add(goods34);
  132. goodsList.add(goods35);
  133. goodsList.add(goods36);
  134. for(Goods g:goodsList) {
  135. if (g.getSid()==id) {
  136. myList.add(g);
  137. }
  138. }
  139. for(Goods g: goodsList){
  140. ContentValues contentValues =new ContentValues();
  141. contentValues.put("id",g.getId());
  142. contentValues.put("sid",g.getSid());
  143. contentValues.put("image",g.getImage());
  144. contentValues.put("goodsName",g.getGoodName()+"");
  145. contentValues.put("sales",g.getLike1());
  146. contentValues.put("price",g.getPrice()+"");
  147. contentValues.put("like1",g.getLike1());
  148. contentValues.put("content",g.getContent()+"");
  149. goodsDBHelper.insert(contentValues);
  150. }
  151. evaluateList = evaluateDBHelper.select();
  152. for(Evaluate e:evaluateList){
  153. if(e.getSid()==id){
  154. evList.add(e);
  155. }
  156. }
  157. evaluateAdapter = new EvaluateAdapter(this,evList);
  158. goodsAdapter = new GoodsAdapter(this,myList);
  159. listView.setAdapter(goodsAdapter);
  160. listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
  161. @Override
  162. public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
  163. Intent intent = new Intent(StoreActivity.this,GoodsinformationActivity.class);
  164. Bundle bundle1= new Bundle();
  165. bundle1.putSerializable("Goods_infor",myList.get(i));
  166. intent.putExtras(bundle1);
  167. startActivity(intent);
  168. return true;
  169. }
  170. });
  171. tv_want.setOnClickListener(new View.OnClickListener() {
  172. @Override
  173. public void onClick(View view) {
  174. listView.setAdapter(goodsAdapter);
  175. flag=1;
  176. }
  177. });
  178. tv_pj.setOnClickListener(new View.OnClickListener() {
  179. @Override
  180. public void onClick(View view) {
  181. listView.setAdapter(evaluateAdapter);
  182. flag=2;
  183. }
  184. });
  185. listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  186. @Override
  187. public void onItemClick(AdapterView<?> adapterView, View view, final int i, long l) {
  188. if(flag==1){
  189. AlertDialog.Builder builder=new AlertDialog.Builder(
  190. StoreActivity.this);
  191. builder.setMessage("确定加入购物车嘛?")
  192. .setTitle("提示");
  193. builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
  194. @Override
  195. public void onClick(DialogInterface dialog, int which) {
  196. dialog.dismiss();
  197. Intent intent = new Intent(StoreActivity.this,ShopcarActivity.class);
  198. intent.putExtra("zhanghao",name);
  199. intent.putExtra("storename",s.getName());
  200. intent.putExtra("storeid",s.getId());
  201. Bundle bundle1= new Bundle();
  202. bundle1.putSerializable("Shopcar",myList.get(i));
  203. intent.putExtras(bundle1);
  204. startActivity(intent);
  205. }
  206. });
  207. builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
  208. @Override
  209. public void onClick(DialogInterface dialog, int which) {
  210. dialog.dismiss();}});
  211. builder.create().show();}
  212. else if (flag==2){
  213. }
  214. }
  215. });
  216. }
  217. }

5.3 storeAdapter代码

  1. package com.example.a11469.food;
  2. import android.content.Context;
  3. import android.view.LayoutInflater;
  4. import android.view.View;
  5. import android.view.ViewGroup;
  6. import android.widget.BaseAdapter;
  7. import android.widget.ImageView;
  8. import android.widget.TextView;
  9. import java.util.List;
  10. public class StoreAdapter extends BaseAdapter {
  11. private Context mContext;
  12. List<store> storeList;
  13. public StoreAdapter(Context context,List<store> list){
  14. this.mContext = context;
  15. this.storeList = list;
  16. }
  17. public int getCount() {
  18. return storeList.size();
  19. }
  20. @Override
  21. public Object getItem(int i) {
  22. return null;
  23. }
  24. @Override
  25. public long getItemId(int i) {
  26. return 0;
  27. }
  28. @Override
  29. public View getView(int i, View view, ViewGroup viewGroup) {
  30. view = LayoutInflater.from(mContext).inflate(R.layout.storeitem,null);
  31. ImageView store_image = view.findViewById(R.id.image);
  32. TextView store_name = view.findViewById(R.id.Sname);
  33. TextView store_xingji = view.findViewById(R.id.xingji);
  34. TextView store_sales = view.findViewById(R.id.sales);
  35. TextView store_score = view.findViewById(R.id.qisong);
  36. store_image.setImageDrawable(mContext.getResources().getDrawable(storeList.get(i).getImage()));
  37. store_name.setText(storeList.get(i).getName());
  38. store_xingji.setText(storeList.get(i).getScore()+"");
  39. store_sales.setText(storeList.get(i).getSales()+"");
  40. store_score.setText(storeList.get(i).getQisong()+"");
  41. return view;
  42. }
  43. }

5.4 店家数据库

  1. package com.example.a11469.food;
  2. import android.content.ContentValues;
  3. import android.content.Context;
  4. import android.database.Cursor;
  5. import android.database.sqlite.SQLiteDatabase;
  6. import android.database.sqlite.SQLiteOpenHelper;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9. public class storeDBHelper extends SQLiteOpenHelper {
  10. private static final String DB_NAME = "store.db";
  11. private static final String TBL_NAME = "store";
  12. private SQLiteDatabase db;
  13. public storeDBHelper(Context context, String dbname, SQLiteDatabase.CursorFactory factory, int version) {
  14. super(context, dbname, factory, version);
  15. }
  16. @Override
  17. public void onCreate(SQLiteDatabase sqLiteDatabase) {
  18. this.db = sqLiteDatabase;
  19. String sql = "create table store (id integer primary key autoincrement,name text,image integer,score integer,type integer,sales integer,qisong integer)";
  20. sqLiteDatabase.execSQL(sql);
  21. }
  22. @Override
  23. public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
  24. }
  25. public void insert(ContentValues contentValues) {
  26. SQLiteDatabase sqLiteDatabase = getWritableDatabase();
  27. sqLiteDatabase.insert(TBL_NAME, null, contentValues);
  28. sqLiteDatabase.close();
  29. }
  30. public List<store> query(){
  31. List<store> storeList = new ArrayList<>();
  32. SQLiteDatabase sqLiteDatabase = getReadableDatabase();
  33. Cursor cursor = sqLiteDatabase.query(TBL_NAME, null, null, null, null, null, null);
  34. while (cursor.moveToNext()){
  35. int id = cursor.getInt(cursor.getColumnIndex("id"));
  36. String name = cursor.getString(cursor.getColumnIndex("name"));
  37. int image = cursor.getInt(cursor.getColumnIndex("image"));
  38. int score = cursor.getInt(cursor.getColumnIndex("score"));
  39. int type = cursor.getInt(cursor.getColumnIndex("score"));
  40. int sales = cursor.getInt(cursor.getColumnIndex("sales"));
  41. int qisong = cursor.getInt(cursor.getColumnIndex("qisong"));
  42. store store=new store(1,"赵家外卖",20,R.drawable.zhao,1,1,20);
  43. store.setId(id);
  44. store.setName(name);
  45. store.setImage(image);
  46. store.setScore(score);
  47. store.setType(type);
  48. store.setSales(sales);
  49. store.setQisong(qisong);
  50. storeList.add(store);
  51. }
  52. return storeList;
  53. }
  54. public void delete(int id) {
  55. if (db == null)
  56. db = getWritableDatabase();
  57. db.delete(TBL_NAME, "id=?", new String[]{String.valueOf(id)});
  58. }
  59. public void update(ContentValues values, int id) {
  60. db = getWritableDatabase();
  61. db.update(TBL_NAME, values, "id=?", new String[]{String.valueOf(id)});
  62. db.close();
  63. }
  64. }

5.5 商品实体代码

  1. package com.example.a11469.food;
  2. import java.io.Serializable;
  3. public class Goods implements Serializable {
  4. private int id;
  5. private int sid;
  6. private String price;
  7. private String goodName;
  8. private int image;
  9. private String content;
  10. private int sales;
  11. private int like1;
  12. public int getId() {
  13. return id;
  14. }
  15. public void setId(int id) {
  16. this.id = id;
  17. }
  18. public int getSid() {
  19. return sid;
  20. }
  21. public void setSid(int sid) {
  22. this.sid = sid;
  23. }
  24. public String getPrice() {
  25. return price;
  26. }
  27. public void setPrice(String price) {
  28. this.price = price;
  29. }
  30. public String getGoodName() {
  31. return goodName;
  32. }
  33. public void setGoodName(String goodName) {
  34. this.goodName = goodName;
  35. }
  36. public int getImage() {
  37. return image;
  38. }
  39. public void setImage(int image) {
  40. this.image = image;
  41. }
  42. public String getContent() {
  43. return content;
  44. }
  45. public void setContent(String content) {
  46. this.content = content;
  47. }
  48. public int getSales() {
  49. return sales;
  50. }
  51. public void setSales(int sales) {
  52. this.sales = sales;
  53. }
  54. public int getLike1() {
  55. return like1;
  56. }
  57. public void setLike1(int like1) {
  58. this.like1 = like1;
  59. }
  60. public Goods(int id, int sid, String price, int image, String content, int sales, int like1, String goodName) {
  61. this.id = id;
  62. this.sid = sid;
  63. this.goodName=goodName;
  64. this.price = price;
  65. this.image = image;
  66. this.content = content;
  67. this.sales = sales;
  68. this.like1 = like1;
  69. }
  70. }

5.6 商品数据库

  1. package com.example.a11469.food;
  2. import android.content.ContentValues;
  3. import android.content.Context;
  4. import android.database.Cursor;
  5. import android.database.sqlite.SQLiteDatabase;
  6. import android.database.sqlite.SQLiteOpenHelper;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9. public class GoodsDBHelper extends SQLiteOpenHelper {
  10. private SQLiteDatabase db;
  11. private static final String DB_NAME="goods.db";
  12. private static final String TBL_NAME="goodsTab";
  13. public GoodsDBHelper(Context context, String daname, SQLiteDatabase.CursorFactory factory,int version){
  14. super(context,daname,factory,version);
  15. }
  16. @Override
  17. public void onCreate(SQLiteDatabase db) {
  18. this.db=db;
  19. String sql ="create table goodsTab(id integer primary key autoincrement, sid integer,price text,image integer,content text,sales integer,like1 integer,goodsName text)";
  20. db.execSQL(sql);
  21. }
  22. @Override
  23. public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  24. }
  25. public void insert(ContentValues contentValues){
  26. SQLiteDatabase sqLiteDatabase =getWritableDatabase();
  27. sqLiteDatabase.insert("goodsTab",null,contentValues);
  28. sqLiteDatabase.close();
  29. }
  30. public List<Goods> query(){
  31. List<Goods> personList = new ArrayList<>();
  32. SQLiteDatabase sqLiteDatabase = getReadableDatabase();
  33. Cursor cursor = sqLiteDatabase.query(TBL_NAME,null,null,null,null,null,null);
  34. while (cursor.moveToNext()){
  35. Goods goods = new Goods(1,1,"1",1,"c0",1,1,"ccxax");
  36. goods.setId(cursor.getInt(cursor.getColumnIndex("id")));
  37. goods.setSid(cursor.getInt(cursor.getColumnIndex("sid")));
  38. goods.setPrice(cursor.getString(cursor.getColumnIndex("price")));
  39. goods.setImage(cursor.getInt(cursor.getColumnIndex("image")));
  40. goods.setContent(cursor.getString(cursor.getColumnIndex("content")));
  41. goods.setSales(cursor.getInt(cursor.getColumnIndex("sales")));
  42. goods.setLike1(cursor.getInt(cursor.getColumnIndex("like1")));
  43. goods.setGoodName(cursor.getString(cursor.getColumnIndex("goodsName")));
  44. personList.add(goods);
  45. }
  46. return personList;
  47. }
  48. public void delete(int id){
  49. if(db==null)
  50. db = getWritableDatabase();
  51. db.delete(TBL_NAME,"id=?",new String[]{String.valueOf(id)});
  52. }
  53. public void update(ContentValues contentValues,int id){
  54. SQLiteDatabase sqLiteDatabase = getWritableDatabase();
  55. sqLiteDatabase.update("goodsTab",contentValues,"id=?",new String[]{id+""});
  56. sqLiteDatabase.close();
  57. }
  58. }

5.7 商品适配器

  1. package com.example.a11469.food;
  2. import android.content.Context;
  3. import android.view.LayoutInflater;
  4. import android.view.View;
  5. import android.view.ViewGroup;
  6. import android.widget.BaseAdapter;
  7. import android.widget.ImageView;
  8. import android.widget.TextView;
  9. import java.util.List;
  10. public class GoodsAdapter extends BaseAdapter {
  11. private Context mContext;
  12. private List<Goods> mList;
  13. public GoodsAdapter(Context mContext, List<Goods> mList) {
  14. this.mContext = mContext;
  15. this.mList = mList;
  16. }
  17. @Override
  18. public int getCount() {
  19. return mList.size();
  20. }
  21. @Override
  22. public Object getItem(int position) {
  23. return null;
  24. }
  25. @Override
  26. public long getItemId(int position) {
  27. return 0;
  28. }
  29. public View getView(int i, View view, ViewGroup viewGroup) {
  30. view = LayoutInflater.from(mContext).inflate(R.layout.goodsitem,null);
  31. ImageView goods_image = view.findViewById(R.id.goods_image);
  32. TextView goods_name = view.findViewById(R.id.goods_name);
  33. TextView goods_like = view.findViewById(R.id.good_like);
  34. TextView goods_price = view.findViewById(R.id.goods_price);
  35. TextView goods_sales = view.findViewById(R.id.goods_sales);
  36. goods_image.setImageDrawable(mContext.getResources().getDrawable(mList.get(i).getImage()));
  37. goods_name.setText(mList.get(i).getGoodName());
  38. goods_like.setText(mList.get(i).getLike1()+"");
  39. goods_price.setText(mList.get(i).getPrice()+"");
  40. goods_sales.setText(mList.get(i).getSales()+"");
  41. return view;
  42. }
  43. }

5.8 商品详细信息

  1. package com.example.a11469.food;
  2. import android.content.Context;
  3. import android.view.LayoutInflater;
  4. import android.view.View;
  5. import android.view.ViewGroup;
  6. import android.widget.BaseAdapter;
  7. import android.widget.ImageView;
  8. import android.widget.TextView;
  9. import java.util.List;
  10. public class GoodsAdapter extends BaseAdapter {
  11. private Context mContext;
  12. private List<Goods> mList;
  13. public GoodsAdapter(Context mContext, List<Goods> mList) {
  14. this.mContext = mContext;
  15. this.mList = mList;
  16. }
  17. @Override
  18. public int getCount() {
  19. return mList.size();
  20. }
  21. @Override
  22. public Object getItem(int position) {
  23. return null;
  24. }
  25. @Override
  26. public long getItemId(int position) {
  27. return 0;
  28. }
  29. public View getView(int i, View view, ViewGroup viewGroup) {
  30. view = LayoutInflater.from(mContext).inflate(R.layout.goodsitem,null);
  31. ImageView goods_image = view.findViewById(R.id.goods_image);
  32. TextView goods_name = view.findViewById(R.id.goods_name);
  33. TextView goods_like = view.findViewById(R.id.good_like);
  34. TextView goods_price = view.findViewById(R.id.goods_price);
  35. TextView goods_sales = view.findViewById(R.id.goods_sales);
  36. goods_image.setImageDrawable(mContext.getResources().getDrawable(mList.get(i).getImage()));
  37. goods_name.setText(mList.get(i).getGoodName());
  38. goods_like.setText(mList.get(i).getLike1()+"");
  39. goods_price.setText(mList.get(i).getPrice()+"");
  40. goods_sales.setText(mList.get(i).getSales()+"");
  41. return view;
  42. }
  43. }

5.9 订单实体

  1. package com.example.a11469.food;
  2. import java.io.Serializable;
  3. public class Order implements Serializable {
  4. private int id;
  5. private int image;
  6. private String sname;
  7. private String goods_name;
  8. private String price;
  9. private int sid;
  10. private String uname;
  11. public Order(int id, int image, String sname, String goods_name, String price, int sid,String uname){
  12. this.image =image;
  13. this.sname = sname;
  14. this.goods_name= goods_name;
  15. this.price = price;
  16. this.sid = sid;
  17. this.id = id;
  18. this.uname = uname;
  19. }
  20. public String getUname() {
  21. return uname;
  22. }
  23. public void setUname(String uname) {
  24. this.uname = uname;
  25. }
  26. public int getId() {
  27. return id;
  28. }
  29. public void setId(int id) {
  30. this.id = id;
  31. }
  32. public int getSid() {
  33. return sid;
  34. }
  35. public void setSid(int sid) {
  36. this.sid = sid;
  37. }
  38. public int getImage() {
  39. return image;
  40. }
  41. public void setImage(int image) {
  42. this.image = image;
  43. }
  44. public String getSname() {
  45. return sname;
  46. }
  47. public void setSname(String sname) {
  48. this.sname = sname;
  49. }
  50. public String getGoods_name() {
  51. return goods_name;
  52. }
  53. public void setGoods_name(String goods_name) {
  54. this.goods_name = goods_name;
  55. }
  56. public String getPrice() {
  57. return price;
  58. }
  59. public void setPrice(String price) {
  60. this.price = price;
  61. }
  62. }

5.10 orderActivity代码

  1. package com.example.a11469.food;
  2. import android.content.DialogInterface;
  3. import android.content.Intent;
  4. import android.support.v7.app.AlertDialog;
  5. import android.support.v7.app.AppCompatActivity;
  6. import android.os.Bundle;
  7. import android.view.View;
  8. import android.widget.AdapterView;
  9. import android.widget.Button;
  10. import android.widget.ListView;
  11. import android.widget.TextView;
  12. import java.util.ArrayList;
  13. import java.util.List;
  14. public class OrderActivity extends AppCompatActivity {
  15. TextView mine;
  16. TextView waimai;
  17. ListView listView1;
  18. OrderAdapter orderAdapter;
  19. List<User> userList;
  20. List<Order> OrderList;
  21. List<Order> OrderList1;
  22. Button bt_evaluate;
  23. Button bt_again;
  24. public static String name;
  25. @Override
  26. protected void onCreate(Bundle savedInstanceState) {
  27. super.onCreate(savedInstanceState);
  28. setContentView(R.layout.activity_form);
  29. OrderList = new ArrayList<>();
  30. OrderList1 = new ArrayList<>();
  31. mine = findViewById(R.id.form_mine);
  32. OrderDBHelper dbHelper = new OrderDBHelper(OrderActivity.this, "order.db", null, 1);
  33. waimai = findViewById(R.id.form_shop);
  34. bt_evaluate = findViewById(R.id.item_btnjudge);
  35. bt_again = findViewById(R.id.item_nextone);
  36. name = getIntent().getStringExtra("zhanghao");
  37. OrderList = dbHelper.query();
  38. for(Order o:OrderList){
  39. if(name!=null){
  40. if(name.equals(o.getUname())){
  41. OrderList1.add(o);
  42. }}
  43. else{
  44. OrderList1.clear();
  45. }
  46. }
  47. listView1 = findViewById(R.id.form_list);
  48. orderAdapter = new OrderAdapter(this, OrderList1, OrderActivity.this);
  49. listView1.setAdapter(orderAdapter);
  50. mine.setOnClickListener(new View.OnClickListener() {
  51. @Override
  52. public void onClick(View view) {
  53. Intent intent = new Intent(OrderActivity.this, MineActivity.class);
  54. intent.putExtra("zhanghao", name);
  55. startActivity(intent);
  56. }
  57. });
  58. waimai.setOnClickListener(new View.OnClickListener() {
  59. @Override
  60. public void onClick(View view) {
  61. Intent intent = new Intent(OrderActivity.this, ShouyeActivity.class);
  62. intent.putExtra("zhanghao", name);
  63. startActivity(intent);
  64. }
  65. });
  66. listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  67. @Override
  68. public void onItemClick(AdapterView<?> adapterView, final View view, int i, long l) {
  69. final int s = i;
  70. AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext());
  71. builder.setMessage("确定删除吗?")
  72. .setTitle("提示");
  73. builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
  74. @Override
  75. public void onClick(DialogInterface dialogInterface, int which) {
  76. dialogInterface.dismiss();
  77. OrderDBHelper dbHelper2 = new OrderDBHelper(OrderActivity.this, "order.db", null, 1);
  78. dbHelper2.delete(OrderList1.get(s).getId());
  79. OrderList1.clear();
  80. OrderList1.addAll(dbHelper2.query());
  81. orderAdapter.notifyDataSetInvalidated();
  82. }
  83. })
  84. .setNegativeButton("取消", new DialogInterface.OnClickListener() {
  85. @Override
  86. public void onClick(DialogInterface dialogInterface, int i) {
  87. dialogInterface.dismiss();
  88. }
  89. });
  90. AlertDialog dialog = builder.create();
  91. dialog.show();
  92. }
  93. });
  94. listView1.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
  95. @Override
  96. public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
  97. Intent intent = new Intent(OrderActivity.this, OrderMoreActivity.class);
  98. intent.putExtra("zhanghao", name);
  99. Bundle bundle = new Bundle();
  100. bundle.putSerializable("Orderer", OrderList1.get(i));
  101. intent.putExtras(bundle);
  102. startActivity(intent);
  103. return true;
  104. }
  105. });
  106. }
  107. }

5.11 订单适配器

  1. package com.example.a11469.food;
  2. import android.content.Context;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.view.LayoutInflater;
  6. import android.view.View;
  7. import android.view.ViewGroup;
  8. import android.widget.BaseAdapter;
  9. import android.widget.Button;
  10. import android.widget.ImageView;
  11. import android.widget.TextView;
  12. import java.util.ArrayList;
  13. import java.util.List;
  14. public class OrderAdapter extends BaseAdapter {
  15. private Context mContext;
  16. OrderActivity orderActivity;
  17. List<Order> orderList;
  18. Order o;
  19. public OrderAdapter(Context context,List<Order> list,OrderActivity orderActivity){
  20. this.orderActivity = orderActivity;
  21. this.mContext = context;
  22. this.orderList = list;
  23. }
  24. public int getCount() {
  25. return orderList.size();
  26. }
  27. @Override
  28. public Object getItem(int i) {
  29. return null;
  30. }
  31. @Override
  32. public long getItemId(int i) {
  33. return 0;
  34. }
  35. @Override
  36. public View getView(final int i, View view, ViewGroup viewGroup) {
  37. view = LayoutInflater.from(mContext).inflate(R.layout.form_item_layout,null);
  38. ImageView image =view.findViewById(R.id.order_image);
  39. TextView shop_name = view.findViewById(R.id.item_shopname);
  40. TextView goods_name = view.findViewById(R.id.item_productname);
  41. View fenge = view.findViewById(R.id.fenge);
  42. TextView money = view.findViewById(R.id.item_money);
  43. Button judge = view.findViewById(R.id.item_btnjudge);
  44. Button nextone = view.findViewById(R.id.item_nextone);
  45. image.setImageDrawable(mContext.getResources().getDrawable(orderList.get(i).getImage()));
  46. shop_name.setText(orderList.get(i).getSname());
  47. goods_name.setText(orderList.get(i).getGoods_name());
  48. money.setText(orderList.get(i).getPrice());
  49. judge.setOnClickListener(new View.OnClickListener() {
  50. @Override
  51. public void onClick(View view) {
  52. Intent intent = new Intent(mContext,EvaluateActivity.class);
  53. Bundle bundle = new Bundle();
  54. bundle.putSerializable("Evaluate",orderList.get(i));
  55. intent.putExtras(bundle);
  56. mContext.startActivity(intent);
  57. }
  58. });
  59. nextone.setOnClickListener(new View.OnClickListener() {
  60. @Override
  61. public void onClick(View view) {
  62. Intent intent = new Intent(mContext,ShopcarActivity.class);
  63. Bundle bundle= new Bundle();
  64. bundle.putSerializable("Order_Shopcar",orderList.get(i));
  65. intent.putExtra("zhanghao",OrderActivity.name);
  66. intent.putExtras(bundle);
  67. mContext.startActivity(intent);
  68. }
  69. });
  70. return view;
  71. }
  72. }

5.12 订单数据库

  1. package com.example.a11469.food;
  2. import android.content.ContentValues;
  3. import android.content.Context;
  4. import android.database.Cursor;
  5. import android.database.sqlite.SQLiteDatabase;
  6. import android.database.sqlite.SQLiteOpenHelper;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9. public class OrderDBHelper extends SQLiteOpenHelper {
  10. private SQLiteDatabase db;
  11. private static final String DB_NAME="order.db";
  12. private static final String TBL_NAME="orderTab";
  13. public OrderDBHelper(Context context, String daname, SQLiteDatabase.CursorFactory factory,int version){
  14. super(context,daname,factory,version);
  15. }
  16. @Override
  17. public void onCreate(SQLiteDatabase db) {
  18. this.db=db;
  19. String sql ="create table orderTab(id integer primary key autoincrement, image integer,sname text,good_name text,price text,sid integer,uname text)";
  20. db.execSQL(sql);
  21. }
  22. @Override
  23. public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  24. }
  25. public void insert(ContentValues contentValues){
  26. SQLiteDatabase sqLiteDatabase =getWritableDatabase();
  27. sqLiteDatabase.insert("orderTab",null,contentValues);
  28. sqLiteDatabase.close();
  29. }
  30. public List<Order> query(){
  31. List<Order> personList = new ArrayList<>();
  32. SQLiteDatabase sqLiteDatabase = getReadableDatabase();
  33. Cursor cursor = sqLiteDatabase.query("orderTab",null,null,null,null,null,null);
  34. while (cursor.moveToNext()){
  35. Order order = new Order(1,1,"12","23","ef",11,"1");
  36. order.setId(cursor.getInt(cursor.getColumnIndex("id")));
  37. order.setImage(cursor.getInt(cursor.getColumnIndex("image")));
  38. order.setSname(cursor.getString(cursor.getColumnIndex("sname")));
  39. order.setGoods_name(cursor.getString(cursor.getColumnIndex("good_name")));
  40. order.setPrice(cursor.getString(cursor.getColumnIndex("price")));
  41. order.setSid(cursor.getInt(cursor.getColumnIndex("sid")));
  42. order.setUname(cursor.getString(cursor.getColumnIndex("uname")));
  43. personList.add(order);
  44. }
  45. return personList;
  46. }
  47. public void delete(int id){
  48. if(db==null)
  49. db = getWritableDatabase();
  50. db.delete(TBL_NAME,"id=?",new String[]{String.valueOf(id)});
  51. }
  52. public void update(ContentValues contentValues,int id){
  53. SQLiteDatabase sqLiteDatabase = getWritableDatabase();
  54. sqLiteDatabase.update("orderTab",contentValues,"id=?",new String[]{id+""});
  55. sqLiteDatabase.close();
  56. }
  57. }

5.13 ordermoreActivity代码

  1. package com.example.a11469.food;
  2. import android.content.Intent;
  3. import android.support.v7.app.AppCompatActivity;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.widget.Button;
  7. import android.widget.ImageView;
  8. import android.widget.TextView;
  9. import java.util.ArrayList;
  10. import java.util.List;
  11. public class OrderMoreActivity extends AppCompatActivity {
  12. Button turnback;
  13. TextView storename;
  14. List<User> userList;
  15. Order o;
  16. int tupian;
  17. ImageView imageView;
  18. Intent intent;
  19. Bundle bundle;
  20. public static String loginname;
  21. TextView goodsname;
  22. TextView goodprice;
  23. TextView useraddress;
  24. TextView orderid;
  25. TextView person;
  26. int id;
  27. String goodsname1;
  28. String goodprice2;
  29. String storename2;
  30. @Override
  31. protected void onCreate(Bundle savedInstanceState) {
  32. super.onCreate(savedInstanceState);
  33. setContentView(R.layout.order_more);
  34. userList=new ArrayList<>();
  35. intent=getIntent();
  36. imageView=findViewById(R.id.order_more_img);
  37. bundle = intent.getExtras();
  38. o=(Order)bundle.get("Orderer");
  39. loginname=intent.getStringExtra("zhanghao");
  40. storename=findViewById(R.id.order_more_storename);
  41. goodsname=findViewById(R.id.order_more_goodsname);
  42. goodprice=findViewById(R.id.order_more_price);
  43. useraddress=findViewById(R.id.order_more_address);
  44. person=findViewById(R.id.order_more_person);
  45. orderid=findViewById(R.id.order_more_orderid);
  46. final String name=getIntent().getStringExtra("zhanghao");
  47. turnback=findViewById(R.id.order_more_turnback);
  48. person.setText(name);
  49. id=o.getId();
  50. tupian=o.getImage();
  51. storename2=o.getSname();
  52. goodsname1=o.getGoods_name();
  53. goodprice2=o.getPrice();
  54. orderid.setText(String.valueOf(id));
  55. goodprice.setText(goodprice2);
  56. goodsname.setText(goodsname1);
  57. storename.setText(storename2);
  58. imageView.setImageResource(tupian);
  59. UserDBHelper dbHelper = new UserDBHelper(OrderMoreActivity.this, "user2.db", null, 1);
  60. userList=dbHelper.selcet();
  61. for(User u:userList){
  62. if(u.getNumber().equals(name)){
  63. useraddress.setText(u.getAddress());
  64. break;}
  65. }
  66. turnback.setOnClickListener(new View.OnClickListener() {
  67. @Override
  68. public void onClick(View view) {
  69. Intent intent=new Intent(OrderMoreActivity.this,OrderActivity.class);
  70. intent.putExtra("zhanghao",loginname);
  71. startActivity(intent);
  72. }
  73. });
  74. }
  75. }

6 系统测试与结果

系统测试与结果部分主要对本系统已实现的所有功能进行测试,比较测试结果与预期结果,并做出分析,从而找出系统的bug,以便及时对系统进行修复。本部分还包括对测试思路和环境搭建以及测试的结果分析。

6.1 测试思路和环境搭建

本节将对本系统的测试思路以及环境搭建进行叙述。包括对系统测试的大致方向进行叙述,以及对本系统搭建所需要的硬件环境和软件环境的叙述。

6.1.1 测试思路

为了对系统做出更为全面的测试,本次测试将对已完成的系统功能进行测试,并对结果进行分析。具体的测试方案如下:

  • 功能测试:主要测试的功能有用户登录、用户注册、新闻搜索功能、个人信息修改功能

  • 安全性测试:主要测试系统的安全性,包括使用不同角色的用户登录,测试用户登录后角色所对应的功能是否正确

6.1.2 环境搭建

  • 硬件环境

    • 硬盘:1TB
    • 内存:16G
    • CPU:Inter(R)Core(TM) i7-6700HQ CPU @2.60GHz
  • 软件环境

    • 在本地(windows10系统)下搭建Java环境:安装JDK1.8,配置环境变量
    • 在本地(windows10系统)下搭建android 开发环境,安装android studio ,下载android开发Sdk。下载各种支持插件,运行库
    • 注册Bmob云服务器账号,在云端创建应用,输入应用包名,得到连接应用的开发密匙,并设计云端数据库,用作存储本地数据
    • 在Android Studio中创建应用,并搭建项目的整体框架,开始实施编码逻輯。并尝试连接Bmob云数据库,实现数据操作

6.2 测试与结果分析

根据上节中的测试思路对本系统进行黑盒测试,将所有可能的错误情况测试一遍,记录预期结果以及实际情况,并对测试的结果进行分析

6.2.1 加入购物车功能测试

测试内容:进入系统后,进行搜索新闻。

点击菜品加入购物车 菜品加入购物车

6.2.2 搜索功能测试

测试内容:进入修改信息界面,修改用户信息。

在搜索框内输入空 在搜索框内输入肯德基
在搜索框内输入沙拉拉轻食 沙拉拉轻食店家界面

6.2.3 判断登录与否功能测试

测试内容:进入修改信息界面,修改用户信息。

不登陆直接点单 提示登录
登陆了注销以后再次点单 提示登录
登录以后查看订单 未登录查看订单

6 实习总结

在实验的最初我们花了大量的时间来做需求分析。需求就像我们人生的航标一样,有了它,我们的开发才有方向,不然都是无用的。每天我们制定开发计划,一小步一小步的走,一行一行慢慢的写。看着一个个小小功能的实现与完善,我们都对他竖起大拇指。

Android的UI布局是很重要的一环。布局模式以相对模式为主,线线布局模式可以在比较简单的include进行完成,最重要的一点就是:我们可以自己通过重写方法或者通过实现View或者Layout等类进行扩充项目需要的布局(或者控件),在学习界面中,我发现Android为我们提供了很好的类似反射机制,通过Layout文件夹下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便。对比较特殊的界面也可以通过处理嵌入到指定的界面,同样你可以通过java代码直接创建View进行添加,不过这种方式比较复杂。对一些点击、选中、按键等处理的事件,界面之间的跳转Intent管理,通过Bundle对数据在界面之间进行传输

在Android编程过程中巩固熟悉了Java的编程。由于Android应用程序的开发离不开Java的支持,所以基础的 Java知识是必须的。Android 系统是基于Linux的手机操作系统平台,要深入系统的学习Android,不仅仅是有 Java和Android应用开发,必须要具备Linux, C/C++高级编程才能深入的涉及Androi dFramework和Android内核开发。成为Android开发的高素质人才。所以,在后续对Android的学习中可能会看一-些较底层的书籍。由于这次实习时间较短,对于Android应用程序的高级编程讲的很少,是这次实习中的不足。

当一个团队合作时,并不是遇到的每个团队,团队成员都令你满意、每个团队都可以融洽相处。这个团队之所以形成,主要目的为了成功完成这个项目。进入团队先要明白进入团队的目的,这个团队成立的目的。明白了这两点,许多在团队中遇到的问题都可以避开或很好的解决。所有成员都围绕如何能更好更完善的完成项目为主。当然在遇到必然可能影响到项目开发进度的问题时,还需及时解决。

上传的附件 cloud_download Food.zip ( 28.18mb, 39次下载 ) cloud_download 我的自制饿了么.doc ( 1.69mb, 44次下载 )
eject