需求说明:

1.模拟实现一个基于文本界面的《家庭记账软件》
2.该软件能够记录家庭的收入、支出,并能够打印收支明细表
3.假设家庭起始的生活基本金为0元。
每次登记收入后,收入的金额应累加到基本金上,并记录本次收入明细,以便后续的查询。
每次登记支出后,支出的金额应从基本金中扣除,并记录本次支出明细,以便后续的查询。查询收支明细时,将显示所有收入、支出列表

代码:

Utility.java

/**
Utility工具类:
将不同的功能封装为方法,就是可以直接通过调用方法使用它的功能,而无需考虑具体的功能实现细节。
*/import java.util.Scanner;
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.java

class  FamilyAccount{public static void main(String[] args) {boolean isFlag = true;//记录用户收入和支出的详情String details = "收支\t账户金额\t收支金额\t说 明\n";int balance = 0;//余额while(isFlag){System.out.println("------------家庭收支记账软件-------------\n");System.out.println("              1 收支明细");System.out.println("              2 登记收入");System.out.println("              3 登记支出");System.out.println("              4 退    出\n");System.out.print("请选择1-4:");//获取用户的选择char selection = Utility.readMenuSelection();switch(selection){case '1':System.out.println("-----------当前收支明细记录--------------");System.out.println(details);System.out.println("-----------------------------------------");break;case '2':System.out.println("本次收入金额:");int addMoney = Utility.readNumber();System.out.println("本次收入说明:");String addInfo = Utility.readString();//处理balancebalance += addMoney;//处理detailsdetails += ("收入\t" + balance + "\t\t" + addMoney + "\t\t" + addInfo + "\n");System.out.println("--------------登记完成-------------");break;case '3':System.out.println("本次支出金额:");int minusMoney = Utility.readNumber();System.out.println("本次支出说明:");String minusInfo = Utility.readString();//处理balanceif(balance >= minusMoney){balance -= minusMoney;//处理detailsdetails += ("支出\t" + balance + "\t\t" + minusMoney + "\t\t" + minusInfo + "\n");System.out.println("--------------登记完成-------------");}else{System.out.println("账户余额不足!");}break;case '4':System.out.println("是否确认退出?(Y/N):");char isExit = Utility.readConfirmSelection();if(isExit == 'Y'){isFlag = false;}//break;}}}
}

测试:

主界面:

登记收入:

登记支出:

收支明细:

退出

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

  1. 项目一. 家庭记账软件

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

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

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

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

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

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

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

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

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

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

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

  7. 项目一 家庭记账软件

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

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

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

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

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

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

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

最新文章

  1. ​批评代码而不是人!15 年程序员的职场箴言
  2. linux 服务不支持 chkconfig 的解决方法
  3. 51Nod2353 排队问题
  4. JavaScript单线程
  5. java 压缩字节流_java 压缩 字节流 ,C#解压的问题
  6. 如何利用Python批量将Word中的信息提取到Excel?
  7. 绿色版本Tomcat
  8. c语言双链表排序交换节点_图解:单链表翻转的三种方式!
  9. 利用python进行数据分析微盘_谁有有《利用Python进行数据分析》pdf 谢谢
  10. python csv 格式文件导出 中文乱码问题解决方法
  11. miui游戏驱动程序偏好设置_MIUI 11 期待吗?MIUI 10这几个小设置,你都了解吗?...
  12. Chrome浏览器语音自动播放功能
  13. python计算机视觉-图像处理基础章节第三章之根据仿射或单应性变换实现图像的扭曲,映射,融合
  14. wps如何在html中在线浏览器,wps如何设置表格内链接用电脑默认浏览器打开
  15. multisim电流探棒怎么改变方向?MULTISIM电流探
  16. 什么叫做形态学图像处理_形态学图像处理
  17. 1个字节(0-255)十进制二进制八进制十六进制转换对照表
  18. pitch、yaw、roll三个角的区别
  19. 评论:Google 打个喷嚏,整个 Internet 都会感冒
  20. 算法与程序设计——由a-z,0-9组成3位的字符密码

热门文章

  1. VS2008编译时error C2248处理方法
  2. [益智]:谁是机械师
  3. 运动耳机品牌推荐,热门六款运动耳机推荐
  4. C语言中6HZ怎么算,C语言基础课First作业
  5. Thinkphp开发无需挂机开源版本支付系统原码带云端ZFB和WX免输入金额跳转支付
  6. hdu 5312 打表加特判
  7. (完结)Unity游戏开发——新发教你做游戏(七):Animator控制角色动画播放
  8. 损失函数--持续更新
  9. 微信公众号(八)——关注时自动回复(文字 图片)
  10. 在手机上进行python开发的软件推荐