吃货联盟小项目(7月2日)

昨天老师布置了一个吃货联盟的小项目,功能如下:

这个项目大概写了总共大概写了两个晚自习的时间,算是我写的第一个项目吧,还是蛮有成就感的,代码总共200行, 如下:

package NewDay5;

import java.util.Arrays;
import java.util.Scanner;

public class OrderSystem {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int back = -1;//定义back变量用来跳出循环
		
		//***2将餐袋的数据数组放在循环的外面,不然每一次又重新定义了
		String[] orderName = {"张三丰","秦始皇"};
		String[] diancaiName = {"红烧肉","鱼香肉丝"};
		int[] orderAmount = {3,5};
		int[] orderDate = {12,15};
		String[] sumAddr = {"武当山北","咸阳大道"};
		double[] allPrice = {114.0,212.5};
		String[] caiState = {"已完成","已完成"};
		//***
		
		//***1.我要订餐的菜名和单价
		String[] caiName = {"红烧肉","鱼香肉丝","满汉全席"};
		double[] price = {38.0,42.5,88.8};
		int[] zanNumber = new int[caiName.length];//定义一个跟菜单长度一样的空点赞数组
		
		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 num = sc.nextInt();
		
		switch(num){
		case 1://我要订餐,用控制台接收订餐信息,添加到餐袋数组里面
			System.out.println("1.***我要订餐***");
			System.out.println("请输入订餐人姓名:");
			String name = sc.next();
			System.out.println("序号"+"\t"+"菜名"+"\t"+"  "+"单价");//输出菜单
			
			for(int i=1;i<=3;i++){//依次输出菜品信息
				System.out.print(i+"\t");
				System.out.print(caiName[i-1]+"\t"+" ");
				System.out.print(price[i-1]+"元"+"\t");
				if(zanNumber[i-1]!=0){//如果点赞数组不为空,输出菜品的点赞数
					System.out.print(zanNumber[i-1]+"赞");
				}
				System.out.println();
			}
			
				System.out.print("请选择您要点的菜品编号:");
				int NO = sc.nextInt();
				System.out.print("请选择您需要的份数:");
				int amount = sc.nextInt();
				int time = -1;
				do{
				System.out.print("请输入送餐时间(送餐时间是10点至20点整点):");
				time = sc.nextInt();
				if(time>20||time<10){
					System.out.println("您的输入有误,请输入10~20之间的整数!");
					continue;
				}else{
					break;
				}
				}while(true);
				System.out.print("请输入送餐地址:");
				String addr = sc.next();
				System.out.println("订餐成功!");
				
				//当订餐成功了,在餐袋的数组里面添加新的数据*******2
				orderName = Arrays.copyOf(orderName, orderName.length+1);
				orderName[orderName.length-1]=name;//添加点餐人信息
				diancaiName = Arrays.copyOf(diancaiName, diancaiName.length+1);
				diancaiName[diancaiName.length-1]=caiName[NO-1];//添加菜名信息
				orderAmount = Arrays.copyOf(orderAmount, orderAmount.length+1);
				orderAmount[orderAmount.length-1]=amount;//添加点餐的份数
				orderDate = Arrays.copyOf(orderDate, orderDate.length+1);
				orderDate[orderDate.length-1]=15;//添加送餐日期,不知道怎么调用当前日期???
				sumAddr = Arrays.copyOf(sumAddr, sumAddr.length+1);
				sumAddr[sumAddr.length-1]=addr;//添加送餐地址
				//****************2
				
				System.out.println("您定的是: "+caiName[NO-1]+amount+"份");
				System.out.println("送餐时间: "+time+"点");
				double sumPrice = price[NO-1]*amount;//餐费等于单价乘以份数
				int sumDidi = -1;
				if((int)((price[NO-1]*amount/50))*2<=6){
				sumDidi = (6-(int)((price[NO-1]*amount/50))*2);//送餐费最多6块,每多20减2块
				}else{
					sumDidi = 0;
				}
				//*****2
				allPrice = Arrays.copyOf(allPrice, allPrice.length+1);
				allPrice[allPrice.length-1]=sumPrice+sumDidi;//添加总金额
				caiState = Arrays.copyOf(caiState, caiState.length+1);
				caiState[caiState.length-1]="已预订";//添加送餐状态
				//*****2
				System.out.println("餐费: "+sumPrice+"元, 送餐费"+sumDidi+"元, "+"总计: "+(sumPrice+sumDidi)+"元.");
				System.out.println("输入0返回:");
				back = sc.nextInt();
			break;
		case 2:
			System.out.println("2.***查看餐袋***");
			System.out.println("序号\t订餐人\t餐品信息\t\t送餐日期\t\t送餐地址\t\t总金额\t\t送餐状态");
			for(int i =1;i<=orderName.length;i++){
				System.out.print(i+"\t");//序号
				System.out.print(orderName[i-1]+"\t");//订餐人
				System.out.print(diancaiName[i-1]+orderAmount[i-1]+"份"+"\t");//餐品信息
				System.out.print(orderDate[i-1]+"日"+"\t\t");//送餐日期
				System.out.print(sumAddr[i-1]+"\t\t");//送餐地址
				System.out.print(allPrice[i-1]+"元"+"\t\t");//总金额
				System.out.print(caiState[i-1]);//送餐状态
				System.out.println();
			}
			System.out.println("输入0返回:");
			back = sc.nextInt();
			break;
			
		case 3://签收订单,将输入编号的送餐状态更改为"已完成"
			System.out.println("3.***签收订单***");
			System.out.print("请选择您要签收的订单序号:");
			int numberOrder = sc.nextInt();
			caiState[numberOrder-1] = "已完成";
			System.out.println("订单签收成功!");
			System.out.println("输入0返回:");
			back = sc.nextInt();
			break;
			
		case 4://删除订单,将要删除的数据跟最后一个数据调换位置,再将数组缩容1
			System.out.println("4.***删除订单***");
			System.out.println("请输入您要删除的订单编号:");
			int delNumber = sc.nextInt();
			String  temp = orderName[delNumber-1];//删掉订餐人
			orderName[delNumber-1] = orderName[orderName.length-1];
			orderName[orderName.length-1] = temp;
			orderName = Arrays.copyOf(orderName,orderName.length-1 );
			
			String  temp1 = diancaiName[delNumber-1];//删掉订餐信息
			diancaiName[delNumber-1] = diancaiName[diancaiName.length-1];
			diancaiName[diancaiName.length-1] = temp1;
			diancaiName = Arrays.copyOf(diancaiName,diancaiName.length-1 );
			
			int  temp2 = orderAmount[delNumber-1];//删掉餐品的份数
			orderAmount[delNumber-1] = orderAmount[orderAmount.length-1];
			orderAmount[orderAmount.length-1] = temp2;
			orderAmount = Arrays.copyOf(orderAmount,orderAmount.length-1 );
			
			orderDate = Arrays.copyOf(orderDate,orderDate.length-1 );//删掉订餐日期
			
			String temp3 = sumAddr[delNumber-1];//删掉送餐地址
			sumAddr[delNumber-1] = sumAddr[sumAddr.length-1];
			sumAddr[sumAddr.length-1] = temp3;
			sumAddr = Arrays.copyOf(sumAddr,sumAddr.length-1 );
			
			double temp4 = allPrice[delNumber-1];//删掉总金额
			allPrice[delNumber-1] = allPrice[allPrice.length-1];
			allPrice[allPrice.length-1] = temp4;
			allPrice = Arrays.copyOf(allPrice,allPrice.length-1 );
			
			String temp5 = caiState[delNumber-1];//删掉送餐状态
			caiState[delNumber-1] = caiState[caiState.length-1];
			caiState[caiState.length-1] = temp5;
			caiState = Arrays.copyOf(caiState,caiState.length-1 );
			
			System.out.println("您已经成功删除第"+delNumber+"次订单信息!!");
			System.out.println("输入0返回:");
			back = sc.nextInt();
			break;
			
		case 5://我要点赞,输入要点赞的菜品编号,给点赞数组中的相应菜品点赞数+1
			System.out.println("5.***我要点赞***");
			System.out.print("请输入您要点赞的订单编号:");
			int zan = sc.nextInt();
			zanNumber[zan-1]++;
			System.out.println("点赞成功!您真是独具慧眼!");
			System.out.println("输入0返回:");
			back = sc.nextInt();
			break;
		
		case 6://退出系统
			System.out.println("谢谢使用,欢迎下次光临!");
			return;
			
		default:
			System.out.println("请重新输入(只能输入1~6之间的整数)!!!");
			back =0;
		}
		}while(back==0);
		System.out.println("大侠请重新再来吧!");//没有输入0
		sc.close();//不喜欢小黄线
	}
}

项目小结:这个项目品信息都存储在数组中,我们要做得就是在控制台输入一些信息,然后将这些信息输出,并且保存到数组中,以便下次输出餐品信息的时候信息已经进行了更改.其中涉及到了数组的扩容和缩容.大的框架就是一些分支结构和循环语句,把大的框架写好,再一点点的添加功能就行了,只要思路清晰,就很流畅的写出来了.这次项目也让我对数据库有了一点期待,因为这个用数组代替数据库的功能不但存储的内容十分的有限,输出的方式也非常笨,数据库中的数据是一条一条的,关于这个餐品的信息都写在一起,可以以表格的形式输出,非常方便.希望以后学了数据库之后能把这个项目的后台用数据库连接起来,前台用前端做一个点餐界面,,这样就是一个真正有实用价值的项目了.

发现一个好用的功能,刚刚写完去看大佬的写的才发现没用驼峰命名法,百度了一下,按ctrl+F就能替换变量名,还是要养成好习惯才行.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值