手把手教你做一个安卓点餐系统

简介: 最近有小伙伴要学习安卓,今天给大家展示一个安卓系统的开发,希望能帮到你学习!

最近有小伙伴要学习安卓,今天给大家展示一个安卓系统的开发,希望能帮到你学习!


传统的点餐方式有:


1) 手工点餐模式。在这种模式下,流程简单,店员很快知道要点什么,但随着点餐人数多,就会让店家分不清谁点的是什么,出错概率就增加。


2) 店员手持PDA等触摸屏掌上电脑进行点餐。这种模式虽然减少了传统手工点餐的纸质浪费,但也需要店员一个一个记录,在这过程中也消耗了部分时间。而且这种模式需要添加基站设备,设备支出成本也是极高。


3) 少数店家用APP或公众号来点餐。目前已经有少数商家用APP来实现点餐,但大多数还是用前两种来点餐。而且现阶段的APP点餐系统发展还不完善,还有待提高。


一,开发需求和技术栈


登录模块设计、点菜模块、付款模块、菜品浏览模块、订单模块、用户管理模块、分享动态模块等等。


技术栈:Android、Java、Mysql、SpringBoot、Mysql


二,系统的界面


微信图片_20221009222513.png


微信图片_20221009222518.png

微信图片_20221009222524.png

微信图片_20221009222529.png


微信图片_20221009222535.png


微信图片_20221009222539.png


微信图片_20221009222544.png


微信图片_20221009222547.png


微信图片_20221009222551.png


微信图片_20221009222555.png


微信图片_20221009222600.png


三,系统的核心代码


