1.FamilyAccount.java

package com.company;import com.sun.deploy.security.SelectableSecurityManager;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("家庭收支记账软件 ");System.out.println("1:收支记录");System.out.println("2:登记收入");System.out.println("3:登记支出");System.out.println("4:退出");System.out.println("请选择相应序号进行操作");//    System.out.println("");char selection =Utility.readMenuSelection();switch(selection){case '1':System.out.println("-------当前收支明细-----");System.out.println(details);System.out.println("-----------------------------");break;case '2':System.out.print("本次收入金额:");int money=Utility.readNumber();System.out.print("本次收入说明:");String info=Utility.readString();balance+=money;details+=("收入\t"+balance+"\t"+money+"\t"+info+"\n");System.out.println("------------登记完成----------");break;case '3':System.out.print("本次支出金额:");int goMoney=Utility.readNumber();System.out.print("本次支出说明:");String ifInfo=Utility.readString();if (balance>=goMoney){balance-=goMoney;}else{System.out.println("超出账户额度,支付失败!!!");}details+=("支出\t"+balance+"\t"+goMoney+"\t"+ifInfo+"\n");System.out.println("------------登记完成----------");break;case '4':System.out.print("是否确认退出(Y/N):");char isExit=Utility.readConfirmSelection();if (isExit=='Y'){isFlag=false;}}}}}
2.Utility.java
package com.company;
import java.util.*;
/**
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(8);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;}
}

java项目1(家庭收支记账软件)相关推荐

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

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

  2. Go 小项目1 - 家庭收支记账软件

    Go 小项目1 - 家庭收支记账软件 一)需求 1)模拟实现基于文本界面的<家庭记账软件> 2)该软件能够记录家庭的收入.支出,并能够打印收支明细表 二)编码 1)功能 1.完成主菜单的编 ...

  3. Java开发一个家庭收支记账软件

    4.请开发一个家庭收支记账软件 界面及操作过程如下所示: -----------------家庭收支记账软件----------------- 1 收支明细 2 登记收入 3 登记支出 4 退 出 请 ...

  4. 用Java写一个家庭收支记账软件

    需要的内容有:收支明细.登记收入.登记支出和退出四个模块.并且能进入每个功能里面. 最好用的方式是用数组实现这个软件,可以是二维数组,也可以是一维数组,直接附上源码. import java.util ...

  5. 基于Java基础的家庭收支记账软件

    文章目录 前言 一.前期准备 二.整体功能 三.功能模块 四.功能浅谈 1. AccountInfo 类 2.收支明细 3.登记收入/支出 4. 查询账单 五.收获 六.总结 前言 学习完Java基础 ...

  6. 项目一.家庭收支记账软件

    问题1: 关于跳出总循环for for(){switch(){}} 跳出循环的两种方法:第一种,定义条件i!=1,在跳出循环的选项下让i=1:第二种,定义label: for,在需要跳出条件的后面br ...

  7. day2-项目一家庭收支记账软件

    项目一家庭收支记账软件总结 .nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的. .next()会自动消去有效字符前的空格,只返回输入的字符,不能得到带空格的字 ...

  8. Java项目一(案例):家庭收支记账软件

    Java项目一(案例):家庭收支记账软件 项目概述 软件功能 项目说明 涉及Java知识点 软件需求说明 程序代码示例 FamilyAccount.class文件 自定义Utility.class工具 ...

  9. 3.项目一(家庭收支记账软件)

    家庭收支记账软件 项目一:家庭收支记账软件 1. 项目演示 2. Utility工具类的说明 Utility工具类提供了一系列的方法,方便我们从控制台获取相关数据: 用户的选择(1-4):readMe ...

  10. Java实现家庭收支记账软件

    题目来自于尚硅谷基础项目1,其中没有使用项目提供的现成的方法 测试类 package test;import face.MainInterFace; import code.*; public cla ...

最新文章

  1. Swift与LLVM-Clang原理与示例
  2. Go开发之路 -- Go语言基本语法 - 作业
  3. python基本使用-python基本用法
  4. Oracle12c 在windonServer2012中安装的步骤
  5. weblogic10.3.6配置nodemanager
  6. Java RESTful 框架的性能比较
  7. oracle常用的时间格式转换
  8. 年轻工程师如何锻炼成高手的
  9. python字符串转日期_Python:将字符串时间字典转换为日期时间
  10. android 跳转动画黑屏,Android8.0 适配解决页面跳转过程出现短暂黑屏的问题
  11. css3 呼吸的莲花_CSS3制作莲花盛开动画
  12. mysql basedao_JDBC之BaseDao类
  13. 做了5年程序员才明白,这项能力原来这么重要
  14. java项目环境搭建
  15. cron一点半到两点半之间每分钟_分辨率,定位精度,重复定位精度三者之间有什么关系?...
  16. 做一款仿映客的直播App
  17. 得到控制台窗口的句柄
  18. GenericObjectPool参数解析
  19. Android jetpack DataStore 1.0.0-rc02最新版从SharedPreferences迁移到Preferences DataStore
  20. “无法访问 您可能没有权限使用网络资源”解决办法

热门文章

  1. Pownerdesigner画用例图/类图/时序图
  2. 数据挖掘实例(航空公司客户价值分析)
  3. matlab如何画tanx图像,MATLAB画出sinx cosx tanx 图像
  4. GoLand每次切换,光标跑到行首
  5. rust修改礼包时间_Rust Async: futures-timer源码解析
  6. Could not resolve placeholder
  7. 利用各向异性平滑图像
  8. 嵌入式 Linux C 代码规范和风格
  9. 车架号识别系统-VIN码识别查询
  10. (7)数据分析-秩和检验