欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

20200716-java基础吃货联盟项目

程序员文章站 2022-07-10 18:55:14
覆盖技能点:- 程序基本概念变量数据类型- 流程控制顺序选择循环跳转语句- 数组项目演示及需求讲解:“只要动动手指,就能送餐上门”,网上定餐深受现代人青睐,现开发一个网上订餐系统,功能如下欢迎使用吃货联盟订餐系统*****************************1.我要订餐2.查看餐袋3.签收订单4.删除订单5.我要点赞6.退出系统*****************************请选择:4****删除订餐****订单为空,不可删除输...

覆盖技能点:

- 程序基本概念

  • 变量
  • 数据类型

- 流程控制

  • 顺序
  • 选择
  • 循环
  • 跳转语句

- 数组

项目演示及需求讲解:

“只要动动手指,就能送餐上门”,网上定餐深受现代人青睐,现开发一个网上订餐系统,功能如下

欢迎使用吃货联盟订餐系统
*****************************
1.我要订餐
2.查看餐袋
3.签收订单
4.删除订单
5.我要点赞
6.退出系统
*****************************
请选择:4
****删除订餐****
订单为空,不可删除
输入0返回:0
欢迎使用吃货联盟订餐系统
*****************************
1.我要订餐
2.查看餐袋
3.签收订单
4.删除订单
5.我要点赞
6.退出系统
*****************************
请选择:1
****我要订餐****
请输入订餐人姓名:贰叁
序号 菜品 单价
1 东坡肉 45.02 地锅鸡 38.03 水煮鱼 28.04 佛跳墙 99.0元
请选择您要点的菜品编号:1
请选择您需要的份数:2
请输入送餐时间(10点至20点送餐):11
请输入送餐地址:你的心里
订单成功!
您订的是:东坡肉
送餐时间:11点
餐费:90.0元,送餐费:0,总计:90.0
输入0返回:0
欢迎使用吃货联盟订餐系统
*****************************
1.我要订餐
2.查看餐袋
3.签收订单
4.删除订单
5.我要点赞
6.退出系统
*****************************
请选择:2
****查看餐袋****
序号 订餐人 餐品信息 送餐日期 送餐地址 总金额 订单状态
 1  贰叁 东坡肉211点     你的心里 90.0元  已预定
输入0返回:0
欢迎使用吃货联盟订餐系统
*****************************
1.我要订餐
2.查看餐袋
3.签收订单
4.删除订单
5.我要点赞
6.退出系统
*****************************
请选择:3
****签收订单****
序号 订餐人 餐品信息 总金额 订单状态
 1  贰叁 东坡肉290.0元  已预定
请选择要签收的订单编号:1
输入0返回:0
欢迎使用吃货联盟订餐系统
*****************************
1.我要订餐
2.查看餐袋
3.签收订单
4.删除订单
5.我要点赞
6.退出系统
*****************************
请选择:4
****删除订餐****
序号 订餐人 餐品信息 总金额 订单状态
 1  贰叁 东坡肉290.0元  已完成
请选择要删除的订单编号:1
删除完成!
输入0返回:0
欢迎使用吃货联盟订餐系统
*****************************
1.我要订餐
2.查看餐袋
3.签收订单
4.删除订单
5.我要点赞
6.退出系统
*****************************
请选择:5
****我要点赞****
序号 菜品 单价 点赞数
 1  东坡肉 45.011
 2  地锅鸡 38.022
 3  水煮鱼 28.033
 4  佛跳墙 99.044
请选择要点赞的菜品:1
谢谢点赞!
输入0返回:0
欢迎使用吃货联盟订餐系统
*****************************
1.我要订餐
2.查看餐袋
3.签收订单
4.删除订单
5.我要点赞
6.退出系统
*****************************
请选择:6
谢谢使用,欢迎下次光临!

