需求说明
该程序能够记录家庭的收入、支出,并能够打印收支明细表
项目采用分级菜单方式。主菜单如下:
假设家庭起始的生活基本金为10000元。
每次登记收入(菜单2)后,收入的金额应累加到基本金上,并记录本次收入明细,以便后续的查询。
每次登记支出(菜单3)后,支出的金额应从基本金中扣除,并记录本次支出明细,以便后续的查询。
查询收支明细( 菜单1)时,将显示所有的收入、支出名细列表。
创建一个Utility工具类,将使用到的一些功能封装成方法,需要时直接调用对应的方法就行就行。项目的各个功能模块也封装成相应的方法,减少代码量,提高编程效率。
因为收支情况和详细说明为String类型,账户金额和收支金额为int类型,所以后面存放收支金额时需要将int类型强制转换为String类型,这里规定了记录的条数最多十条。设定基本的生活资金sumNum为10000,count用于记录收支的行数(也就是数组的索引)。
实现页面展示功能
代码实现:
用户在键盘输入数字进入对应的功能,这里用到了Utility类中的readMenuSelection()方法,用于界面菜单的选择。该方法读取键盘,如果用户键入’1’-’4’中的任意字符,则方法返回。返回值为用户键入字符。
实现收支明细功能
将收支明细列表中的第一条输出生活基本资金,然后用for循环从数组下标1开始遍历出每次增加的收入或支出的详细信息
代码实现:
这里的if语句一是判断是否有数据,二是判断数据是收入的还是支出的,不然会输出全是null和0的语句。将int类型的总金额和收支金额强转为String类型。
实现登记收入功能
从键盘上获取收入的金额和说明,这里用到了Utility类中的readNumber()方法,该方法用于收入和支出金额的输入。从键盘读取一个不超过4位长度的整数,并将其作为方法的返回值。
执行完后将sumNum返回,下一次登记收入或者支出时进行数据的更新变动。
代码实现:
readString()方法用于收入和支出说明的输入。该方法从键盘读取一个不超过8位长度的字符串,并将其作为方法的返回值。
实现登记支出功能
代码实现:
主函数
public static void main(String[] args) {
String[][] arr = new String[10][4];//存放收支情况,以及详细说明
int count=1;//记录
int sumNum=10000;//基础资金
while (true)
{
menu(); //主页面
char c = Utility.readMenuSelection();
switch (c){
case '1':
details(arr); //收支明细
break;
case '2':
int sumNumIn = revenue(arr,count,sumNum); //登记收入
sumNum = sumNumIn;
count++;
break;
case '3':
int sumNumOut = expenditure(arr,count,sumNum); //登记输出
sumNum = sumNumOut;
count++;
break;
case '4':
//退出功能
System.out.println("确认是否退出(Y/N)?:");
char c1 = Utility.readConfirmSelection();
if (c1 == 'Y')
{
System.out.println("拜拜!退出成功!");
return;
}else {
break;
}
}
}
}
最外层用了while的无限循环,方便用户多次记账,用switch-case来判断用户需要操作的功能。
效果演示:
都是一些Java基础的知识,写的也很一般,仅供参考。