代码1

package lesson.project.p1_familyAccount;import java.util.Scanner;public class FamilyAccount {public static int money = 10000;public static String all = "";public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while (true) {show();String s = scanner.next();switch (s) {case "1":show();System.out.println("收支\t金额\t明细\t");System.out.println(all);System.out.println("余额:" + money);break;case "2"://收入System.out.println("金额:");String b = scanner.next();System.out.println("明细:");String d = scanner.next();all+="收入"+"\t"+b+"\t"+d+"\t"+"\n";money += Integer.parseInt(b);break;case "3"://支出System.out.println("金额:");String b1 = scanner.next();System.out.println("明细:");String d1 = scanner.next();all+="支出"+"\t"+b1+"\t"+d1+"\t"+"\n";money -= Integer.parseInt(b1);break;case "4":while (true) {System.out.println("是否要退出?(Y\\N)");String choose = scanner.next();if (choose.equals("Y") || choose.equals("y")) {System.exit(0);} else if (choose.equals("N") || choose.equals("n")) {break;} else {System.out.println("输入不合法!请重新输入");}}break;default:System.out.println("输入不合法!请重新输入");show();break;}}}public static void show() {System.out.println("家庭收支账户:");System.out.println("1.查看账户");System.out.println("2.增加收入");System.out.println("3.减少收入");System.out.println("4.退出账户");System.out.println("请选择功能:");}
}

代码2

工具类

package lesson.project.p1_familyAccount.version2;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 lesson.project.p1_familyAccount.version2;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);}
}

java 家庭收支账户相关推荐

  1. java编写家庭收支记录,Java家庭收支记账小项目(java基础)

    Java家庭收支记账小项目(java基础) Java家庭收支记账小项目(java基础) 需求说明: 模拟实现基于文本界面的<家庭记账软件>. 该软件能够记录家庭的收入.支出,并能够打印收支 ...

  2. eclipse编写的Java家庭收支记账软件

    eclipse编写的Java家庭收支记账软件 界面及操作过程如下所示: -----------------家庭收支记账软件----------------- 1 收支明细 2 登记收入 3 登记支出 ...

  3. java家庭收支记账软件

    说明: 这篇文章主要运用了一些java基础知识的一个综合运用 主要涉及以下知识点:  变量的定义  基本数据类型的使用  循环语句  分支语句  方法声明.调用和返回值的接收  简单的屏幕 ...

  4. Java家庭收支明细代码

    package begin;public class Main { //视频目前位置215public static void main(String[] args) {// write your c ...

  5. 家庭收支账户小程序设计

    引言 朋友们,学了那么久的数组与方法的知识,那么今天我们就来完成一个小程序的设计,用用我们所学知识完成,以及学习一下新知识.大佬可以直接去文末看源代码哦 目录 引言 一.需求 二.解决方案 1.实现界 ...

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

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

  7. java编写家庭收支记账程序

    一.明确需求:                                                                                              ...

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

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

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

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

最新文章

  1. vsftp本地用户,虚拟用户,匿名用户同时工作
  2. 模拟登录QQ判断是否需要验证码
  3. 六角填数---第五届蓝桥杯
  4. nashorn js 调用 java_从nashorn(JDK 8 JavaScript引擎)调用char []输入参数调用Java函数?...
  5. weblogic启动项目报错找不到类_启动类报错是经常出现的事但是单一的从一个地方找原因会越找越错...
  6. java调用android打包_Android Gradle打包基础
  7. 设计素材|美丽的几何和多边形背景纹理
  8. Jmeter使用之高效组织接口自动化用例技巧
  9. Golang map 三板斧第二式:注意事项
  10. Google Perf Tools安装以及使用
  11. Java中list操作
  12. Python内置字符串函数的用法
  13. java 使用 poi 操纵 excel2003 经验总结
  14. Intellij IDEA远程debug教程实战和要点总结
  15. 格力董明珠和小米雷军的10亿赌局 --- 当年的理念谁赢谁输
  16. port bridge enable命令导致的环路
  17. 关于ETF的套利机制
  18. 【读论文】基于深度学习的铁路道岔转辙机故障诊断(2INTRO)
  19. Android学习之——APP番茄工作法——小结(2)
  20. 「中民知慧教育」已完成近千万种子轮融资

热门文章

  1. 【转】SOAR从概念到落地
  2. java容器类1:Collection,List,ArrayList,LinkedList深入解读
  3. volatile和synchronized的区别与联系
  4. 使用 Github Pages 和 Hexo 搭建自己的独立博客【超级详细的小白教程】
  5. REVERSE-COMPETITION-GeekChallenge2021
  6. c语言怎样计算栈的长度,数据结构与算法:栈 C语言实现
  7. 【CodeForces - 1051A】Vasya And Password (构造,水题)
  8. Coursera自动驾驶课程第12讲:Semantic Segmentation
  9. 10点43博客文章汇总(2018年度)
  10. 在Ubuntu上安装Keras深度学习框架