Java学习第8天,今天是使用已学知识做的小练习(吃货联盟订餐系统)

1.需要模拟的功能

我要订餐
查看餐袋
签收订单
删除订单
我要点赞
退出系统

2.创建需要模拟的数据,使用数组

        String[] nameArray = new String[4];//订餐人的姓名
        String[] dishMegArray = new String[4];//所选菜品信息
        int[] timeArray = new int[4];//送餐时间
        String[] addressesArray = new String[4];//送餐地址
        int[] statesArray = new int[4];//订单状态0:已预订 1:已完成
        double[] sumPriceArray = new double[4];//订单总金额

3.对数据进行初始化(作为对比数据)

        //初始化第一个订单
        nameArray[0] = "张晴";
        dishMegArray[0] = "红烧带鱼 2份";
        timeArray[0] = 12;
        addressesArray[0] = "天成路207号";
        statesArray[0] = 1;
        sumPriceArray[0] = 76.0;

        //初始化第二个订单
        nameArray[1] = "张晴";
        dishMegArray[1] = "鱼香肉丝 2份";
        timeArray[1] = 18;
        addressesArray[1] = "天成路207号";
        statesArray[1] = 0;
        sumPriceArray[1] = 45.0;

4.创建菜品信息

        String[] dishNameArray = {"红烧带鱼","鱼香肉丝","时令蔬菜"};//菜品种类
        double[] priceArray = {38.0,20.0,10.0};//菜品单价
        int[] praiseArray = new int[3];//菜品点赞数

5.先写大体的框架

