一个简单的Java类和对象的“网上订餐管理系统”(附源码)

目录

1.业务逻辑

1.1 主页面

1.2 “我要订餐”功能

1.3  “查看餐袋”功能

1.4  “签收订单”功能

 1.5  “删除订单”功能

 1.6  “我要点赞”功能

 1.7  “退出系统”功能

 2 源码

2.1 Sysmain

2.2 Menm

2.3 Goods

2.4 Order


1.业务逻辑

1.1 主页面

运行程序在控制台打印出主页面,从键盘输入要进行的操作对应的序号,进入相应的功能

1.2 “我要订餐”功能

在主页面输入1回车进入“我要订餐”功能

第一步,系统会要求你输入订餐人姓名

第二步,输出菜单,并接收你从键盘输入的菜品序号,如果输入的序号不符合规范会提示错误

第三步,接收到输入的菜品后,会询问是否继续添加菜品(y/n)(这里的y/n不区分大小写)输入不规范会重复这个询问

第四步,菜品点完后会要求输入送餐时间,地址和份数

第五步,接收完所有信息存储后返回主页面

1.3  “查看餐袋”功能

 打印目前所有的订单

这里的代码初始化是没有订单的,只有“点餐”后才会有订单可以被查询到

 要初始就有订单可以在下面所示的方法中添加

 注意添加时要相应地让ordersNum这个变量对于数组中的订单数

1.4  “签收订单”功能

(1)先打印全部订单,接收输入的要签收的订单编号

(2)判断是否有这个编号,没有提示签收失败,打印一遍餐袋,并返回主页面

(3)有的话再判断是否已签收,如果已签收则提示不要重复操作,并打印一遍餐袋后返回主页面

(4)如果没有签收,则更改状态,提示签收成功,并打印更改后的餐袋后返回主页面

 1.5  “删除订单”功能

(1)先打印全部订单,接收要删除的订单编号

(2)判断是否找得到该订单,找不到则提示无此订单,删除失败并返回主页面

(3)找到的话判断其是否是未完成状态,未完成则提示不能删除返回主页面

(4)已完成则更改状态,打印出更改后的餐袋并提示删除成功后返回主页面

 1.6  “我要点赞”功能

(1)先打印所有菜品信息,接收要点赞的菜单编号

(2)如果找不到该菜品,则提示错误并返回主页面

(3)如果找得到,则给该菜品点赞数加一,并打印出更新后的菜单,提示点赞成功后返回主页面

 1.7  “退出系统”功能

 直接用System.exit(0)退出,如果愿意在结束时加一些话可以在Sysmain.java中的System.exit(0)语句前加。

 2 源码

2.1 Sysmain

package mykb.OrderSystem;

import java.util.Scanner;

public class SysMain {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        Menm menm = new Menm();
        menm.Menmgoods();
        menm.Menmorders();

        while(true){
            menm.MenmOne();
            int n = scanner.nextInt();
            switch (n) {
                case 1:
                    menm.OrderInsert();
                    break;
                case 2:
                    menm.MenmOrderPrint();
                    break;
                case 3:
                    menm.OrderSignFor();
                    break;
                case 4:
                   menm.OrderDelete();
                    break;
                case 5:
                    menm.GoodsFavor();
                    break;
                case 6:System.exit(0);
                    break;
                default:System.out.println("请规范输入!");
                    break;
            }
        }
    }
}

2.2 Menm

package mykb.OrderSystem;

import java.util.Scanner;

