Java項目之家庭記賬軟件
項目要求
要求實現一個基于文本界面的記賬軟件,模擬實現一個基于文本界面的《家庭記賬軟件》,掌握初步的編程技巧和調試技巧。
主要涉及以下知識點:
- 局部變量和基本數據類型
- 循環語句
- 分支語句
- 方法調用和返回值的接收
- 簡單的屏幕輸出格式控制
界面如下圖所示:
utility.java代碼:
package demo; import java.util.Scanner; public class utility { private static Scanner scanner = new Scanner(System.in); /** 用于界面菜單的選擇。該方法讀取鍵盤,如果用戶鍵入’1’-’4’中的任意字符,則方法返回。返回值為用戶鍵入字符。 */ 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.print("選擇錯誤,請重新輸入:"); } else break; } return c; } /** 用于收入和支出金額的輸入。該方法從鍵盤讀取一個不超過4位長度的整數,并將其作為方法的返回值。 */ public static int readNumber() { int n; for (; ; ) { String str = readKeyBoard(4); try { n = Integer.parseInt(str); break; } catch (NumberFormatException e) { System.out.print("數字輸入錯誤,請重新輸入:"); } } return n; } /** 用于收入和支出說明的輸入。該方法從鍵盤讀取一個不超過8位長度的字符串,并將其作為方法的返回值。 */ public static String readString() { String str = readKeyBoard(8); return str; } /** 用于確認選擇的輸入。該方法從鍵盤讀取‘Y’或’N’,并將其作為方法的返回值。 */ public static char readConfirmSelection() { char c; for (; ; ) { String str = readKeyBoard(1).toUpperCase(); c = str.charAt(0); if (c == 'Y' || c == 'N') { break; } else { System.out.print("選擇錯誤,請重新輸入:"); } } return c; } private static String readKeyBoard(int limit) { String line = ""; while (scanner.hasNext()) { line = scanner.nextLine(); if (line.length() < 1 || line.length() > limit) { System.out.print("輸入長度(不大于" + limit + ")錯誤,請重新輸入:"); continue; } break; } return line; } }
FamilyAccount.java代碼:
package demo; public class FamliyAccount { public static void main(String arg[]){ boolean isFlag=true; //用于記錄用戶的收入和支出的詳情 String details = "收支\t賬戶金額 \t收支金額 \t說 明\n"; //初始金額 int balance=10000; while (isFlag){ 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):"); char selection=utility.readMenuSelection(); switch (selection){ case '1': //System.out.println("1.收支明細"); System.out.println("-----------當前收支收支明細記錄----------------"); System.out.println(details); System.out.println("-------------------------------------------"); break; case '2': //System.out.println("2.登記收入"); System.out.println("本次收入金額:"); int money=utility.readNumber(); System.out.print("本次收入說明:"); String info = utility.readString(); balance+=money; //處理details details +=("收入\t"+balance+"\t"+money+"\t\t"+info+"\n"); System.out.println("-----------登記完成----------------"); break; case '3': //System.out.println("3.登記支出"); System.out.println("本次支出金額:"); int minusmoney = utility.readNumber(); System.out.print("本次支出說明:"); String minusInfo = utility.readString(); //處理balance if(balance >= minusmoney) { balance -= minusmoney; //處理details details +=("支出\t"+balance+"\t"+minusmoney+"\t\t"+minusInfo+"\n"); }else { System.out.println("支出超出賬戶額度,支付失敗"); } System.out.println("-----------登記完成----------------"); break; case '4': //System.out.println("5.退 出"); System.out.print("確認是否退出(Y/N):"); char isExit=utility.readConfirmSelection(); if (isExit == 'Y') { isFlag = false; break; } } } } }
Java
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。