栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

综合练习1-吃货联盟订餐系统(对象+数组)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

综合练习1-吃货联盟订餐系统(对象+数组)

1.订单实体类

public class Order {

	private String name;// 订餐人姓名
	private String food;// 所选菜品
	private int time;// 送餐时间
	private String address;// 送餐地址
	private int state;// 订单状态
	private double sumPrice;// 餐品总金额

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getFood() {
		return food;
	}

	public void setFood(String food) {
		this.food = food;
	}

	public int getTime() {
		return time;
	}

	public void setTime(int time) {
		this.time = time;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	public int getState() {
		return state;
	}

	public void setState(int state) {
		this.state = state;
	}

	public double getSumPrice() {
		return sumPrice;
	}

	public void setSumPrice(double sumPrice) {
		this.sumPrice = sumPrice;
	}

	// 构造方法
	public Order(String name, String food, int time, String address, int state,
			double sumPrice) {
		super();
		this.name = name;
		this.food = food;
		this.time = time;
		this.address = address;
		this.state = state;
		this.sumPrice = sumPrice;
	}

}

2.菜单实体类

public class Food {
	private String foodName;//菜品名称
	private double price;//单价
	private int praiseNum;//点赞数
	
	public String getFoodName() {
		return foodName;
	}
	public void setFoodName(String foodName) {
		this.foodName = foodName;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	public int getPraiseNum() {
		return praiseNum;
	}
	public void setPraiseNum(int praiseNum) {
		this.praiseNum = praiseNum;
	}
	//构造方法
	public Food(String foodName, double price, int praiseNum) {
		super();
		this.foodName = foodName;
		this.price = price;
		this.praiseNum = praiseNum;
	}
	

}

3.业务逻辑类

import java.util.Scanner;

public class OrderMgr {
	public static final Scanner sc = new Scanner(System.in);
	Order[] orders = new Order[5];
	Food[] foods = new Food[3];

	public void init() {
		// 默认菜品并添加到数组
		Food food1 = new Food("小炒肉", 11.0, 0);
		Food food2 = new Food("红烧肉", 15.0, 0);
		Food food3 = new Food("黄焖鸡", 16.0, 0);
		foods[0] = food1;
		foods[1] = food2;
		foods[2] = food3;
		// 默认有两条订单
		Order order1 = new Order("**涛", "黄焖鸡1份", 12, "幸福大街一号", 0, 22.0);
		Order order2 = new Order("**涛", "小炒肉1份", 12, "幸福大街一号", 0, 17.0);
		// 添加到数组

		orders[0] = order1;
		orders[1] = order2;
	}

	public void start() {
		int index;
		do {
			// 菜单栏
			menu();
			// 手动输入菜单栏选项
			index = sc.nextInt();
			while (index > 6 || index <= 0) {
				System.out.println("对不起您输入的有误,请重新输入!");
				menu();
				index = sc.nextInt();
			}
			switch (index) {
			case 1:
				// 我要订餐
				orderFood(orders, foods);
				break;
			case 2:
				// 查看餐袋
				look(orders);
				break;
			case 3:
				// 签收订单
				signFor(orders);
				break;
			case 4:
				// 删除订单
				delOrder(orders);
				break;
			case 5:
				// 我要点赞
				praise(foods);
				break;
			case 6:
				// 退出系统
				System.out.println("谢谢使用!");
				System.exit(0);
				break;
			}
			while (index != 0) {
				System.out.println("输入0返回:");
				index = sc.nextInt();
			}
		} while (index == 0);
	}

	// 菜单栏
	public void menu() {
		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("请选择:");
	}

	// 我要订餐
	public void orderFood(Order[] orders, Food[] foods) {
		boolean isAdd = false;// true:记录找到一个为空的位置,可以插入,false:没有找到
		// 查找要插入的位置
		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++) {
					System.out.println((j + 1) + "t" + foods[j].getFoodName()
							+ "t" + foods[j].getPrice() + "元t"
							+ foods[j].getPraiseNum() + "赞");
				}
				// 输入所选餐品编号,份数,订餐人姓名,送餐时间,送餐地址
				int foodId;
				while (true) {
					System.out.print("请选择您要点的菜品编号:");
					foodId = sc.nextInt();
					if (foodId <= 3 && foodId >= 1) {
						break;
					} else {
						System.out.println("对不起,您输入的有错误请重新输入!");
					}
				}
				int foodNums;
				while (true) {
					System.out.print("请选择您要点的菜品份数:");
					foodNums = sc.nextInt();
					if (foodNums > 0) {
						break;
					} else {
						System.out.println("对不起,您输入的有错误请重新输入!");
					}
				}
				System.out.print("请输入订餐人姓名:");
				String name = sc.next();
				System.out.print("请输入送餐时间(送餐时间为10点到20点准时送餐):");
				int time = sc.nextInt();
				while (time > 20 || time < 10) {
					System.out.println("对不起您输入的时间不在送餐时间范围内,请输入10~20之间的整数:");
					time = sc.nextInt();
				}
				System.out.print("请输入送餐地址:");
				String address = sc.next();

