文章目录

  • 吃货联盟订餐系统
  • 一、需求说明
  • 二、分析需求
  • 三、具体实施
  • 1、搭建框架
  • 2、制作导航页
  • 3、制作第一个功能项:我要订餐
  • 4、制作第二项-查看餐袋
  • 5、制作第三项-签收订单
  • 6、制作第四项删除订单
  • 7、制作第5项我要点赞
  • 结束语


吃货联盟订餐系统

一、需求说明

java吃货联盟订餐系统 java吃货联盟订餐系统问题_i++


java吃货联盟订餐系统 java吃货联盟订餐系统问题_System_02


java吃货联盟订餐系统 java吃货联盟订餐系统问题_二维数组_03

二、分析需求

根据上述需求,我们可以得知,运行的页面需要先展示出来,然后填入选择内容的数字,对应跳转到对应内容,且可以输入0返回开始的主菜单。根据之前所学内容,可以实现的方法有很多种,个人感觉采用do-while来实现比较合适,输入不同数字跳转不同功能项,可以用switch来实现。
姓名:输入String
餐品信息:序号、餐品名String、价格double、点赞数 int 可以用 3个一维数组来实现
份数:输入int 大于0的整数
时间:输入int 10~20点之间的整数
地址:输入String
订单信息:String 二维数组
序号、姓名、餐品名、份数、价格(总价)、地址、时间、状态
签收订单:改变订单的状态,如果已完成则不能再次签收
删除订单:不能删除未完成的订单,序号要对应变动
我要点赞:对应菜品点赞数++
以上分析完毕,试着开始分步实施

三、具体实施

1、搭建框架

先把最外层的do-while框架和switch搭建起来,并把菜品的名称、价格、点赞数以及存放后期信息的二维数组先初始化,如图所示:

public class test {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String caidan[]={"蒸羊羔","蒸熊掌","蒸鹿尾","烧花鸭"};
        double jiage[]={800,700,600,500};
        int dianzan[]={50,100,150,200};
        int xuanze;
        String xinxi[][]=new String[1024][];
        do {
            
            switch (xuanze){
                case 1:
                    
                    break;
                case 2:
                    break;
                case 3:
                    
                    break;
                case 4:
                    
                    break;
                case 5:
                    
                    break;
                    default:
            }
            if (xuanze>0&&xuanze<6){
                System.out.print("请输入0返回:");
                xuanze=sc.nextInt();
            }else {
                break;
            }
        }while (xuanze==0);
        System.out.println("谢谢使用,欢迎下次光临!");
    }
}

2、制作导航页

导航页相对比较简单,只是展示所有功能的序号以及名称

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("请选择:");
            xuanze=sc.nextInt();

3、制作第一个功能项:我要订餐

考虑好每一次输入数字说,如果不在范围内或者说不在选择项内的数字,需要返回提示,而不是直接结束,所有具体如下:

case 1:
                    System.out.print("请输入订餐的人数");
                    int renshu=sc.nextInt();
                    if (renshu<0){
                        System.out.print("订餐人数输入错误,请重新输入:");
                        break;
                    }//展示菜单
                    System.out.println("序号\t"+"菜品名称\t"+"价格\t");
                    for (int i = 0; i < caidan.length; i++) {
                        System.out.println(i+1+"\t"+caidan[i]+"\t"+jiage[i]);
                    }
                    int caihao;
                    do {
                        System.out.print("请输入序号选择菜品;");
                        caihao=sc.nextInt();
                        if (caihao<1||caihao>caidan.length){
                            System.out.println("输入错误,请重新输入");
                        }
                      }while (caihao<1||caihao>caidan.length);
                    int shuliang;
                    do {
                        System.out.print("请输入菜品份数;");
                        shuliang=sc.nextInt();
                        if (shuliang<0){
                            System.out.println("输入错误,请重新输入");
                        }
                    }while (shuliang<0);
                    int shijian;
                    do {
                        System.out.print("请输入送餐时间(10点~20点的整点):");
                        shijian=sc.nextInt();
                        if (shijian<10||shijian>21){
                            System.out.println("输入错误,请重新输入");
                        }
                    }while (shijian<10||shijian>21);
                    String dizhi;
                    System.out.print("请输入送餐地址:");
                    dizhi=sc.next();
                    System.out.println("订餐成功,您的订单信息如下:");
                    System.out.println("菜名为:"+caidan[caihao-1]+"\t"+"一共"+shuliang+"份");
                    System.out.println("送餐时间为:"+shijian+"点");
                    System.out.println("送餐地址为:"+dizhi);
                    double caiqian=jiage[caihao-1]*shuliang;
                    double yunfei=caiqian>50?0:6;
                    double zongjia=caiqian+yunfei;
                    System.out.println("餐费为:"+caiqian+"元,运费为"+yunfei+"元,总费用一共为:"+zongjia+"元");
                    for (int i = 0; i < xinxi.length; i++) {
                        if (xinxi[i]==null){
                            xinxi[i]=new String[2];
                            xinxi[i][0]=renshu+"\t"+caidan[caihao-1]+"\t"+shuliang+"份\t"+shijian+"点\t"+dizhi+
                                    "\t"+zongjia+"元";
                            xinxi[i][1]="已预定";
                            break;
                        }
                    }
                    break;

4、制作第二项-查看餐袋

该项内容只作为我要订餐内容的展示,所有比较容易就可以实现

