要求:
项目一
家庭记账软件

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

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

-----------------家庭收支记账软件-----------------
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 后面即可
流程图(活动图) — 主流程


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

  1. 创建 FamilyAccount 类及 main 方法
  2. 在 main 方法中,参照主流程图,实现程序主体结构
  3. 测试程序,确认可以正常执行第 1 和第 4 菜单选项
    第 2 步 — 实现收入和支出登记处理
  4. 在 main 方法中,参照收入和支出流程,实现“登记收入”功能
  5. 测试“登记收入”功能
  6. 在 main 方法中,参照收入和支出流程,实现“登记支出”功能
  7. 测试“登记支出”功能

提供工具类代码:

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) {boolean loopFlag = true ;//创建一个判断while循环结束的标志 int balance = 10000;  //设置基本金String details  = "收支\t账户金额\t收支金额\t说 明\n";while (loopFlag) { System.out.println("-----------------家庭收支记账软件-----------------");System.out.println("1 收支明细");System.out.println("2 登记收入");System.out.println("3 登记支出");System.out.println("4 退 出");System.out.println("请选择(1-4): _");char menu = Utility.readMenuSelection()   ; //调用工具包从键盘输入1-4方法  工具包为char类型 该处声明也为charswitch (menu) {//对输入的1-4 进行判断选择case '1'://输入为 1 时  “明细”的界面及操作过程System.out.println(details);break;case '2'://输入为 2 时 “登记收入”的界面及操作过程System.out.println("本次收入金额:");int money = Utility.readNumber();//收入金额System.out.println("本次收入说明:");String urs = Utility.readString();//收入说明balance += money ;//记录下收入后金额details  += "收入\t"+balance+"\t"+money+"\t"+urs+"\n";//对明细进行拼接break;case '3'://输入为 3 时 “ 登记支出”的界面及操作过程System.out.println("本次支出金额:");int money0 = Utility.readNumber();//支出金额System.out.println("本次支出说明:");String urs0 = Utility.readString();//支出说明balance -= money0 ;//记录下支出后金额details  += "支出\t"+balance+"\t"+money0+"\t"+urs0+"\n";//对明细进行拼接break;case '4'://输入为 4 时 “退出”的界面及操作过程System.out.println("确认是否退出(Y/N): _");char rcs = Utility.readConfirmSelection();//该方法从键盘读取‘Y’或’N’  Y为确定退出 N为不退出if(rcs == 'Y') {System.out.println("退出成功");loopFlag = false ;}break ;}}}}

测试:

项目一. 家庭记账软件相关推荐

  1. Java项目之家庭记账软件

    项目要求 要求实现一个基于文本界面的记账软件,模拟实现一个基于文本界面的<家庭记账软件>,掌握初步的编程技巧和调试技巧. 主要涉及以下知识点: - 局部变量和基本数据类型 - 循环语句 - ...

  2. Java项目一 家庭记账软件

    目录 概述 项目要求 代码 概述 项目来源:B站的尚硅谷java教程 这套视频总的来说还是很良心的,适合快速上手,但是要想深入了解原理的话,深度上还是差一点. 其实这套视频里涉及的练习也谈不上是项目, ...

  3. 项目一 家庭记账软件 (目标 + 需求说明 + 代码详解 + 基本金和收支明细记录 + 键盘访问的实现)

    家庭记账软件 1. 目标 2. 需求说明 3. 代码详解 4. 基本金和收支明细的记录 5. 键盘访问的实现 1. 目标 模拟实现一个基于文本界面的<家庭记账软件> 掌握初步的编程技巧和调 ...

  4. 小白自学笔记——JAVA基础 2.12 项目一 家庭记账软件

    需求说明 模拟实现基于文本界面的<家庭记账软件>. 该软件能够记录家庭的收入.支出,并能够打印收支明细表. 假设家庭起始的生活基本金为10000元. 每次登记收入(菜单2)后,收入的金额应 ...

  5. Java阶段项目一 家庭记账软件

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

  6. 项目一 家庭记账软件

    目录 方法一(使用Utility工具类): 实现效果: 菜单主页面 收支明细初始页面 登记收入 登记支出 退出软件 详细代码: Utility.java FamilyAccount02.java 方法 ...

  7. 【Java小案例】家庭记账软件

    一.概述 1.具体需求: 1.首页设有收支明细.登记收入.登记支出.退出四个选项 2.若用户输入不存在的选项数字,请用户重新输入 3.当用户输入一个选项对应的数字,打开该选项的界面,并再次打开首页界面 ...

  8. Java项目学习(一):家庭记账软件

    本项目为尚硅谷阶段学习项目. 需求 模拟实现基于文本界面的<家庭记账软件>. 该软件能够记录家庭的收入.支出,并能够打印收支明细表. 项目采用分级菜单方式.主菜单如下: 家庭收支记账软件 ...

  9. 我的第一个Java项目实训--家庭记账软件!

    这是我刚学完流程控制的时候照着敲得一个小项目! class familyAccount{public static void main(String[] args){boolean isFlag=tr ...

最新文章

  1. 从富文本中截取图片_Excel文本数字拆分,模式化公式详解
  2. python【Matlibplot绘图库】-二维图形绘制
  3. 简述用 MAT 分析 Android 应用OOM
  4. java基础----线程
  5. python怎么把数据写进txt_python 如何将数据写入本地txt文本文件的实现方法
  6. Spring Security在标准登录表单中添加一个额外的字段
  7. 基坑监测日报模板_深基坑又出事,广西工地 10m深 基坑坍塌,4名钢筋工被埋,3人遇难!...
  8. java获得map内存_[java]测试static的map的内存
  9. 如何把手机变成你的救生设备
  10. html 内容写入数据库中,FoxPro数据库写入html文件中
  11. spss26没有典型相关性分析_SPSS进行典型相关分析结果总结
  12. 笔记本电脑插入HDMI外接显示器没有声音问题
  13. PAT乙级 打印沙漏(20)
  14. c++ hash函数
  15. 只要心存美好便是岁月花开时
  16. 【转载】Ajax调用Wcf服务
  17. 数据结构与算法——时间与空间复杂度
  18. BUUCTF·[MRCTF2020]天干地支+甲子·WP
  19. 树莓派 电脑 文件共享 搬移
  20. python 调用航空公司的接口 获取机票数据 api简单案例

热门文章

  1. 手机加密聊天软件功能文档(基于android系统)
  2. oracle8616,ORACLE11G-数据库备份恢复之RMAN全库备份恢复
  3. 基于A*算法的迷宫游戏
  4. Java编程之四大名著
  5. 求一个数各个位数之和
  6. android 微信评论功能,Android仿微信朋友圈点击评论自动定位到相关行功能.pdf
  7. C#图片压缩,等比例缩小
  8. Campus Talking 小记(3)
  9. Markdown学习记录 [ javaSE 基础Ⅰ] Day01
  10. 法官的假发是用来吓人的?