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

初学java基础项目
摘要由CSDN通过智能技术生成

吃货联盟订餐系统

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

吃货联盟订餐系统包含的功能:我要订餐、查看餐袋、签收订单、删除订单、我要点赞、退出系统

覆盖技能点

程序基本概念

  • 变量
  • 数据类型

流程控制

  • 顺序
  • 选择
  • 循环
  • 跳转语句

数组

系统概述

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

阶段划分

第一阶段:分析数据主体(重难点)
第二阶段:分析并完成整体框架(重难点)
第三阶段:分析并完成退出功能
第四阶段:分析并完成订餐功能
第五阶段:分析并完成查看餐袋功能
第六阶段:分析并完成签收订单功能
第七阶段:分析并完成删除功能(重难点)
第八阶段:分析总完成我要点赞功能

用例1:实现菜单切换

需求说明
  • 编写程序入口,实现菜单显示和切换

在这里插入图片描述

思路分析:
  • 使用循环控制菜单显示, 0退出循环
  • 使用switch语句实现菜单切换
难点提示
  • 使用标识变量来控制循环退出
		// 系统输入对象
		Scanner input = new Scanner(System.in);
		int num = -1;
		// 定义是否退出订餐系统变量
		boolean isExit = false;
		// 循环展示吃货订餐系统主菜单,可以选择菜单,并循环切换
		// 系统输入对象
		Scanner input = new Scanner(System.in);
		int num = -1;
		
		// 定义是否退出订餐系统变量
		boolean isExit = false;
		
		// 循环展示吃货订餐系统主菜单,可以选择菜单,并循环切换
		
		do {
   
			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.print("请选择:");
			int choose = input.nextInt();
			
			switch (choose) {
   
			case 1:
				System.out.println("***我要订餐***");
				break;
			case 2:
				System.out.println("***查看餐袋***");
				break;
			case 3:
				System.out.println("***签收订单***");
				break;
			case 4:
				System.out.println("***删除订单***");
				break;
			case 5:
				System.out.println("***我要点赞***");
				break;
			case 6:
				isExit = true;
				break;

			default:
				System.out.println("输入非法!");
				isExit = true;
				break;
			}
			if (!isExit) {
   
				System.out.print("输入0返回:");
				num = input.nextInt();
			}else {
   
				break;
			}
			
		} while (num == 0);
		System.out.println("谢谢使用,欢迎下次光临!");

用例2:数据初始化

需求说明

初始化菜品信息
在这里插入图片描述
初始化订单信息
在这里插入图片描述

实现:

		// 初始化订餐系统的菜品数据
		// 由于菜品数据类型不统一,但是数组存储的相同数据类型的一组数据,可以将菜品数据拆分成三个数组,借助数组相同下标,是同一个菜品数据
		// 菜品名称数组
		String[] dishNames = {
   "红烧带鱼","鱼香肉丝","时令鲜蔬"};
		
		// 菜品价格数组
		double[] dishPrices = {
   38.0,20.0,10.0};
		
		// 菜品点赞数数组
		int[] dishPraises = {
   0,0,0};
		
		// 初始化吃货订餐系统的订餐订单数据
		// 订餐人
		String[] orderNames = new String[5];
		
		// 订餐详情
		String[] orderDetails = new String[5];
		
		//配送时间
		int[] orderTimes = new int[5];
		
		//配送地址
		String[] orderAddrs = new String[5];
		
		// 订单状态
		int[] orderStates = new int[5];
		
		//订单总价
		double[] orderPrices = new double[5];
		
		// 初始化订餐订单数据,方便查看餐袋
		orderNames[0] = "张晴";
		orderDetails[0] = "红烧带鱼 2份";
		orderTimes[0] = 12;
		orderAddrs[0] = "天成路207号";
		orderStates[0] = 1;
		orderPrices[0] = 76.0;
		
		orderNames[1] = "张晴";
		orderDetails[1] = "鱼香肉丝 2份";
		orderTimes[1] = 18;
		orderAddrs[1] = "天成路207号";
		orderStates[1] = 0;
		orderPrices[1] = 45.0;

用例3:实现查看餐袋功能

在这里插入图片描述

需求说明
  • 遍历系统中已有的订单,并逐条显示输出
思路分析
  • 使用订餐人数组长度控制循环次数
  • 对输出数据进行处理
难点提示
  • 仅遍历订餐人信息不为空的记录,需判断

实现:

case 2:
				System.out.println("***查看餐袋***");
				// 输出订单标题头
				System.out.println("序号\t订餐人\t餐品信息\t\t送餐时间\t送餐地址\t\t总金额\t订单状态");
				// 循环遍历订单数组,查询已定餐的订单数据
				// 由于订餐订单被拆分为6个长度统一的数据,只需要选择使用其中一个数组作为循环条件即可
				for (int i = 0; i < orderNames.length; i++) {
   
					// 订餐订单都是按照下标顺序存储的,只要订单人姓名为null,说明后续都是空的(没有订单信息),结束循环
					if (null == orderNames[i]) {
   
						break;
					}
					// 输出餐袋中已存的订单数据
					System.out.println(i + 1 + "\t" 
							+ orderNames[i] + "\t"
							+ orderDetails[i] + "\t"
							+ orderTimes[i] + "\t"
							+ orderAddrs[i] + "\t"
							+ orderPrices[i] + "\t"
							+ (orderStates[i] == 0? "已预定" : "已完成"));
				}
				
				break;

用例4:实现我要订餐功能

在这里插入图片描述

需求说明
  • 增加订单信息,实现我要订餐
思路分析

完成功能要求:

  • 定位新增位置
  • 接收订餐信息
  • 计算订单总金额
  • 计算送餐费
难点提示

确定新增位置:第一个name为null的位置

case 1:
				System.out.println("***我要订餐***");
				// 定义餐袋中的订单是否已经订满的标识变量,如果餐袋满了,不允许继续订餐
				// 默认餐袋中订单已满,如果订餐可以找到订单位置,标识变量改为false,没满为true
				boolean isFullFlag = false;
				
				// 循环遍历订餐订单数组,找可以存放订餐订单的位置,就是第一个为null的位置
				for (int i = 0; i < orderNames.length
  • 29
    点赞
  • 130
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值