case 2:
                    System.out.println("********查看餐袋");
                    System.out.println("序号\t订餐人\t餐品名称\t送餐时间\t送餐地址\t总金额\t订单状态");
                    for (int i = 0; i < xinxi.length; i++) {
                        if (xinxi[i]!=null){
                            System.out.println(i+1+"\t"+xinxi[i][0]+xinxi[i][1]);
                        }else {
                            break;
                        }
                    }
                    break;

5、制作第三项-签收订单

因为制作第二项时,已经将所有信息填入二维数组,所以签收订单只是修改数组中的,订单状态一栏的值就可以了,需要注意的地方是,订单状态为未签收时才可以签收,如果是已签收状态,则需要提示客户已经是已签收状态,不需要重复签收,如果客户输入的订单序号有错误,也需要反馈相关提示

case 3:
                    System.out.print("*******签收订单");
                    System.out.println("序号\t订餐人\t餐品名称\t送餐时间\t送餐地址\t总金额\t订单状态");
                    for (int i = 0; i < xinxi.length; i++) {
                        if (xinxi[i]!=null){
                            System.out.println(i+1+"\t"+xinxi[i][0]+xinxi[i][1]);
                        }else {
                            break;
                        }
                    }
                    int shuzi=0;
                    int jiewei=0;
                    do {
                        System.out.print("请输入要签收的订单号:");
                        for (int i = 0; i < xinxi.length; i++) {
                            if (xinxi[i]==null){
                                jiewei=i;
                                break;
                            }
                        }
                        shuzi=sc.nextInt();
                        if (shuzi<0||shuzi>jiewei){
                            System.out.print("输入错误,请重新输入");
                        }else if(!"已预定".equals(xinxi[shuzi-1][1])){
                            System.out.println("订单已签收,不能重复签收");
                        }
                        else {
                            xinxi[shuzi-1][1]="已签收";
                            System.out.println("签收成功!");
                            break;
                        }
                    }while (shuzi<0||shuzi>jiewei||!"已预定".equals(xinxi[shuzi-1][1]));
                    break;

6、制作第四项删除订单

这个内容其实是有一点难度的,因为不光要考虑输入的订单序号是否正常,还需要考虑,订单删除之后,其他的订单序号都需要依次变化,并且只能删除已签收的订单,如果订单状态是未签收,则需要提示不可以删除。

case 4:
                    System.out.println("******删除订单");
                    System.out.println("序号\t订餐人\t餐品信息\t送餐时间\t送餐地址\t总金额\t订单状态");
                    for (int i = 0; i < xinxi.length; i++) {
                        if (xinxi[i]!=null){
                            System.out.println(i+1+"\t"+xinxi[i][0]+xinxi[i][1]);
                        }else {
                            break;
                        }
                    }
                    int shanchu=0;
                    int jieshu=0;
                    do {System.out.print("请输入要删除的订单号:");
                        for (int i = 0; i < xinxi.length; i++) {
                            if (xinxi[i]==null){
                                jieshu=i;
                                break;
                            }
                        }
                        shanchu=sc.nextInt();
                        if (shanchu<0||shanchu>jieshu){
                            System.out.print("输入有误,请重新输入:");
                        }else if (!"已签收".equals(xinxi[shanchu-1][1])){
                            System.out.println("订单不是已签收状态,不能删除!");
                        }else {
                            boolean shan=false;
                            for (int i = 0; i < xinxi.length; i++) {
                                if (i==xinxi.length-1){
                                    xinxi[i]=null;
                                    shan=true;
                                    break;
                                }else {
                                    xinxi[i]=xinxi[i+1];
                                    if (xinxi[i]==null){
                                        shan=true;
                                        break;
                                    }
                                }
                            }if (shan){
                                break;
                            }
                        }
                    }while (shanchu<0||shanchu>jieshu||!"已签收".equals(xinxi[shanchu-1][1]));
                    break;

7、制作第5项我要点赞

该内容相对简单, 只是需要输入对应商品的需要,则该商品的点赞数对应增加就可以了

System.out.println("******我要点赞");
                    System.out.println("序号\t餐品名称\t点赞数量");
                    for (int i = 0; i < caidan.length; i++) {
                        if (caidan[i]!=null){
                            System.out.println(i+1+"\t"+caidan[i]+"\t"+dianzan[i]);
                        }else {
                            break;
                        }
                    }
                    int xuhao;
                    do{
                        System.out.print("请选择您要点赞的菜品编号:");
                        xuhao=sc.nextInt();
                        if (xuhao<1||xuhao>caidan.length){
                            System.out.println("对不起,输入有误,请重新输入:");
                        }
                    }while (xuhao<1||xuhao>caidan.length);
                    for (int i = 0; i < dianzan.length; i++) {
                        if (i==xuhao-1){
                            dianzan[i]+=1;
                            System.out.println("序号\t餐品名称\t点赞数");
                            for (int j = 0; j < caidan.length;j++) {
                                if (caidan[j]!=null){
                                    System.out.println(j+1+"\t"+caidan[j]+"\t"+dianzan[j]);
                                }else {
                                    break;
                                }
                            }
                        }
                    }
                    break;

结束语

以上内容写完后,该订餐系统就已经完成了,虽然说功能比较简单,页面比较粗糙,但是制作该系统也是对这段时间JAVA基础学习的一次总结和灵活运用。培养自己的逻辑思维和独立思考的能力,在项目前期可以将可能性尽可能多的列出来,然后在实施的过程中用对应的语句进行实现,在最后的测试过程中查漏补缺,尽可能的完善系统功能,精益求精。只有不断的努力,才能不断的进步。让我们一起努力。一起加油!!奥里给!!