开发学习日志——java初步外卖系统实现

序言

在学习java中api编程接口时,学了ArrayList和String后决定练习一下,开发一个简单的外卖系统,有利于自己熟悉新学的知识。

外卖功能

由于业务能力有限,学习的知识仅限于中级java知识,因此外卖系统功能只有:一个管理员界面,负责上架食物和展示食物的信息,包括食物名称,食物价格,食物描述。还有展示食物信息的功能,之后设立一个退出程序的功能即可。

程序思路

首先我们设立一个类专门封装食物的信息:名称,价格,描述,并且私有化,只能通过set,get去取值,接着设立食物操作的类,这样好让我们去完成上架,展示食物的功能,还有要设立ArrayList集合去包装食物的类,这样才可以存储多个食物的信息,也方便我们后续去进行查找和修改。

开发过程

开发工程文件

首先创建好我们开发工程的文件:

food类设计

将成员变量包装,设计constructor,set and get方法,这些都可以右键去点击快捷键创建出来

public class food {
    //食物信息封装
    //成员变量
    private String name;//名称
    private double price;//价格
    private String des;//描述

    //无参构造器

    public food() {
    }

    //有参构造器

    public food(String name, double price, String des) {
        this.name = name;
        this.price = price;
        this.des = des;
    }

    //get,set方法
    public String getName() {
        return name;
    }

    public double getPrice() {
        return price;
    }

    public String getDes() {
        return des;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public void setDes(String des) {
        this.des = des;
    }
}

foodsev类设计

public class foodsev {
    food f = new food();
    ArrayList<food> foodlist = new ArrayList<>();

    //上架食物
    public void addfood(){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入上架食物名称:");
        String name = sc.next();//用name存储用户输入名称
        f.setName(name);//存入食物对象封装类中的成员变量中

        System.out.println("请输入上架食物价格:");
        double price = sc.nextDouble();//用price存储用户输入名称
        f.setPrice(price);//存入食物对象封装类中的成员变量中

        System.out.println("请输入上架食物描述:");
        String des = sc.next();//用des存储用户输入名称
        f.setDes(des);//存入食物对象封装类中的成员变量中

        //用arraylist集合存储食物信息
        foodlist.add(f);

        //上架完成反馈
        System.out.println("上架完成!");
    }

    //展示食物信息
    public void foodshow(){
        //遍历展示食物信息
        //如果没有上架则返回
        if(foodlist.size()==0){
            System.out.println("你还未上架食物,食物菜单为空!");
            return;
        }
        for(int i = 0;i<foodlist.size();i++){
            System.out.println(foodlist.get(i));
        }
    }

    //外卖菜单
    public void start() {
        while (true) {
            System.out.println("请你选择要执行的功能:");
            System.out.println("1、上架食物");
            System.out.println("2、展示菜单");
            System.out.println("3、退出");
            Scanner sc = new Scanner(System.in);
            String str = sc.next();//用字符串的目的是防止用户输入字符串使程序崩溃
            switch (str) {
                case "1":
                    addfood();
                    break;

                case "2":
                    foodshow();
                    break;

                case "3":
                    System.out.println("欢迎你下次再来");
                    return;//退出方法

                default:
                    System.out.println("你输入的值不符合要求!请重新输入!");
            }
        }
    }
}

test类实现

public class test {
    public static void main(String[] args) {
        foodsev foodsev = new foodsev();//先创建对象,方便我们调用类里的方法
        foodsev.start();

    }
}

测试运行代码

我们运行代码试一下

开发完成,我们运行代码,上架功能和退出功能实现的都很好,但是在展示菜单当中却出现了bug,输出了一串地址出来,这是为什么呢?

bug排除

我们定位到展示食物菜单的方法这里来,这里foodlist.get实际上是像数组一样的东西,我们直接打印出来就会出现上面的地址,因此我们需要用food类型去存储集合的信息,再通过封装的getName....去取出信息来。

修改后如下:

    public void foodshow(){
        //遍历展示食物信息
        //如果没有上架则返回
        if(foodlist.size()==0){
            System.out.println("你还未上架食物,食物菜单为空!");
            return;
        }
        for(int i = 0;i<foodlist.size();i++){
            food f = foodlist.get(i);//存储集合信息
            System.out.println(f.getName());
            System.out.println(f.getPrice());
            System.out.println(f.getDes());
            
        }
    }

最后我们运行

可见bug成功消除。

总结

这次开发难度适中,主要是完成用户的需求条件,相对还不算很复杂,学习java之后觉得java的开发确实有种难以表达的舒适感,我觉得大部分IDE快捷功能都可以很好的帮助我开发,这点是c没办法提供的,这时我才发现学习多种语言的魅力,学了c知道更多底层语言,方便更好理解学习java,c也可以完成开发,但是方法什么的都相对复杂,没有面对对象这么简单。总之这次开发使我对面向对象编程更加印象深刻,方便后续学习新的知识。当然这个开发还相对雏形,之后也许可以用数据库里的数据去完善功能,还有功能可以设计的再多样化一些,包括用户订餐,外卖员信息管理等等。。。但那些都已经是后话了,继续加油吧!

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值