其他分享
首页 > 其他分享> > 使用ArrayList重写吃货联盟详解

使用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