借鉴了许多大神的写法,终于将这个代码敲了出来

1.创建utility工具类,来存储需要的信息

/*** 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;}
}

2.创建家庭用户类,进行金额的使用

/**** switch语句中case值不能有重名的对象*/class FamilyAccount {public static void main(String[] args) {boolean isFlag = true;
//用于记录用户的收入和支出的详情String details = "收支\t账户金额\t收支金额\t说 明\n";int counter = 10000;//创建counter来存储钱财do {
//代码框架System.out.println("-------------------家庭收支记账软件---------------------\n");System.out.println(" 1 收支明细");System.out.println(" 2 登记收入");System.out.println(" 3 登记支出");System.out.println(" 4 退 出");System.out.println();System.out.print(" 请选择(1-4):");//获取对象char selection = Utility.readMenuSelection();//获取一个字符switch (selection) {case '1':System.out.println("-------------------家庭收支记账软件---------------------");//  System.out.println("收支\t账户金额\t收支金额\t说 明\n");System.out.println(details);System.out.println("*************************************");break;case '2':System.out.println("-------------------家庭收支记账软件---------------------");System.out.print("收入金额:");int inMoney = Utility.readNumber();System.out.print("收入说明:");String infoMoney = Utility.readString();
///收入后的金额counter += inMoney;details += ("收入\t" + counter + "\t\t" + inMoney + "\t\t" + infoMoney + "\n");System.out.println("----------------------登记完成--------------------------\n");break;case '3':
//System.out.println(“登记支出”);System.out.println("-------------------家庭收支记账软件---------------------");System.out.print("支出金额:");int outMoney = Utility.readNumber();System.out.print("支出说明:");String outMoneyReason = Utility.readString();//加入判断语句,进行运算,如果钱财小于总金额,则会执行else后面的语句//反之,则会执行前面的语句,进行加减运算if (counter >= outMoney) {counter -= outMoney;} else {System.out.println("支出金额超过总金额,支付失败!\\n");}//支出后的金额counter -= outMoney;details += ("支出\t" + counter + "\t\t" + outMoney + "\t\t" + outMoneyReason + "\n");System.out.println("----------------------登记完成--------------------------\t");break;case '4':System.out.println("确认是否退出(Y / N):");char isExit = Utility.readConfirmSelection();if (isExit == 'Y') {isFlag = false;}}}while (isFlag = true);}
}

java-----项目1(家庭收支管理系统)相关推荐

  1. Java、JSP家庭收支管理系统

    技术:Java.JSP等 摘要: 随着计算机的普及和计算机科学技术的飞速发展,人们开始越来越多地利用计算机来解决我们生活中的实际问题了.近几年来,由于工作的忙碌与生活频率的加快,人们的相关的事务信息量 ...

  2. Java项目:家庭收支记账软件

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

  3. 家庭收支管理系统(java)

    家庭收支管理系统 一.系统需要的类 二.系统所需类的具体代码 三.总结 一.系统需要的类 1.FamilyAccount 包含主函数,系统运行的开始 public static void main(S ...

  4. java计算机毕业设计个人收支管理系统MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计个人收支管理系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计个人收支管理系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: 项目架构:B ...

  5. java计算机毕业设计家庭理财管理系统源码+数据库+系统+lw文档+mybatis+运行部署

    java计算机毕业设计家庭理财管理系统源码+数据库+系统+lw文档+mybatis+运行部署 java计算机毕业设计家庭理财管理系统源码+数据库+系统+lw文档+mybatis+运行部署 本源码技术栈 ...

  6. java计算机毕业设计家庭食谱管理系统2021(附源码、数据库)

    java计算机毕业设计家庭食谱管理系统2021(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ecli ...

  7. JAVA毕业设计web家庭财务管理系统计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计web家庭财务管理系统计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计web家庭财务管理系统计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目架构:B/S ...

  8. java计算机毕业设计个人收支管理系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计个人收支管理系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计个人收支管理系统源码+mysql数据库+系统+lw文档+部署 本源码技术栈: 项目架构:B/S ...

  9. 程序逸的Java项目之旅-图书管理系统之数据库设计(1)

    程序逸的Java项目之旅-图书管理系统之环境的搭建 1.前言 上篇博客我们介绍了一下环境的搭建,我相信很多小伙伴这点应该问题不大,可能就是idea破解和mysql数据库和redis数据库的安装吧,我其 ...

  10. 程序逸的Java项目之旅-图书管理系统之数据库设计(2-完)

    紧接上篇博客>>>>>>程序逸的Java项目之旅-图书管理系统之数据库设计(1) 4.数据库表的创建 对于数据库表,我们可以通过cmd窗口进行创建,但那种方法有点麻 ...

最新文章

  1. 分享13个Spring Boot 优质开源项目!商城,ERP,管理系统
  2. 第2篇 C#数据类型-值类型与引用类型
  3. 「机器人界的微软」创始人逝世,从iPhone到汽车都离不开他的创造
  4. (二)OpenStack---M版---双节点搭建---数据库安装和配置
  5. 同一个项目相互调接口_超详细——接口测试总结与分享(一)
  6. ide快捷键_新买的固态硬盘用AHCI不能装系统,而用IDE却可以?问题就在这里
  7. 与TCP/IP协议的初次见面(一)
  8. FCKeditor2.3 For PHP 详细整理的使用参考
  9. Eclipse CDT 编译wxWidgets
  10. 安装linux可是c盘文件夹失败,虚拟机安装linux系统,会对物理的磁盘有影响吗?怎样保证安全,谢了!...
  11. WPF--ContextMenu绑定命令的一个问题
  12. 华为交换机抓包上传至PC分析
  13. 短视频去水印威信小程序源码下载,内附去水印解析接口
  14. win10系统引导修复
  15. 如何提高OA实施成功率 系统本身要灵活 梳理需求是关键
  16. App进行内测麻烦吗?如何进行App内测?
  17. 根下有长长的白色根须
  18. 一文教你快速搞懂速度曲线规划之S形曲线(超详细+图文+推导+附件代码)
  19. 高德地图动态锁定地图不能放大缩小和滑动
  20. 羽毛球业余分级新标准

热门文章

  1. 爆破phpmyadmin
  2. PostgreSQL sequence create alter nextval currval 数值间隔 gap
  3. 如何解决QQ在线客服未启用问题
  4. 河南省驻马店市谷歌高清卫星地图下载
  5. vue-infinite-scroll 实现触底加载
  6. Error: mount: 未知的文件系统类型“ntfs”
  7. JS获取图片(选择图片并显示)
  8. 20140319十个英语单词
  9. 三种方法 彻底解决win10 cmd下运行python弹出windows应用商店
  10. 直线滑台模组与电机控制