千家信息网

java怎么实现饭店点菜系统

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这篇"java怎么实现饭店点菜系统"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"ja
千家信息网最后更新 2025年01月31日java怎么实现饭店点菜系统

这篇"java怎么实现饭店点菜系统"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"java怎么实现饭店点菜系统"文章吧。

JAVA实现饭店点菜系统

在这个暑假,我会将一些网络上比较经典的java编程练习题。 做一做,发布到博客来。是对我自己学习的监督,也是为了方便大家借鉴学习交流。大家一起共同进步。

这个点菜系统,和我之前Java课程设计中的小学生数学练习有点像。不过少了文件操作,相对比较简单。

我实现的效果 如图

最重要的 还是面向对象的思想,我们要理解并使用。

1.在点菜系统中,我们为了方便 饭店添加菜谱 ,我们要使用一个list 集合 ,可以改变长度大小。
2.每一个 菜品 都是一个对象 我们要封装起来,包括 三个属性 : 编号,菜名 ,价格
3.对点菜的具体需求 ,我们要 写 每一个 静态方法。在main 方法中, 按照客户点菜的过程来设计流程。

看到了效果图 。我们直接贴代码, 在代码中解释 。

import java.util.ArrayList;import java.util.List;import java.util.Scanner;/** * 太原理工大学---软件学院---李同学 * java实现 点菜系统 * 欢迎大家一起交流。评论或者私信。 */public class menu {    //声明两个集合,第一个用来保存 饭店菜单,第二个用来保存 客户所点菜单    static List dishList = new ArrayList<>();    static List personList = new ArrayList<>();    int id;    String name;    double price;    //构造方法,每一个菜 都是一个对象    public menu(int id, String name, double price) {        this.id = id;        this.name = name;        this.price = price;    }    public static void main(String[] args) {        //声明对象  本饭店只会五个菜。O(∩_∩)O哈哈~        //第一种声明方法,并添加到饭店菜单中。        menu dish2 = new menu(1, "鱼香肉丝", 28.0);        dishList.add(dish2);        menu dish3 = new menu(2, "炖王八", 58.0);        dishList.add(dish3);        menu dish4 = new menu(3, "家常凉菜", 18.0);        dishList.add(dish4);        //第二种声明方法   这两种方法 大家都要学会        dishList.add(new menu(4,"山西过油肉",38.0));        dishList.add(new menu(5,"西湖牛肉羹",36.0));        Scanner sc = new Scanner(System.in);        /**         * 接下来就是 点菜系统的核心代码了。有点复杂,大家慢慢理解。         * 我尽量注释写全         * 我们要了解 点菜需求 : 1. 饭店有哪些菜  2. 客户点菜 点菜完毕         *  重新展示饭店服务 供客户再次选择 3.客户点了哪些菜 4.客户退菜 5. 结账         * 首先是一个 while(true) 的 "死循环"  吗,每执行一次 就输出一次 饭店服务 number 方法         * 第二 客户选择 服务  sc.nextInt(); 客户输入的数字使用switch 进行区分         * 进入 switch 后, 根据客户的要求,执行不同的 case          * 在执行 case 1  时 也就进入了点菜环节          * 再次出现一个 while(true) 先将饭店的五个菜 展示给客户。等待客户点菜 于是 sc.nextInt();         * 不同编号,对应不同的菜品,对应集合。 将客户选择的菜品,保存在personList 集合中         * 注意到:在showDish方法中,有一个 "按 0 返回上一级 " 实现代码         * 就是 case 1 中的 if 条件语句  :客户选择 0 即为结束点菜 重新返回饭店服务         * 剩余的 case 2  3   4  应该比较好理解。 不懂可以私信我哦!         * 还有一个小技巧就是 case 3  中 没有使用break 而是使用了 return 原因是 : break 只是会天厨switch 循环,         * 而在结账以后,我们需要结束这个点菜系统 使用 return 就会直接 这个程序 。         */        while (true) {            number();            int num = sc.nextInt();            switch (num) {                case 1:                    while (true) {                        showDish();                        int id = sc.nextInt();                        if (id == 0) {                            break;                        } else {                            menu dish = dishList.get(id - 1);                            System.out.println("亲,您点了:" + dish.name + " 菜");                            personList.add(dish);                        }                    }                case 2:                    showOrder();                    break;                case 3:                    paying();                    return;                case 4 :                    System.out.println("输入您要退掉菜品的编号");                    int id = sc.nextInt();                    exitDish(id);                    break;            }        }    }    // 展示主菜单方法。    public static void number() {        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("---根据编号选择服务---");    }    //展示饭店菜单方法    public static void showDish() {        System.out.println("----请您点菜----");        //遍历集合,将之前声明的对象集合 全部展示到控制台        for (int i = 0; i < dishList.size(); i++) {            menu dish = dishList.get(i);            System.out.println(dish.id + "  " + dish.name + "   " + dish.price + "元");        }        System.out.println("---根据序号点菜,按 0 返回上一级---");    }    //展示客户已点菜单    public static void showOrder() {        System.out.println("----您已点菜品----");        //注释掉的这个方法,不适合使用退菜操作。因为 每一个菜品前面的id 值不是真正的集合次序        /*for (menu dish : personList) {            System.out.println(dish.id + "  " + dish.name + "   " + dish.price + "元");        }*/        //为了方便客户能够正确的选择菜品编号,我们采用 1  2 3 4 的顺序输出已点菜品          for(int i = 0; i < personList.size();i++){             System.out.println( (i+1) + "    " + personList.get(i).name + "   "  + personList.get(i).price + "元");        }    }    // 结账 遍历 personList 集合的 price 累加即可    public static void paying() {        double total = 0f;        System.out.println("----正在结账,请稍等!----");        // 另一种遍历集合的方法。大家学习哦        for (menu dish : personList) {            total += dish.price;        }        System.out.println("您共消费:" + total + "元");    }    //退菜操作  使用集合的 remove 方法。 采用有参数的方法。先告诉客户要退掉的菜品,再执行remove操作,这两句代码不能颠倒    public static void exitDish(int i){        System.out.println("您已退掉:" + personList.get(i-1).name + "  " + personList.get(i-1).price + "元");        personList.remove(i-1);    }}

以上就是关于"java怎么实现饭店点菜系统"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

0