北大青鸟,Java基础练习,S1结业项目:“吃货联盟点餐系统”

关于java的基础练习,可以更有效的来找到自己的不足之处,也可以锻炼自己的编程思想,这个吃货联盟系统包含了基础概念,变量、数据类型,也练习了顺序,选择,循环,跳转语句的编写编程的能力,最后还要求你会使用数组,操作字符串,会使用方法,并且会定义类、创建并使用对象

下面是我自己做的吃货联盟点餐系统,如有不好之处,望大家多多包涵,我还是个小白(狗头)

                        第一步先创建数组,用OrderingSet类来创建

package com.chihuolianmeng;

public class OrderingSet {
    String [] names = new String[4];     //保存订餐人名称
    String [] dishMegs =new String[4];  //保存所选信息,包括菜品名及份数
    int [] times =new int[4];           //保存送餐时间
    String [] addresses =new String[4]; //保存送餐地址
    int [] states =new int[4];          //保存订单状态,0 表示已预定,1 表示已完成
    double [] sumPrices =new double[4]; //保存订单的总金额
}

        第二步在类OrderingUtil中,创建OrderingSet类对象oSet,实现初始化数据的方法initia()

package com.chihuolianmeng;

import java.util.Scanner;

public class OrderingUtil {
     String [] dishNames ={"红烧带鱼","鱼香肉丝","时令鲜蔬"};      //菜单名称
     double [] prices =new double[]{38.0, 20.0,10.0};         //菜品单价
     int [] PraiseNums=new  int[3];                           //点赞数

    OrderingSet oSet =new OrderingSet();;

    public void initial(){
        //初始化第一条订单信息

        oSet.names[0] ="张晴";
        oSet.dishMegs[0]="红烧带鱼 2份";
        oSet.times[0] =12;
        oSet.addresses[0] ="天成路 2 0 7号";
        oSet.sumPrices [0] =76.0;
        oSet.states[0] =1;

        //初始化第二条订单信息

        oSet.names[1] ="张晴";
        oSet.dishMegs[1]="鱼香肉丝 2份";
        oSet.times[1] =18;
        oSet.addresses[1] ="天成路 2 0 7号";
        oSet.sumPrices [1] =45.0;
        oSet.states[1] =0;
    }

       

        第三步:创建系统住菜单,并写出实现6个实现的方法,用switch来进行选择

