侧边栏壁纸
  • 累计撰写 8 篇文章
  • 累计创建 6 个标签
  • 累计收到 2 条评论
隐藏侧边栏

JAVA基础教程-项目一家庭记账

散人_
2021-02-18 / 0 评论 / 0 点赞 / 489 阅读 / 3,626 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2021-05-21,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

JAVA基础教程

JAVA基础教程-项目一家庭记账

Utility工具:

package Project;
import java.util.*;
public class Utility {
	private static Scanner scan = 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(10);
			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){ //定义readKeyBoard方法,限制输入长度
		String line = "";
		while (scan.hasNext()){
	    line = scan.nextLine();
		if (line.length() < 1 ||line.length() > limit){
			System.out.print("输入长度错误(不大于" + limit +"):");
			continue;
		}
		else break;
		}
		return line;
	}
}




主程序:

package Project;

class FamilyAccount {
	public static void main(String[] args) {
	boolean isFlag = true;	
	String details = "收 支\t账户金额\t\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.退    出	\n");
		System.out.print("                 请选择(1-4):");
		//获取用户的选择1-4
		char selection = Utility.readMenuSelection();
		switch(selection) {
		case '1':
//			System.out.println("1.收支明细");
			System.out.println("---------------当前收支明细记录------------------\n");
			System.out.println(details + "\n");
			System.out.println("------------------------------------------------\n");
			break;
		case '2':
//			System.out.println("2.登记收入");
			System.out.print("本次收入金额:");
			int money = Utility.readNumber();
			System.out.print("本次收入说明:");
			String info = Utility.readString();
			System.out.println("-------------------登记完成----------------------\n");
			//处理balance
			balance += money;
			//处理details
			details += ("收 入\t"+ balance + "\t\t" + money + "\t\t" + info +"\n");
			break;
		case '3':
//			System.out.println("3.登记支出");
			System.out.print("本次支出金额:");
			int cost = Utility.readNumber();
			System.out.print("本次支出说明:");
			String information = Utility.readString();
			//处理balance
			if(balance >= cost) {
				balance -= cost;
				//处理 details
				details += ("支 出\t"+ balance + "\t\t" + cost + "\t\t" + information +"\n");
				System.out.println("-------------------登记完成----------------------\n");
			}else {
				System.out.println("本次支出超过余额:支付失败\n");
				System.out.println("-------------------登记失败----------------------\n");
			}	
			
			break;
		case '4':	
//			System.out.println("4.退   出");
			System.out.print("确认是否退出(Y/N):");
			char isExit = Utility.readConfirmSelection();
			if(isExit == 'Y') {
				isFlag = false;
			}
	 	
		}
	}
	
}
}

总结:

	其中遇到\t制表符的显示问题,\t是补齐之前的字符位,不够八位则补齐,
多余则再补八位。
0

评论区