家庭收支记账软件
目标
- 模拟实现一个基于文本界面的《家庭记账软件》
- 掌握初步的编程技巧和调试技巧
- 主要涉及以下知识点:
- 变量的定义
- 基本数据类型的使用
- 循环语句
- 分支语句
- 方法声明、调用和返回值的接收
- 简单的屏幕输出格式控制
需求说明
- 模拟实现基于文本界面的《家庭记账软件》
- 该软件能够记录家庭的收入、支出,并能够打印收支明细表
- 项目采用分级菜单方式。主菜单如下 :
需求说明
- 假设家庭起始的生活基本金为10000元。
- 每次登记收入(菜单2)后,收入的金额应累加到基本金上,并记
录本次收入明细,以便后续的查询。 - 每次登记支出(菜单3)后,支出的金额应从基本金中扣除,并记
录本次支出明细,以便后续的查询。 - 查询收支明细( 菜单1)时,将显示所有的收入、支出名细列表
需求说明
- “登记收入”的界面及操作过程如下所示:
需求说明
- “登记支出”的界面及操作过程如下所示:
需求说明
- “收支明细”的界面及操作过程如下所示:
- 提示:明细表格的对齐,可以简单使用制表符‘\t’来实现
需求说明
- “退 出”的界面及操作过程如下所示:
基本金和收支明细的记录
- 基本金的记录可以使用int类型的变量来实现:
int balance = 10000; - 收支明细记录可以使用Sting类型的变量来实现,其初始值为明细表的表
头。例如:
String details = “收支\t账户金额\t收支金额\t说明\n”; - 在登记收支时,将收支金额与balance相加或相减,收支记录直接串接到
details后面即可。
流程图(活动图) — 主流程
流程图(活动图) — 收入和支出处理流程
Utility工具类
import java.util.Scanner;
/**
Utility工具类:
将不同的功能封装为方法,就是可以直接通过调用方法使用它的功能,而无需考虑具体的功能实现细节。
*/
public class Utility {
private static Scanner scanner = 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.