需求分析
要求:该软件能够记录家庭的收入、支出,并能够打印收支明细表。
1.主界面示例
--------家庭收支记账软件--------
1 收支明细
2 登记收入
3 登记支出
4 退出
2.不同模块功能
(1)主界面——输入选项——判断选项,进行不同功能块
--------家庭收支记账软件--------
1 收支明细
2 登记收入
3 登记支出
4 退出
请选择(1-4):
(2)收支明细展示界面——向用户展示已有的记录
--------家庭收支记账软件--------
1 收支明细
2 登记收入
3 登记支出
4 退出
请选择(1-4):1
--------收入明细表--------
收支 账户总金额 收支金额 说明
(3)登记收入/登记支出界面——接收用户输入计算总计并添加数据记录
--------家庭收支记账软件--------
1 收支明细
2 登记收入
3 登记支出
4 退出
请选择(1-4):2
请输入本次收入的说明:
搬砖
请输入本次收入的金额:
500
添加成功!
--------家庭收支记账软件--------
1 收支明细
2 登记收入
3 登记支出
4 退出
请选择(1-4):1
--------收入明细表--------
收支 账户总金额 收支金额 说明
收入 10500 +500 搬砖
--------家庭收支记账软件--------
1 收支明细
2 登记收入
3 登记支出
4 退出
请选择(1-4):3
请输入本次支出的说明:
吃烧烤
请输入本次支出的金额:
1000
添加成功!
--------家庭收支记账软件--------
1 收支明细
2 登记收入
3 登记支出
4 退出
请选择(1-4):1
--------收入明细表--------
收支 账户总金额 收支金额 说明
收入 10500 +500 搬砖
支出 9500 -1000 吃烧烤
(4)退出界面——用于退出程序
--------家庭支记账软件--------
1 收支明细
2 登记收入
3 登记支出
4 退出
请选择(1-4):4
退出成功!
3.实现该软件需要用到的方法(仅供参考)
1.定义一个main方法
(1)用输出语句完成主界面的编写
(2)用Scanner实现键盘录入数据
(3)用switch语句完成操作的选择
(4)用while(ture)死循环,完成后再次回到主界面
(5)完成操作的选择时,可以直接调用已经定义好的方法。[收支明细(detail),登记收入(registeredIncome),登记支出(expenditure)]
public static void main(String[] args) {
//创建对象,用Scanner实现键盘录入数据
Scanner sc = new Scanner(System.in);
//接收数据
String[] arr = new String[10];
//定义账户初始金额
int [] brr= {10000};
int count = 0;
//使用while死循环语句,完成后再次回到主界面
while (true)
{
//用输出语句完成主界面的编写
System.out.println("--------家庭收支记账软件--------");
System.out.println("1 收支明细");
System.out.println("2 登记收入");
System.out.println("3 登记支出");
System.out.println("4 退出");
System.out.print("请选择(1-4):");
//判断是否选择了主界面已有的选项
int num = sc.nextInt();
if (num > 4 || num < 1) {
System.out.println("请输入正确数字");
} else {
//用switch语句完成操作的选择
switch (num) {
case 1:
//显示表头信息
//\t其实就是tab键的位置
System.out.println("--------收入明细表--------");
System.out.println("收支\t\t账户总金额\t收支金额\t\t说明");
//直接调用已经定义好的方法。[收支明细(detail)]
detail(arr);
break;
case 2:
//直接调用已经定义好的方法。[登记收入(registeredIncome)]
arr[count] = registeredIncome(brr);
count++;
break;
case 3:
//直接调用已经定义好的方法。[登记支出(expenditure)]
arr[count] = expenditure(brr);
count++;
break;
}
if(num==4){
System.out.println("退出成功!");
break;
}
}
}
}
2.定义一个方法,用于查看收支明细
public static void detail(String[]arr){
for (int i = 0; i < arr.length; i++) {
if (arr[i] != null)
{
System.out.println(arr[i]);
}
}
}
3.定义一个方法,用于登记收入
public static String registeredIncome(int []brr){
//键盘录入信息,显示提示信息,提示要输入何种信息
Scanner sc = new Scanner(System.in);
System.out.println("请输入本次收入的说明:");
String where = sc.nextLine();
System.out.println("请输入本次收入的金额:");
int quantity = sc.nextInt();
System.out.println("添加成功!");
brr[0] += quantity;
String a = "收入" + "\t\t" + brr[0]+"\t\t+"+quantity + "\t\t" + where;
return a;
}
4.定义一个方法,用于登记支出
public static String expenditure( int []brr) {
//键盘录入信息,显示提示信息,提示要输入何种信息
Scanner sc = new Scanner(System.in);
System.out.println("请输入本次支出的说明:");
String where = sc.nextLine();
System.out.println("请输入本次支出的金额:");
int quantity = sc.nextInt();
System.out.println("添加成功!");
brr[0]-=quantity;
String a = "支出" + "\t\t" + brr[0]+"\t\t-"+quantity + "\t\t" + where;
return a;
}
4.总结编辑代码的感受
(1)在代码编写时加上自己的注释,方便自己与他人理解代码
(2)将不同功能块打包成方法能够减少代码量,提高编程效率
(3)在代码编程过程中,尽可能考虑到用户的体验感,注意细节(例如:在合适的位置使用\t)。