阶段划分:

  1. 分析数据主体(重难点)
  2. 分析并完成整体框架(重难点)
  3. 分析并完成退出功能
  4. 分析并完成订餐功能
  5. 分析并完成查看餐袋功能
  6. 分析并完成签收订单功能
  7. 分析并完成删除功能(重难点)
  8. 分析总完成我要点赞功能

代码实现:

import java.util.Scanner;

/**
 * @Author :Ersan
 * @Date 2020/7/16
 * @Description
 * 吃货联盟
 */
public class ChiHuo {
    public static void main(String[] args) {
        final double NO_SEND_MONEY=80;
        String[]dishes={"东坡肉","地锅鸡","水煮鱼","佛跳墙"};
        double[]prices={45,38,28,99};
        int [] like={11,22,33,44};
        int chooseNum;
        String[][]bills=new String[1024][];
        String name=null;
        int pcs=0;
        int time=0;
        String address=null;
        String status=null;
        Scanner sc = new Scanner(System.in);
        int choose=0;
        do {
            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("*****************************");
            System.out.print("请选择:");
            choose=sc.nextInt();
            switch(choose){
                case 1:
                    System.out.println("****我要订餐****");
                    System.out.print("请输入订餐人姓名:");
                    name=sc.next();
                    System.out.println("序号\t菜品\t单价");
                    for (int i = 0; i < dishes.length; i++) {
                        System.out.println(i+1+"\t"+dishes[i]+"\t"+prices[i]+"元");
                    }
                    do {
                        System.out.print("请选择您要点的菜品编号:");
                        chooseNum=sc.nextInt();
                        if (chooseNum>0&&chooseNum<=dishes.length)break;
                        else
                            System.out.println("您的输入有误,重新输入!");
                    }while(true);
                    do {
                        System.out.print("请选择您需要的份数:");
                        pcs=sc.nextInt();
                        if (pcs>0)break;
                            System.out.println("份数不能小于0,重新输入");
                    }while(true);
                    do {
                        System.out.print("请输入送餐时间(10点至20点送餐):");
                        time=sc.nextInt();
                        if (time>=10&&time<=20)break;
                        System.out.println("您的输入有误,重新输入!");
                    }while(true);
                    System.out.print("请输入送餐地址:");
                    address=sc.next();
                    System.out.println("订单成功!");
                    System.out.println("您订的是:"+dishes[chooseNum-1]);
                    System.out.println("送餐时间:"+time+"点");
                    double dishPrice=prices[chooseNum-1]*pcs;
                    int sendMoney=0;
                    if (dishPrice<NO_SEND_MONEY){
                        sendMoney=6;
                    }
                    double totalPrice=dishPrice+sendMoney;
                    System.out.println("餐费:"+dishPrice+"元,送餐费:"+sendMoney+",总计:"+totalPrice);
                    //插入订单,遍历订单,如果为空,则插入
                    for (int i = 0; i < bills.length; i++) {
                        if (bills[i]==null){
                            bills[i]=new String[7];
                            bills[i][0]=name;
                            bills[i][1]=dishes[chooseNum-1]+""+pcs+"份";
                            bills[i][2]=time+"点";
                            bills[i][3]=address;
                            bills[i][4]=totalPrice+"元";
                            bills[i][5]="已预定";
                            break;
                        }
                    }
                    System.out.print("输入0返回:");
                    choose=sc.nextInt();
                    break;
                case 2:
                    System.out.println("****查看餐袋****");
                    System.out.println("序号\t订餐人\t餐品信息\t送餐日期\t送餐地址\t总金额\t订单状态");
                    for (int i = 0; i < bills.length; i++) {
                        if (bills[i]==null) {
                            break;
                        }
                        System.out.println(" " + (i + 1) + "\t\t" + bills[i][0] + "\t" + bills[i][1] + "\t" + bills[i][2] + "\t    " + bills[i][3] + "\t" + bills[i][4] + "\t " + bills[i][5]);
                    }
                    System.out.print("输入0返回:");
                    choose=sc.nextInt();
                    break;
                case 3:
                    System.out.println("****签收订单****");
                    if (bills[0]==null){
                        System.out.println("订单为空,不可删除");
                        System.out.print("输入0返回:");
                        choose=sc.nextInt();
                        break;
                    }
                    System.out.println("序号\t订餐人\t餐品信息\t总金额\t订单状态");
                    int i = 0;
                    for (; i < bills.length; i++) {
                        if (bills[i] == null){
                            break;
                    }
                        System.out.println(" "+(i+1)+"\t\t"+bills[i][0]+"\t"+bills[i][1]+"\t"+bills[i][4]+"\t "+bills[i][5]);
                    }
                    int sighNum;
                    do {
                        System.out.print("请选择要签收的订单编号:");
                        sighNum=sc.nextInt();
                        if (sighNum>0&&sighNum<=i)break;
                        System.out.println("订单不存在,重新输入!");
                    }while(true);
                    if (bills[sighNum-1][5].equals("已完成"))
                        System.out.println("订单已完成签收,不需要重复签收");
                    else
                        bills[sighNum-1][5]="已完成";
                    System.out.print("输入0返回:");
                    choose=sc.nextInt();
                    break;
                case 4:
                    System.out.println("****删除订餐****");
                    if (bills[0]==null){
                        System.out.println("订单为空,不可删除");
                        System.out.print("输入0返回:");
                        choose=sc.nextInt();
                        break;
                    }
                    System.out.println("序号\t订餐人\t餐品信息\t总金额\t订单状态");
                    int k = 0;
                    for (; k < bills.length; k++) {
                        if (bills[k]==null)break;
                        System.out.println(" "+(k+1)+"\t\t"+bills[k][0]+"\t"+bills[k][1]+"\t"+bills[k][4]+"\t "+bills[k][5]);
                    }
                    int delNum;
                    do {
                        System.out.print("请选择要删除的订单编号:");
                        delNum=sc.nextInt();
                        if (delNum>0&&delNum<=k)break;
                        System.out.println("订单不存在,请重新输入!");
                    }while(true);
                    //未完成订单不能删除
                    //产出订单需要考虑选择的订单删除后,后面的订单需要前移
                    if (!bills[delNum-1][5].equals("已完成"))
                        System.out.println("未完成的订单,不能删除!");
                    else{
                        for (int s = delNum-1; bills[s]!=null ; s++) {
                            if (delNum==bills.length){
                                bills[delNum-1]=null;
                            }else {
                                bills[s]=bills[s+1];
                            }
                        }
                        System.out.println("删除完成!");
                    }
                    System.out.print("输入0返回:");
                    choose=sc.nextInt();
                    break;
                case 5:
                    System.out.println("****我要点赞****");
                    System.out.println("序号\t菜品\t单价\t点赞数");
                    int j = 0;
                    for (; j < dishes.length; j++) {
                        System.out.println(" "+(j+1)+"\t\t"+dishes[j]+"\t"+prices[j]+"元\t"+like[j]);
                    }
                    int likeNum;
                    do {
                        System.out.print("请选择要点赞的菜品:");
                        likeNum=sc.nextInt();
                        if (likeNum>0&&likeNum<=like.length)break;
                        System.out.println("没有这个菜品,请重新输入:");
                    }while(true);
                    like[likeNum-1]++;
                    System.out.println("谢谢点赞!");
                    System.out.print("输入0返回:");
                    choose=sc.nextInt();
                    break;
            }
        }while(choose==0);
        System.out.println("谢谢使用,欢迎下次光临!");
    }
}

项目总结:

  • 理解需求

  • 重难点突破
    数据主体
    整体框架
    删除功能

  • 注意细节
    标识位、跳转语句、数组的操作

  • 掌握调试技巧

本文地址:https://blog.csdn.net/weixin_47880716/article/details/107400211

相关标签: Java 项目实践