(1)订餐人姓名 name:String;
(2) 餐品信息 dishMegs:String;
(3)订单配送时间 times:int;
(4)订单配送地址 addresses:String;
(5)订单状态 states:int;
(6)订单的总金额 sumPrices:doouble;
2、菜品类Food
(1)菜品名称 dishNames:String;
(2)菜品单价 prices:double;
(3)菜品点赞数 praiseNums:int;
3、订单管理类OrderMgr
(1)所有订单--数组:orders Order[4]
所有菜品--集合:foods Food[4]
(2)程序整体流程搭建的start()方法
循环
分支
(3)数据初始化的init()方法
创建2个订单对象,存储在数组orders中
创建3个菜品对象,存储在数组foods中
(4)欢迎菜单的menu()方法
输出欢迎语句和菜单选项
A:点餐
输入订单信息
姓名、餐品信息(菜品名称拼接分数的字符串形式)
订单配送时间
订单配送地址
订单状态
订单的总金额
将订购成功的订单添加进数组
B:查看订单
输出数组orders中所有订单的信息
C:签收订单
订单状态为已预定的订单可签收
订单状态为已完成的订单不可重复签收
D:删除订单
订单状态为已完成的订单可删除
订单状态为已预定的订单不可删除
E:点赞
输出集合foods中的所有菜品信息,选择要点赞的菜,点赞数+1
F:退出
订单管理类的调用:
创建OrderMgr类对象
调用数据初始化方法init()
调用启动系统方法start()
(1)做事情,是专业的人做专业的事情
写代码,是具体的类做具体的事情(实体类,就只定义属性、方法,添加构造方法和普通方法;业务类专门写业务代码;测试类专门做测试。各个类之间分工明确)
(2)原来的操作思想:获取姓名,存储到姓名数组中,获取订餐信息,存放到订餐信息数组中,获取订餐地址存放到地址数组中,然后6个数组中下标相同的元素组成一条订单
(3)面向对象的思想:先获取姓名、订餐信息、地址、时间等数据(或其一个数据要判断的就进行判断)存储到变量中,然后将获取的数据使用订单类的有参构造方法创建成对象,然后将对象存储到订单类的数组中,接下来要操作的就是这个订单类数组里的订单对象,整体进行操作,不再分开操作6个数组了
6、代码(1)order类
package com.xuexi.吃货联盟;
public class Order {
private String name;
private String dish;
private int times;
private String address;
private int states;
private double sumPrices;
public Order() {
}
public Order(String name, String dish, int times, String address, int states, double sumPrices) {
this.name = name;
this.dish = dish;
this.times = times;
this.address = address;
this.states = states;
this.sumPrices = sumPrices;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDish() {
return dish;
}
public void setDish(String dish) {
this.dish = dish;
}
public int getTimes() {
return times;
}
public void setTimes(int times) {
this.times = times;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getStates() {
return states;
}
public void setStates(int states) {
this.states = states;
}
public double getSumPrices() {
return sumPrices;
}
public void setSumPrices(double sumPrices) {
this.sumPrices = sumPrices;
}
}
(2)food类
package com.xuexi.吃货联盟;
public class Food {
private String dishNames;
private double prices;
private int praiseNums;
public Food() {
}
public Food(String dishNames, double prices, int praiseNums) {
this.dishNames = dishNames;
this.prices = prices;
this.praiseNums = praiseNums;
}
public String getDishNames() {
return dishNames;
}
public void setDishNames(String dishNames) {
this.dishNames = dishNames;
}
public double getPrices() {
return prices;
}
public void setPrices(double prices) {
this.prices = prices;
}
public int getPraiseNums() {
return praiseNums;
}
public void setPraiseNums(int praiseNums) {
this.praiseNums = praiseNums;
}
}
(3)OrderMgr类
package com.xuexi.吃货联盟;
import java.util.Scanner;
public class OrderMgr {
Order[] orders = new Order[4];
Food[] foods = new Food[3];
public void start(Scanner sc) {
int sum = -1;
do {
menu(sc);
System.out.println("输入零返回");
sum = sc.nextInt();
}
while (sum == 0);
{
System.out.println("谢谢使用,欢迎下次光临!");
}
}
public void init() {
Order o1 = new Order("王旭", "鱼香肉丝一份", 12, "北大青鸟", 1, 24);
Order o2 = new Order("蒋若", "红烧带鱼两份", 14, "北大青鸟", 1, 76);
orders[0] = o1;
orders[1] = o2;
Food f1 = new Food("红烧带鱼", 38, 0);
Food f2 = new Food("鱼香肉丝", 18, 0);
Food f3 = new Food("时令蔬菜", 10, 0);
foods[0] = f1;
foods[1] = f2;
foods[2] = f3;
}
public void menu(Scanner sc) {
System.out.println("欢迎使用“吃货联盟订餐系统”");
System.out.println("***********************************");
System.out.println("1、我要订餐");
System.out.println("2、查看餐袋");
System.out.println("3、签收订单");
System.out.println("4、删除订单");
System.out.println("5、我要点赞");
System.out.println("6、退出系统");
System.out.println("***********************************");
System.out.println("请选择:");
boolean isAdd = false;
switch (sc.nextInt()) {
case 1:
System.out.println("***我要订餐***");
for (int i = 0; i < orders.length; i++) {
if (orders[i] == null) {
isAdd = true;
//执行操作
System.out.println("序号t餐品名t单价t点餐数");
for (int j = 0; j < foods.length; j++) {
String price = foods[j].getPrices() + "元";
String praise = foods[j].getPraiseNums() + "赞";
System.out.println((j + 1) + "t" + foods[j].getDishNames() + "t" + price + "t" + praise);
}
System.out.println("请选择所定餐品序号:");
int chooseDish = sc.nextInt();
System.out.println("请选择所定份数:");
int number = sc.nextInt();
String dishMeg = foods[chooseDish - 1].getDishNames() + "" + number + "份";
System.out.println("请输入订餐人姓名:");
String name = sc.next();
System.out.println("请输入送餐时间(10-20整点送餐)");
int time = sc.nextInt();
while (time > 20 || time < 10) {
System.out.println("对不起,您输入有误,请输入10-20之间的整数:");
time = sc.nextInt();
}
System.out.println("请输入送餐地址:");
String address1 = sc.next();
double sumPrice = foods[chooseDish - 1].getPrices() * number;
double deliChaege = sumPrice >= 50 ? 0.0 : 6.0;
System.out.println("订餐成功!");
System.out.println("您定的是:" + dishMeg);
System.out.println("订餐人:" + name);
System.out.println("送餐地址:" + address1);
System.out.println("餐费:" + sumPrice + ",送餐费:" + deliChaege + "元");
System.out.println("总金额:" + (sumPrice + deliChaege) + "元");
Order o = new Order();
orders[i] = o;
orders[i].setName(name);
orders[i].setDish(dishMeg);
orders[i].setTimes(time);
orders[i].setAddress(address1);
orders[i].setSumPrices(sumPrice + deliChaege);
break;
}
}
if (!isAdd) {
System.out.println("对不起,您的餐袋已满 ");
}
break;
case 2:
System.out.println("***查看餐袋***");
System.out.println("序号t订餐人姓名t所订餐品信息t送餐时间t送餐地址t总金额t状态");
for (int i = 0; i < orders.length; i++) {
if (orders[i] != null) {
String time = orders[i].getTimes() + "点";
String sumPrice = orders[i].getSumPrices() + "元";
String state = orders[i].getStates() == 0 ? "已绑定" : "已完成";
System.out.println((i + 1) + "tt" + orders[i].getName() + "tt" + orders[i].getDish() + "t" + time + "t" + orders[i].getTimes() + "t" + orders[i].getSumPrices() + "t" + orders[i].getStates());
}
}
break;
case 3:
System.out.println("***签收订单***");
System.out.println("选择要签收的订单序号:");
int signOrderId = sc.nextInt();
boolean isFind = false;
for (int i = 0; i < orders.length; i++) {
if (orders[i].getName() != null && orders[i].getStates() == 1 && signOrderId == 1 + i) {
System.out.println("对不起,你的订单已经完成签收,不能再次签收!");
isFind = true;
break;
} else if (orders[i].getName() != null && orders[i].getStates() == 0 && signOrderId == i + 1) {
orders[i].setStates(1);
System.out.println("订单签收成功!");
isFind = true;
break;
}
}
if (!isFind) {
System.out.println("对不起,此订单不存在!");
}
System.out.println("");
break;
case 4:
System.out.println("***删除订单***");
System.out.println("请输入要删除的订单序号:");
int delId = sc.nextInt();
int delIndex = -1;
boolean isDelFind = false;
for (int i = 0; i < orders.length; i++) {
if (orders[i] != null && orders[i].getStates() == 1 && delId == i + 1) {
delIndex = i;
isDelFind = true;
break;
} else if (orders[i] != null && orders[i].getStates() == 0 && delId == i + 1) {
System.out.println("您选择的订单未签收,不能删除");
isDelFind = true;
break;
}
}
if (!isDelFind) {
System.out.println("对不起,此条订单不存在");
}
if (delIndex != -1) {
for (int i = delIndex + 1; i < orders.length - 1; i++) {
orders[i - 1] = orders[i];
}
orders[orders.length - 1] = null;
}
break;
case 5:
System.out.println("***我要点赞***");
System.out.println("序号t菜名t单价");
for (int i = 0; i < foods.length; i++) {
String price = foods[i].getPrices() + "元";
String praise = foods[i].getPraiseNums() + "赞";
System.out.println((i + 1) + "t" + foods[i].getDishNames() + "t" + price + "t" + praise);
}
System.out.println("请输入要点赞的餐品序号");
int dishID = sc.nextInt();
foods[dishID - 1].setPraiseNums(+1);
System.out.println("点赞成功");
System.out.println();
break;
case 6:
System.out.println("***退出系统***");
break;
default:
System.out.println("***退出系统***");
break;
}
}
}
(4)test类
package com.xuexi.吃货联盟;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
OrderMgr test =new OrderMgr();
Scanner sc =new Scanner(System.in);
test.init();
test.start(sc);
}
}