public class Menm {
    Goods goods[];
    int goodsNum;
    Order orders[];
    int ordersNum;
    public void Menmgoods(){
        //菜单初始化,最初菜单有六道菜,可以在这里面添加或减少菜品数量
        goods = new Goods[6];
        this.goods[0] = new Goods(1,"红烧带鱼",35,215);
        this.goods[1] = new Goods(2,"鱼香肉丝",20,175);
        this.goods[2] = new Goods(3,"时令鲜蔬",10,221);
        this.goods[3] = new Goods(4,"麻婆豆腐",15,253);
        this.goods[4] = new Goods(5,"肉末茄子",15,125);
        this.goods[5] = new Goods(6,"九转大肠",60,441);
        goodsNum = 6;     //代表菜品数量,应与数组中有效菜品数量同步更新

    }
    public void Menmorders(){
        //订单初始化,与菜品同理
        orders = new Order[20];
        ordersNum = 0;
    }
    public void MenmOne(){
        //主界面
        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("5、我要点赞");
        System.out.println("6、退出系统");
        System.out.println("请输入你的选择(1-6)");
        System.out.println("===========================================");
    }
    public void MenmGoodPrint(){
        //打印所有菜品详情
        System.out.println("===========================================");
        System.out.println("编号        菜名           单价         获赞数");
        for (int i = 0; i < goodsNum; i++) {
            goods[i].print();
        }
        System.out.println("===========================================");
    }
    public void MenmOrderPrint(){
        //打印所有订单详情
        System.out.println("================================================");
//        System.out.println(order[0].goodOrds[0].gdName+"  "+order[0].goodOrds[0].gdId);
        System.out.println("订单编号        订餐人      餐品信息      送餐时间       份数      总金额     订单状态");
        for (int i = 0;i < ordersNum;i++){
            orders[i].print();
        }
        System.out.println("================================================");
        System.out.println();
    }
    public void OrderInsert(){
        //添加订单,开始点餐
        Scanner scanner = new Scanner(System.in);
        MenmGoodPrint();  //先打印菜单
        System.out.println("请输入订餐人姓名:");
        String name = scanner.next();
        String choice = "Y";    //判断是否继续点菜
        int foodid[] = new int[goodsNum];   //存放点的菜品信息
        for (int i = 0;i< foodid.length;i++){   //foodid数组初始化
            foodid[i] = 0;
        }
        int sum = 0;   //记录点餐总价

        do {
            System.out.println("请输入你要购买的菜品编号:");
            int id = scanner.nextInt();
            if (id>goodsNum){
                System.out.println("无此编号!重新输入");
                continue;
            }
            foodid[id-1]++;
            sum++;
            System.out.print("是否继续点餐?(Y/N):");
            choice = scanner.next();   //获取关键字判断是否继续点餐(不区分大小写)
            //choice不符合规范则继续要求输入
            while((!choice.equalsIgnoreCase("Y"))&&(!choice.equalsIgnoreCase("N"))){
                System.out.print("是否继续点餐?(Y/N):");
                choice = scanner.next();
            }
        } while(choice.equalsIgnoreCase("Y"));
        //接受送餐时间
        System.out.println("请输入送餐时间(送餐时间是10点至20点间整点送餐):");
        int time = scanner.nextInt();
        //判断送餐时间是否规范
        while(time<10||time>20){
            System.out.print("请输入正确的送餐时间(送餐时间是10点至20点间整点送餐):");
            time = scanner.nextInt();
        }
        //送餐地址和所需份数未作检测输入规范
        System.out.println("请输入送餐地址:");
        String address = scanner.next();
        System.out.println("请选择您需要的份数:");
        int number = scanner.nextInt();
        float amount = 0;
        Goods food[] = new Goods[sum];
        int m = 0;
        for (int i = 0;i< foodid.length;i++){
            if(foodid[i]>0){
                for (int j = 0;j<foodid[i];j++){
                    food[m] = new Goods(i+1,goods);
//                                System.out.println(food[m].gdName);
                    amount += food[m].price;
                    m++;
                }
            }
        }
        amount = amount*number;
        orders[ordersNum] = new Order(781112+ordersNum,name,food,time,address,number,amount,"已预约");
//                    System.out.println(order[num].goodOrds[0].gdName);
        ordersNum++;
    }
    public void OrderSignFor(){
        Scanner scanner = new Scanner(System.in);
        MenmOrderPrint();
        System.out.println("请输入你要签收的订单编号:");
        int ordid = scanner.nextInt();
        boolean isFind = false;
        for (int i = 0;i < ordersNum;i++){
            if (orders[i] != null){
                if(ordid == orders[i].orderNo){
                    if (orders[i].orderStatus.equals("订单已完成")){
                        MenmOrderPrint();
                        System.out.println("订单已签收,请勿重复操作!!!");
                    }else {
                        orders[i].orderStatus = "订单已完成";
                        MenmOrderPrint();
                        System.out.println("签收成功!!!");
                    }
                    isFind = true;
                    break;
                }
            }
        }
        if (!isFind){
            MenmOrderPrint();
            System.out.println("签收未成功,未找到该订单号!!!");
        }
    }
    public void OrderDelete(){
        Scanner scanner = new Scanner(System.in);
        MenmOrderPrint();
        System.out.println("请输入你要删除的订单编号:");
        int oid = scanner.nextInt();
        boolean isFind = false;
        for (int i = 0;i <ordersNum;i++){
            if(oid == orders[i].orderNo){
                if (orders[i].orderStatus.equals("订单已完成")){
                    for(int j = i;j<ordersNum-1;j++){
                        orders[j] = orders[j+1];
                    }
                    orders[ordersNum-1] = null;
                    ordersNum--;
                    MenmOrderPrint();
                    System.out.println("删除成功!!!");
                }else{
                    MenmOrderPrint();
                    System.out.println("删除未成功,订单未完成不可删除!!!");
                }
                isFind = true;
                break;
            }
        }
        if (!isFind){
            MenmOrderPrint();
            System.out.println("删除未成功,未找到该订单号!!!");
        }
    }
    public void GoodsFavor(){
        Scanner scanner = new Scanner(System.in);
        MenmGoodPrint();
        System.out.println("请输入你要点赞的菜品编号:");
        int fid = scanner.nextInt();
        boolean isFind = false;
        for (int i = 0;i < goodsNum;i++){
            if(goods[i].gdId == fid){
                goods[i].favor++;
                isFind = true;
                MenmGoodPrint();
                System.out.println("感谢你的投票");
            }
        }
        if (!isFind){
            MenmGoodPrint();
            System.out.println("你输入的菜品编号不存在");
        }
    }
}