System.out.println("欢迎使用吃货联盟订餐系统");


        //主菜单        


            switch (num){
                case 1:
                    //我要订餐

                    break;

                case 2:
                    //查看餐袋
                    
                    break;

                case 3:
                    //签收订单
                    
                    break;

                case 4:
                    //删除订单                    

                    break;

                case 5:
                    //我要点餐
                    
                    break;

                case 6:
                    //退出订单
                    
                    break;

6.主菜单

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.println("请选择:");
            num = sc.nextInt();//用户输入不同的数字
            for (;num >6 || num < 0;){//判断用户输入数字是否合法
                System.out.println("输入有误,请重新输入");
                num = sc.nextInt();//用户输入不同的数字

7.我要订餐

创建新的元素,将新的元素赋进数组内

System.out.println("********我要订餐********");
                    boolean isAdd = false;//定义一个布尔变量,初始值为false,用于判断是否符合订餐条件
                    //定义一个“i”,使i小于数组nameArray的长度,并且自增,用来寻找数组中每一个元素
                    for (int i = 0;i < nameArray.length;i++){
                        if (nameArray[i] == null){//当nameArray数组为空时才可以订餐
                            isAdd = true;//判断为true,可以订餐
                            System.out.println("请输入订餐人姓名:");
                            String name = sc.next();
                            //显示菜品信息
                            System.out.println("序号\t\t菜名\t\t单价\t\t点赞数");
                            //定义一个“i”,使i小于数组dishNameArray的长度,并且自增,用来寻找数组中每一个元素
                            for (int j = 0;j < dishNameArray.length;j++){
                                //打印可选择菜品
                                System.out.println((j + 1) + "\t\t" + dishNameArray[j] + "\t" + priceArray[j] +
                                        "\t" + praiseArray[j]);
                            }
                            System.out.println("请输入您要点的菜品编号:");
                            int serial = sc.nextInt();
                            for (;serial > 3 || serial < 1;){
                                System.out.println("输入有误,请重新输入");
                                serial = sc.nextInt();
                            }
                            System.out.println("请输入您需要的分数:");
                            int additional = sc.nextInt();
                            for (;additional < 1;){
                                System.out.println("输入有误,请重新输入");
                                additional = sc.nextInt();
                            }
                            //定义一个变量,接收所点菜品信息
                            String dishMeg = dishNameArray[serial - 1] + " " + additional + "份";
                            //定义一个变量,接收总金额
                            double sumprice = priceArray[serial -1] * additional;
                            //满50减6
                            double send = (sumprice >= 50)? 0:6;
                            System.out.println("请输入送餐时间:(10到20点整送餐)");
                            int time = sc.nextInt();
                            for (;time < 10 || time > 20;){
                                System.out.println("输入有误,请输入10——20之内的整数");
                                timeArray[i] = sc.nextInt();
                            }
                            System.out.println("请输入送餐地址:");
                            String addresses = sc.next();
                            System.out.println("订餐成功!");
                            System.out.println("******************************");
                            System.out.println("您的姓名:" + name);
                            System.out.println("您订的是" + dishMeg);
                            System.out.println("送餐时间" + time);
                            System.out.println("送餐地址:" + addresses);
                            System.out.println("餐费:" + sumprice + ",送餐费:" + send + "总计:" + (sumprice + send));
                            //添加数据
                            nameArray[i] = name;
                            dishMegArray[i] = dishMeg;
                            timeArray[i] = time;
                            addressesArray[i] = addresses;
                            sumPriceArray[i] = sumprice + send;
                            break;
                        }
                    }
                    if (!isAdd){
                        System.out.println("您的餐袋已满,,无法继续订餐!");
                    }

8.查看餐袋

查看餐袋就是查看数组内所有元素

System.out.println("********查看餐袋********");
                    System.out.println("序号\t订餐人\t餐品信息\t\t送餐日期\t送餐地址\t\t\t总金额\t\t订单状态");
                    //定义一个“i”,使i小于数组nameArray的长度,并且自增,用来寻找数组中每一个元素
                    for (int i = 0;i < nameArray.length;i++){
                        if (nameArray[i] != null){
                            //遍历这6个数组
                            System.out.println((i + 1) + "\t" + nameArray[i] + "\t\t" + dishMegArray[i] + "\t" +
                                    timeArray[i] + "\t\t" + addressesArray[i] + "\t\t" + sumPriceArray[i] + "\t\t" +
                                    statesArray[i]);
                        }
                    }

9.签收订单

对数组状态的重新赋值

System.out.println("********签收订单********");
                    System.out.println("请选择要签收的订单序号:");
                    //定义一个变量表示序号,从键盘输入
                    int serialNumber = sc.nextInt();
                    boolean select = true;//定义一个布尔变量,初始值为true
                    //定义一个“i”,使i小于数组nameArray的长度,并且自增,用来寻找数组中每一个元素
                    for (int i = 0;i < nameArray.length;i++){
                        //遍历nameArray和statesArray数组
                        if (nameArray[i] != null && statesArray[i] == 0 && serialNumber == i + 1){
                            statesArray[i] = 1;//将数组状态重新赋值,赋值为已签收
                            System.out.println("订单签收成功");
                            select = false;//标记此次订单
                        }else if (nameArray[i] != null && statesArray[i] == 1 && serialNumber == i + 1){
                            System.out.println("订单已签收完成,不能重复签收!!!");
                            select = false;//标记此次订单
                        }
                    }
                    if (select){
                        System.out.println("您的订单不存在!!!");
                    }

10.删除订单

对数组内特定下标的元素赋值为null,并将后一个元素赋值给前一个元素

System.out.println("********删除订单********");
                    boolean isfind = false;//定义一个布尔变量,初始值为true
                    System.out.println("请输入要删除的订单编号:");
                    int delld = sc.nextInt();
                    //定义一个“i”,使i小于数组nameArray的长度,并且自增,用来寻找数组中每一个元素
                    for (int i = 0;i < nameArray.length;i++){
                        if (nameArray[i] != null && statesArray[i] == 1 && delld == i + 1){
                            isfind = true;//找到符合if内条件的订单
                            for (int j = delld - 1;j < nameArray.length -1;j++){
                                //将所有数组的后一位赋值给上一位,删除操作
                                nameArray[j] = nameArray[j + 1];
                                dishMegArray[j] = dishMegArray[j + 1];
                                timeArray[j] = timeArray[j + 1];
                                addressesArray[j] = addressesArray[j + 1];
                                statesArray[j] = statesArray[j + 1];
                                sumPriceArray[j] = sumPriceArray[j + 1];
                            }
                            //将最后一位赋值为变量end
                            int end = nameArray.length - 1;
                            //将0和null赋值给变量end,删除成功
                            nameArray[end] = null;
                            dishMegArray[end] = null;
                            timeArray[end] = 0;
                            addressesArray[end] = null;
                            statesArray[end] = 0;
                            sumPriceArray[end] = 0;
                            System.out.println("删除成功");
                            break;
                        }else if (nameArray[i] != null && statesArray[i] == 0 && delld == i + 1){
                            System.out.println("未签收不能删除");
                            isfind = true;//找到符合else if内条件的订单
                            break;
                        }
                    }
                    if (!isfind){
                        System.out.println("未找到订单");
                    }

11.我要点赞

对数组内特定下标所对应元素的替换

System.out.println("********我要点赞********");
                    System.out.println("序号\t\t菜名\t\t单价\t\t点赞数");
                    for (int i = 0;i < dishNameArray.length;i++){
                    //定义一个“i”,使i小于数组dishNameArray的长度,并且自增,用来寻找数组中每一个元素
                        System.out.println((i + 1) + "\t\t" + dishNameArray[i] + "\t" + priceArray[i] +
                                "\t" + praiseArray[i]);
                    }
                    System.out.println("请输入您要点餐的菜品编号:");
                    int digital = sc.nextInt();
                    if (digital < 1 || digital > 4){
                        System.out.println("您的输入有误,请输入餐袋内已有编号");
                    }
                    //使此数组的元素自增,来表示每次点赞数加1
                    praiseArray[digital - 1]++;
                    System.out.println("点赞成功");

12.实现每一级菜单都可返回主菜单

在开头实现键盘录入,在每一级菜单中加入对于是否为0的判断,最后使用do-while来撑起整个结构。

Scanner sc = new Scanner(System.in);//用户可从键盘输入
        int num = -1;//定义一个数字,等于0时返回一级菜单
        
            
            
                    System.out.println("输入0返回");
                    num = sc.nextInt();//返回一级菜单
                    for (;num != 0;){
                        System.out.println("输入有误,请重新输入");
                        num = sc.nextInt();


                   
        while (num == 0);
    

13.整体代码

package cn.blue;

import java.util.Scanner;

/**
 * @authorDesc 诸神在上,佑我程序,玄功护体,BUG皆去!
 * @author Xunan
 * @date 2022-07-16 13:50:55
 * @version 1.0.0
 * @description 网上订餐系统(模拟)
 */
public class Version {
    /**
     * @description 功能如下:
     * 我要订餐
     * 查看餐袋
     * 签收订单
     * 删除订单
     * 我要点赞
     * 退出系统
     * @author Xunan
     * @date 2022-07-16 13:51:07
     * @param args
     * @return
     */
    public static void main(String[] args) {
        //创建一组数组,保存订单的信息
        String[] nameArray = new String[4];//订餐人的姓名
        String[] dishMegArray = new String[4];//所选菜品信息
        int[] timeArray = new int[4];//送餐时间
        String[] addressesArray = new String[4];//送餐地址
        int[] statesArray = new int[4];//订单状态0:已预订 1:已完成
        double[] sumPriceArray = new double[4];//订单总金额

        //初始化第一个订单
        nameArray[0] = "张晴";
        dishMegArray[0] = "红烧带鱼 2份";
        timeArray[0] = 12;
        addressesArray[0] = "天成路207号";
        statesArray[0] = 1;
        sumPriceArray[0] = 76.0;

        //初始化第二个订单
        nameArray[1] = "张晴";
        dishMegArray[1] = "鱼香肉丝 2份";
        timeArray[1] = 18;
        addressesArray[1] = "天成路207号";
        statesArray[1] = 0;
        sumPriceArray[1] = 45.0;

        //创建菜品信息数组
        String[] dishNameArray = {"红烧带鱼","鱼香肉丝","时令蔬菜"};//菜品种类
        double[] priceArray = {38.0,20.0,10.0};//菜品单价
        int[] praiseArray = new int[3];//菜品点赞数

        System.out.println("欢迎使用吃货联盟订餐系统");
        Scanner sc = new Scanner(System.in);//用户可从键盘输入
        int num = -1;//定义一个数字,等于0时返回一级菜单
        do {
            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.println("请选择:");
            num = sc.nextInt();//用户输入不同的数字
            for (;num >6 || num < 0;){//判断用户输入数字是否合法
                System.out.println("输入有误,请重新输入");
                num = sc.nextInt();//用户输入不同的数字
            }
            switch (num){
                case 1:
                    System.out.println("********我要订餐********");
                    boolean isAdd = false;//定义一个布尔变量,初始值为false,用于判断是否符合订餐条件
                    //定义一个“i”,使i小于数组nameArray的长度,并且自增,用来寻找数组中每一个元素
                    for (int i = 0;i < nameArray.length;i++){
                        if (nameArray[i] == null){//当nameArray数组为空时才可以订餐
                            isAdd = true;//判断为true,可以订餐
                            System.out.println("请输入订餐人姓名:");
                            String name = sc.next();
                            //显示菜品信息
                            System.out.println("序号\t\t菜名\t\t单价\t\t点赞数");
                            //定义一个“i”,使i小于数组dishNameArray的长度,并且自增,用来寻找数组中每一个元素
                            for (int j = 0;j < dishNameArray.length;j++){
                                //打印可选择菜品
                                System.out.println((j + 1) + "\t\t" + dishNameArray[j] + "\t" + priceArray[j] +
                                        "\t" + praiseArray[j]);
                            }
                            System.out.println("请输入您要点的菜品编号:");
                            int serial = sc.nextInt();
                            for (;serial > 3 || serial < 1;){
                                System.out.println("输入有误,请重新输入");
                                serial = sc.nextInt();
                            }
                            System.out.println("请输入您需要的分数:");
                            int additional = sc.nextInt();
                            for (;additional < 1;){
                                System.out.println("输入有误,请重新输入");
                                additional = sc.nextInt();
                            }
                            //定义一个变量,接收所点菜品信息
                            String dishMeg = dishNameArray[serial - 1] + " " + additional + "份";
                            //定义一个变量,接收总金额
                            double sumprice = priceArray[serial -1] * additional;
                            //满50减6
                            double send = (sumprice >= 50)? 0:6;
                            System.out.println("请输入送餐时间:(10到20点整送餐)");
                            int time = sc.nextInt();
                            for (;time < 10 || time > 20;){
                                System.out.println("输入有误,请输入10——20之内的整数");
                                timeArray[i] = sc.nextInt();
                            }
                            System.out.println("请输入送餐地址:");
                            String addresses = sc.next();
                            System.out.println("订餐成功!");
                            System.out.println("******************************");
                            System.out.println("您的姓名:" + name);
                            System.out.println("您订的是" + dishMeg);
                            System.out.println("送餐时间" + time);
                            System.out.println("送餐地址:" + addresses);
                            System.out.println("餐费:" + sumprice + ",送餐费:" + send + "总计:" + (sumprice + send));
                            //添加数据
                            nameArray[i] = name;
                            dishMegArray[i] = dishMeg;
                            timeArray[i] = time;
                            addressesArray[i] = addresses;
                            sumPriceArray[i] = sumprice + send;
                            break;
                        }
                    }
                    if (!isAdd){
                        System.out.println("您的餐袋已满,,无法继续订餐!");
                    }
                    System.out.println("输入0返回");
                    num = sc.nextInt();//返回一级菜单
                    for (;num != 0;){
                        System.out.println("输入有误,请重新输入");
                        num = sc.nextInt();
                    }
                    break;

                case 2:
                    System.out.println("********查看餐袋********");
                    System.out.println("序号\t订餐人\t餐品信息\t\t送餐日期\t送餐地址\t\t\t总金额\t\t订单状态");
                    //定义一个“i”,使i小于数组nameArray的长度,并且自增,用来寻找数组中每一个元素
                    for (int i = 0;i < nameArray.length;i++){
                        if (nameArray[i] != null){
                            //遍历这6个数组
                            System.out.println((i + 1) + "\t" + nameArray[i] + "\t\t" + dishMegArray[i] + "\t" +
                                    timeArray[i] + "\t\t" + addressesArray[i] + "\t\t" + sumPriceArray[i] + "\t\t" +
                                    statesArray[i]);
                        }
                    }
                    System.out.println("输入0返回");
                    num = sc.nextInt();//返回一级菜单
                    for (;num != 0;){
                        System.out.println("输入有误,请重新输入");
                        num = sc.nextInt();
                    }
                    break;

                case 3:
                    System.out.println("********签收订单********");
                    System.out.println("请选择要签收的订单序号:");
                    //定义一个变量表示序号,从键盘输入
                    int serialNumber = sc.nextInt();
                    boolean select = true;//定义一个布尔变量,初始值为true
                    //定义一个“i”,使i小于数组nameArray的长度,并且自增,用来寻找数组中每一个元素
                    for (int i = 0;i < nameArray.length;i++){
                        //遍历nameArray和statesArray数组
                        if (nameArray[i] != null && statesArray[i] == 0 && serialNumber == i + 1){
                            statesArray[i] = 1;//将数组状态重新赋值,赋值为已签收
                            System.out.println("订单签收成功");
                            select = false;//标记此次订单
                        }else if (nameArray[i] != null && statesArray[i] == 1 && serialNumber == i + 1){
                            System.out.println("订单已签收完成,不能重复签收!!!");
                            select = false;//标记此次订单
                        }
                    }
                    if (select){
                        System.out.println("您的订单不存在!!!");
                    }
                    System.out.println("输入0返回");
                    num = sc.nextInt();
                    for (;num != 0;){//返回一级菜单
                        System.out.println("输入有误,请重新输入");
                        num = sc.nextInt();
                    }
                    break;

                case 4:
                    System.out.println("********删除订单********");
                    boolean isfind = false;//定义一个布尔变量,初始值为true
                    System.out.println("请输入要删除的订单编号:");
                    int delld = sc.nextInt();
                    //定义一个“i”,使i小于数组nameArray的长度,并且自增,用来寻找数组中每一个元素
                    for (int i = 0;i < nameArray.length;i++){
                        if (nameArray[i] != null && statesArray[i] == 1 && delld == i + 1){
                            isfind = true;//找到符合if内条件的订单
                            for (int j = delld - 1;j < nameArray.length -1;j++){
                                //将所有数组的后一位赋值给上一位,删除操作
                                nameArray[j] = nameArray[j + 1];
                                dishMegArray[j] = dishMegArray[j + 1];
                                timeArray[j] = timeArray[j + 1];
                                addressesArray[j] = addressesArray[j + 1];
                                statesArray[j] = statesArray[j + 1];
                                sumPriceArray[j] = sumPriceArray[j + 1];
                            }
                            //将最后一位赋值为变量end
                            int end = nameArray.length - 1;
                            //将0和null赋值给变量end,删除成功
                            nameArray[end] = null;
                            dishMegArray[end] = null;
                            timeArray[end] = 0;
                            addressesArray[end] = null;
                            statesArray[end] = 0;
                            sumPriceArray[end] = 0;
                            System.out.println("删除成功");
                            break;
                        }else if (nameArray[i] != null && statesArray[i] == 0 && delld == i + 1){
                            System.out.println("未签收不能删除");
                            isfind = true;//找到符合else if内条件的订单
                            break;
                        }
                    }
                    if (!isfind){
                        System.out.println("未找到订单");
                    }
                    System.out.println("输入0返回");
                    num = sc.nextInt();
                    for (;num != 0;){//返回一级菜单
                        System.out.println("输入有误,请重新输入");
                        num = sc.nextInt();
                    }
                    break;

                case 5:
                    System.out.println("********我要点赞********");
                    System.out.println("序号\t\t菜名\t\t单价\t\t点赞数");
                    for (int i = 0;i < dishNameArray.length;i++){
                    //定义一个“i”,使i小于数组dishNameArray的长度,并且自增,用来寻找数组中每一个元素
                        System.out.println((i + 1) + "\t\t" + dishNameArray[i] + "\t" + priceArray[i] +
                                "\t" + praiseArray[i]);
                    }
                    System.out.println("请输入您要点餐的菜品编号:");
                    int digital = sc.nextInt();
                    if (digital < 1 || digital > 4){
                        System.out.println("您的输入有误,请输入餐袋内已有编号");
                    }
                    //使此数组的元素自增,来表示每次点赞数加1
                    praiseArray[digital - 1]++;
                    System.out.println("点赞成功");
                    System.out.println("输入0返回");
                    num = sc.nextInt();//返回一级菜单
                    for (;num != 0;){
                        System.out.println("输入有误,请重新输入");
                        num = sc.nextInt();
                    }
                    break;

                case 6:
                    System.out.println("退出系统");
                    break;
            }
        }while (num == 0);
    }
}

个人运行没什么大问题,运行截图太多就不放了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

方片6

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

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

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

打赏作者

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

抵扣说明:

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

余额充值