Java實例項目零錢通的實現流程

註意:本項目來自B站韓順平老師 點此跳轉

完整代碼請看這裡:gitee

點擊這裡 GitHub鏈接

如圖:

老韓思路:

(1)可以把收益入賬和消費,保存到數組中(但目前學到的數組是定長的)

(2)可以使用對象

(3)可以使用String拼接

完成收益入賬,完成功能驅動程序員增加新的變化的代碼

(1)要接收收益入賬的金額,並更新餘額

(2)拼接好字符串

(3)找到時間如何輸出,並且修改其輸出格式

我用的字符串拼接

效果圖

**

一些說明

**:創建一個包 com.project.money.oop

然後創建兩個類 SmallChangeSys和SmallChangeSysOOP

SmallChangeSys 用來寫main方法代碼如下

package com.project.money.oop;

public class SmallChangeSys {
    public static void main(String[] args) {
        SmallChangeSysOOP p=new SmallChangeSysOOP();
        p.menu();
    }
}

SmallChangeSysOOP用來實現具體功能

代碼如下:

package com.project.money.oop;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class SmallChangeSysOOP {
    private  double in_money=0;//當前流動的錢
    private double balance=0;//餘額
    private String detailed="------------零錢通明細--------------";
    private Date date = null;
    //可以用於日期格式化的
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
public void menu(){};
//1 零錢通明細
 public void detailed_(){};
 //2 收益入賬"
 public void input(){};
 //3消費
    public void output(){};

}

具體說明各個方法的作用:

public void menu()方法

public void menu(){//菜單
        boolean loop=true;
        Scanner scanner = new Scanner(System.in);
        while(loop){//循環展示菜單
            System.out.println("\n============oop零錢通菜單==============");
            System.out.println("\t\t1 零錢通明細");
            System.out.println("\t\t2 收益入賬");
            System.out.println("\t\t3 消費");
            System.out.println("\t\t4 退" + "\t" + "出");
            System.out.print("請選擇1-4:");int key= scanner.nextInt();//選擇;
            switch (key){
                case 1:detailed_();break;
                case 2:input();break;
                case 3:output();break;
                case 4:System.out.println("\t\t程序已經退出");loop=false;break;
            }

        }
    }

void detailed_()方法

public void detailed_(){
        System.out.println(detailed);//直接輸出字符
    }

public void input()方法

public void input(){//收益入賬
        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入金額:");
        this.in_money=scanner.nextDouble();

        while(in_money<0){
            System.out.println("======輸入有誤======");
            System.out.println("是否重新輸入?Y(是)或 N(否) ");//可能點錯瞭不是輸入
            String in=scanner.next();//是否重新輸入
            if(in.equals("n")||in.equals("N")){
                System.out.println("返回主頁面中....");
                /*****************************************/
                try {
                    Thread.sleep( 1000 );//暫停1秒提升用戶感受
                } catch (Exception e){}
                /*******************************************/
                return;//退出輸入
            }

                System.out.println("請輸入金額:");
                this.in_money=scanner.nextDouble();
        }
        this.balance+=this.in_money;
        String beizhu="";
        date = new Date();
        System.out.println("請輸入備註:");
        beizhu=scanner.next();
        this.detailed+="\n收益入帳\t+" + this.in_money + "\t" + sdf.format(date) +
                "\t餘額:" + this.balance+ "  備註:" +beizhu;
    }

**

public void output()方法

**

 public void output(){
        System.out.println("請輸入金額:");
        Scanner scanner = new Scanner(System.in);
        in_money=scanner.nextDouble();
        if(balance<in_money){
            System.out.println("餘額不足,請充值");
            return;
        }
        while(in_money<0){
            System.out.println("輸入錯誤,請重輸");
            in_money=scanner.nextDouble();
            if(balance<in_money){
                System.out.println("餘額不足,請充值");
                return;
            }
        }
        this.balance-=in_money;
        System.out.println("請輸入備註:");
        String beizhu=scanner.next();
        this.detailed+="\n餘額支出\t-" + this.in_money + "\t" + sdf.format(date) +
                "\t餘額:" + this.balance+ "  備註:" +beizhu;

    }

SmallChangeSysOOP完整代碼

package com.project.money.oop;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class SmallChangeSysOOP {
    private  double in_money=0;//當前流動的錢
    private double balance=0;//餘額
    private String detailed="------------零錢通明細--------------";
    private Date date = null;
    //可以用於日期格式化的
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");

    public void menu(){//菜單
        boolean loop=true;
        Scanner scanner = new Scanner(System.in);
        while(loop){//循環展示菜單
            System.out.println("\n============oop零錢通菜單==============");
            System.out.println("\t\t1 零錢通明細");
            System.out.println("\t\t2 收益入賬");
            System.out.println("\t\t3 消費");
            System.out.println("\t\t4 退" + "\t" + "出");
            System.out.print("請選擇1-4:");int key= scanner.nextInt();//選擇;
            switch (key){
                case 1:detailed_();break;
                case 2:input();break;
                case 3:output();break;
                case 4:System.out.println("\t\t程序已經退出");loop=false;break;
            }

        }
    }
    //1 零錢通明細
    public void detailed_(){
        System.out.println(detailed);
    }
    //2 收益入賬"
    public void input(){//收益入賬
        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入金額:");
        this.in_money=scanner.nextDouble();

        while(in_money<0){
            System.out.println("======輸入有誤======");
            System.out.println("是否重新輸入?Y(是)或 N(否) ");//可能點錯瞭不是輸入
            String in=scanner.next();//是否重新輸入
            if(in.equals("n")||in.equals("N")){
                System.out.println("返回主頁面中....");
                /*****************************************/
                try {
                    Thread.sleep( 1000 );//暫停1秒提升用戶感受
                } catch (Exception e){}
                /*******************************************/
                return;//退出輸入
            }

                System.out.println("請輸入金額:");
                this.in_money=scanner.nextDouble();
        }
        this.balance+=this.in_money;
        String beizhu="";
        date = new Date();
        System.out.println("請輸入備註:");
        beizhu=scanner.next();
        this.detailed+="\n收益入帳\t+" + this.in_money + "\t" + sdf.format(date) +
                "\t餘額:" + this.balance+ "  備註:" +beizhu;
    }
    //3消費
    public void output(){
        System.out.println("請輸入金額:");
        Scanner scanner = new Scanner(System.in);
        in_money=scanner.nextDouble();
        if(balance<in_money){
            System.out.println("餘額不足,請充值");
            return;
        }
        while(in_money<0){
            System.out.println("輸入錯誤,請重輸");
            in_money=scanner.nextDouble();
            if(balance<in_money){
                System.out.println("餘額不足,請充值");
                return;
            }
        }
        this.balance-=in_money;
        System.out.println("請輸入備註:");
        String beizhu=scanner.next();
        this.detailed+="\n餘額支出\t-" + this.in_money + "\t" + sdf.format(date) +
                "\t餘額:" + this.balance+ "  備註:" +beizhu;

    }


}

一些圖片

到此這篇關於Java實例項目零錢通的實現流程的文章就介紹到這瞭,更多相關Java 零錢通內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: