零钱通oop(面向对象编程)

实现类:

package com.demo;


/*
*
* 使用面向对象的方法来调用零钱 通的功能类
* */
public class SmallChangesApp {
    
    
    public static void main(String[] args) {
    
    
        new SmallChangesOOP().mainMenu();
    }
}

功能类:

package com.demo;

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

public class SmallChangesOOP {
    
    
//    属性

    //        定义相关的变量
    boolean loop = true;
    String key = " ";
    Scanner scanner = new Scanner( System.in );


//        1.完成零钱通明细     1.可以存储到数组   2.使用对象   3.使用字符串拼接  (先完成收入和消费)


    //        收入入账
    double money = 0;//存钱
    double balance = 0;//余额
    Date date = null;//日期
    SimpleDateFormat sdf = new SimpleDateFormat( "YYYY-MM-dd HH:mm" );
    String detail = "================零钱通明细=====================";


//        消费

    //        定义变量来保存消费的金额
    String note = null;


    //    显示菜单的方法
    public void mainMenu() {
    
    
        do {
    
    


            System.out.println( "\n\n=============零钱通菜单=========" );
            System.out.println( "\t\t\t\t1.零钱明细" );
            System.out.println( "\t\t\t\t2.收益入账" );
            System.out.println( "\t\t\t\t3.消费" );
            System.out.println( "\t\t\t\t4.退出" );
            System.out.println( "请选择(1-4)" );
            key = scanner.next();

            switch (key) {
    
    
                case "1":
                    this.liQianMingXi();
                    break;


                case "2":

                    this.income();
                    break;


                case "3":
                    this.consume();
                    break;


                case "4":
                    this.exit();


                    break;
                default:
                    System.out.println( "你的输入有误请重新选择" );
                    break;


            }


        } while (loop);


    }

    //    收入金额
    public void income() {
    
    
        System.out.println( "\t\t\t\t2.收益入账金额" );

        money = scanner.nextDouble();
        if (money <= 0) {
    
    

            return;//执行到这里不会住下执行
        }
    }

    //零钱明细
    public void liQianMingXi() {
    
    

        money += 0;
        balance += money;
        date = new Date();
//                    System.out.println( sdf.format( date ) );
        detail += "\n收益入账+" + money + "\t" + sdf.format( date ) + "\t余额" + balance;
        System.out.println( detail );

        return;

    }


    //    消费
    public void consume() {
    
    
        System.out.println( "输入消费的角色" );
        note = scanner.next();

        while (true) {
    
    
            System.out.println( "\t\t\t\t3.输入你的消费金额" );
            money = scanner.nextDouble();//范围的校验


            /*找出不符合条件的然后break*/
            if (balance - money < 0) {
    
       //判断消费的金额是否符合要求

                System.out.printf( "你的余额不足,余额只有%f\n", balance );

                break;
//                            它又会回到上面继续执行循环
            }


            balance -= money;
            break;


        }


        date = new Date();
        detail += "\n" + note + "金额-" + money + "\t" + sdf.format( date ) + "\t余额" + balance;
        System.out.println( detail );

        return;


    }

    //    退出
    public void exit() {
    
    
        //                    提示是否退出界面y/n
//                    思路定义一个接收变量
//                    while +break 来实现chioce是y还是n
//                    退出while循环之后在判断是y还是n
        String choice = " ";
        while (true) {
    
    
            System.out.println( "是否退出界面y/n" );
            choice = scanner.next();
            if ("y".equals( choice ) || "n".equals( choice )) {
    
    
                break;
            } else {
    
    
                System.out.println( "你的输入有误,请重新输入" );
            }

        }
//                    判断是y还是n
        if ("y".equals( choice )) {
    
    
            loop = false;
            System.out.println( "\t\t\t\t-------退出界面------" );
        }


        return;
    }


}

猜你喜欢

转载自blog.csdn.net/houzhicongone/article/details/114196246