项目一. 家庭记账软件
要求:
项目一
家庭记账软件
目 标• 模拟实现一个基于文本界面的《家庭记账软件》• 掌握初步的编程技巧和调试技巧• 主要涉及以下知识点: 变量的定义 基本数据类型的使用 循环语句 分支语句 方法声明、调用和返回值的接收 简单的屏幕输出格式控制
需求说明
• 模拟实现基于文本界面的《家庭记账软件》 。
• 该软件能够记录家庭的收入、支出,并能够打印收支明细表。
• 项目采用分级菜单方式。主菜单如下:
-----------------家庭收支记账软件-----------------
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 步 — 实现主程序结构
- 创建 FamilyAccount 类及 main 方法
- 在 main 方法中,参照主流程图,实现程序主体结构
- 测试程序,确认可以正常执行第 1 和第 4 菜单选项
第 2 步 — 实现收入和支出登记处理 - 在 main 方法中,参照收入和支出流程,实现“登记收入”功能
- 测试“登记收入”功能
- 在 main 方法中,参照收入和支出流程,实现“登记支出”功能
- 测试“登记支出”功能
提供工具类代码:
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 ;}}}}
测试:
项目一. 家庭记账软件相关推荐
- Java项目之家庭记账软件
项目要求 要求实现一个基于文本界面的记账软件,模拟实现一个基于文本界面的<家庭记账软件>,掌握初步的编程技巧和调试技巧. 主要涉及以下知识点: - 局部变量和基本数据类型 - 循环语句 - ...
- Java项目一 家庭记账软件
目录 概述 项目要求 代码 概述 项目来源:B站的尚硅谷java教程 这套视频总的来说还是很良心的,适合快速上手,但是要想深入了解原理的话,深度上还是差一点. 其实这套视频里涉及的练习也谈不上是项目, ...
- 项目一 家庭记账软件 (目标 + 需求说明 + 代码详解 + 基本金和收支明细记录 + 键盘访问的实现)
家庭记账软件 1. 目标 2. 需求说明 3. 代码详解 4. 基本金和收支明细的记录 5. 键盘访问的实现 1. 目标 模拟实现一个基于文本界面的<家庭记账软件> 掌握初步的编程技巧和调 ...
- 小白自学笔记——JAVA基础 2.12 项目一 家庭记账软件
需求说明 模拟实现基于文本界面的<家庭记账软件>. 该软件能够记录家庭的收入.支出,并能够打印收支明细表. 假设家庭起始的生活基本金为10000元. 每次登记收入(菜单2)后,收入的金额应 ...
- Java阶段项目一 家庭记账软件
模拟实现基于文本界面的<家庭记账软件>. 该软件能够记录家庭的收入.支出,并能够打印收支明细表. 项目采用分级菜单方式.主菜单如下: -----------------家庭收支记账软件-- ...
- 项目一 家庭记账软件
目录 方法一(使用Utility工具类): 实现效果: 菜单主页面 收支明细初始页面 登记收入 登记支出 退出软件 详细代码: Utility.java FamilyAccount02.java 方法 ...
- 【Java小案例】家庭记账软件
一.概述 1.具体需求: 1.首页设有收支明细.登记收入.登记支出.退出四个选项 2.若用户输入不存在的选项数字,请用户重新输入 3.当用户输入一个选项对应的数字,打开该选项的界面,并再次打开首页界面 ...
- Java项目学习(一):家庭记账软件
本项目为尚硅谷阶段学习项目. 需求 模拟实现基于文本界面的<家庭记账软件>. 该软件能够记录家庭的收入.支出,并能够打印收支明细表. 项目采用分级菜单方式.主菜单如下: 家庭收支记账软件 ...
- 我的第一个Java项目实训--家庭记账软件!
这是我刚学完流程控制的时候照着敲得一个小项目! class familyAccount{public static void main(String[] args){boolean isFlag=tr ...
最新文章
- 从富文本中截取图片_Excel文本数字拆分,模式化公式详解
- python【Matlibplot绘图库】-二维图形绘制
- 简述用 MAT 分析 Android 应用OOM
- java基础----线程
- python怎么把数据写进txt_python 如何将数据写入本地txt文本文件的实现方法
- Spring Security在标准登录表单中添加一个额外的字段
- 基坑监测日报模板_深基坑又出事,广西工地 10m深 基坑坍塌,4名钢筋工被埋,3人遇难!...
- java获得map内存_[java]测试static的map的内存
- 如何把手机变成你的救生设备
- html 内容写入数据库中,FoxPro数据库写入html文件中
- spss26没有典型相关性分析_SPSS进行典型相关分析结果总结
- 笔记本电脑插入HDMI外接显示器没有声音问题
- PAT乙级 打印沙漏(20)
- c++ hash函数
- 只要心存美好便是岁月花开时
- 【转载】Ajax调用Wcf服务
- 数据结构与算法——时间与空间复杂度
- BUUCTF·[MRCTF2020]天干地支+甲子·WP
- 树莓派 电脑 文件共享 搬移
- python 调用航空公司的接口 获取机票数据 api简单案例