家庭收支记账软件


目标

  • 模拟实现一个基于文本界面的《家庭记账软件》
  • 掌握初步的编程技巧和调试技巧
  • 主要涉及以下知识点:
    • 变量的定义
    • 基本数据类型的使用
    • 循环语句
    • 分支语句
    • 方法声明、调用和返回值的接收
    • 简单的屏幕输出格式控制

需求说明

  • 模拟实现基于文本界面的《家庭记账软件》
  • 该软件能够记录家庭的收入、支出,并能够打印收支明细表
  • 项目采用分级菜单方式。主菜单如下 :

需求说明

  • 假设家庭起始的生活基本金为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.print("选择错误,请重新输入:");} else break;}return c;}/**用于收入和支出金额的输入。该方法从键盘读取一个不超过4位长度的整数,并将其作为方法的返回值。*/public static int readNumber() {int n;for (; ; ) {String str = readKeyBoard(4);try {n = Integer.parseInt(str);break;} catch (NumberFormatException e) {System.out.print("数字输入错误,请重新输入:");}}return n;}/**用于收入和支出说明的输入。该方法从键盘读取一个不超过8位长度的字符串,并将其作为方法的返回值。*/public static String readString() {String str = readKeyBoard(8);return str;}/**用于确认选择的输入。该方法从键盘读取‘Y’或’N’,并将其作为方法的返回值。*/public static char readConfirmSelection() {char c;for (; ; ) {String str = readKeyBoard(1).toUpperCase();c = str.charAt(0);if (c == 'Y' || c == 'N') {break;} else {System.out.print("选择错误,请重新输入:");}}return c;}private static String readKeyBoard(int limit) {String line = "";while (scanner.hasNext()) {line = scanner.nextLine();if (line.length() < 1 || line.length() > limit) {System.out.print("输入长度(不大于" + limit + ")错误,请重新输入:");continue;}break;}return line;}
}

FamilyAccount

public class FamilyAccount {public static void main(String[] args) {String details = "收支\t账户金额\t\t收支金额\t\t说    明\n";int balance = 10000;boolean loopFlag = true;do {System.out.println("\n-----------------家庭收支记账软件-----------------\n");System.out.println("                   1 收支明细");System.out.println("                   2 登记收入");System.out.println("                   3 登记支出");System.out.println("                   4 退    出\n");System.out.print("                   请选择(1-4):");char key = Utility.readMenuSelection();System.out.println();switch (key) {case '1':System.out.println("-----------------当前收支明细记录-----------------");System.out.println(details);System.out.println("--------------------------------------------------");break;case '2':System.out.print("本次收入金额:");int amount1 = Utility.readNumber();System.out.print("本次收入说明:");String desc1 = Utility.readString();balance += amount1;details += "收入\t" + balance + "\t\t" +amount1 + "\t\t" + desc1 + "\n";System.out.println("---------------------登记完成---------------------");break;case '3':System.out.print("本次支出金额:");int amount2 = Utility.readNumber();System.out.print("本次支出说明:");String desc2 = Utility.readString();balance -= amount2;details += "支出\t" + balance + "\t\t" +amount2 + "\t\t" + desc2 + "\n";System.out.println("---------------------登记完成---------------------");break;case '4':System.out.print("确认是否退出(Y/N):");char yn = Utility.readConfirmSelection();if (yn == 'Y') loopFlag = false;break;}} while (loopFlag);}
}

