java练手小项目_1

1、需求分析

(1)用户可以点菜
(2)用户可以查看已经点的菜
(3)结账计算

2、概要设计

(1)编译工具:idea
(2)主要是在控制台实现
(3)只是很简单的一个程序,目的在于开始学习Java时锻炼一下思维

3、详细设计

  1. 主菜单界面:为用户与计算机进行交互
public static void menu(){
    System.out.println("-----主菜单-----");
    System.out.println("菜单\t\t\t 1");
    System.out.println("已点菜品\t\t 2");
    System.out.println("买单\t\t\t 3");
    System.out.println("-----根据编号选择服务-----");
}
  1. 菜单:展示程序预先设计好的菜品,主要利用集合以及集合的遍历
public static void showMenu(){
    System.out.println("-----开始点菜-----");
    for (int i = 0; i < dishList.size(); i++) {//dishList.fori+enter
        Dish dish = dishList.get(i);
        System.out.println(dish.id+"\t"+dish.name+"\t"+dish.price);
    }
    System.out.println("-----输入序号点菜,按0结束点菜-----");
} 
  1. 已点菜品:定义了一个静态的集合,用来存储用户刚刚点过的菜
public static void show_haveOrder(){
    System.out.println("-----你已经点的菜-----");
    for (int i = 0; i < orderList.size(); i++) {
        Dish dish = orderList.get(i);
        System.out.println(dish.id+"\t"+dish.name+"\t"+dish.price);
    }
}
  1. 买单:简单的集合遍历
public static void pay(){
    System.out.println("-----请稍等,正在结算-----");
    double total = 0f;
    for (Dish dish : orderList) {
        total += dish.price;
    }
    System.out.println("亲,您需要支付的金额为:"+total+"元");
}

4、流程图

在这里插入图片描述

5、扩展设计

(1)点菜时同一个菜点多次,不要一个个打印出来,用 菜品x份数
(2)可以进行退菜操作(删除orderList中的某元素)
(3)可以以文件录入方式来更新菜单(I/O流),不过要注意乱码问题
我没有去做扩展

6、代码部分

  1. 目录
    在这里插入图片描述

  2. 我定义的菜品

public static void initDish(){
    Dish dish1 = new Dish(1,"香辣肉丝",29.0);
    Dish dish2 = new Dish(2,"油闷大虾",99.0);
    Dish dish3 = new Dish(3,"黄焖鸡",80.0);
    Dish dish4 = new Dish(4,"水煮牛肉",56.0);
    Dish dish5 = new Dish(5,"猪肚汤",46.0);
    dishList.add(dish1);
    dishList.add(dish2);
    dishList.add(dish3);
    dishList.add(dish4);
    dishList.add(dish5);
}
  1. 全部代码
    Dish.java
package cn.tx.demo;
/*
提供有参数的构造方法
 */
public class Dish {
    int id;//编号
    String name;//菜名
    double price;//价格

    //生成构造方法 alt+insert

    public Dish(int id, String name, double price) {
        this.id = id;
        this.name = name;
        this.price = price;
    }
}

orderApp.java

package cn.tx.demo;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class orderApp {
    //提前准备菜品,展示给用户
    static List<Dish> dishList = new ArrayList<>();
    static List<Dish> orderList = new ArrayList<>();
    public static void main(String[] args){
        initDish();//初始化菜单
        Scanner user = new Scanner(System.in);
        while(true){
            menu();
            int num = user.nextInt();//阻塞的效果
            switch (num){
                case 1:
                    while(true){
                        showMenu();
                        int id = user.nextInt();
                        if(id == 0)break;//结束选菜
                        Dish dish = dishList.get(id - 1);
                        orderList.add(dish);
                    }
                case 2:
                    show_haveOrder();
                    break;
                case 3:
                    pay();
                    return;//整个循坏结束
            }
        }
    }
    public static void showMenu(){
        System.out.println("-----开始点菜-----");
        for (int i = 0; i < dishList.size(); i++) {//dishList.fori+enter
            Dish dish = dishList.get(i);
            System.out.println(dish.id+"\t"+dish.name+"\t"+dish.price);
        }
        System.out.println("-----输入序号点菜,按0结束点菜-----");
    } 
    public static void show_haveOrder(){
        System.out.println("-----你已经点的菜-----");
        for (int i = 0; i < orderList.size(); i++) {
            Dish dish = orderList.get(i);
            System.out.println(dish.id+"\t"+dish.name+"\t"+dish.price);
        }
    }
    public static void pay(){
        System.out.println("-----请稍等,正在结算-----");
        double total = 0f;
        for (Dish dish : orderList) {
            total += dish.price;
        }
        System.out.println("亲,您需要支付的金额为:"+total+"元");
    }
    public static void menu(){
        System.out.println("-----主菜单-----");
        System.out.println("菜单\t\t\t 1");
        System.out.println("已点菜品\t\t 2");
        System.out.println("买单\t\t\t 3");
        System.out.println("-----根据编号选择服务-----");
    }
    public static void initDish(){
        Dish dish1 = new Dish(1,"香辣肉丝",29.0);
        Dish dish2 = new Dish(2,"油闷大虾",99.0);
        Dish dish3 = new Dish(3,"黄焖鸡",80.0);
        Dish dish4 = new Dish(4,"水煮牛肉",56.0);
        Dish dish5 = new Dish(5,"猪肚汤",46.0);
        dishList.add(dish1);
        dishList.add(dish2);
        dishList.add(dish3);
        dishList.add(dish4);
        dishList.add(dish5);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

★Object★

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值