文章目录

  • 1. 项目目标
  • 2. 需求说明
  • 3. 键盘访问实现
  • 4. 实现步骤
  • 5. 具体代码

1. 项目目标

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

2. 需求说明

• 模拟实现基于文本界面的《家庭记账软件》。
• 该软件能够记录家庭的收入、支出,并能够打印收支明细表。
• 项目采用分级菜单方式。主菜单如下:
-----------------家庭收支记账软件-----------------
1 收支明细
2 登记收入
3 登记支出
4 退出
请选择(1-4):_
• 假设家庭起始的生活基本金为10000元。
• 每次登记收入(菜单2)后,收入的金额应累加到基本金上,并记
录本次收入明细,以便后续的查询。
• 每次登记支出(菜单3)后,支出的金额应从基本金中扣除,并记
录本次支出明细,以便后续的查询。
• 查询收支明细( 菜单1)时,将显示所有的收入、支出名细列表

3. 键盘访问实现

• 项目中提供了Utility.java类,可用来方便地实现键盘访问。
• 该类提供了以下静态方法:
 public static char readMenuSelection() :该方法读取键盘,如果用户键入’1’-’4’中的
任意字符,则方法返回。返回值为用户键入字符。
 public static int readNumber() :该方法从键盘读取一个不超过4位长度的整数,并将
其作为方法的返回值。
 public static String readString() :该方法从键盘读取一个不超过8位长度的字符串,
并将其作为方法的返回值。
 public static char readConfirmSelection() :该方法从键盘读取‘Y’或’N’,并将其作为
方法的返回值。

4. 实现步骤

第1步— 实现主程序结构

  1. 创建FamilyAccount类及main方法
  2. 在main方法中,参照主流程图,实现程序主体结构
  3. 测试程序,确认可以正常执行第1和第4菜单选项

第2步— 实现收入和支出登记处理
4. 在main方法中,参照收入和支出流程,实现“登记收入”功能
5. 测试“登记收入”功能
6. 在main方法中,参照收入和支出流程,实现“登记支出”功能
7. 测试“登记支出”功能

5. 具体代码

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;}
}
public class FamilyAccount {public static void main(String[] args) {String details = "收支\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项目:家庭收支记账软件

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

  2. Go 小项目1 - 家庭收支记账软件

    Go 小项目1 - 家庭收支记账软件 一)需求 1)模拟实现基于文本界面的<家庭记账软件> 2)该软件能够记录家庭的收入.支出,并能够打印收支明细表 二)编码 1)功能 1.完成主菜单的编 ...

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

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

  4. 用Java写一个家庭收支记账软件

    需要的内容有:收支明细.登记收入.登记支出和退出四个模块.并且能进入每个功能里面. 最好用的方式是用数组实现这个软件,可以是二维数组,也可以是一维数组,直接附上源码. import java.util ...

  5. 基于Java基础的家庭收支记账软件

    文章目录 前言 一.前期准备 二.整体功能 三.功能模块 四.功能浅谈 1. AccountInfo 类 2.收支明细 3.登记收入/支出 4. 查询账单 五.收获 六.总结 前言 学习完Java基础 ...

  6. 项目一.家庭收支记账软件

    问题1: 关于跳出总循环for for(){switch(){}} 跳出循环的两种方法:第一种,定义条件i!=1,在跳出循环的选项下让i=1:第二种,定义label: for,在需要跳出条件的后面br ...

  7. day2-项目一家庭收支记账软件

    项目一家庭收支记账软件总结 .nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的. .next()会自动消去有效字符前的空格,只返回输入的字符,不能得到带空格的字 ...

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

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

  9. 3.项目一(家庭收支记账软件)

    家庭收支记账软件 项目一:家庭收支记账软件 1. 项目演示 2. Utility工具类的说明 Utility工具类提供了一系列的方法,方便我们从控制台获取相关数据: 用户的选择(1-4):readMe ...

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

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

最新文章

  1. 计算机考研最后四十天,2021考研最后四十天冲刺复习攻略
  2. linux 账号和密码文件 /etc/passwd和/etc/shadow 简介
  3. java动物飞翔接力赛源程序_java-submityourcode
  4. 用Ant编译Flex项目的几点注意事项
  5. Android WindowManager和WindowManager.LayoutParams的使用以及实现悬浮窗口的方法
  6. 从来不敷面膜的人_女人睡觉前,敷面膜洗还是不洗?很多人都做错了,难怪皮肤总不好...
  7. 批量刷新远程物化视图的方法(备用)
  8. (3)FPGA面试题2倍分频
  9. TD-LTE Technology And Its Measurements(TD-LTE 技术及其应用)
  10. 手机充满电不拔有什么影响吗?
  11. 你根本不懂数据仓库!对于80%的大公司数仓只是地基,它才是房子
  12. Problem D. Nothing is Impossible
  13. BAT判断一个目录是否存在
  14. Mac新手必装App推荐
  15. session超时以及销毁
  16. HTTP请求协议格式详解
  17. 二项分布(一种离散分布)
  18. FTP实验、利用SMTP协议发匿名邮件
  19. 《东周列国志》第七十八回 会夹谷孔子却齐 堕三都闻人伏法
  20. B树,B+树,树,二叉树,满二叉树,完全二叉树,二叉搜索树,平衡二叉树,

热门文章

  1. smart原则_目标管理:OKR与SMART原则的异同
  2. 中国管理实践的大趋势
  3. 科来网络分析系统2010v7.3.1.2436 激活注册汉化方法
  4. 函数的极值点、零点、驻点、拐点的理解
  5. Amazon Alexa 入门实验
  6. MFC 为按钮加载位图 CBitmapButton
  7. Flash Media Server 4.5 序列号
  8. stm32有源蜂鸣器程序,高效简洁优雅。
  9. “Chart“ 图表控件基本操作
  10. SEO必备工具之Xenu(绿蜗牛)网站死链接检测