Java實(shí)例項(xiàng)目零錢通的實(shí)現(xiàn)流程
注意:本項(xiàng)目來自B站韓順平老師 點(diǎn)此跳轉(zhuǎn)
完整代碼請看這里:gitee
點(diǎn)擊這里 GitHub鏈接

如圖:
老韓思路:
(1)可以把收益入賬和消費(fèi),保存到數(shù)組中(但目前學(xué)到的數(shù)組是定長的)
(2)可以使用對象
(3)可以使用String拼接
完成收益入賬,完成功能驅(qū)動程序員增加新的變化的代碼
(1)要接收收益入賬的金額,并更新余額
(2)拼接好字符串
(3)找到時間如何輸出,并且修改其輸出格式
我用的字符串拼接

**
一些說明
**:創(chuàng)建一個包 com.project.money.oop
然后創(chuàng)建兩個類 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用來實(shí)現(xiàn)具體功能
代碼如下:
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;//當(dāng)前流動的錢
private double balance=0;//余額
private String detailed="------------零錢通明細(xì)--------------";
private Date date = null;
//可以用于日期格式化的
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
public void menu(){};
//1 零錢通明細(xì)
public void detailed_(){};
//2 收益入賬"
public void input(){};
//3消費(fèi)
public void output(){};
}
具體說明各個方法的作用:
public void menu()方法
public void menu(){//菜單
boolean loop=true;
Scanner scanner = new Scanner(System.in);
while(loop){//循環(huán)展示菜單
System.out.println("\n============oop零錢通菜單==============");
System.out.println("\t\t1 零錢通明細(xì)");
System.out.println("\t\t2 收益入賬");
System.out.println("\t\t3 消費(fèi)");
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程序已經(jīng)退出");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(否) ");//可能點(diǎ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;//當(dāng)前流動的錢
private double balance=0;//余額
private String detailed="------------零錢通明細(xì)--------------";
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){//循環(huán)展示菜單
System.out.println("\n============oop零錢通菜單==============");
System.out.println("\t\t1 零錢通明細(xì)");
System.out.println("\t\t2 收益入賬");
System.out.println("\t\t3 消費(fèi)");
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程序已經(jīng)退出");loop=false;break;
}
}
}
//1 零錢通明細(xì)
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(否) ");//可能點(diǎ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消費(fèi)
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;
}
}
一些圖片




到此這篇關(guān)于Java實(shí)例項(xiàng)目零錢通的實(shí)現(xiàn)流程的文章就介紹到這了,更多相關(guān)Java 零錢通內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java實(shí)現(xiàn)航空航班管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)航空航班管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-07-07
Java連接數(shù)據(jù)庫JDBC技術(shù)之prepareStatement的詳細(xì)介紹
這篇文章主要介紹了Java連接數(shù)據(jù)庫JDBC技術(shù)之prepareStatement的詳細(xì)介紹,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
SpringBoot自定義對象參數(shù)實(shí)現(xiàn)自動類型轉(zhuǎn)換與格式化
SpringBoot 通過自定義對象參數(shù),可以實(shí)現(xiàn)自動類型轉(zhuǎn)換與格式化,并可以級聯(lián)封裝,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-09-09
Mac M1 Java 開發(fā)環(huán)境配置詳解
這篇文章主要介紹了Mac M1 Java 開發(fā)環(huán)境配置詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
Servlet實(shí)現(xiàn)簡單的用戶登錄功能實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于利用Servlet實(shí)現(xiàn)簡單的用戶登錄功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12

