文章目录

  • 为什么使用面向对象
  • 划分类
  • 代码编写

为什么使用面向对象

Java面向对象版本的吃货联盟订餐系统:
因为基础版本都在一个类中实现的功能,太过于麻烦,不清楚
,所以说我们利用面向对象制作吃货联盟订餐系统。
使用面向对象制作的优点:
1.更加具体化,把具体的事物抽象成类
2.易于理解,方便编写代码
3.安全性较高,经过封装代码后安全性提高
4.后期便于维护

划分类

我们进入代码编写,面向对象显著的特点就是将一个事物划分成为一类事物,从而更便捷的编写,我们思考:
首先要有订单,订单中有顾客的信息,那么我们将顾客的信息放在订单类中,顾客可以操作订餐等功能。
其次应该有餐厅,餐厅中由许多食物,我们继续划分
大概分为2类,菜品和饮品,那么我们抽象出具体的父类,菜品和饮品都在菜单上展示,所以,我们将菜单定为父类。

代码编写

菜单类:

package com.oop.demo;public abstract class Menu {public abstract void show();//打印供选择的菜品/饮品信息public abstract void add(int index, int num);//添加菜品/饮品public abstract void check();//打印选择的菜品/饮品信息
}

菜品类(继承于菜单类):

package com.oop.demo;/*** 菜品类,继承于菜单类**/
public class Cuisine extends Menu{/*菜品名称*/private String[] cuisine_Names = {"鱼香肉丝", "宫保鸡丁", "糖醋里脊", "糖醋排骨", "小鸡炖蘑菇", "红烧鱼"};/*菜品单价*/private double[] cuisine_Prices = {29, 30, 40, 45, 50, 60};/*选择菜品的名称*/private String[] choice_Cui_Names = new String[cuisine_Names.length];/*选择菜品的单价*/private double[] choice_Cui_Prices = new double[cuisine_Prices.length];/*选择菜品的份数*/private int[] num = new int[choice_Cui_Names.length];/*** 打印供选择菜品的信息*/public void show() {System.out.println("菜品序号\t菜品名称\t菜品单价");for (int i = 0; i < cuisine_Names.length; i++) {System.out.println((i + 1) + "\t" + cuisine_Names[i]+ "\t" + cuisine_Prices[i]);}}/*** 添加菜品*/public void add(int index, int num) {for (int i = 0; i < choice_Cui_Names.length; i++) {if (choice_Cui_Names[i] == null) {choice_Cui_Names[i] =  cuisine_Names[index - 1];choice_Cui_Prices[i] =  cuisine_Prices[index - 1];this.num[i] = num;break;}}}/*** 打印选择的菜品信息*/public void check() {for (int i = 0; i < choice_Cui_Names.length; i++) {if (choice_Cui_Names[i] != null) {System.out.print("\t" + choice_Cui_Names[i]+ "\t¥" + choice_Cui_Prices[i] + "\t  " + num[i]);}}}}

饮品类(继承于菜单类):

package com.oop.demo;/*** 饮品类,继承于菜单类**/
public class Beverage extends Menu{/*饮料名称*/private String[] beverage_Names = {"冰茶", "红茶", "绿茶", "蜜雪冰城", "矿泉水", "牛奶"};/*饮料单价*/private double[] beverage_Prices = {1.5, 2.5, 2.5, 10.0, 9.0, 12.0};/*选择的饮品名称*/private String[] choice_Bvg_Names = new String[beverage_Names.length];/*选择的饮品单价*/private double[] choice_Bvg_Prices = {beverage_Prices.length};/*选择的饮品份数*/private int[] num = new int[choice_Bvg_Names.length];/*** 打印供选择饮品的信息*/public void show() {System.out.println("菜单如下:");System.out.println("饮品序号\t饮品名称\t饮品单价");for (int i = 0; i < beverage_Names.length; i++) {System.out.println((i + 1) + "\t" + beverage_Names[i] + "\t¥"+ beverage_Prices[i]);}}/*** 添加饮品*/public void add(int index, int num) {for (int i = 0; i < choice_Bvg_Names.length; i++) {if (choice_Bvg_Names[i] == null) {choice_Bvg_Names[i] = beverage_Names[index - 1];choice_Bvg_Prices[i] = beverage_Prices[index - 1];this.num[i] = num;break;}}}/*** 打印选择的饮品信息*/public void check() {for (int i = 0; i < choice_Bvg_Names.length; i++) {if (choice_Bvg_Names[i] != null) {System.out.print("\t" + choice_Bvg_Names[i]+ "\t¥" + choice_Bvg_Prices[i] + "\t  " + num[i]);}}}}

订单类:

