import java.util.Scanner;/*
Utility工具类:将不同功能封装为方法,通过调用方法使用它的功能,不需考虑细节
*/
public class Utility {private static Scanner scanner = new Scanner(System.in);/** 用于菜单界面的选择,读取键盘1-4返回相应方法*/public static char readMenuSelection() {char c;while (true) {String str = readKeyBoard(1);c = str.charAt(0);if (c != '1' && c != '2' && c != '3' && c != '4') {System.out.println("输入有误,请重新输入");} elsebreak;}return c;}/*** 收入和支出金额的设置:从键盘读取一个不超过4位长度的整数,并将其作为方法的返回值*/public static int readNumber() {int n;while (true) {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;while (true) {String str = readKeyBoard(1).toUpperCase();c = str.charAt(0);if (c == 'Y' || c == 'N') {break;} else {System.out.println("选择错误,请重新输入");}}return c;}private static String readKeyBoard(int limit) { // 定义readKeyBoard方法,限制输入长度String line = "";while (scanner.hasNext()) {line = scanner.nextLine();if (line.length() < 1 || line.length() > limit) {System.out.print("输入长度错误(不大于" + limit + ")");continue;} elsebreak;}return line;}}public class FamilyAccount {public static void main(String[] args) {boolean isFlag = true;// 用于记录用户的收入和支出的详情String details = " 收支\t账户金额\t收支金额\t说  明\n ";// 初始金额int balance = 10000;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): ");// 获取用户的选择:1-4char selection = Utility.readMenuSelection();switch (selection) {case '1':// System.out.println("1.收支明细:");System.out.println("----------------当前收支明细记录----------------");System.out.println(details);System.out.println("--------------------------------");break;case '2':// System.out.println("2.登记收入");System.out.print("本次收入金额: ");int addMoney = Utility.readNumber();System.out.print("本次收入说明: ");String addInfo = Utility.readString();// 处理balancebalance += addMoney;// 处理detailsdetails += ("收入\t" + balance + "\t" + addMoney + "\t" + addInfo + "\n");System.out.println("----------------登记完成----------------\n");break;case '3':// System.out.println("3.登记支出");System.out.print("本次支出金额: ");int minusMoney = Utility.readNumber();System.out.print("本次支出说明: ");String minusInfo = Utility.readString();// balanceif (balance > minusMoney) {balance -= minusMoney;// 处理datails1details += ("收入\t" + balance + "\t" + minusMoney + "\t" + minusInfo + "\n");} else {System.out.println("支出额度超出账户额度,支付失败。");}System.out.println("----------------登记完成----------------\n");break;case '4':// System.out.println("4. 退出");System.out.println("确认是否退出: (Y/N)");char isExit = Utility.readConfirmSelection();if (isExit == 'Y') {isFlag = false;}break;}}}}

项目:家庭收入支出记账软件(JAVA语言)相关推荐

  1. 通过PyQt5+PyQtWebEngine+pyecharts建立自己的收入支出记账软件

    通过PyQt5+PyQtWebEngine+pyecharts建立自己的收入支出记账软件 初衷 基本思路 效果图 总体效果 列表展示 饼图 设置界面 添加界面 代码 github地址 编译的exe文件 ...

  2. java基于微信小程序的个人家庭收入支出记账本小程序 uniapp

    随着我国大学生数量的不断增加,如果能够让大学生更好的养成对应的消费习惯,并且能够自控的管理好自己的收支情况,是很多教育工作者研究的一个主要问题之一,本系统的开发主要是为了在一定程度上帮助大学生养成良好 ...

  3. Java基础必须项目一(家庭收入支出软件,详细注释,并且添加日期记录功能)

    本软件是模拟家庭收入支出软件,所以登记的数据没有和数据库交互,不能保留.学习这个小项目只是为了熟悉Java中知识点的运用并且了解一些编程的思修.本人也是小白一枚,所以代码都有注释,可以帮助你更好的理清 ...

  4. Java项目一之实现家庭收入支出登记系统

    家庭收入支出登记系统 目录 一.主要涉及的知识点 二.工具类 Utility.java 介绍 三.主体流程图 四.实践操作 五.结果分析 一.主要涉及的知识点  局部变量和基本数据类型  循环语句 ...

  5. 写一个家庭收支明细记账软件1.收支明细2.登记收入 3.登记支出 4.退出

    写一个家庭收支明细记账软件1.收支明细2.登记收入  3.登记支出 4.退出 假设生活基金为10000元: 记录每次支出/收入明细,并记录下来,以便下次查询: package lianxi; impo ...

  6. 家庭收支记账软件--Java

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

  7. c语言家庭收入支出程序

    关于c语言中的家庭收支程序 第一个为无函数的,直接无脑void main程序的维护性极差 第二个为改进后的,使用了函数. 优化前 ----------------------------------- ...

  8. 基于Java小案例家庭收入支出记录

    基于Java小案例家庭收入支出记录 跟着视频来写的,不喜勿喷,谢谢 package JavaText;public class FamilyAccount {public static void ma ...

  9. 家庭记账软件 —— Java

    <家庭记账软件> 模拟是实现一个基于文本界面的<家庭记账软件> 该程序是全网最全Java零基础入门教程的项目一,可以直接查看p127 掌握逐步的编程技巧和调试技巧 主要涉及以下 ...

最新文章

  1. centos php 安装mysql_CentOS 7 安装MySQL+PHP环境
  2. 分布式服务框架 Zookeeper — 管理分布式环境中的数据
  3. Chapter 1 First Sight——12
  4. 关于iOS APP 需要支持ipv6-only 开发者需要做的事情
  5. redis5种数据结构讲解及使用场景
  6. 我在SharePoint行业的从业经历(一)
  7. c标签foreach遍历list_遍历 Dictionary,你会几种方式?
  8. 数据类型转换规则C语言
  9. 微信小程序-音频播放-wx.createInnerAudioContext() 每次都是重复播放同一条录音
  10. 拒绝offer的理由_接受拒绝的3大理由
  11. 中农大计算机组成原理在线作业1,河北农大2017计算机组成原理_在线作业_1课案.docx...
  12. Spring createBean()源码笔记
  13. python选择哪个版本-Python学习,要选哪个版本?
  14. 彻底解决电脑空闲时,Win音频设备图形隔离(系统进程)占用CPU的问题
  15. Unity体积光实现浅析
  16. The word 'jsp' is not correctly spelled. Eclipse 拼写检查出错处理办法
  17. RK 机械键盘左端WIN键与ALT键互换了,已解决
  18. 【继电器模块教程基于Arduino】
  19. h5页面启动安卓应用_h5启动原生APP总结
  20. ppt保存类型中无html,ppt保存类型里没有pdf怎么办?这样做即可!

热门文章

  1. 【字节跳动】2019后端笔试题
  2. c语言 圆周率10000位,圆周率小数点后第10000位是多少 - 圆周率 - 911查询
  3. python--城堡保卫战
  4. OWT Server信令分析 (下) [Open WebRTC Toolkit]
  5. a1 抛光等级spi_模具抛光分几个等级呢?
  6. 360篡改Edge、Google浏览器主页的应对方法
  7. 剑指offer | 面试题10:斐波那切数列
  8. 题解-CTS2019氪金手游
  9. 链表(线性表的一种存储结构)
  10. 曾国藩戒烟——人但有恒,事物不成