java尚硅谷 java基础第一个项目,记账软件

分为两个部分,第一部分创建一个Utility工具类,方便调用

/*
utility工具类:
将不同的功能封装为方法,就是可以直接通过调用方法使用它的功能,而无需考虑具体的功能实现细节。
*/
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(20);
	return str;
}
//用于确认选择的输入,该方法从键盘读取'y'或者‘n’,并将其返回方法的值。
public static char readConfirmSelection(){
	char c;
	for (; ; ){
    String str = readKeyBoard(1).toUpperCase();//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;
}
}

第二部分程序主体

/*
练习项目1,记账软件
考察点:
1,变量的定义
2,基本数据类型的使用
3,循环语句
4,分支语句
5,方法声明,调用和返回值的接收
6,屏幕输出的格式控制

软件功能:
记录收入支出,并能输出收支明细

采用分级菜单的方式
主菜单如下
-------------收支记账软件-------------
1 收支明细
2 登记收入
3 登记支出
4 退出
请选择(1-4):
假设账户起始资金为10000
每次登记收入后,收入的金额增加到账户余额上,并记录本次收入的明细以便日后查询
每次登记支出后,支出的金额从到账户余额扣除,并记录本次支出的明细以便日后查询
查询收支明细时,显示所有的收入支出明细列表
*/

import java.util.*;
class Project1 {
public static void main(String[] args) {
//Scanner scan = new Scanner(System.in);
boolean mark = true;//定义一个变量mark,用于结束循环退出程序
int balance = 0;
String details = “收支\t\t账户余额\t收支金额\t备注\n”;
int money = 0;
int expanditure = 0;
String infomation = “”;
while (mark){
System.out.println("---------------------收支记录程序---------------------");
System.out.println(" 1,收支明细");
System.out.println(" 2,登记收入");
System.out.println(" 3,登记支出");
System.out.println(" 4, 退出\n");
System.out.print(" 请选择1-4输入");
char selection = Utility.readMenuSelection(); //获取用户选择
switch (selection){

	case '1':
	System.out.println("-------------------------收支明细-------------------------");
	System.out.println(details);
	System.out.println("----------------------------------------------------------");
		break;
	case '2':
		System.out.println("-------------------------登记收入-------------------------");
		System.out.print("	           请输入本次收入金额");
		money = Utility.readNumber();
		balance += money;
		System.out.print("	           请输入本次收入说明");
		infomation = Utility.readString();
        details += ("收入\t\t" + balance + "\t\t" + money + "\t\t" + infomation + "\n");
		System.out.println("----------------------------------------------------------");
		break;
	case '3':
		System.out.println("-------------------------登记支出-------------------------");
		System.out.print("	           请输入本次支出金额");
		expanditure = Utility.readNumber();
		if (expanditure > balance){
        System.out.println("支出超过余额,破产");
		break;
		}else{
		balance -= expanditure; 	 
		}
		System.out.print("	           请输入本次支出说明");
		infomation = Utility.readString();	
        details += ("支出\t\t" + balance + "\t\t" + expanditure + "\t\t" + infomation + "\n");
		System.out.println("----------------------------------------------------------");
		break;
	case '4':
		System.out.println("即将退出程序,请确认是否退出(Y/N)");
	    char exit = Utility.readConfirmSelection();
		if (exit == 'Y'){
        mark = false;
		}
		break;
	}     
}

}

}

发布了47 篇原创文章 · 获赞 1 · 访问量 1088

猜你喜欢

转载自blog.csdn.net/wisdomcodeinside/article/details/103816611
今日推荐