java基础小项目

Java小项目——点菜

要求:::

  主界面显示

  ---------主菜单-----------

  点菜       1

 已点菜品    2

  结账       3

------------请输入编号---------

按编号1将会进入点菜显示如下

1    鱼香肉丝     39.00

2    宫保鸡丁     34.00

3    凉拌黄瓜     12.00

4    辣子鸡块     24.00

5    辣椒炒肉     23.00

----------请根据编号进行选择-------

同时按0退出点菜

按编号2 显示已点菜品例如

 已点  鱼香肉丝

按3 进行结账(例如选择了2 和3)

请结账  46元

思路::

  1. 首先所有的菜品具有相同的属性,应该在一个类中,该类中包含 编号、菜名和价格三个属性,同时还应该含有一个带参数的方法,保证可以对其进行初始化
  2. 该app需要一个主菜单,可以写一个方法menu()去实现。在主代码中调用该方法。在此时我们需要向程序中输入一个数值用来进行选择,因此要使用scanner。值得注意的是,我们想要一直在主菜单上进行循环,因为有可能用户还想继续操作,所以需要一个while循环
  3. 我们进行选择。1----点菜 2-------显示已点菜品  3-------买单,可以使用swich实现。
  4. 刚开始我们需要初始化一些菜品,在这里我们可以使用一个List集合来存储所有的菜品。需要写一个方法dish来初始化菜单,同时将这些菜品的信息添加到集合list中。并在主程序中进行调用
  5. 按1进行点菜 需要一个方法showdish方法显示所有的菜品信息。可以通过循环遍历集合list来实现。 在点菜的过程中需要进行输入,需要使用Scanner。这里也需要一个while(true)循环表示一直可以选菜,同时进行if判断如果输入为0返回主菜单。在这里我们还需要展示已选的菜品,通过list进行操作(值得注意的是list中下标是从0开始的)。在这里我们还需要将已点的菜品保存下来(创建一个新的集合personlist),用于后面进行显示已点菜单和买单操作
  6. 按2显示已点菜品。这时需要遍历我们之前创建的集合personlist
  7. 按3需要对已点菜品的价格进行累加,需要从集合personlist1中获取已点菜品的价格
    /*
    显示类的属性和方法
     */
    public class Dish {
        private int id;
        private String name;
        private double price;
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public double getPrice() {
            return price;
        }
    
        public void setPrice(double price) {
            this.price = price;
        }
    
        public Dish(int id, String name, double price) {
            this.id = id;
            this.name = name;
            this.price = price;
        }
    }
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    
    public class DishApp {
        //存储所有菜品的集合
        static List<Dish> list=new ArrayList<>();
    
        //存储已点菜品的集合
        static List<Dish> personlist=new ArrayList<>();
        public static void main(String [] args){
            dish();
            while(true) {
                menu();
                //输入
                Scanner num = new Scanner(System.in);
                int d=num.nextInt();
                switch(d){
                    case 1:
                        //显示菜品
                        while(true){
                        showdish();
                        System.out.println("------请点菜-------按0退出");
                        int a=num.nextInt();
                         if(a==0) {
                                break;
                            }
                         try {// 若输入编号小于0大于5时,就会出现错误,所以要使用try catch进行异常处理
                                 System.out.println("你点了" + list.get(a - 1).getName());
                                 personlist.add(list.get(a - 1));  //保存已点菜品信息
                         }
                         catch(Exception e){
                             System.out.println("请重新输入");
                         }
                        }
                    case 2:
                        // 显示已点菜品
                        System.out.println("您已经点了:::");
                        persondish();
                        break;
                    case 3:
                        //买单
                        double y=buy();
                        System.out.println("您总共消费:"+y+"元");
                        break;
                }
    
            }
        }
    
    
        /*
        显示主菜单
         */
        public static void menu(){
            System.out.println("------主菜单-------");
            System.out.println("点菜"+"--------"+"1");
            System.out.println("已点菜品"+"----"+"2");
            System.out.println("买单"+"--------"+"3");
            System.out.println("请输入编号::");
        }
    
        /*
        初始化菜单
         */
        public static void dish(){
            Dish dish1=new Dish(1,"鱼香肉丝",39.00);
            list.add(dish1);
            Dish dish2=new Dish(2,"宫保鸡丁",34.00);
            list.add(dish2);
            Dish dish3=new Dish(3,"凉拌黄瓜",12.00);
            list.add(dish3);
            Dish dish4=new Dish(4,"辣子鸡块",24.00);
            list.add(dish4);
            Dish dish5=new Dish(5,"辣椒炒肉",23.00);
            list.add(dish5);
        }
    
        /*
        显示菜品
         */
        public static void showdish(){
            for (int i = 0; i <list.size() ; i++) {
                Dish dd=list.get(i);
                System.out.println(dd.getId()+"  "+dd.getName()+"   "+dd.getPrice());
            }
        }
    
        /*
        显示已点菜单
         */
        public static void persondish(){
            for (int i = 0; i < personlist.size(); i++) {
                System.out.println(personlist.get(i).getName()+"    ");
            }
        }
    
        /*
        买单:需要对已点菜品的价格进行累加
         */
        public static double buy(){
            double y=0;
            for (int i = 0; i <personlist.size() ; i++) {
                y+=personlist.get(i).getPrice();
            }
            return y;
        }
    }
    

  8. 发现一个错误,在点菜的时候若输入编号小于0而大于5时就会报错,所以要进行异常处理

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值