第一个项目实训:吃货联盟

系统的概要:

 

public class eatClub {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
         String[] dishes={"酸菜鱼","红烧鱼","溜肥肠","番茄蛋"};
         int[] prices={68,88,34,19};
         int[] honor=new int [dishes.length];
         String[][] bills=new String[400][2];
        int chose=-1;
        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("请选择:");
            chose=input.nextInt();
            switch (chose){
                case 1:
                    System.out.println("***我要订餐***");
                    System.out.println("请输入姓名:");
                    String name=input.next();
                    System.out.println("序号\t菜品名\t单价\t点赞数");
                    for(int i=0;i<dishes.length;i++){
                        System.out.println(i+1+"\t"+dishes[i]+"\t"+prices[i]+
                                "\t"+honor[i]);
                    }
                    System.out.print("请输入您要点的菜品:");
                    int num=input.nextInt();
                    System.out.print("请输入份数:");
                    int pcs=input.nextInt();
                    int time;
                    do{
                        System.out.print("请输入送餐时间(10-20点整送餐:):");
                        time=input.nextInt();
                        if(time<10||time>20)
                        {
                            System.out.println("送餐时间不对,请重新输入!");
                        }
                    }while (time<10||time>20);
                    System.out.println("请输入您的地址");
                    String address=input.next();
                    int total=prices[num-1]*pcs;
                    int sendPrice=total>50?0:6;
                    total=total+sendPrice;
                    System.out.println("订餐成功,尊敬的客户"+name+",您已点"+dishes[num-1]+" "
                            +pcs+"份,总价格为:"+total);
                    for(int i=0;i<bills.length;i++)
                    {
                        if(bills[i][0]==null)
                        {
                            bills[i][0]=name+"\t"+dishes[num-1]+"\t"+pcs+"\t"+total+"元";
                            bills[i][1]="已预定";
                            break;
                        }
                    }
                    break;
                case 2:
                    System.out.println("***查看菜单***");
                    System.out.println("序号\t姓名\t菜品名\t份数\t时间\t地址\t总价\t状态");
                    for(int i=0;i<bills.length;i++)
                    {
                        if (bills[i][0]==null){
                            break;
                        }
                        System.out.println(i+1+"\t"+bills[i][0]+"\t"+bills[i][1]);
                    }
                    break;
                case 3:
                    System.out.println("***签收订单***");
                    System.out.println("序号\t姓名\t菜品名\t份数\t时间\t地址\t总价\t状态");
                    for (int i = 0; i < bills.length; i++) {
                        if(bills[i][0]==null)
                        {break;}
                        if(!bills[i][1].equals("已预定"))continue;
                        System.out.println(i+1+"\t"+bills[i][0]+"\t"+bills[i][1]);
                    }
                    System.out.print("请选择要签收的订单:");
                    int checkNum=input.nextInt();
                    if(checkNum<1||checkNum>bills.length)
                    {
                        System.out.println("选择错误!");
                    }else if(bills[checkNum-1][1]==null){
                        System.out.println("选择的订单为空,不可选择");}
                        else if(!bills[checkNum-1][1].equals("已预定")){
                        System.out.println("订单已被签收,不可以重复签收!");
                    }else {bills[checkNum-1][1]="已完成";
                        System.out.println("签收完成!!");}
                    break;
                case 4:
                    System.out.println("***删除订单***");
                    System.out.print("请输入要删除的已完成订单:");
                    int delNum=input.nextInt();
                    if(delNum<1||delNum>bills.length)
                    {
                        System.out.println("选择错误");
                    }else if(null==bills[delNum-1][0])
                    {
                        System.out.println("订单不存在");
                    }else if(!"已完成".equals(bills[delNum-1][1]))
                    {
                        System.out.println("不是已完成的订单,无法删除");
                    }else {
                        for(int i=delNum-1;i<bills.length;i++)
                        {
                            bills[i][0]=bills[i+1][0];
                            bills[i][1]=bills[i+1][1];
                            //bills[i]=bills[i+1]; 传递的是地址,会出现点单双份的现象
                            if(bills[i][0]==null){
                                System.out.println("删除成功");
                                break;
                            }
                        }
                    }
                    break;
                case 5:
                    System.out.println("***我要点赞***");
                    System.out.println("序号\t菜品名\t单价\t点赞数");
                    for (int i = 0; i < dishes.length; i++) {
                        System.out.println(i+1+""+dishes[i]+""+prices[i]
                        +""+honor[i]);
                    }
                    System.out.print("请输入要点赞的菜品序号:");
                    int honorNum=input.nextInt();
                    if(honorNum<1||honorNum>dishes.length)
                    {
                        System.out.println("输入错误!!");
                    }else {
                        honor[honorNum-1]++;
                        System.out.println("点赞成功,"+dishes[honorNum-1]+"已有"
                                +honor[honorNum-1]+"点赞!!");
                    }
                    break;
                case 6:
                    System.out.println("***退出系统***");
                    break;
                    default:
                        System.out.println("您选择错误,请重新选择!!!");
            }
            if(chose<1||chose>5)
            {continue;}
            System.out.print("输入0返回:");
            int back =input.nextInt();
            if(back!=0)
            {
                System.out.println("输入有误,退出系统");
                break;
            }
        }while(chose!=6);
        System.out.println("感谢您的惠顾,欢迎下次使用!!");
    }

以上是代码的实现.

下面我们来分析一下这个项目。

1、首先拿到这个项目,我们可以看到是六个等值的框架,do...while语句中加switch来编写,我们可以把框架先做好。

 

2、框架做好后,我们就可以按照switch中分好的模块一个个做,首先是我要点餐。分析一下,点餐要用到哪些变量,比如姓名、菜品名(数量以及价格)、配送时间(超过范围送不了)、配送费(低于50元,有6元配送费)、配送地址以及打印结果 

 

 2、查看订单。只要订单信息不为空,就打印出来

 

3、签收订单。可分为以下几种情况:超出订单序号 、订单已经被签收、订单为空、签收完成

 

4、删除已完成的订单。删除和签收差不多,唯一要注意的是删除时,如果时中间的一个数,下面的序号要自动上移 

      bills[i][0]=bills[i+1][0];
      bills[i][1]=bills[i+1][1];
    //bills[i]=bills[i+1]; 传递的是地址,会出现点单双份的现象

 5.点赞

6、退出系统就简单了。

总结:主要是分析全项目的每一个条件,才能更好的完善 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yy64ll826

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值