java基础(家庭收支记账软件)
家庭收支记账软件
目标
- 模拟实现一个基于文本界面的《家庭记账软件》
- 掌握初步的编程技巧和调试技巧
- 主要涉及以下知识点:
- 变量的定义
- 基本数据类型的使用
- 循环语句
- 分支语句
- 方法声明、调用和返回值的接收
- 简单的屏幕输出格式控制
需求说明
- 模拟实现基于文本界面的《家庭记账软件》
- 该软件能够记录家庭的收入、支出,并能够打印收支明细表
- 项目采用分级菜单方式。主菜单如下 :
需求说明
- 假设家庭起始的生活基本金为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基础(家庭收支记账软件)相关推荐
- Java实现家庭收支记账软件
题目来自于尚硅谷基础项目1,其中没有使用项目提供的现成的方法 测试类 package test;import face.MainInterFace; import code.*; public cla ...
- Java实现家庭收支记账软件及编写过程中的注意事项
一.思路 1.明确需求 总需求也就是家庭收支记账软件要实现的功能,要能实现记录家庭的收入与支出,并打印收支明细表. 2.实现步骤 第一步要展示程序的主界面,内容要包含四个菜单选项. 第二步实现根据用户 ...
- Java项目:家庭收支记账软件
目录 前言 一.任务要求 二.实现代码 总结 前言 最近花了一个星期看了JAVA经典书籍<Java核心技术卷I>,囫囵吞枣般看完,领略了其中大概内容,花时间看视频巩固一下,就去b站看了尚硅 ...
- java家庭收支记账软件
说明: 这篇文章主要运用了一些java基础知识的一个综合运用 主要涉及以下知识点: 变量的定义 基本数据类型的使用 循环语句 分支语句 方法声明.调用和返回值的接收 简单的屏幕 ...
- eclipse编写的Java家庭收支记账软件
eclipse编写的Java家庭收支记账软件 界面及操作过程如下所示: -----------------家庭收支记账软件----------------- 1 收支明细 2 登记收入 3 登记支出 ...
- java家庭收支记账软件-day01
import java.util.Scanner; public class itemfamily {public static void main(String[] args) {Scanner s ...
- 家庭收支记账软件--Java
家庭收支记账软件–Java 需求描述: 模拟实现基于文本界面的<家庭记账软件>. 该软件能够记录家庭的收入.支出,并能够打印收支明细表. 项目采用分级菜单方式.主菜单如下: 需求说明: 假 ...
- Java项目一(案例):家庭收支记账软件
Java项目一(案例):家庭收支记账软件 项目概述 软件功能 项目说明 涉及Java知识点 软件需求说明 程序代码示例 FamilyAccount.class文件 自定义Utility.class工具 ...
- Java开发一个家庭收支记账软件
4.请开发一个家庭收支记账软件 界面及操作过程如下所示: -----------------家庭收支记账软件----------------- 1 收支明细 2 登记收入 3 登记支出 4 退 出 请 ...
最新文章
- 版本迭代规划的几大关键步骤
- 一篇文章弄懂Java反射基础和反射的应用场景
- 算法竞赛训练指南代码仓库_数据仓库综合指南
- 强势解析 eBay BASE 模式、去哪儿及蘑菇街分布式架构
- 单片机串口通信学号显示_触摸屏与单片机串口通信测试
- 看完这篇文章,我再也不怕面试官问「垃圾回收」了...
- Html和CSS在浏览器中常见的兼容性问题处理
- 组装自己的php框架,搭建自己的PHP框架
- 【渝粤教育】国家开放大学2018年春季 0008-21T简明现代汉语 参考试题
- arcgis坐标转换
- 解决在Windows下浏览器主页被360篡改的问题,即禁止360篡改浏览器主页
- 基于BLM业务领先模型演化的项目管理四张地图
- python实现批量远程电脑传输文件
- 30系列显卡安装tensorflow1.15
- vs mysql 开发erp_ERP/MIS开发 Mindscape NHibernate + MySQL 快速开发入门
- Ubuntu 环境部署 安装大全
- HTS Sinsy音源库训练方法
- vm本地虚拟机导入服务器,vmware虚拟机导入到云服务器
- python爬虫基础(12:app数据爬取)
- 城市交通(动态规划)