java基础总结——吃货联盟项目实战

java基础总结——吃货联盟项目实战

一、业务逻辑

吃货联盟数据主体分析:
姓名:输入 String
餐品信息:序号、餐品名string、价格double、点赞数int
用3个一维数组实现
份数:输入 int 大于0的整数
时间:输入int 10~20点之间的整数
地址:输入 String

订单信息:String 二维数组
序号、姓名、餐品名、分数、价格(总价)、地址、时间、状态

签收订单:改变订单的状态 如果已完成则不能再次签收

删除订单:不能删除未完成的订单,序号要对应变动

我要点赞:对应菜品的点赞数++

程序控制分析:
1、欢迎页循环:do-while
2、Scanner控制输入

二、代码实现

package cn.kgc.kb11;
import java.util.Scanner;
public class MeiTuan {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int choose;
        String[] dishes={"清水牛肉","酸汤肥牛","剁椒鱼头","清炒菜心"};
        double[] prices={108,42,68,28};
        int[] honors={50,100,20,12};
        String[][] orders=new String[1024][];
        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("请选择:");
            choose=sc.nextInt();
            if(choose>0&&choose<6){
                switch(choose){
                    case 1:
                        System.out.println("******我要订餐******");
                        System.out.print("请输入订餐人姓名:");
                        String name=sc.next();
                        System.out.println("序号\t菜品\t\t单价\t\t点赞数");
                        for (int i = 0; i < dishes.length; i++) {
                                System.out.println(i+1+"\t"+dishes[i]+"\t"+prices[i]+"\t\t"+honors[i]+"次点赞");
                        }
                        int dishNum;
                        do{
                            System.out.print("请选择你要点的菜品编号:");
                            dishNum=sc.nextInt();
                            if(dishNum<1||dishNum>dishes.length) {
                                System.out.println("对不起,你的输入有误,请重新输入");
                            }
                        }while(dishNum<1||dishNum>dishes.length);
                        int pcs;
                        do{
                            System.out.print("请选择您需要的份数:");
                            pcs=sc.nextInt();
                            if(pcs<1) {
                            System.out.println("对不起,你的输入有误,请重新输入");
                            }
                        }while(pcs<1);
                        int time;
                        do{
                            System.out.print("请输入送餐时间(10点到20点整点):");
                            time=sc.nextInt();
                            if(time<10||time>20) {
                                System.out.println("对不起,你的输入有误,请重新输入");
                            }
                        }while(time<10||time>20);
                        System.out.print("请输入送餐地址:");
                        String address=sc.next();
                        System.out.println("订餐成功!!");
                        System.out.println("您定的是:"+dishes[dishNum-1]+"\t\t"+pcs+"份");
                        System.out.println("送餐时间点是:"+time+"点");
                        double cost=pcs*prices[dishNum-1];
                        double sent=cost>50?0:6;
                        System.out.println("餐费:"+cost+"元,送餐费"+sent+"元,总计:"+(cost+sent)+"元");
                        for (int i = 0; i < orders.length; i++) {
                            if(orders[i]==null){ //判断二位数组里原来有没有东西,如果为空,可以插入
                                orders[i]=new String[2]; //因为不知道二位数组的长度,所以用new
                                orders[i][0]=name+"\t"+dishes[dishNum-1]+" "+pcs+"份\t"+time+"点\t"+ address+"\t"+(cost+sent)+"元";
                                orders[i][1]="已预订";
                                break;   //插完元素就跳出去,不可以重复插入到整个数组中
                            }
                        }
                        break;
                    case 2:
                        System.out.println("******查看餐袋******");
                        System.out.println("序号\t订餐人\t餐品信息\t送餐日期\t送餐地址\t总金额\t\t订单状态");
                        for (int i = 0; i < orders.length; i++) {
                            if(orders[i]!=null){
                                System.out.println(i+1+"\t"+orders[i][0]+"\t\t"+orders[i][1]);
                            }else {
                                break;
                            }
                        }
                        break;
                    case 3:
                        System.out.println("******签收订单******");
                        System.out.println("序号\t订餐人\t餐品信息\t送餐日期\t送餐地址\t总金额\t\t订单状态");
                        for (int i = 0; i < orders.length; i++) {
                            if(orders[i]!=null){
                                System.out.println(i+1+"\t"+orders[i][0]+"\t\t"+orders[i][1]);
                            }else {
                                break;
                            }
                        }
                        int num=0;
                        int end=0;
                        do {
                            System.out.println("请选择要签收的订单序号:");
                            for (int i = 0; i < orders.length; i++) {
                                if(orders[i]==null) {
                                    end=i;
                                    break;  //遍历已经输入的订单,遇到空就知道跳出
                                }
                            }
                            num=sc.nextInt();
                            if(num<1||num>end){
                                System.out.println("输入有误,请重新输入!");
                            }else if(!"已预订".equals(orders[num-1][1])){
                                System.out.println("订单已签收,不能重复签收");
                            }else{
                                orders[num-1][1]="已完成";
                                break;
                            }
                        }while(num<1||num>end||!"已完成".equals(orders[num-1][1]));
                        break;
                    case 4:
                        System.out.println("******删除订单******");
                        System.out.println("序号\t订餐人\t餐品信息\t送餐日期\t送餐地址\t总金额\t\t订单状态");
                        for (int i = 0; i < orders.length; i++) {
                            if(orders[i]!=null){
                                System.out.println(i+1+"\t"+orders[i][0]+"\t\t"+orders[i][1]);
                            }else {
                                break;
                            }
                        }
                        int n=0;
                        int e=0;
                        do{
                            System.out.print("请输入要删除的订单序号");
                            for (int i = 0; i < orders.length; i++) {
                                if(orders[i]==null) {
                                    e=i;
                                    break;  //遍历已经输入的订单,遇到空就知道跳出
                                }
                            }
                            n=sc.nextInt();
                            boolean isDeleted=false;
                            if(n<1||n>e){
                                System.out.println("对不起,你的输入有误,请重新输入");
                            }else if(!"已完成".equals(orders[n-1][1])){
                                System.out.println("不能删除未完成的订单");
                            }else  {
                                boolean isDelete=true;
                                for (int i = n-1; i < orders[i].length; i++) {
                                    if(n-1==orders.length){
                                        orders[i]=null;
                                        isDelete=true;
                                    }else {
                                        orders[i]=orders[i+1];//前移
                                        if(orders[i]==null){
                                        isDelete=true;
                                        break;
                                        }
                                    }
                                }
                                if(isDeleted){
                                    break;
                                }
                            }
                        }while(n<1||n>e||!"已预订".equals(orders[n-1][1]));
                        break;
                    case 5:
                        System.out.println("******我要点赞******");
                        System.out.println("序号\t菜品\t\t单价\t\t点赞数");
                        for (int i = 0; i < dishes.length; i++) {
                            System.out.println(i+1+"\t"+dishes[i]+"\t"+prices[i]+"\t\t"+honors[i]+"次点赞");
                        }
                        int d;
                        do{
                            System.out.print("请选择你要点赞的菜品:");
                            d=sc.nextInt();
                            if(d<1||d>honors.length){
                                System.out.println("对不起,你的输入有误,请重新输入!");
                            }else{
                                honors[d-1]++;
                            }
                        }while(d<1||d>honors.length);
                        break;
                    default:
                }
                System.out.print("输入0返回主页:");
                choose=sc.nextInt();
            }else {
                break;
            }
        }while(choose==0);
        System.out.println("谢谢使用,欢迎下次光临!");
    }
}

三、实现效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值