使用ArrayList重写吃货联盟详解
作者:互联网
首先我们创建订单和菜单类
菜单类
/**
* 小菜
* 属性:dishName price praiseNum
*/
package LeiKu;
public class Dish {
//属性
private String dishName;//菜品名
private double prices;//价格
private int praiseNums;//点赞数
//封装方法
public String getDishName() {
return dishName;
}
public void setDishName(String dishName) {
this.dishName = dishName;
}
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;
}
//构造方法
public Dish() {
// TODO Auto-generated constructor stub
}
public Dish(String dishName, double prices, int praiseNums) {
this.dishName = dishName;
this.prices = prices;
this.praiseNums = praiseNums;
}
}
订单类
/**
* 订单实体类
* 属性:订餐人、订餐信息、时间地址、状态、总金额
*
*
*/
package LeiKu;
public class Order {
// 初始化订单信息
private String names ;// 保存订餐人姓名
private String dishMeges;// 保存菜品名
private int times;// 保存送餐时间
private String addressed ;// 保存送餐地址
private int states ;// 保存订单状态
private double sumPrices ;// 保存订单总金额
//封装方法
public String getNames() {
return names;
}
public void setNames(String names) {
this.names = names;
}
public String getDishMeges() {
return dishMeges;
}
public void setDishMeges(String dishMeges) {
this.dishMeges = dishMeges;
}
public int getTimes() {
return times;
}
public void setTimes(int times) {
this.times = times;
}
public String getAddressed() {
return addressed;
}
public void setAddressed(String addressed) {
this.addressed = addressed;
}
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;
}
//构造方法
public Order() {
// TODO Auto-generated constructor stub
}
public Order(String names, String dishMeges, int times, String addressed, int states, double sumPrices) {
this.names = names;
this.dishMeges = dishMeges;
this.times = times;
this.addressed = addressed;
this.states = states;
this.sumPrices = sumPrices;
}
}
然后我们创建一个功能类
/**
* 订单管理类
* 包含增删改查的订单相关方法
* 以及初始化方法等
*/
package mrg;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import LeiKu.Dish;
import LeiKu.Order;
public class OrderMrg {
// 创造扫描器
Scanner input = new Scanner(System.in);
// 创建菜单和菜品的集合
List<Dish> dishList = new ArrayList<Dish>();// 菜品的集合
List<Order> orderList = new ArrayList<Order>();// 菜单的集合
// 初始化菜单和菜品
public void initialize() {
// 初始化餐品数据
Dish d1 = new Dish();
d1.setDishName("红烧带鱼");
d1.setPrices(38.0);
Dish d2 = new Dish();
d2.setDishName("鱼香肉丝");
d2.setPrices(20.0);
Dish d3 = new Dish();
d3.setDishName("时令蔬菜");
d3.setPrices(10.0);
// 插入dish集合中
dishList.add(d1);
dishList.add(d2);
dishList.add(d3);
// 初始化两个订单
Order o1 = new Order();
o1.setNames("张强");
o1.setDishMeges("红烧带鱼 2份");
o1.setTimes(13);
o1.setAddressed("天威路207号");
o1.setStates(1);
o1.setSumPrices(76.0);
Order o2 = new Order();
o2.setNames("张琴");
o2.setDishMeges("鱼香肉丝 2份");
o2.setTimes(11);
o2.setAddressed("天威路88号");
o2.setStates(0);
o2.setSumPrices(40.0);
// 插入集合order中
orderList.add(o1);
orderList.add(o2);
}
/*
* 编写框架
*/
public void frame() {
// 1、初始化
initialize();
// 2、编写框架
int num = 1;// 用户输入0返回菜单,否则退出系统
boolean isExit = false;// 标志用户是否退出系统:true 为退出系统;
System.out.println("=====欢迎进入吃货联盟订餐系统主界面=====");
do {
// 编写菜单
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("请选择");
int choose = input.nextInt();// 记录用户选择的功能编号
// 根据用户选择的功能编号执行相应的功能
switch (choose) {
case 1:
System.out.println("====我要订餐");
/**
* 首先判断餐袋是否已满,如果满了不能订餐给出提示 1、为用户显示系统提供的订单,获取订餐人信息,形成订单 2、输入订餐人名 3、选择菜品和菜品数量
* 4、送餐时间10~22点 5、输入送餐地址 6、设定状态 7、计算总金额 8、订餐成功后显示订单信息
*/
case1();
break;
case 2:
System.out.println("====查看餐袋");
case2();
break;
case 3:
System.out.println("====签收订单");
case3();
break;
case 4:
System.out.println("====删除订单");
case4();
break;
case 5:
System.out.println("====我要点赞");
case5();
break;
case 6:
System.out.println("====退出系统");
isExit = true;
break;
default:
// 退出系统
isExit = true;
break;
}
if (!isExit) {
System.out.println("输入0返回主菜单");
num = input.nextInt();
} else {
break;
}
} while (true);
}
/**
* 展示餐袋
*/
public void showDish() {
System.out.println("展示菜品信息");
System.out.println("序号\t菜品\t单价\t点赞数");// 制作标题
for (Dish dish : dishList) {
System.out.println(" " + (dishList.indexOf(dish) + 1) + "\t" + dish.getDishName() + "\t" + dish.getPrices()
+ "\t" + dish.getPraiseNums());
}
}
/**
* 查看订单信息
*/
public void case2() {
System.out.println("展示订单信息");
// 遍历所有已存在的订单,并逐条显示
System.out.println("序号\t订餐人\t餐品信息\t送餐时间\t送餐地址\t总金额\t订餐状态");
for (Order order : orderList) {
String state = (order.getStates() == 0 ? "已预定" : "已完成");
String date = order.getTimes() + "点";
String sumPrice = order.getSumPrices() + "元";
System.out.println(
" " + (orderList.indexOf(order) + 1) + "\t" + order.getNames() + "\t" + order.getDishMeges() + "\t"
+ date + "\t" + order.getAddressed() + "\t" + sumPrice + "\t" + state);
}
}
/**
* ("我要订餐");
*/
public void case1() {
System.out.println("请输入您的姓名");
String name = input.next();
// 遍历显示菜单
showDish();
// 用户点菜
System.out.println("请输入您想选的菜品编号");
int chooseDish = input.nextInt();
while (chooseDish < 1 || chooseDish > dishList.size()) {
System.out.println("请输入正确菜品编号");
chooseDish = input.nextInt();
}
System.out.println("请输入份数");
int number = input.nextInt();
// 菜有几份
String dishMeg = dishList.get((chooseDish - 1)).getDishName() + " " + number + "份";
double sumPrice = dishList.get((chooseDish - 1)).getPrices() * number;// 总价
// 餐费满50减免运费
double deliCharge = (sumPrice >= 50) ? 0 : 5;
System.out.println("请输入送餐时间(送餐时间为10点到20点)");
int time = input.nextInt();
while (time < 10 || time > 20) {
// 重新录入时间
System.out.println("请输入送餐时间(送餐时间为10点到20点)");
time = input.nextInt();
}
System.out.println("请输入送餐地址");
String address = input.next();
// 无需添加状态,默认为0即为已预定
System.out.println("预定成功");
System.out.println("您订的是:" + dishMeg);
System.out.println("送餐时间为:" + time + "点");
System.out.println("餐费为:" + sumPrice + "元,送餐费:" + deliCharge + "元,总计:" + (sumPrice + deliCharge));
// 添加数据存入数组
Order a = new Order();
a.setNames(name);
a.setDishMeges(dishMeg);
a.setTimes(time);
a.setAddressed(address);
a.setSumPrices(sumPrice + deliCharge);
orderList.add(a);
}
/**
* 签收订单
*/
public void case3() {
case2();
System.out.println("请选择要签收的订单");
int signOrderId = input.nextInt();
// 状态为已预定,序号为用户输入的订单序号减1:可签收
// 状态为已签收,序号为用户输入的订单序号减1:不可签收
if (signOrderId > 0 &&( orderList.size() > (signOrderId - 1)
&& orderList.get(signOrderId - 1).getStates() == 0)) {
orderList.get(signOrderId - 1).setStates(1);
System.out.println("订单签收成功");
} else {
System.out.println("该订单已签收或不存在,不能签收");
}
}
/**
* 删除订单
*/
public void case4() {
case2();
System.out.println("输入想要删除订单号");
// 状态值为已完成,序号为用户输入的订单序号减1:可删除
// 状态为已预定,序号为用户输入的订单序号减1:不可删除
int delId = input.nextInt();
// 判断集合长度大于输入数(只有大于输入数的时候订单才存在)并且订单状态为已完成
if (delId > 0 && (orderList.size() > (delId - 1) && orderList.get(delId - 1).getStates() == 1)) {
orderList.remove(delId - 1);
System.out.println("删除订单成功");
} else {
System.out.println("该订单未完成或不存在,不可删除");
}
}
/**
* 我要点赞praise
*/
public void case5() {
showDish();
System.out.println("请选择需要点赞的菜品");
int priaiseNum = input.nextInt();
if (priaiseNum<=0||(dishList.size() <(priaiseNum - 1))) {
System.out.println("您输入的订单不存在");
return;
}
// 添加点赞数
// 获取指定位置的对象的点赞数进行修改//修改点赞数 // 指定位置对象的点赞数+1
dishList.get(priaiseNum - 1).setPraiseNums(dishList.get(priaiseNum - 1).getPraiseNums() + 1);
showDish();
}
}
最后创造测试类
package Test;
import mrg.OrderMrg;
public class TestEat {
public static void main(String[] args) {
OrderMrg oo = new OrderMrg();
oo.frame();
}
}
大功告成!!
转换成hashmap的方法也十分简单,功能不变修改一下集合类型就行。
标签:String,ArrayList,吃货,System,订单,println,重写,public,out 来源: https://blog.csdn.net/DragonGod__/article/details/121385529