Java带你去看流浪世界!(六-小程序)

吃货联盟订餐系统

我们前三阶段的练习都是在Console(控制台)上展示的!我们是在学习语法阶段。未来的产品不会以控制台形式展示给客户。

控制台系统 精简版的美团

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

1.业务驱动技术。

1.我要订餐
	0.提升用户体验,餐袋已满,不再进行一下操作。

	1.输入点餐人姓名

	2.将所有的菜品进行展示

	3.输入要订的菜品序号

	4.输入要订的菜品份数

	5.输入配送时间

	6.输入配送地址(及联系电话)

	7.显示订餐信息

	8.返回上一层
2.查看餐袋
	1.直接展示(自己)所有的订单信息
3.我要签收
	1.显示所有的订单信息

	2.输入要签收的订单序号

	3.判断,如果已经签收完成的订单不允许重复签收,未完成签收的订单则可以进行签收

	5.展示签收成功
4.删除订单
	1.展示所有的订单信息

	2.输入要删除的订单序号

	3.判断,如果未完成(显示已预订)则不允许删除,已完成的则可以进行订单删除

	4.删除成功
5.我要点赞(显示菜品的点赞累加)
	1.展示所有的菜品信息

	2.输入点赞的菜品序号

	3.提示点赞成功
6.退出系统
	1.提示结束语

	2.执行程序退出

2.技术难点分析

​ 1.存储难点
姓名,订餐菜品 + 分数,送餐时间,送餐地址,订单状态(0表示已预订,1表示已完成),总金额....

	1.使用变量

		如果存储3个订单,需要定义跟多变量(X)

	2.使用数组

		数组是长度不可变得(因技术限制假定最大存储长度为4)

		数组是一组相同类型数据,虽然我们一个数组中无法直接存储一条订单信息,但是我们可以定义多个数组,每个数组的相同索引用来存储一条订单信息。例如:多个数组的下标为0表示第一条订单,下标为1是表示第二条订单......

菜品信息:

菜名,单价,点赞数。
2.订单和菜品遍历
因为下标相同表示同一条订单或菜品信息,所以可以遍历一个数组时进行遍历其他多个数组。
for(int i = 0;i < names.length;i++){
   	syso(names[i] + "\t" + totalMoney[i] + ......)
}
3.订单签收和菜品点赞
就是将对应的数组进行重新赋值而已。
4.删除订单
当删除的是最后一条订单信息是,只需要将最后一条订单信息置为数值默认值即可。
names[names.length - 1] = null;
totalMoney[totalMoney.length - 1] = 0;
.....

当删除的是非最后一条订单信息时,需要先将此下标后的元素前移动,然后将最后信息进行置为默认值。

5.订单总金额计算
菜品的单价 * 份数

当实际消费总金额 >= 50元 则配送费减免 ,否则需要5元配送费。
配送费计算三元运算符
菜品的单价 * 份数 >= 50 ? 0 : 5;

小程序:

package dome;

import java.util.*;

/**
 *  我的吃货联盟订餐系统
 * @author Li-BetterMen
 *
 */
public class Lianxi {