 public void startMenu(){
       OrderingUtil om =new OrderingUtil();
        Scanner input =new Scanner(System.in);
        int num =-1;        //用户输入 0 返回主菜单,否则退出系统
        boolean isExit =false;   //标志用户是否退出系统 :true退出系统
        System.out.println("\n欢迎使用”吃货联盟点餐系统 ");
        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("请选择-->");
            int choose =input.nextInt();  //记录用户选择的功能编号
            switch (choose){
                case 1:
                    //我要订餐
                    System.out.println("* * * * 我要订餐* * * * ");
                    add();

                    break;
                case 2:
                    //查看餐袋
                    System.out.println("* * * * 查看餐袋* * * * ");
                    display();
                    break;
                case 3:
                    //签收订单
                    System.out.println("* * * * 签收订单* * * * ");
                    sign();
                    break;
                case 4:
                    //删除订单
                    System.out.println("* * * * 删除订单* * * * ");
                    delete();
                    break;
                case 5:
                    //我要点赞
                    System.out.println("* * * * 我要点赞* * * * ");
                    praise();
                    break;
                case 6:
                    //退出系统
                    isExit =true;
                    System.out.println("* * * * 退出系统* * * * ");
                    break;
                default:
                    //退出系统
                    isExit =true;
                    break;
            }
            if(!isExit){
                System.out.println("输入 0 返回:");
                num =input.nextInt();

            }else {
                break;
            }
        }while (num ==0);



    }

    //参看餐袋
    public  void display(){
        System.out.println("序号\t 订餐人\t 餐品信息\t\t 送餐时间\t 送餐地址\t\t 总金额\t 订单状态");
        for (int i = 0; i < oSet.names.length; i++) {
            if(oSet.names[i] !=null){
                String state =(oSet.states[i]==0)? "已预定" :"已完成";
                String date =oSet.times[i]+"点";
                String sumPrice =oSet.sumPrices[i]+"元";
                System.out.println((i+1)+"\t"+oSet.names[i]+"\t"+oSet.dishMegs[i]+"\t"+date+"\t"+
                        oSet.addresses[i]+"\t"+sumPrice+"\t"+state);
            }

        }
    }

    //我要订餐
    public boolean add(){

        boolean isAdd =false;                                           //记录是否可以订餐
        Scanner input =new Scanner(System.in);
        for (int j =0;j0? PraiseNums[i]+"赞":"0";
                    System.out.println((i+1)+"\t"+dishNames[i]+"\t"+price+"\t"+priaiseNum);
                }
                System.out.println("请输入您要点的菜品编号:");
                int chooseDish =input.nextInt();
                System.out.println("请选择您需要的份数");
                int number =input.nextInt();
                String dishMeg =dishNames[chooseDish-1]+" "+number+"份"; //商品信息+数量
                double sumPrice =prices[chooseDish-1]*number;           //餐品总金额
                double deliCharge =(sumPrice>=50)?0:5;                  //送餐金额

                System.out.println("请输入配送时间(送餐时间是10点至20点间的整点送餐");
                int time =input.nextInt();                             //配送时间
                while (time<10 && time>20){
                    System.out.println("你输入的有误,请输入10-20之间的整数");
                    time =input.nextInt();
                }
                System.out.println("请输入送餐地址");
                String address =input.next();                          //配送地址

                System.out.println("订餐成功");
                System.out.println("您订的是:"+dishMeg);
                System.out.println("送餐时间为"+time+"点");
                System.out.println("餐费"+sumPrice+"元,送餐费为"+deliCharge+"元,总计:"+(sumPrice+deliCharge)+"元");

                oSet.names[j] =name;
                oSet.dishMegs[j]=dishMeg;
                oSet.times[j]=time;
                oSet.addresses[j]=address;
                oSet.sumPrices[j] =sumPrice+deliCharge;
                break;
            }
        }
        if(!isAdd){
            System.out.println("对不起,您的餐袋已满!");
            return false;
        }else {
            return true;
        }
    }

    //签收订单
    public void sign(){

        Scanner input =new Scanner(System.in);
        boolean isSignFind = false;                 //找到要签收的订单
        display();
        System.out.println("请选择要签收的订单");

        int signorderId =input.nextInt();
        for (int i = 0; i < oSet.names.length; i++) {
            if(oSet.names[i]!= null  && oSet.states[i]==0 && signorderId==i+1){
                oSet.states[i] =1;
                System.out.println("订单签收成功");
                isSignFind =true;       //标记已找到此订单

            }else if (oSet.names[i]!= null  && oSet.states[i]==1 && signorderId==i+1){
                System.out.println("您选择的订单已签收,不能再次签收哦");
                isSignFind =true;       //标记已找到此订单
            }

        }
        //未找到的订单序号:不可签收
        if(!isSignFind){
            System.out.println("您选择的订单不存在");
        }
    }

    //删除订单
    public void delete(){

        boolean isDelete =false;//标记是否找到要删除订单
        display();
        System.out.println("请输入要删除的订单序号:");

        int delId =new Scanner(System.in).nextInt();
        for (int i=0;i0 ?PraiseNums[i]+"赞" :" ";
            System.out.println((i+1)+"\t"+dishNames[i]+"\t"+price+"\t"+prianiseNum);
        }
        System.out.println("请选择您要点赞的菜品序号:");

        int priaiseNum =new Scanner(System.in).nextInt();
        PraiseNums[priaiseNum-1]++;  //点赞数加1
        System.out.println("点赞成功");
    }
}

       

        第四步:编写OrderingMgr类,实例化OrderingUtil对象,调用对象方法,实现程序入口功能。

package com.chihuolianmeng;

public class OrderingMgr {
    public static void main(String[] args) {
        OrderingUtil om =new OrderingUtil();

        om.initial();
        om.startMenu();


    }
}

        最后感谢大家的观看,我就是一个小白,对照着书自己理解着些的,不喜勿喷

你可能感兴趣的:(Java,java)