//作者:小孟 v:jishulearn
@Controller
@RequestMapping("/api")
public class ApiController {
    @Autowired
    private UsersService userService;
    @Autowired
    private ProductsService booksService;
    @Autowired
    private ShopsService bookshopService;
    @Autowired
    private ShopcartService shopcartService;
    @Autowired
    private ShoporderService orderService;
    @Autowired
    private PinglunService pinglunService;
    @Autowired
    private DizhiService dizhiService;
    @Autowired
    private PengyouquanService pengyouquanService;
    @PostMapping("/userlogin")
    @ResponseBody
    public JsonResult login(String username, String password) {
        if (username == null || username.trim().isEmpty()) return JsonResult.error("请输入账号");
        if (password == null || password.trim().isEmpty()) return JsonResult.error("请输入密码");
        Users user = userService.getOne(new QueryWrapper<Users>().eq("username",username).eq("password",password));
        if(user != null){
            return JsonResult.ok("登录成功").put("username",username).put("password",password).put("id",user.getId());
        }else{
            return JsonResult.error("用户名或密码错误");
        }
    }
    @PostMapping("/userreg")
    @ResponseBody
    public JsonResult reg(String username1, String password1,String nickname1) {
        if (username1 == null || username1.trim().isEmpty()) return JsonResult.error("请输入账号");
        if (password1 == null || password1.trim().isEmpty()) return JsonResult.error("请输入密码");
        Users user1 = new Users();
        user1.setUsername(username1);
        user1.setNickname(nickname1);
        user1.setPassword(password1);
        if (userService.save(user1)) {
            return JsonResult.ok("注册成功");
        }
        return JsonResult.error("注册失败");
    }
    @PostMapping("/userupdate")
    @ResponseBody
    public JsonResult update(Integer id,String username2, String password2,String nickname2) {
        if (username2 == null || username2.trim().isEmpty()) return JsonResult.error("请输入账号");
        if (password2 == null || password2.trim().isEmpty()) return JsonResult.error("请输入密码");
        if (nickname2 == null || nickname2.trim().isEmpty()) return JsonResult.error("请输入密码");
        Users userone = userService.getById(id);
        if(userone == null){
            return JsonResult.ok("用户不存在!");
        }
        userone.setUsername(username2);
        userone.setPassword(password2);
        userone.setNickname(nickname2);
        if (userService.save(userone)) {
            return JsonResult.ok("修改成功");
        }
        return JsonResult.error("修改失败");
    }
    /**
     * book查询全部
     */
    @ResponseBody
    @RequestMapping("/book/listByname")
    public JsonResult listByname(String name) {
        PageParam<Products> pageParam = new PageParam<>();
        pageParam.put("name", name);
        List<Products> records = booksService.listAll(pageParam.getNoPageParam());
        return JsonResult.ok().setData(records);
    }
    /**
     * 查询所有
     * @param bookshop
     * @return
     */
    @ResponseBody
    @RequestMapping("/book/list")
    public JsonResult productList(String bookshop) {
        PageParam<Shops> pageParam = new PageParam<>();
        List<Products> records = booksService.listAll(pageParam.getNoPageParam());
        return JsonResult.ok().setData(records);
    }
    /**
     * bookshop查询全部
     */
    @ResponseBody
    @RequestMapping("/bookshop/list")
    public JsonResult list2(String name) {
        PageParam<Shops> pageParam = new PageParam<>();
        pageParam.put("name", name);
        List<Shops> records = bookshopService.listAll(pageParam.getNoPageParam());
        return JsonResult.ok().setData(records);
    }


/**
 * 管理
 * Created by 小孟 v:jishulearn
 */
@Controller
@RequestMapping("/zaocan/pengyouquan")
public class PengyouquanController extends BaseController {
    @Autowired
    private PengyouquanService pengyouquanService;
    @RequestMapping()
    public String view() {
        return "zaocan/pengyouquan.html";
    }
    /**
     * 分页查询
     */
    @ResponseBody
    @RequestMapping("/page")
    public PageResult<Pengyouquan> page(HttpServletRequest request) {
        PageParam<Pengyouquan> pageParam = new PageParam<>(request);
        return new PageResult<>(pengyouquanService.page(pageParam, pageParam.getWrapper()).getRecords(), pageParam.getTotal());
        //return pengyouquanService.listPage(pageParam);  // 使用关联查询
    }
    /**
     * 查询全部
     */
    @ResponseBody
    @RequestMapping("/list")
    public JsonResult list(HttpServletRequest request) {
        PageParam<Pengyouquan> pageParam = new PageParam<>(request);
        return JsonResult.ok().setData(pengyouquanService.list(pageParam.getOrderWrapper()));
        //List<Pengyouquan> records = pengyouquanService.listAll(pageParam.getNoPageParam());  // 使用关联查询
        //return JsonResult.ok().setData(pageParam.sortRecords(records));
    }
    /**
     * 根据id查询
     */
    @ResponseBody
    @RequestMapping("/get")
    public JsonResult get(Integer id) {
        return JsonResult.ok().setData(pengyouquanService.getById(id));
  // 使用关联查询
        //PageParam<Pengyouquan> pageParam = new PageParam<>();
  //pageParam.put("id", id);
        //List<Pengyouquan> records = pengyouquanService.listAll(pageParam.getNoPageParam());
        //return JsonResult.ok().setData(pageParam.getOne(records));
    }
    /**
     * 添加
     */
    @ResponseBody
    @RequestMapping("/save")
    public JsonResult save(Pengyouquan pengyouquan) {
        if (pengyouquanService.save(pengyouquan)) {
            return JsonResult.ok("添加成功");
        }
        return JsonResult.error("添加失败");
    }


public class AddDiZHiActivity extends BaseActivity {
    @BindView(R.id.tv_title)
    TextView tv_title;
    @BindView(R.id.iv_back)
    ImageView iv_back;
    @BindView(R.id.iv_right)
    ImageView iv_right;
    @BindView(R.id.et_one)
    EditText et_one;
    @BindView(R.id.et_two)
    EditText et_two;
    @BindView(R.id.et_three)
    EditText et_three;
    @Override
    protected int createLayout() {
        return R.layout.activity_adddizhi;
    }
    @Override
    public void initViews() {
        iv_back.setVisibility(View.VISIBLE);
        tv_title.setText("添加地址");
    }
    @Override
    public void initData() {
    }
    @OnClick({R.id.iv_back, R.id.tv_add})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.iv_back:
                finish();
                break;
            case R.id.tv_add:
                if (TextUtils.isEmpty(et_one.getText().toString())) {
                    showToast("请填写地址");
                    return;
                }
                if (TextUtils.isEmpty(et_two.getText().toString())) {
                    showToast("请填写联系人");
                    return;
                }
                if (TextUtils.isEmpty(et_three.getText().toString())) {
                    showToast("请填写联系方式");
                    return;
                }
                add();
                break;
        }
    }


public class DiZhiActivity extends BaseActivity {
    @BindView(R.id.tv_title)
    TextView tv_title;
    @BindView(R.id.iv_back)
    ImageView iv_back;
    private Intent intent;
    @BindView(R.id.rv_shop)
    RecyclerView rv_shop;
    @BindView(R.id.iv_right)
    ImageView iv_right;
    private DiZHiAdapter diZHiAdapter;
    private List<PengListInfoBane> shopBeans = new ArrayList<>();
    @Override
    protected int createLayout() {
        return R.layout.activity_shop;
    }
    @Override
    public void initViews() {
        BCManager.instance().listener("DiZhiActivity", "DiZhiActivity", new BlockCallBack() {
            @Override
            public void block(Object target, String name, Object data) {
                     getData();
            }
        });
        getData();
        iv_back.setVisibility(View.VISIBLE);
        tv_title.setText("地址管理");
        iv_right.setVisibility(View.VISIBLE);
        iv_right.setImageResource(R.mipmap.ic_add);
    }
    private void getData() {
        MyHttpUtils.build()//构建myhttputils
                .url(HttpConfig.HTTP_IP + "/dizhi/list")//获取ip的url
                .setJavaBean(DiZhiBean.class)//设置请求结果对应的java对象
                .onExecute(new CommCallback<DiZhiBean>() {
                    @Override
                    public void onSucceed(DiZhiBean ipBean) {
                        Log.e("ipBean", ipBean + "ipBean");
                        rv_shop.setLayoutManager(new LinearLayoutManager(DiZhiActivity.this));
                        diZHiAdapter = new DiZHiAdapter(DiZhiActivity.this, R.layout.item_dizhi, ipBean.getData());
                        rv_shop.setAdapter(diZHiAdapter);
                        diZHiAdapter.setOnItemClickListener(new MultiItemTypeAdapter.OnItemClickListener() {
                            @Override
                            public void onItemClick(View view, RecyclerView.ViewHolder viewHolder, int i) {
                                BCManager.instance().post("dizhi","dizhi",ipBean.getData().get(i));
                                showToast("选择成功");
                                finish();
                            }
                            @Override
                            public boolean onItemLongClick(View view, RecyclerView.ViewHolder viewHolder, int i) {
                                return false;
                            }
                        });
                    }
目录
相关文章
|
29天前
|
人工智能 搜索推荐 物联网
Android系统版本演进与未来展望####
本文深入探讨了Android操作系统从诞生至今的发展历程,详细阐述了其关键版本迭代带来的创新特性、用户体验提升及对全球移动生态系统的影响。通过对Android历史版本的回顾与分析,本文旨在揭示其成功背后的驱动力,并展望未来Android可能的发展趋势与面临的挑战,为读者呈现一个既全面又具深度的技术视角。 ####
|
27天前
|
IDE Java 开发工具
移动应用与系统:探索Android开发之旅
在这篇文章中,我们将深入探讨Android开发的各个方面,从基础知识到高级技术。我们将通过代码示例和案例分析,帮助读者更好地理解和掌握Android开发。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和技巧。让我们一起开启Android开发的旅程吧!
|
15天前
|
监控 Java Android开发
深入探索Android系统的内存管理机制
本文旨在全面解析Android系统的内存管理机制,包括其工作原理、常见问题及其解决方案。通过对Android内存模型的深入分析,本文将帮助开发者更好地理解内存分配、回收以及优化策略,从而提高应用性能和用户体验。
|
16天前
|
存储 安全 Android开发
探索Android系统的最新安全特性
在数字时代,智能手机已成为我们生活中不可或缺的一部分。随着技术的不断进步,手机操作系统的安全性也越来越受到重视。本文将深入探讨Android系统最新的安全特性,包括其设计理念、实施方式以及对用户的影响。通过分析这些安全措施如何保护用户免受恶意软件和网络攻击的威胁,我们希望为读者提供对Android安全性的全面了解。
|
2月前
|
缓存 Java Shell
Android 系统缓存扫描与清理方法分析
Android 系统缓存从原理探索到实现。
79 15
Android 系统缓存扫描与清理方法分析
|
1月前
|
监控 Java Android开发
深入探讨Android系统的内存管理机制
本文将深入分析Android系统的内存管理机制,包括其内存分配、回收策略以及常见的内存泄漏问题。通过对这些方面的详细讨论,读者可以更好地理解Android系统如何高效地管理内存资源,从而提高应用程序的性能和稳定性。
66 16
|
22天前
|
安全 Android开发 iOS开发
深入探讨Android与iOS系统的差异及未来发展趋势
本文旨在深入分析Android和iOS两大移动操作系统的核心技术差异、用户体验以及各自的市场表现,进一步探讨它们在未来技术革新中可能的发展方向。通过对比两者的开放性、安全性、生态系统等方面,本文揭示了两大系统在移动设备市场中的竞争态势和潜在变革。
|
1月前
|
算法 JavaScript Android开发
|
1月前
|
安全 搜索推荐 Android开发
揭秘安卓与iOS系统的差异:技术深度对比
【10月更文挑战第27天】 本文深入探讨了安卓(Android)与iOS两大移动操作系统的技术特点和用户体验差异。通过对比两者的系统架构、应用生态、用户界面、安全性等方面,揭示了为何这两种系统能够在市场中各占一席之地,并为用户提供不同的选择。文章旨在为读者提供一个全面的视角,理解两种系统的优势与局限,从而更好地根据自己的需求做出选择。
96 2
|
2月前
|
安全 搜索推荐 Android开发
深入探索安卓与iOS系统的差异及其对用户体验的影响
在当今的智能手机市场中,安卓和iOS是两大主流操作系统。它们各自拥有独特的特性和优势,为用户提供了不同的使用体验。本文将深入探讨安卓与iOS系统之间的主要差异,包括它们的设计理念、用户界面、应用生态以及安全性等方面,并分析这些差异如何影响用户的使用体验。
下一篇
DataWorks