	public static void main(String[] args) {
		//定义变量,姓名(name),总金额(sumPrice),菜品(dishMeg),时间(time),地址(addresse),订单状态(state)
		String name;
		String dishMeg;
		String address;
		String sumPrice;
		int time;
		String state;
		//声明数组,姓名(names),总金额(sumPrices),菜品(dishMegs),时间(times),地址(addresses),订单状态(states)
		String[] names = new String[4];
		String[] dishMegs = new String[4];
		String[] addresses = new String[4];
		double[] sumprices = new double[4];
		int[] times = new int[4];
		int[] states = new int[4];
		//声明数组,菜名,菜价,菜品好评点赞
		String[] dishNames = {"红烧肉","红烧鱼","红烧牛肉"};
		double[] prices = new double[] {30.0,35.0,40.0,};
		int[] praiseNums = new int[3];
		//标记用户返回和退出
		int num = -1;
		boolean isExit = false;
		
		Scanner input = new Scanner(System.in);
		
		 int case1;
		do {
		  	System.out.println("\t欢迎使用“吃货联盟订餐系统”\n************************************");
		  	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("************我要订餐************");
			 		Boolean isAdd = false;
			 		for(int i = 0;i < names.length;i++) {
			 			
			 			if(names[i] == null) {
			 				isAdd = true;
			 				System.out.print("请输入订餐人的姓名:");
			 				name = input.next();
			 				System.out.println("序号" + "\t" + "菜名" + "\t" + "单价" + "\t" + "点赞数");
			 				
			 				for(int j = 0;j < dishNames.length;j++) {
			 					String price = prices[j] + "元";
			 					String priaiseNum = (praiseNums[j]) > 0? praiseNums[j] + "赞" :"0";
			 					System.out.println((j + 1) + "\t" + dishNames[j] 
			 							+ "\t" + price + "\t" + priaiseNum);	
			 				}
			 				System.out.println("请选择您要点的菜品名称:");
			 				
			 				int chooseDish = input.nextInt();
			 				System.out.print("请选择你需要的份数:");
			 				int number = input.nextInt();
			 				dishMeg = dishNames[chooseDish - 1] + " "+ number + "份";
			 				double sumprice = prices[chooseDish - 1] * number;
			 				double deliCharge = (sumprice >= 50) ? 0 : 5;
			 				System.out.print("请输入送餐时间(送餐时间是早上10点-----晚上8点,整点送餐):");
			 				time = input.nextInt();
			 				
			 				while(time < 10 || time > 20) {
			 					System.out.print("你的输入有误,请输入早上10点-----晚上8点之间的整数!");
			 					time = input.nextInt();
			 				}
			 				System.out.print("请输入送餐地址:");
			 				address = input.next();
			 				System.out.println("订餐成功!");
			 				System.out.println("您订的是:"+ dishMeg);
			 				System.out.println("您的送餐时间是:" + time + "点");
			 				System.out.println("餐费:" + sumprice + "元,送餐费" 
			 						+ deliCharge +"元,总计:" 
			 						+ (sumprice + deliCharge) + "元。");
			 				
			 				names[i] = name;
			 				dishMegs[i] = dishMeg;
			 				times[i] = time;
			 				addresses[i] = address;
			 				sumprices[i] = sumprice + deliCharge;
			 				break;	
			 				}			 			
			 		}
			 		if(!isAdd) {
			 			System.out.println("对不起,你的餐袋已经满了!");
			 		}
			 		break;
			 	case 2:
			 		System.out.println("************查看餐袋************");
			 		System.out.println("序号\t订餐人\t餐品信息\t\t送餐时间\t送餐地址\t\t总金额\t订单状态");
			 		
			 		for(int i = 0; i < names.length;i++) {
			 			if(names[i] != null) {
			 				state = (states[i] == 0) ? "已预订" : "已完成";
			 				String date = times[i] + "点";
			 				sumPrice = sumprices[i] + "元";
			 				System.out.println((i + 1) + "\t" + names[i] + "\t"
			 						+ dishMegs[i] + "\t" + date + "\t" 
			 						+ addresses[i] + "\t" + sumPrice + "\t" + state);
			 			}
			 		}
			 		break;
			 	case 3:
			 		System.out.println("************签收订单************");
			 		boolean isSignFind = false;
			 		System.out.print("请选择要签收的订单序号:");
			 		int signOrderld = input.nextInt();
			 		for(int i = 0;i < names.length;i++) {
			 			if(names[i] != null && states[i] == 0 
			 					&& signOrderld == i + 1) {
			 				states[i] = 1;
			 				System.out.println("订单签收成功!");
			 				isSignFind = true;
			 			}else if(names[i] != null && states[i] == 1
			 					&& signOrderld == i +1) {
			 				System.out.println("您选择的订单已完成签收,不能再次签收!");
			 				isSignFind = true;
			 			}
			 		}
			 		if(!isSignFind) {
			 			System.out.println("您选择的订单不存在!");
			 		}
			 		break;
			 	case 4:
			 		System.out.println("************删除订单************");
			 		boolean isDelFind = false;
			 		System.out.print("请输入要删除的订单序号:");
			 		int delld = input.nextInt();
			 		for(int i = 0;i < names.length;i++) {
			 			if(names[i] != null && states[i] == 1 && delld == i + 1) {
			 				isDelFind = true;
			 				for(int j = 0;j < names.length - 1;j++) {
			 					names[j] = names[j + 1];
			 					dishMegs[j] = dishMegs[j + 1];
			 					times[j] = times[j + 1];
			 					addresses[j] = addresses[j + 1];
			 					states[j] = states[j + 1];
			 					sumprices[j] = sumprices[j + 1];
			 				}
			 				int endIndex = names.length - 1;
			 				names[endIndex] = null;
			 				dishMegs[endIndex] = null;
			 				times[endIndex] = 0;
			 				addresses[endIndex] = null;
			 				states[endIndex] = 0;
			 				sumprices[endIndex] = 0;
			 				System.out.println("删除订单成功!");
			 				break;
			 			}else if(names[i] != null && states[i] ==0 && delld == i + 1) {
			 				System.out.println("你选择的订单未签收,不能删除!");
			 				isDelFind = true;
			 				break;
			 			}	
			 		}
			 		if(!isDelFind) {
			 			System.out.println("你要删除的订单不存在!");
			 		}
			 		break;
			 	case 5:
			 		System.out.println("************我要点赞************");
			 		System.out.println("序号" + "\t" + "菜名" + "\t" + "单价");
			 		for(int i = 0;i < dishNames.length;i++) {
			 			String price = prices[i] + "元";
			 			String priaiseNum = (praiseNums[i] > 0 ? praiseNums[i] + "赞" : " ");
			 			System.out.println((i + 1) + "\t" + dishNames[i] + "\t" + price + "\t" + priaiseNum);
			 		}
			 		System.out.print("请选择您要点赞的菜品序号:");
			 		int priaiseNum = input.nextInt();
			 		praiseNums[priaiseNum - 1]++;
			 		System.out.println("点赞成功!");
			 		break;
			 	case 6:
			 		isExit = true;
			 		break;
			 	default:
			 		isExit = true;
			 		break;		
			 }
	
			if(!isExit) {
				System.out.println("返回上一层请输入0");
				num = input.nextInt();
			}else {
				break;
			}
		 }while(num == 0);
	 System.out.println("谢谢使用,欢迎下次光临!");
			

	}

}

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
未来社区的建设背景和需求分析指出,随着智能经济、大数据、人工智能、物联网、区块链、云计算等技术的发展,社区服务正朝着数字化、智能化转型。社区服务渠道由分散向统一融合转变,服务内容由通用庞杂向个性化、服务导向转变。未来社区将构建数字化生态,实现数据在线、组织在线、服务在线、产品智能和决策智能,赋能企业创新,同时注重人才培养和科研平台建设。 规划设计方面,未来社区将基于居民需求,打造以服务为中心的社区管理模式。通过统一的服务平台和应用,实现服务内容的整合和优化,提供灵活多样的服务方式,如推送式、订阅式、热点式等。社区将构建数据与应用的良性循环,提高服务效率,同时注重生态优美、绿色低碳、社会和谐,以实现幸福民生和产业发展。 建设运营上,未来社区强调科学规划、以人为本,创新引领、重点突破,统筹推进、整体提升。通过实施院落+社团自治工程,转变政府职能,深化社区自治法制化、信息化,解决社区治理中的重点问题。目标是培养有活力的社会组织,提高社区居民参与度和满意度,实现社区治理服务的制度机制创新。 未来社区的数字化解决方案包括信息发布系统、服务系统和管理系统。信息发布系统涵盖公共服务类和社会化服务类信息,提供政策宣传、家政服务、健康医疗咨询等功能。服务系统功能需求包括办事指南、公共服务、社区工作参与互动等,旨在提高社区服务能力。管理系统功能需求则涉及院落管理、社团管理、社工队伍管理等,以实现社区治理的现代化。 最后,未来社区建设注重整合政府、社会组织、企业等多方资源,以提高社区服务的效率和质量。通过建立社区管理服务综合信息平台,提供社区公共服务、社区社会组织管理服务和社区便民服务,实现管理精简、高效、透明,服务快速、便捷。同时,通过培育和发展社区协会、社团等组织,激发社会化组织活力,为居民提供综合性的咨询和服务,促进社区的和谐发展。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值