工具类:

package com.chb.project1;
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;}
}

主类

package com.chb.project1;public class FamilyAccount {public static void main(String[] args) {boolean isFlag=true;int balance=10000;String details = "收支\t账户金额\t收支金额\t说    明\n";while(isFlag) {System.out.println("\n-----------------家庭收支记账软件-----------------\n");System.out.println("                   1 收支明细");System.out.println("                   2 登记收入");System.out.println("                   3 登记支出");System.out.println("                   4 退    出\n");System.out.print("                   请选择(1-4):");char key=Utility.readMenuSelection();System.out.println();switch (key) {case  '1':System.out.println("-----------------当前收支明细记录-----------------");System.out.println(details);System.out.println("--------------------------------------------------");break;case  '2':System.out.print("本次收入金额:");int amount1 = Utility.readNumber();System.out.print("本次收入说明:");String desc1 = Utility.readString();balance += amount1;details += "收入\t" + balance + "\t\t" +amount1 + "\t\t" + desc1 + "\n";System.out.println("---------------------登记完成---------------------");break;case  '3':System.out.print("本次支出金额:");int amount2 = Utility.readNumber();System.out.print("本次支出说明:");String desc2 = Utility.readString();balance -= amount2;details += "支出\t" + balance + "\t\t" +  amount2 + "\t\t" + desc2 + "\n";System.out.println("---------------------登记完成---------------------");break;case  '4':System.out.print("确认是否退出(Y/N):");char yn = Utility.readConfirmSelection();if (yn == 'Y') {isFlag = false;}break;}}}
}

运行结果:

循环结束的两种方法,第一个是while(true),在循环体内加break;第二个是在循环外面设置标签boolean isFlag=true,while(isFlag),然后在循环体中将其改为false

Project1-家庭记账软件相关推荐

  1. 家庭记账软件 —— Java

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

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

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

  3. Java模拟实现一个基于文本界面的《家庭记账软件》

    主要涉及以下知识点: 变量的定义 基本数据类型的使用 循环语句 分支语句 方法声明.调用和返回值的接收 简单的屏幕输出格式控制 需求说明 模拟实现基于文本界面的<家庭记账软件>. 该软件能 ...

  4. 家庭记账软件(项目一)

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

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

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

  6. 项目一:家庭记账软件

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

  7. Java实现家庭记账软件(文本界面)

    家庭记账软件 一.需求 模拟实现基于文本界面的家庭记账软件. 此软件能够记录家庭收入.支出,并打印收支明细表. 项目采用分级菜单方式.主菜单如下: 二.分析 主要设计以下知识点: 局部变量和基本数据类 ...

  8. 【项目1】家庭记账软件

    目录 目标 涉及知识点 需求说明 流程图(活动图) -主流程 -收入和支出处理流程 实现 1.Utility工具类 2.2.FamilyAccount框架及功能实现源码 ​​​​​​​ 目标 模拟实现 ...

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

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

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

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

最新文章

  1. JavaScript—— 前端编程语言
  2. centos7 docker升级到最新稳定版本
  3. Git复习(十)之常见报错和疑问
  4. 大型分布式网站架构设计与实践 第一章《面向服务的体系架构(SOA)》
  5. [loj6391][THUPC2018]淘米神的树(Tommy)
  6. 【第五单元】vim与文件管理(10.1)
  7. 马云最怕的事还是来了,央行对借呗动真格!
  8. springboot前后端分离项目MultipartFile获取前端传的file为null问题
  9. 微信红包接口 java_【java微信开发】红包接口调用
  10. EncryptHelper
  11. PHP学习之十二:自定义函数
  12. Java学习个人备忘录之文档注释
  13. 自己手写WEB程序框架并执行
  14. Android多点触摸 与 手势识别
  15. 数学建模c语言知识,数学建模方法总结
  16. 10HTML5期末大作业:影视在线网站设计——电影网H5(9页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码
  17. 微信服务号、订阅号和企业号的差别
  18. go mysql transfer_GitHub - weiki516/go-mysql-transfer: MySQL Binlog 增量实时同步工具
  19. 美创解读|《数据安全法》实施,企业数据安全合规技术能力建设
  20. 【水晶报表内功心法】--公式、函数与运行时总计 注:(文章来自阿泰博客)

热门文章

  1. 我的世界—Python(五)
  2. 商城新客多领取优惠券问题
  3. 云原生学习——理解pod和容器设计模式
  4. 雷电飞机射击游戏 JAVA
  5. 防腐材料生产销售类织梦网站模板
  6. 广州琶洲人工智能与数字经济试验区亮相进博会
  7. 菜niao鸟教程C语言100题精选
  8. 阿里巴巴计划最高30亿元收购中兴软创 加强云计算业务
  9. 数据库分库分表后,如何部署上线?
  10. 火车实时动态系统---记idea的死掉