尚硅谷项目一谷粒记账软件
内容来自:尚硅谷
难度:easy
目 标
• 模拟实现一个基于文本界面的 《 谷粒记账软件 》• 掌握初步的编程技巧和调试技巧• 主要涉及以下知识点:• 变量的定义• 基本数据类型的使用• 循环语句• 分支语句• 方法声明、调用和返回值的接收简单的屏幕输出格式控制
需求说明
• 模拟实现基于文本界面的 《 谷粒记账软件 》 。• 该软件能够记录家庭的收入、支出,并能够打印收支明细表。• 项目采用分级菜单方式。主菜单如下:-----------------谷粒记账软件-----------------
1 收支明细
2 登记收入
3 登记支出
4 退 出
请选择(1-4):_
• 假设家庭起始的生活基本金为 10000 元。• 每次登记收入(菜单 2 )后,收入的金额应累加到基本金上,并记录本次收入明细,以便后续的查询。• 每次登记支出(菜单 3 )后,支出的金额应从基本金中扣除,并记录本次支出明细,以便后续的查询。• 查询收支明细( 菜单 1 )时,将显示所有的收入、支出名细列表
• “登记收入”的界面及操作过程如下所示:-----------------谷粒记账软件-----------------
1 收支明细
2 登记收入
3 登记支出
4 退 出
请选择(1-4):2
本次收入金额:1000
本次收入说明:劳务费_
• “登记支出”的界面及操作过程如下所示:-----------------谷粒记账软件-----------------
1 收支明细
2 登记收入
3 登记支出
4 退 出
请选择(1-4):3
本次支出金额:800
本次支出说明:物业费_
• “收支明细”的界面及操作过程如下所示:-----------------谷粒记账软件-----------------
1 收支明细
2 登记收入
3 登记支出
4 退 出
请选择(1-4):1
-----------------当前收支明细记录-----------------
收支 账户金额 收支金额 说 明
收入 11000 1000 劳务费
支出 10200 800 物业费
--------------------------------------------------
提示:明细表格的对齐,可以简单使用制表符‘\t’来实现
• “退 出”的界面及操作过程如下所示:-----------------谷粒记账软件-----------------
1 收支明细
2 登记收入
3 登记支出
4 退 出
请选择(1-4):4
确认是否退出(Y/N):_
基本金和收支明细的记录
• 基本金的记录可以使用 int 类型的变量来实现:int balance = 10000;
• 收支明细记录可以使用 Sting 类型的变量来实现,其初始值为明细表的表头。例如:String details = "收支\t账户金额\t收支金额\t说 明\n";
在登记收支时,将收支金额与balance相加或相减,收支记录直接串接到details后面即可
第1步 — 实现主程序结构
1. 创建 FamilyAccount 类及 main 方法2. 在 main 方法中,参照主流程图,实现程序主体结构3. 测试程序,确认可以正常执行第 1 和第 4 菜单选项
第 2 步 — 实现收入和支出登记处理1. 在 main 方法中,参照收入和支出流程,实现“登记收入”功能2. 测试“登记收入”功能3. 在 main 方法中,参照收入和支出流程,实现“登记支出”功能4. 测试“登记支出”功能
import java.util.Scanner;
//TIP 要<b>运行</b>代码,请按 <shortcut actionId="Run"/> 或
// 点击装订区域中的 <icon src="AllIcons.Actions.Execute"/> 图标。
public class Main {
public static void main(String[] args) {
String var1 = "收支\t账户金额\t收支金额\t说 明\n";
int var2 = 10000;
boolean var3 = true;
Scanner in = new Scanner(System.in);
do {
System.out.println("----------谷粒记账软件-------------\n");
System.out.println(" 1 收支明细");
System.out.println(" 2 登记收入");
System.out.println(" 3 登记支出");
System.out.println(" 4 退 出\n");
System.out.println(" 请选择(1-4):_");
int choice = in.nextInt();
switch (choice) {
case 1:
System.out.println("-----------------当前收支明细记录-----------------");
System.out.println(var1);
System.out.println("--------------------------------------------------");
break;
case 2:
System.out.println("本次收入金额:");
int qian = in.nextInt();
var2 += qian;
System.out.println("本次收入说明:");
String var4 = in.next();
var1= var1 + "收入\t" + var2 + "\t\t" + qian + "\t\t" + var4+ "\n";
System.out.println(var1);
break;
case 3:
System.out.println("本次支出金额:");
int qian1 = in.nextInt();
var2 -= qian1;
System.out.println("本次支出说明:");
String var5 = in.next();
var1= var1 + "收入\t" + var2 + "\t\t" + qian1 + "\t\t" + var5+ "\n";
System.out.println(var1);
break;
case 4:
System.out.println("确认是否退出(Y/N):_");
String var6 = in.next();
if(var6.equals("Y")) {
var3 = false;
}
break;
}
} while (var3);
}
}