				// 计算餐费
				double sumPrice = foods[foodId - 1].getPrice() * foodNums;
				// 送餐费,餐费达到50元免6元送餐费
				double deliCharge = sumPrice >= 50 ? 0.0 : 6.0;
				// 显示订单信息
				System.out.println("订餐成功!");
				System.out.println("您订的是:" + foods[foodId - 1].getFoodName()
						+ " " + foodNums + "份");
				System.out.println("订餐人:" + name);
				System.out.println("送餐时间:" + time + "点");
				System.out.println("送餐地址:" + address);
				System.out.println("餐费:" + sumPrice + ",送餐费:" + deliCharge
						+ "元");
				System.out.println("订单总金额:" + (sumPrice + deliCharge) + "元");
				// 保存数据
				String foodName = foods[foodId - 1].getFoodName() + foodNums
						+ "份";
				Order order = new Order(name, foodName, time, address, 0,
						sumPrice);
				orders[i] = order;
				break;
			}
		}
		// 如果没有找到为空的位置,则提示信息
		if (!isAdd) {
			System.out.println("对不起,您的餐袋已满!");
		}
	}

	// 查看餐袋
	public void look(Order[] orders) {
		System.out.println("********查看餐袋********");
		System.out.println("序号t订餐人t所订餐品信息t送餐时间t送餐地址tt总金额t状态");
		// 遍历数组
		for (int i = 0; i < orders.length; i++) {
			if (orders[i] != null) {
				String state = orders[i].getState() == 0 ? "已预订" : "已完成";
				System.out.println((i + 1) + "t" + orders[i].getName() + "t"
						+ orders[i].getFood() + "t" + orders[i].getTime()
						+ "点t" + orders[i].getAddress() + "t"
						+ orders[i].getSumPrice() + "t" + state);
			}
		}
	}

	// 签收订单
	public void signFor(Order[] orders) {
		System.out.println("********签收订单********");
		System.out.println("请输入要签收的订单编号:");
		int signOrderId = sc.nextInt();
		boolean isFind = false;// 记录这条订单true:表示找到,false:表示没有找到
		// 查找这条订单
		for (int i = 0; i < orders.length; i++) {
			// 找到是已完成;提示不能签收,状态是预定:可以签收
			if (orders[i] != null && orders[i].getState() == 1
					&& signOrderId == i + 1) {
				isFind = true;
				System.out.println("对不起,您的订单已经完成签收,不能再次签收!");
				break;
			} else if (orders[i] != null && orders[i].getState() == 0
					&& signOrderId == i + 1) {
				isFind = true;
				orders[i].setState(1);// 状态值改为已完成状态
				System.out.println("订单签收成功!");
				break;
			}
		}
		// 没找到订单
		if (!isFind) {
			System.out.println("对不起,此订单不存在!");
		}
	}

	// 删除订单
	public void delOrder(Order[] orders) {
		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].getState() == 1
					&& delId == i + 1) {
				delIndex = i;
				isDelFind = true;
				break;
			} else if (orders[i] != null && orders[i].getState() == 0
					&& delId == i + 1) {
				isDelFind = true;
				System.out.println("您选择的订单未签收,不能删除!");
				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;
			System.out.println("订单删除成功!");
		}
	}

	public void praise(Food[] foods) {
		// 我要点赞
		System.out.println("********我要点赞********");
		// 显示所有餐品信息
		System.out.println("序号t菜名t单价t点赞数");
		for (int j = 0; j < foods.length; j++) {
			System.out.println((j + 1) + "t" + foods[j].getFoodName() + "t"
					+ foods[j].getPrice() + "元t" + foods[j].getPraiseNum()
					+ "赞");
		}
		// 输入要点赞的餐品序号
		int dishId;
		while (true) {
			System.out.print("请选择您要点的菜品编号:");
			dishId = sc.nextInt();
			if (dishId <= 3 && dishId >= 1) {
				break;
			} else {
				System.out.println("对不起,您输入的有错误请重新输入!");
			}
		}
		// 该序号的餐品点赞数加一
		foods[dishId - 1].setPraiseNum(foods[dishId - 1].getPraiseNum() + 1);
		// 显示
		System.out.println("点赞成功!");
		System.out.println(foods[dishId - 1].getFoodName() + " "
				+ foods[dishId - 1].getPraiseNum() + "赞");
	}
}

4.测试类

public class Test {
	public static void main(String[] args) {
		OrderMgr om = new OrderMgr();
		om.init();
		om.start();

	}
}

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1040227.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号