Java综合实战——网上订餐系统

现要求开发一个网上订餐系统,其具体功能如下:

  • 我要订餐

       完成用户订餐,每条订单包含如下信息:

  1. 订餐人姓名:要求用户输入
  2. 选择菜品及份数:显示三个菜单序号、名称、单价、点赞数,提示用户输入要选择的菜品序号及份数
  1. 送餐时间:要求当天10到20点间整点送餐,要求用户输入10~20的整数,输入错误,重复输入。
  1. 送餐地址:要求用户输入
  2. 状态:两种状态:0:已预定(默认状态) 1、已完成(订单已签收)
  3. 总金额:

    总金额 = 菜品单价*份数-送餐费

   (送餐费:当单笔订单金额达到50元时,免送餐费,否则,需交纳6元送餐费)

  订餐成功后,显示订单信息。

  •   查看订单

        遍历显示已有定单

        内容包括:序号、订餐人姓名、订餐信息(菜品名和份数)、送餐时间、送餐地址、  状态(已预定或已完成)、总金额

  •   签收定单

        将定单中状态改为已完成

  • 删除定单

    用户输入订单序号,如该序号定单为已完成状态,可以删除,其它情况给出相应提示信息

  • 我要点赞

        显示菜品序号、菜品名、单价、点赞数,提示用户输入要点赞的菜品序号完成对菜品的点赞。

  • 退出系统

退出整个系统,显示“谢谢使用,欢迎下次光临”。

  • 菜单切换

用户可根据显示的主菜单,输入功能编号执行相应的功能,当输入1~5时,执行相应功能