java基础(家庭收支记账软件)相关推荐

  1. Java实现家庭收支记账软件

    题目来自于尚硅谷基础项目1,其中没有使用项目提供的现成的方法 测试类 package test;import face.MainInterFace; import code.*; public cla ...

  2. Java实现家庭收支记账软件及编写过程中的注意事项

    一.思路 1.明确需求 总需求也就是家庭收支记账软件要实现的功能,要能实现记录家庭的收入与支出,并打印收支明细表. 2.实现步骤 第一步要展示程序的主界面,内容要包含四个菜单选项. 第二步实现根据用户 ...

  3. Java项目:家庭收支记账软件

    目录 前言 一.任务要求 二.实现代码 总结 前言 最近花了一个星期看了JAVA经典书籍<Java核心技术卷I>,囫囵吞枣般看完,领略了其中大概内容,花时间看视频巩固一下,就去b站看了尚硅 ...

  4. java家庭收支记账软件

    说明: 这篇文章主要运用了一些java基础知识的一个综合运用 主要涉及以下知识点:  变量的定义  基本数据类型的使用  循环语句  分支语句  方法声明.调用和返回值的接收  简单的屏幕 ...

  5. eclipse编写的Java家庭收支记账软件

    eclipse编写的Java家庭收支记账软件 界面及操作过程如下所示: -----------------家庭收支记账软件----------------- 1 收支明细 2 登记收入 3 登记支出 ...

  6. java家庭收支记账软件-day01

    import java.util.Scanner; public class itemfamily {public static void main(String[] args) {Scanner s ...

  7. 家庭收支记账软件--Java

    家庭收支记账软件–Java 需求描述: 模拟实现基于文本界面的<家庭记账软件>. 该软件能够记录家庭的收入.支出,并能够打印收支明细表. 项目采用分级菜单方式.主菜单如下: 需求说明: 假 ...

  8. Java项目一(案例):家庭收支记账软件

    Java项目一(案例):家庭收支记账软件 项目概述 软件功能 项目说明 涉及Java知识点 软件需求说明 程序代码示例 FamilyAccount.class文件 自定义Utility.class工具 ...

  9. Java开发一个家庭收支记账软件

    4.请开发一个家庭收支记账软件 界面及操作过程如下所示: -----------------家庭收支记账软件----------------- 1 收支明细 2 登记收入 3 登记支出 4 退 出 请 ...

最新文章

  1. 版本迭代规划的几大关键步骤
  2. 一篇文章弄懂Java反射基础和反射的应用场景
  3. 算法竞赛训练指南代码仓库_数据仓库综合指南
  4. 强势解析 eBay BASE 模式、去哪儿及蘑菇街分布式架构
  5. 单片机串口通信学号显示_触摸屏与单片机串口通信测试
  6. 看完这篇文章,我再也不怕面试官问「垃圾回收」了...
  7. Html和CSS在浏览器中常见的兼容性问题处理
  8. 组装自己的php框架,搭建自己的PHP框架
  9. 【渝粤教育】国家开放大学2018年春季 0008-21T简明现代汉语 参考试题
  10. arcgis坐标转换
  11. 解决在Windows下浏览器主页被360篡改的问题,即禁止360篡改浏览器主页
  12. 基于BLM业务领先模型演化的项目管理四张地图
  13. python实现批量远程电脑传输文件
  14. 30系列显卡安装tensorflow1.15
  15. vs mysql 开发erp_ERP/MIS开发 Mindscape NHibernate + MySQL 快速开发入门
  16. Ubuntu 环境部署 安装大全
  17. HTS Sinsy音源库训练方法
  18. vm本地虚拟机导入服务器,vmware虚拟机导入到云服务器
  19. python爬虫基础(12:app数据爬取)
  20. 城市交通(动态规划)

热门文章

  1. 业务:财务会计业务知识
  2. 无线电流互感器监测电机设备的运行(OEE,开关机率)工作状态
  3. bat脚本自定义魔兽warIII运行分辨率,去黑边
  4. [变异测试] Major使用教程
  5. 0基础跟我学python---进阶篇(1)
  6. 电脑经常报app crashed-writeminidump问题
  7. 用Python3爬取知乎上好看的壁纸
  8. DataStage记录
  9. 由于找不到MSVCP140.dll,无法继续执行代码。重新安装程序可能会解决此问题
  10. 蓄电池内阻测试仪分析软件,蓄电池内阻测试仪