登记支出功能的实现(java)
2021-04-01 18:27
标签:通过 失败 ring money mamicode conf import tin new 一、大体思路 实现结果如图所示,故我们可利用switch语句分为四个case来实现收支功能。首先我们要建一个Utility工具类,工具类有四个类:菜单1-4的输入,收入支出金额的输入,收入支出的说明、确认选择的收入。 二、详细讲解 1、菜单的循环 实现用while来实现,定义一个isFlag=true则一直循环,若isFlag=false则退出循环。同时利用Utility工具类中的readMenuSelection(用于界面菜单的选择。该方法读取键盘,如果用户键入’1’-’4’中的任意字符,则方法返回。返回值为用户键入字符。)定义selection来确定菜单的选择1-4。具体代码如下:(Utility工具类源代码在最下边) 2、四个选择的实现 收支明细的实现 定义一个字符串details = 收支\t账户金额\t收支金额\t说 明 直接输出 登记收入的实现 在details的前提上加上新录入的数据,同时定义初始money为balance=10000;用到了工具类里边的两个类readNumber( 用于收入和支出金额的输入。该方法从键盘读取一个不超过4位长度的整数,并将其作为方法的返回值。)和readString( 用于收入和支出说明的输入。该方法从键盘读取一个不超过8位长度的字符串,并将其作为方法的返回值。)。 登记支出的实现 与登记收入可以类比,有一点不同的就是登记支出不能比原来账户里边的钱多。 退出的实现 如果isExit==Y,则给isFlag赋值false。readConfirmSelection(用于确认选择的输入。该方法从键盘读取‘Y’或’N’,并将其作为方法的返回值。) 三、源代码 Utility源代码 FamilyAccount源代码 登记支出功能的实现(java) 标签:通过 失败 ring money mamicode conf import tin new 原文地址:https://www.cnblogs.com/xiayuan521/p/13524912.html 1 while(isFlag){
2
3 System.out.println("-----------------家庭收支记账软件-----------------\n");
4 System.out.println(" 1 收支明细");
5 System.out.println(" 2 登记收入");
6 System.out.println(" 3 登记支出");
7 System.out.println(" 4 退 出\n");
8 System.out.print(" 请选择(1-4):");
9 //获取用户的选择:1-4
10 char selection = Utility.readMenuSelection();
11 switch(selection)
1 case ‘1‘:
2 //System.out.println("1.收支明细");
3 System.out.println("-----------------当前收支明细记录-----------------");
4 System.out.println(details);
5 System.out.println("--------------------------------------------------");
6 break;
1 case ‘2‘:
2 //System.out.println("2.登记收入");
3 System.out.print("本次收入金额:");
4 int addMoney = Utility.readNumber();
5 System.out.print("本次收入说明:");
6 String addInfo = Utility.readString();
7
8 //处理balance
9 balance += addMoney;
10
11 //处理details
12 details += ("收入\t" + balance + "\t\t" + addMoney + "\t\t" + addInfo + "\n");
13
14
15 System.out.println("---------------------登记完成---------------------\n");
16 break;
1 case ‘3‘:
2 //System.out.println("3.登记支出");
3
4 System.out.print("本次支出金额:");
5 int minusMoney = Utility.readNumber();
6 System.out.print("本次支出说明:");
7 String minusInfo = Utility.readString();
8
9 //处理balance
10 if(balance >= minusMoney){
11 balance -= minusMoney;
12
13 //处理details
14 details += ("支出\t" + balance + "\t\t" + minusMoney + "\t\t" + minusInfo + "\n");
15 }else{
16 System.out.println("支出超出账户额度,支付失败");
17 }
18
19 System.out.println("---------------------登记完成---------------------\n");
20 break;
1 case ‘4‘:
2 //System.out.println("4.退 出");
3 System.out.print("确认是否退出(Y/N):");
4 char isExit = Utility.readConfirmSelection();
5 if(isExit == ‘Y‘){
6 isFlag = false;
7 }
8
9 //break;
1 package day5;
2
3 import java.util.Scanner;
4 /**
5 Utility工具类:
6 将不同的功能封装为方法,就是可以直接通过调用方法使用它的功能,而无需考虑具体的功能实现细节。
7 */
8 public class Utility {
9 private static Scanner scanner = new Scanner(System.in);
10 /**
11 用于界面菜单的选择。该方法读取键盘,如果用户键入’1’-’4’中的任意字符,则方法返回。返回值为用户键入字符。
12 */
13 public static char readMenuSelection() {
14 char c;
15 for (; ; ) {
16 String str = readKeyBoard(1);
17 c = str.charAt(0);
18 if (c != ‘1‘ && c != ‘2‘ && c != ‘3‘ && c != ‘4‘) {
19 System.out.print("选择错误,请重新输入:");
20 } else break;
21 }
22 return c;
23 }
24 /**
25 用于收入和支出金额的输入。该方法从键盘读取一个不超过4位长度的整数,并将其作为方法的返回值。
26 */
27 public static int readNumber() {
28 int n;
29 for (; ; ) {
30 String str = readKeyBoard(4);
31 try {
32 n = Integer.parseInt(str);
33 break;
34 } catch (NumberFormatException e) {
35 System.out.print("数字输入错误,请重新输入:");
36 }
37 }
38 return n;
39 }
40 /**
41 用于收入和支出说明的输入。该方法从键盘读取一个不超过8位长度的字符串,并将其作为方法的返回值。
42 */
43 public static String readString() {
44 String str = readKeyBoard(8);
45 return str;
46 }
47
48 /**
49 用于确认选择的输入。该方法从键盘读取‘Y’或’N’,并将其作为方法的返回值。
50 */
51 public static char readConfirmSelection() {
52 char c;
53 for (; ; ) {
54 String str = readKeyBoard(1).toUpperCase();
55 c = str.charAt(0);
56 if (c == ‘Y‘ || c == ‘N‘) {
57 break;
58 } else {
59 System.out.print("选择错误,请重新输入:");
60 }
61 }
62 return c;
63 }
64
65
66 private static String readKeyBoard(int limit) {
67 String line = "";
68
69 while (scanner.hasNext()) {
70 line = scanner.nextLine();
71 if (line.length() limit) {
72 System.out.print("输入长度(不大于" + limit + ")错误,请重新输入:");
73 continue;
74 }
75 break;
76 }
77
78 return line;
79 }
80 }
1 package day5;
2
3
4 class FamilyAccount{
5
6 public static void main(String[] args){
7
8 boolean isFlag = true;
9 //用于记录用户的收入和支出的详情
10 String details = "收支\t账户金额\t\t收支金额\t\t1说 明\n";
11 //初始金额
12 int balance = 10000;
13
14 while(isFlag){
15
16 System.out.println("-----------------家庭收支记账软件-----------------\n");
17 System.out.println(" 1 收支明细");
18 System.out.println(" 2 登记收入");
19 System.out.println(" 3 登记支出");
20 System.out.println(" 4 退 出\n");
21 System.out.print(" 请选择(1-4):");
22 //获取用户的选择:1-4
23 char selection = Utility.readMenuSelection();
24 switch(selection){
25
26 case ‘1‘:
27 //System.out.println("1.收支明细");
28 System.out.println("-----------------当前收支明细记录-----------------");
29 System.out.println(details);
30 System.out.println("--------------------------------------------------");
31 break;
32 case ‘2‘:
33 //System.out.println("2.登记收入");
34 System.out.print("本次收入金额:");
35 int addMoney = Utility.readNumber();
36 System.out.print("本次收入说明:");
37 String addInfo = Utility.readString();
38
39 //处理balance
40 balance += addMoney;
41
42 //处理details
43 details += ("收入\t" + balance + "\t\t" + addMoney + "\t\t" + addInfo + "\n");
44
45
46 System.out.println("---------------------登记完成---------------------\n");
47 break;
48 case ‘3‘:
49 //System.out.println("3.登记支出");
50
51 System.out.print("本次支出金额:");
52 int minusMoney = Utility.readNumber();
53 System.out.print("本次支出说明:");
54 String minusInfo = Utility.readString();
55
56 //处理balance
57 if(balance >= minusMoney){
58 balance -= minusMoney;
59
60 //处理details
61 details += ("支出\t" + balance + "\t\t" + minusMoney + "\t\t" + minusInfo + "\n");
62 }else{
63 System.out.println("支出超出账户额度,支付失败");
64 }
65
66 System.out.println("---------------------登记完成---------------------\n");
67 break;
68 case ‘4‘:
69 //System.out.println("4.退 出");
70 System.out.print("确认是否退出(Y/N):");
71 char isExit = Utility.readConfirmSelection();
72 if(isExit == ‘Y‘){
73 isFlag = false;
74 }
75
76 //break;
77 }
78
79
80
81 }
82
83 }
84
85 }