【Java基础】04.Java小项目|零钱通项目

零钱通项目

1.菜单主界面 

2.零钱通明细界面

选择“1”,查看零钱通明细,包含入账、消费、时间、余额

 3.收益入账界面

 (1)选择 输入“2”之后,再输入收益“200”。

(2)输入收益后,再选择“1”查看零钱通明细,显示入账收益金额,余额,时间。

4.零钱通消费 

 (1)选择3,进行消费,输入消费金额和说明。

(2)选择1,查看零钱通明细,可以看到消费记录,包含金额,时间,余额。

5.零钱通退出确认

选择4,输入y/n,输入y,则退出项目。输入n,则项目继续。

6.零钱通金额校验

(1)收益金额必须为正数,当输入不合法,给出提示。

(2)消费金额必须为正数且不能超过余额,否则给出提示。

7.零钱通代码与运行步骤(面向过程的代码版本)

方式1:新建一个项目(项目名称随便取),然后在项目的src文件下新建一个Hello.java类,然后将下面的代码直接复制粘贴进行就行。

方式2:新建一个项目(项目名称随便取),然后在项目的src文件下新建一个java类(类名称随便取),然后将下面代码复制粘贴进行,此时会报错,将第5行代码public class Hello中的Hello改为你所取的java类的名称即可。(原因是,公有类名称必须与.java文件的名称相同)。

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class Hello {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        String key = ""; // 输入的数字选项
        boolean loop = true;  //判断菜单循环是否继续

        //1.零钱通明细的相关变量
        String details = "---------零钱通明细------------";  // 采用字符串拼接的方式记录零钱通明细的内容,details就是此字符串

        //2.收益入账的相关变量
        double money = 0;  //  入账/消费金额
        double balance = 0; //余额
        Date date = null;  //日期变量  date为java.util.Date类型的对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); // 变量目的:对日期格式进行调整

        //3.消费的相关变量的添加
        String note = ""; //消费信息的说明

        //4.退出的相关变量
        String quit = ""; //确认退出

        do{
            System.out.println("\n-----------零钱通菜单-----------");
            System.out.println("1 零钱通明细" );
            System.out.println("2 收益入账" );
            System.out.println("3 消 费" );
            System.out.println("4 退 出" );
            System.out.print("请选择(1-4):");

            key = sc.next();    // 输入的数字选项
            switch(key){
                case "1":
                    System.out.println(details);
                    break;
                case "2":
                    System.out.print("输入收益:");

                    money = sc.nextDouble(); //收入保存在money中
                    if(money <= 0){
                        System.out.println("输入合理金额,收入必须大于0");
                        break;
                    }

                    balance += money; //余额 = 原来的余额 + 本次收入
                    date = new Date();  //获取当前日期
                    //对保存零钱通明细的字符串变量details进行拼接
                    details += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t" + "余额:" + balance;

                    break;
                case "3":
                    System.out.print("输入消费金额:");
                    money = sc.nextDouble(); //消费金额保存在money中
                    if(money <= 0 || money > balance){
                        System.out.println("输入要在 0-" + balance);
                        break;
                    }
                    balance -= money; //余额 = 原来的余额 - 本次消费

                    System.out.print("输入消费说明:");
                    note = sc.next();
                    date = new Date(); //获取当前日期
                    //将消费记录拼接到details字符串
                    details += "\n"+ note + "\t-" + money + "\t" + sdf.format(date) + "\t" + "余额:" + balance;
                    break;
                case "4":
                    while(true){
                        System.out.println("你确定要退出吗?y/n");
                        quit = sc.next();
                        if(quit.equals("y") || quit.equals("n")){
                            break;
                        }
                    }
                    if(quit.equals("y")){
                        loop = false;
                    }
                    break;

                default:
                    System.out.println("请从1-4中进行选择,重新选择");

            }
        }while(loop);
        System.out.println("-----零钱通项目结束------");

    }
}

8.零钱通oop版(面向对象版)

创建两个不同类,一个Hello1.java类,用于完成零钱通的各个功能。Hello2.java类,用于创建对象,调用零钱通的各个功能。

Hello1.java类中的代码如下:

package test;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

/**
 *  该类是完成零钱通的各个功能的类
 *  使用OOP(面向对象编程)
 *  将各个功能对应一个方法
 */
public class Hello1 {

    Scanner sc = new Scanner(System.in);
    String key = ""; // 输入的数字选项
    boolean loop = true;  //判断菜单循环是否继续

    //1.零钱通明细的相关变量
    String details = "---------零钱通明细(OOP面向对象版)------------";  // 采用字符串拼接的方式记录零钱通明细的内容,details就是此字符串

    //2.收益入账的相关变量
    double money = 0;  //  入账/消费金额
    double balance = 0; //余额
    Date date = null;  //日期变量  date为java.util.Date类型的对象
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); // 变量目的:对日期格式进行调整

    //3.消费的相关变量的添加
    String note = ""; //消费信息的说明

    //4.退出的相关变量
    String quit = ""; //确认退出

    /*
        以下为方法的实现
    */

    //实现主菜单功能
    public void mainMenu(){
        do{
            System.out.println("\n-----------零钱通菜单-----------");
            System.out.println("1 零钱通明细" );
            System.out.println("2 收益入账" );
            System.out.println("3 消 费" );
            System.out.println("4 退 出" );
            System.out.print("请选择(1-4):");

            key = sc.next();    // 输入的数字选项
            switch(key){
                case "1":
                    this.detail();
                    break;
                case "2":
                    this.income();
                    break;
                case "3":
                    this.pay();
                    break;
                case "4":
                    this.exit();
                    break;

                default:
                    System.out.println("请从1-4中进行选择,重新选择");

            }
        }while(loop);
    }

    //实现零钱通明细功能
    public void detail(){
        System.out.println(details);
    }

    //实现收益功能
    public void income(){
        System.out.print("输入收益:");

        money = sc.nextDouble(); //收入保存在money中
        if(money <= 0){
            System.out.println("输入合理金额,收入必须大于0");
            return;
        }

        balance += money; //余额 = 原来的余额 + 本次收入
        date = new Date();  //获取当前日期
        //对保存零钱通明细的字符串变量details进行拼接
        details += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t" + "余额:" + balance;

    }

    //实现消费功能
    public void pay(){
        System.out.print("输入消费金额:");
        money = sc.nextDouble(); //消费金额保存在money中
        if(money <= 0 || money > balance){
            System.out.println("输入要在 0-" + balance);
            return;
        }
        balance -= money; //余额 = 原来的余额 - 本次消费

        System.out.print("输入消费说明:");
        note = sc.next();
        date = new Date(); //获取当前日期
        //将消费记录拼接到details字符串
        details += "\n"+ note + "\t-" + money + "\t" + sdf.format(date) + "\t" + "余额:" + balance;
    }


    //实现退出功能
    public void exit(){
        while(true){
            System.out.println("你确定要退出吗?y/n");
            quit = sc.next();
            if(quit.equals("y") || quit.equals("n")){
                break;
            }
        }
        if(quit.equals("y")){
            loop = false;
        }
    }

}

Hello2.java中的代码如下: 

package test;

/**
 * 直接调用Hello1 对象,显示主菜单
 */
public class Hello2 {
    public static void main(String[] args) {
        new Hello1().mainMenu();
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

行走__Wz

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

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

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

打赏作者

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

抵扣说明:

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

余额充值