该案例根据尚硅谷的家庭收支案例作了细微的更改
对该案例作了详细的代码解释,方便阅读的时候更加清晰
最后展现的功能如下
上代码:
package com.helloworld.java;
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args){
// 定义isFlag来判断用户是否退出系统
boolean isFlag = true;
// 用于记录收入和支出的细节
String details = "收支\t账户金额\t收支金额\t说明\n";
// 初始化金额
int balance = 0;
// 设置显示页面,并在使用时循环显示
while(isFlag){
System.out.println("-----------我 的 收 支 记 录-----------");
System.out.println("--------------1.收支明细---------------");
System.out.println("--------------2.登记收入---------------");
System.out.println("--------------3.登记输出---------------");
System.out.println("--------------4.退 出---------------");
System.out.println();
System.out.println("请选择(1-4):");
// 从readMenuSelection中获取选择的功能号
char selection = Utility.readMenuSelection();
// 使用switch来进入对应的功能
switch(selection) {
// 当用户执行收支明细操作
case '1':
System.out.println("------------当前收支明细记录------------");
// 显示收支的明细,明细记录存放在details字符串中
System.out.println(details);
System.out.println("---------------------------------------");
break;
// 当用户执行登记收入操作
case '2':
System.out.println("登记中...");
System.out.print("本次收入金额:");
// 定义一个addMoney用来存放登记的金额
int addMoney = Utility.readNumber();
System.out.print("本次收入说明:");
String addInfo = Utility.readString();
// 更新账户金额
balance += addMoney;
// 更新显示收入信息
details += "收入\t" + balance + "\t\t\t" + addMoney + "\t\t\t" + addInfo + "\n";
System.out.println("---------------登记完成-----------------");
break;
// 当用户执行登记支出操作
case '3':
System.out.println("登记中...");
System.out.print("本次支出金额:");
// 定义一个reduceMoney来存放消费的金额
int reduceMoney = Utility.readNumber();
System.out.print("本次支出说明:");
String reduceInfo = Utility.readString();
// 更新账户金额
balance -= reduceMoney;
// 更新显示收入信息
details += "支出\t" + balance + "\t\t\t" + reduceMoney + "\t\t\t" + reduceInfo + "\n";
System.out.println("---------------登记完成-----------------");
break;
// 当用户执行退出系统操作
case '4':
System.out.println("确认是否退出该系统:y/n");
char isQuit = Utility.readConfimSelection();
if (isQuit == 'Y') {
System.out.println("正在退出系统...");
isFlag = false;
}
break;
}
}
}
private static void readMenuSelection() {
}
}
// 定义一个工具类
class Utility{
private static Scanner scanner = new Scanner(System.in);
private static String readKeyBoard(int limit){
label:for(;;){
String str = scanner.next();
if(str.length() > limit){
System.out.println("输入过长,请重新输入:");
continue label;
}else{
return str;
}
}
}
// 读取用户的选择功能号
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;
}
// 读取用户输入的金额
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;
}
// 读取用户输入的收支说明
public static String readString(){
String str = readKeyBoard(8);
return str;
}
// 读取用户是否退出系统
public static char readConfimSelection(){
char c;
for(;;){
String str = readKeyBoard(1).toUpperCase();
c = str.charAt(0);
if(c =='Y' || c == 'N'){
break;
}else{
System.out.print("选择错误,请重新输入:");
}
}
return c;
}
}
break;
}else{
System.out.print("选择错误,请重新输入:");
}
}
return c;
}
}
理解了该代码的话,像学生管理系统之类的都不在话下了!!!
都可以根据该代码做出适当的调整,即可实现!!!