2.3 Goods

package mykb.OrderSystem;

public class Goods {
    int gdId;
    String gdName;
    float price;
    int favor;
    Goods(){}
    Goods(int gdId,String gdName,float price,int favor){
        this.gdId = gdId;
        this.gdName = gdName;
        this.price = price;
        this.favor = favor;
    }
    Goods(int gdId, Goods[] goods){
        this.gdId = gdId;
        this.gdName = goods[gdId-1].gdName;
        this.price = goods[gdId-1].price;
        this.favor = goods[gdId-1].favor;
    }
    void print(){
        System.out.println(gdId +"         "+ gdName +"         "+ price +"         "+ favor);
    }
}

2.4 Order

package mykb.OrderSystem;

import java.util.Arrays;

public class Order {
    int orderNo;
    String orderOne;
    Goods[] goodOrds;
    int orderTime;
    String orderAddress;
    int orderNumber;
    float orderAmount;
    String orderStatus;
    Order(){}
    Order(int orderNo, String orderOne, Goods[] goodOrds, int orderTime, String orderAddress, int orderNumber, float orderAmount, String orderStatus){
        this.orderNo = orderNo;
        this.orderOne = orderOne;
        this.goodOrds = goodOrds;
        this.orderTime = orderTime;
        this.orderAmount = orderAmount;
        this.orderAddress = orderAddress;
        this.orderNumber = orderNumber;
        this.orderStatus = orderStatus;

    }

    public void print() {
        String[] food = new String[20];
        int[] foodid = new int [20];
        int num = 0;
        String st =  new String();
        for (int i = 0;i < food.length;i++){
            food[i] = null;
            foodid[i] = 0;
        }
        for (int i = 0; i < goodOrds.length; i++) {
            if(Arrays.asList(food).contains(goodOrds[i].gdName)){
                for (int j = 0;j < num;j++){
                    if (food[j].equals(goodOrds[i].gdName)){
                        foodid[j]++;
                    }
                }
            }else {
                food[num] = goodOrds[i].gdName;
                foodid[num]++;
                num++;
            }
        }
        for (int i = 0;i < num;i++){
            if(st.equals("")){
                st = food[i]+"*"+foodid[i];
            }else{
                st = st + "," + food[i]+"*"+foodid[i];
            }
        }
        System.out.println(orderNo+"       "+orderOne+"       "+st+"       "+orderTime+"       " +orderNumber+"       "+orderAmount+"       "+orderStatus);
    }

}

  • 8
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值