这个是没有文件储存的,过几天再写一个有文件储存的练练手。

需求说明:

主菜单类:

public class FamilyAccount {public static void main(String[] args) {String details = "收支\t账户金额\t收支金额\t说    明\n";int balance = 10000;boolean loopFlag = true;do {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') loopFlag = false;break;}} while (loopFlag);}
}

工具类 包装菜单选项功能

将不同的功能封装为方法,就是可以直接通过调用方法使用它的功能,而无需考虑具体的功
能实现细节。在 Utility.java 工具类中提供了以下静态方法:
 public static char readMenuSelection() :用于界面菜单的选择。该方法读取键盘,如果
用户键入’1’-’4’中的任意字符,则方法返回。返回值为用户键入字符。
 public static int readNumber() :用于收入和支出金额的输入。该方法从键盘读取一个不
超过 4 位长度的整数,并将其作为方法的返回值。
 public static String readString() :用于收入和支出说明的输入。该方法从键盘读取一个不
超过 8 位长度的字符串,并将其作为方法的返回值。
 public static char readConfirmSelection() :用于确认选择的输入。该方法从键盘读取‘Y’
或’N’,并将其作为方法的返回值
这些方法都是 public static 修饰的,因此使用这些方法可以通过“类名.方法”直接使用。例
如:
char key = Utility.readMenuSelection();
int amount = Utility.readNumber();
String desc = Utility.readString();
char confirm = Utility.readConfirmSelection();

工具类:

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

尚硅谷 家庭收支记账软件相关推荐

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

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

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

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

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

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

  4. java家庭收支记账软件-day01

    import java.util.Scanner; public class itemfamily {public static void main(String[] args) {Scanner s ...

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

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

  6. go 家庭收支记账软件

    项目开发流程 项目需求说明 模拟实现基于文本界面的<家庭记账软件> 该软件能够记录家庭的收入.支出,并能够打印收支明细表 项目的界面 -------------家庭收支记账软件------ ...

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

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

  8. java基础(家庭收支记账软件)

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

  9. 案例一,家庭收支记账软件

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

最新文章

  1. vs2013 类名颜色显示黑色,无法修改
  2. 《C++代码设计与重用》——2.5 浅拷贝和深拷贝
  3. matlab2ask和2psk仿真实验代码
  4. 一英寸芯片大小_科普:为什么标称1英寸的CMOS成像芯片,其对角线长度不是25.4mm?...
  5. python3.8爬虫_python爬虫系列(3.8-正则的使用)
  6. 【CSS3】填色表格演示hsl()
  7. Hive之架构 功能
  8. ios学习:Xcode工具
  9. zabbix 通过import批量导入新增主机和批量删除旧的主机
  10. 研究生量子计算机专业,量子计算机研究.PDF
  11. Java后台实现Excel文件下载
  12. LINUX矩阵键盘简单介绍,矩阵键盘程序流程图详细介绍
  13. 修复Windows 7升级Windows 10后Japanese输入法无法使用的Bug
  14. c语言模拟扫雷小游戏
  15. Win系统 - Windows10 系统恢复语言栏位置的方法(一)
  16. 【python-02】
  17. 5G车路协同自动驾驶应用研究
  18. 最新UI仿水滴筹系统源码+全开源Uniapp开发的
  19. eMMC(KLM8G2FE3B)
  20. iOS第三方直播的集成

热门文章

  1. JavaScript常用节点类型
  2. 高新技术企业申报的流程
  3. 多个服务器数据互通_8月4日部分服务器数据互通公告
  4. PHP curl模拟ip与模拟浏览器header请求方法
  5. m4v视频怎么转换mp4格式,4种方式教给你
  6. LaTeX技巧010:生成长度固定的下划线
  7. 决策易|医药代表绩效管理激励体系
  8. python开发串口通信界面_python串口编程实例
  9. 苹果前置摄像头拍出来是反的怎么调_苹果前置拍照怎么反的。怎么调正
  10. Enterprise Architect常见问题