public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String[] dishName = {"香精煎鱼?", "香翅捞饭?", "香菜凤仁鸡", "油饼食不食"};//菜品            
        名
        double[] dishPrice = {17, 20, 30, 12};//菜品单价
        int[] zan = {88, 101, 106, 4369};//每个菜的点赞数
        String[][] bill = new String[10][7];//所有订单的信息,默认只有10个订单
                                           //所存数据按顺序为序号,订单人姓名,菜品名,送达 
        时间,地址,状态,总金额
        int choose;//用户选项变量
        int billnum = 0;//定义订单数
        System.out.println("欢迎使用吃货联盟系统");
        while (true) {
            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.print("请选择:");
            choose = input.nextInt();//定义选择变量
            switch (choose) {
                case 1:
                    System.out.println("*****开始订餐*****");
                    for (int j = billnum; j < bill.length; j++) {
                        double sum = 0; //定义总金额
                        bill[j][0] = String.valueOf(j + 1);//为bill中订单序号赋值
                        System.out.print("请输入订餐人姓名:");
                        bill[j][1] = input.next();//为bill中订单人姓名赋值
                        //点菜
                        for (int i = 0; i < bill.length; i++) {
                            System.out.println("序号" + "\t\t菜品名" + "\t\t单价" + 
                            "\t\t\t点赞数");
                            for (int k = 0; k < dishName.length; k++) { //显示菜单
                                System.out.println((k + 1) + "   \t" + dishName[k] + " 
                            \t" + dishPrice[k] + "\t\t" + zan[k]);
                            }
                            System.out.print("请输入选择的菜品序号:");
                            int dishNo = input.nextInt();
                            while (dishNo < 1 || dishNo > dishName.length) {
                                System.out.print("请选择正确的序号:");
                                dishNo = input.nextInt();
                            }
                            System.out.print("请输入需要的份数:");
                            int num = input.nextInt();
                            while (num < 0) {
                                System.out.print("请选择正确的份数:");
                                num = input.nextInt();
                            }
                            sum += dishPrice[dishNo - 1] * num;
                            if (bill[j][2] == null) {//为bill中菜品信息赋值
                                bill[j][2] = " " + dishName[dishNo - 1] + num + "份";
                            } else {
                                bill[j][2] = bill[j][2] + " " + dishName[dishNo - 1] + 
                            num + "份";
                            }
                            System.out.println("继续选菜请按1,退出选菜请按2");//判断是否继 
                            续点菜
                            int chosedish = input.nextInt();
                            if (chosedish == 2) {
                                break;
                            }
                        }
                        double sendPrice = (sum >= 50) ? 0 : 6;//定义配送费
                        sum += sendPrice;
                        bill[j][6] = "总金额" + sum + "元,包含" + sendPrice + "元配送 
                        费";//为bill中总金额赋值
                        System.out.print("请输入送餐时间(送餐时间是10点至20点间整点送 
                        餐):");//输入送餐时间
                        int time = input.nextInt();
                        while (time < 10 || time > 20) {
                            System.out.print("您的输入有误,请输入10-20间的整数");
                            time = input.nextInt();
                        }
                        bill[j][3] = time + "点送达";//为bill中送餐时间赋值
                        System.out.print("请输入送餐地址:");
                        String address = input.next();
                        bill[j][4] = "地址为" + address;//为bill中送餐地址赋值
                        bill[j][5] = "已预定";//为bill中订单状态赋值
                        System.out.println("订餐成功,您的订单为");
                        for (int n = 0; n < bill[billnum].length; n++) {
                            if (bill[billnum][n] != null) {
                                System.out.print(bill[billnum][n] + " ");
                            }
                        }
                        billnum++;//完成订单,订单数+1
                        System.out.println();
                        System.out.println("是否订下一份餐(y/n)");//判断是否点另一份餐
                        String addchoose = input.next();
                        if (addchoose.equals("n")) {
                            break;
                        }
                    }
                    break;
                case 2:
                    System.out.println("*****查看餐袋*****");
                    for (int j = 0; j < bill.length; j++) {//遍历输出bill中不为空的内容
                        if (bill[j][1] != null) {
                            for (int i = 0; i < bill[j].length; i++) {
                                System.out.print(bill[j][i] + "\t");
                            }
                            System.out.println();
                        }
                    }
                    break;
                case 3:
                    System.out.println("*****确认订单*****");
                    for (int j = 0; j < bill.length; j++) {//遍历输出bill中不为空的内容
                        if (bill[j][0] != null) {
                            for (int i = 0; i < bill[j].length; i++) {
                                System.out.print(bill[j][i] + "\t");
                            }
                            System.out.println();
                        }
                    }
                    System.out.println("请输入你要确认的订单编号");
                    int confirm = input.nextInt();
                    if (bill[confirm - 1][0] == null) {//修改bill中订单状态
                        System.out.println("订单不存在");
                    } else {
                        bill[confirm - 1][5] = "已完成";
                        System.out.println("订单已确认");
                    }
                    break;
                case 4:
                    System.out.println("*****删除订单*****");
                    for (int j = 0; j < bill.length; j++) {//遍历输出bill中不为空的内容
                        if (bill[j][1] != null) {
                            for (int i = 0; i < bill[j].length; i++) {
                                System.out.print(bill[j][i] + "\t");
                            }
                            System.out.println();
                        }
                    }
                    System.out.println("请输入你要删除的订单编号");
                    int del = input.nextInt();
                    if (bill[del - 1][0] == null) {//判断是否可以删除
                        System.out.println("订单不存在");//序号不存在
                    } else if (bill[del - 1][5].equals("已预定")) {//订单未完成
                        System.out.println("未完成订单不能删除");
                    } else { //bill中元素前移,覆盖被删的内容
                        for (int i = del; i < bill.length; i++) {
                            for (int j = 1; j < bill[i].length; j++) {
                                bill[i - 1][j] = bill[i][j];
                            }
                            if (bill[i][0] == null) {
                                break;
                            }
                        }
                        billnum--;//订单数减一
                    }
                    break;
                case 5:
                    System.out.println("*****我要点赞*****");
                    System.out.println("序号" + "\t\t菜品名" + "\t\t单价" + "\t\t\t点赞 
                    数");
                    for (int k = 0; k < dishName.length; k++) { //显示菜单
                        System.out.println((k + 1) + "   \t" + dishName[k] + " \t" + 
                    dishPrice[k] + "\t\t" + zan[k]);
                    }
                    System.out.println("输入想要点赞的菜品序号:");
                    int zannum = input.nextInt();
                    zan[zannum - 1] = zan[zannum - 1] + 1;
                    break;
                case 6:
                    System.out.println("欢迎下次光临!");
                    return;
                default:
                    System.out.println("输入错误,重新选择");
                    break;
            }
        }
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值