/* *@author: Noiimplant *@version: 1.0 */ 1. 利用java實現簡易記賬軟體 根據尚矽谷java教程進行練習 2. 實現功能 記錄家庭支出、收入,列印收支明細表 使用分級菜單的方式 3. 代碼實現 3.1 GuliAccount.java package G ...
/*
*@author: Noiimplant
*@version: 1.0
*/
1. 利用java實現簡易記賬軟體
根據尚矽谷java教程進行練習
2. 實現功能
- 記錄家庭支出、收入,列印收支明細表
- 使用分級菜單的方式
3. 代碼實現
3.1 GuliAccount.java
package GuliAccount;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
@author Noiimplant
@data 2023-4-21
@name: 階段一 項目:穀粒記
賬軟體實現
*/
public class GuliAccount {
public static void main(String args[]){
boolean flag = true;
SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss"); //設計日期格式
System.out.println(df.format(new Date())); //new Data()獲取當前時間
String currentTime = "";
//初始金額
int init_Money = 0;
String info = ""; //用來記錄收支的記錄
while(flag){
System.out.println("------------穀粒記賬軟體--------------\n");
System.out.println(" 1.收支明細\n");
System.out.println(" 2.登記收入\n");
System.out.println(" 3.登記支出\n");
System.out.println(" 4.退 出\n");
System.out.println(" 請選擇(1-4)\n");
char selction = Unility.readMenuSelection();
switch(selction){
case '1':
System.out.println("--------------收入明細--------------");
System.out.println("收支\t賬戶金額\t收支金額\t說 明\t日 期\n");
System.out.println(info);
System.out.println("-----------------------------------");
break;
case '2':
System.out.println("本次收入金額:");
int money1 = Unility.readNumber();
if(money1 > 0){
init_Money += money1; //
}
System.out.println("本次收入金額說明:");
String addExample = Unility.readString();
Date Now1 = new Date();
currentTime = df.format(Now1);
info += "收入\t\t" + init_Money + "\t\t" + money1 + "\t\t" + addExample + "\t\t" + currentTime + "\n";
System.out.println("--------------登記完成--------------");
break;
case '3':
System.out.println("登記支出");
System.out.println("本次收入金額:");
int money2 = Unility.readNumber();
if(money2 > 0 && init_Money > money2){
init_Money -= money2; //
}
System.out.println("本次支出金額說明:");
String addExample2 = Unility.readString();
Date Now2 = new Date();
currentTime = df.format(Now2);
info += "收入\t\t" + init_Money + "\t\t" + money2 + "\t" + currentTime + addExample2 + "\n";
System.out.println("--------------登記完成--------------");
break;
case '4':
System.out.println("請確認是否退出(Y/N)");
char isExit = Unility.readConfirmSelect();
if(isExit == 'Y'){
flag = false;
}
break;
}
}
}
}
3.2 Unility
package GuliAccount;
import java.util.*;
public class Unility {
private static Scanner sc = new Scanner(System.in);
/*
* 判斷selection
* */
public static char readMenuSelection(){
char c;
for(;;){
String str = readKeyBoard(1);
c = str.charAt(0);
if(c != '1' && c != '2' && c != '3' && c != '4'){
System.out.println("輸入的數據有誤,請重新輸入:");
}
else{
break;
}
}
return c;
}
/*
* 用於收入和支出說明的輸入。
* 該方法從鍵盤讀取一個不超過8位長度的字元串,並將其作為方法的返回值。
*/
public static String readString(){
String str = readKeyBoard(8);
return str;
}
/*
* 用於收入和支出金額的存儲
*/
public static int readNumber(){
int num;
for(;;){
String str = readKeyBoard(4);
try{
num = Integer.parseInt(str);
break;
}
catch(NumberFormatException e){
System.out.println("輸入數據有誤,請重新輸入");
}
}
return num;
};
/*
* 用於確認選擇的輸入。
* 該方法從鍵盤讀取‘Y’或‘N’,並將其作為方法的返回值。
*/
public static char readConfirmSelect() {
char c;
for(;;){
String str = readKeyBoard(1).toUpperCase();
c = str.charAt(0);
if(c == 'Y' || c == 'N'){
break;
}
else{
System.out.println("輸入有誤,請重新輸入");
}
}
return c;
}
/*
* 從鍵盤鍵入的字元判斷
*/
public static String readKeyBoard(int limit){
String line = "";
while(sc.hasNext()){
line = sc.nextLine();
if(line.length() < 1 || line.length() > limit){
System.out.println("輸入的長度不大於" + limit + ",請重新輸入");
continue;
}
else break;
}
return line;
}
}
原文鏈接:
尚矽谷java教程鏈接