package com.oop.demo;public class OrderForm {private String name;//顾客昵称private String tel;//顾客电话private String addr;//顾客地址Menu[] menu = new Menu[3];//初始化5个菜单信息int[] states = new int[3];//订单状态public String getName() {return name;}public void setName(String name) {this.name = name;}public String getTel() {return tel;}public void setTel(String tel) {this.tel = tel;}public String getAddr() {return addr;}public void setAddr(String addr) {this.addr = addr;}}

顾客类:

package com.oop.demo;import java.util.Scanner;/*** 顾客类**/
public class Customer {Scanner sca = new Scanner(System.in);OrderForm order_Form;/*** 修改信息* @param name   昵称* @param tel 电话号码* @param addr  地址*/public void modify() {if (order_Form.getName() == null) {System.out.println("您还没有注册信息!");} else {System.out.println("请输入您的旧昵称:");String name = sca.next();System.out.println("请输入您的旧电话号码:");String tel = sca.next();System.out.println("请输入您的旧送餐地址:");String addr = sca.next();if (order_Form.getName().equals(name) && order_Form.getTel().equals(tel) && order_Form.getAddr().equals(addr)) {System.out.println("请输入新的昵称:");order_Form.setName(sca.next());System.out.println("请输入新的电话号码:");order_Form.setTel(sca.next());System.out.println("请输入新的送餐地址:");order_Form.setAddr(sca.next());System.out.println("修改成功~");} else {System.out.println("输入信息于原有信息不符,修改失败!");}}}/*** 删除订单*/public void del() {get();if (order_Form.menu[0] != null) {System.out.println("请输入要删除的订单序号:");int num = sca.nextInt();if (order_Form.states[num - 1] == 0) {System.out.println("您选择的订单未签收,不可删除!");} else {for (int i = num - 1; i < this.order_Form.menu.length - 1; i++) {this.order_Form.menu[i] = this.order_Form.menu[i + 1];this.order_Form.states[i + 1] = this.order_Form.states[num - 1];}this.order_Form.menu[num - 1] = null;System.out.println("删除成功~");}}}/*** 签收订单*/public void signFor() {get();if (order_Form.menu[0] != null) {System.out.println("请输入要签收的订单序号:");int num = sca.nextInt();if (order_Form.states[num - 1] == 0) {order_Form.states[num - 1] = 1;System.out.println("签收成功~");} else if (order_Form.states[num - 1] == 1) {System.out.println("订单已签收无需重复签收!");}}}/*** 查看订单信息*/public void get() {int count = 0;if (order_Form.getName() != null) {System.out.println("订单人:" + order_Form.getName()+ "\n送餐电话:" + order_Form.getTel()+ "\n送餐地址:" + order_Form.getAddr());}if (order_Form.menu[0] != null) {System.out.println("订单序号\t所点食品\t食品价格\t所点数量\t订单状态");}for (int i = 0; i < order_Form.menu.length; i++) {if (order_Form.menu[i] != null) {System.out.print("  " + (i + 1));order_Form.menu[i].check();if (order_Form.states[i] == 0) {System.out.println("\t 待签收");} else {System.out.println("\t 已签收");}count ++;}}if (count == 0) {System.out.println("您没有任何订单记录!");}}/*** 点餐方法*/public void order(OrderForm orderForm) {if (order_Form.getName() == null) {System.out.println("请输入您的昵称:");order_Form.setName(sca.next());}if (order_Form.getTel() == null) {System.out.println("请输入您的电话号码:");order_Form.setTel(sca.next());}if (order_Form.getAddr() == null) {System.out.println("请输入您的地址:");order_Form.setAddr(sca.next());}if (orderForm.menu[orderForm.menu.length - 1] != null) {System.out.println("存储空间已满,无法存储!");} else {String choice = "";Menu menu = null;do {System.out.println("请选择您想要点的食品类型(1.菜品  2.饮品)");choice = sca.next();if (choice.equals("1")) {menu = new Cuisine();} else if (choice.equals("2")) {menu = new Beverage();} else {System.out.println("您的输入有误,请您重新输入:");}} while(!(choice.equals("1") || choice.equals("2")));menu.show();System.out.println("请根据编号选择食品:");int food = sca.nextInt();System.out.println("请输入要点餐的份数:");int num = sca.nextInt();menu.add(food, num);for (int i = 0; i < this.order_Form.menu.length; i++) {if (this.order_Form.menu[i] == null) {this.order_Form.menu[i] = menu;System.out.println("订餐成功~");break;}}}}
}

测试类:

package com.oop.demo;import java.util.Scanner;/*** 测试类**/
public class Test {public static void main(String[] args) {Scanner sca = new Scanner(System.in);Customer customer = new Customer();customer.order_Form = new OrderForm();System.err.println("欢迎使用吃货联盟订餐系统");boolean isExit = false;// true:退出系统do {System.out.println("\n************************\n"+ "1.我要订餐\n"+ "2.查看餐袋\n"+ "3.签收订单\n"+ "4.删除订单\n"+ "5.修改信息\n"+ "6.退出系统\n"+ "************************\n"+ "请根据序号进行选择:");switch(sca.next()) {case "1":System.out.println("***我要订餐***");customer.order(customer.order_Form);break;case "2":System.out.println("***查看餐袋***");customer.get();break;case "3":System.out.println("***签收订单***");customer.signFor();break;case "4":System.out.println("***删除订单***");customer.del();break;case "5":System.out.println("***修改订单***");customer.modify();break;case "6":System.err.println("确定退出吗?(1;退出 2.继续)");if (sca.next().equals("1")) {isExit = true;}break;default:System.out.println("您的输入有误,请您重新输入:");}} while (!isExit);if (isExit) {System.out.println("感谢使用,再见!");}sca.close();}
}

ok,到此结束!
如有我未发现的bug,望各位大佬留言再评论区,双手感谢!!!

Java面向对象 --- 吃货联盟订餐系统(完整版)相关推荐

  1. Java基础 吃货联盟订餐系统

    Java基础 吃货联盟订餐系统 需求分析 系统概述 搭建框架 编写功能 项目总结 需求分析 系统概述 "只要动动手指,就能送餐上门",网上订餐深受现代人青睐,现开发一个网上订餐系统 ...

  2. Java基础——吃货联盟订餐系统

    吃货联盟订餐系统 刚刚学完java基础入门,主要学习Java基本环境搭建,定义变量.选择结构,循环结构.数组等.本阶段结束尝试接触此次吃货联盟订餐系统,第一次敲这么长的代码,后面多见识见识应该就好了, ...

  3. Java实现吃货联盟订餐系统

    系统概述 "只要动动手指,就能送餐上门",网上定餐深受现代人青睐,现开发一个网上订餐系统,功能如下 l我要订餐 l查看餐袋 l签收订单 l删除订单 l我要点赞 l退出系统 pack ...

  4. java编程 吃货联盟订餐系统

    最近呢,奥密克绒出现了,疫情防控严格起来了,我的线下Java程序课程暂时改成了线上了,这两天上了面向对象,对于零基础的我来说还是比较难的,唉 只能说这个进程的速度我来不及消化,趁着周五复习一下也是很老 ...

  5. 用Java面向对象的方法重写“吃货联盟订餐系统”

    该系统实现的功能: 我要订餐 查看餐袋 签收订单 删除订单 我要点赞 退出系统 实体类的定义: Dishes.java package com.xk.entity;/*** 菜品类**/public ...

  6. Java基础之吃货联盟订餐系统Version1.0

    注意:此项目为刚学完Java基础至数组的入门程序. 吃货联盟订餐系统Version1.0是在数组的基础上完成的一个小项目,由于只是运用数组实现了一些简单的功能, 所以我管它叫Version1.0,即1 ...

  7. Java程序编写 • 【第9章 程序:用定义类实现,吃货联盟订餐系统,新增商家和评论功能】

    本章节总结 返回作业目录 <吃货联盟订餐系统> 功能展示1:订餐 功能展示2:查看订单 功能展示3:签收订单 功能展示4:删除订单 功能展示5:商家评论 代码足有500多行,我会拆分开,进 ...

  8. Java吃货联盟订餐系统1.3-面向对象+I/O流

    吃货联盟订餐系统 author:luckyboy! version:1.3 知识储备:变量.数据类型.选择结构.循环结构.数组.面向对象.集合和I/O流 吃货联盟订餐系统概述 现在的互联网时代,足不出 ...

  9. java吃货联盟app讲解_吃货联盟订餐系统——JAVA实现

    package com.chihuo; import java.util.Scanner; public class OrderingMgr { public static void main(Str ...

最新文章

  1. cacti 添加redis监控(远程服务器)
  2. Docker 1.10版本发布
  3. 20190101.DDD笔记
  4. 一款可留言的恋爱计时HTML源码
  5. linux cat时间段,linux – cat / dev / urandom的输出是多么临时
  6. Python + 大数据-Python 学习(一)
  7. matlab傅里叶变换处理图像,MATLAB数字图像处理(1)基本操作和傅里叶变换
  8. 红米pro android o刷机,红米Pro刷机工具稳定版
  9. c语言的0xF9为什么表示1,0xc0(0xc0为什么表示0)
  10. 重庆地区外卖店铺分析系统的设计与实现
  11. udf在服务器上显示语法错误,udf编译提示语法错误
  12. git恢复commit过的代码
  13. 七零年代摄影师Robert Mapplethorpe
  14. 2.4gwifi最高下载速度_2.4gwifi最高下载速度
  15. 函数(2)——4.兔子数列5.汉诺塔6.综合案例-RSA算法7.综合案例-体测成绩判定2021.11.16
  16. 一个女大学生总结的大学生活
  17. 性能测试之Jmeter元件
  18. 制作API离线chm帮助文件教程
  19. Linux云服务器一键搭建自用FTP脚本
  20. 网卡配置/etc/network/interfaces中的内容解释

热门文章

  1. layui的form表单提交问题
  2. HDFS远程连接 客户端权限错误
  3. 无穷级数(一)常数项级数的概念与性质
  4. VMware 虚拟机中安装windows server 2019(图文教程详解)
  5. 第二章 Message组成详解
  6. jcrop java_Jcrop Java实现截图的功能
  7. 判断身份证 银行卡 手机号等
  8. DevSecOps|极狐GitLab IaC 安全扫描,保障云原生安全
  9. innodb_fast_shutdown参数
  10. WebFlow网页制作平台