说明:

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

                                      需求分析
模拟实现基于文本界面的《家庭记账软件》。
• 该软件能够记录家庭的收入、支出,并能够打印收支明细表。
• 项目采用分级菜单方式。

下载链接

https://download.csdn.net/download/qq_45710241/87471346

项目演示

操作步骤

创建类Tool

public class Tool{}

Tool加入键盘读入逻辑

 private static Scanner scanner =new Scanner(System.in);//键盘读入1~4,进行菜单的选择public static char readMenuSelector() {  //阅读菜单选择char c;for(;;){String str=readKeyBoard(1);c=str.charAt(0);if(c!='1'&&c!='2'&&c!='3'&&c!='4'){System.out.println("输入错误,请从新输入!");}elsebreak;}return c;}

Tool里面加入收入支出读取方法

 //用于读取4位数的收入或者支出,限制4位数字public static int readNumber(){int n;for(;;){String str=readKeyBoard(4);try{n=Integer.parseInt(str);break;}catch(NumberFormatException e){System.out.println("数字输入有误,请从新输入!");}}return n;}

Tool加入收入支出说明

//用于对收入或者支出的说明,不超过16个长度的字符串public static String readString(){String str=readKeyBoard(16);return str;}

Tool加入退出确认方法

//用于确认选择的输入public static char readConfirmSelection(){char c;for(;;) {String str =readKeyBoard(1).toUpperCase();c=str.charAt(0);if(c=='Y'||c=='N'){break;}elseSystem.out.println("输入错误,请从新输入!");}return c;}

Tool类加入输入规范方法

 //写出readKeyBoard方法private static String readKeyBoard(int limit){String line="";while(scanner.hasNext()) {line = scanner.nextLine();if(line.length()<1||line.length()>limit){System.out.println("输入长度不超过"+limit+",请从新输入!");continue;}break;}return line;}

创建FamilyAccount类

public class FamilyAccount {public static void main(String[] args) {}}

在FamilyAccount中定义变量

   boolean isFlag=true;String details="收支\t账户金额\t收支金额\t说  明\n";//初始金额int balance=10000;

在FamilyAccount中写出界面

 while(isFlag){System.out.println("-----------------家庭收支记账软件-----------------");System.out.println("                   1 收支明细");System.out.println("                   2 登记收入");System.out.println("                   3 登记支出");System.out.println("                   4 退    出\n");System.out.println("                   请选择(1-4):");

在FamilyAccount中获取用户的选择,并在不同的选择中做出相应的逻辑操作。

char selection= Tool.readMenuSelector();switch(selection){case '1':System.out.println("-----------------当前收支明细记录-----------------");System.out.println(details);System.out.println("--------------------------------------------------");break;case '2':System.out.print("本次收入金额:");int money1=Tool.readNumber();System.out.print("本次收入说明:");String info1=Tool.readString();balance=balance+money1;details+="收入\t"+balance+"\t\t"+money1+"\t\t\t"+info1+"\n";System.out.println("---------------------登记完成---------------------");break;case '3':System.out.print("本次支出金额:");int money2 = Tool.readNumber();System.out.print("本次支出说明:");String info2 = Tool.readString();if(money2<=balance) {balance -= money2;details += "支出\t" + balance + "\t\t" +money2 + "\t\t\t" + info2 + "\n";}elseSystem.out.println("支出超出账户额度!支付失败");System.out.println("---------------------登记完成---------------------");break;case '4':System.out.print("确认是否退出!Y/N");char isExit= Tool.readConfirmSelection();if(isExit=='Y'){isFlag=false;}break;}}

完整代码

Tool类

import java.util.Scanner;
public class Tool {private static Scanner scanner =new Scanner(System.in);//键盘读入1~4,进行菜单的选择public static char readMenuSelector() {  //阅读菜单选择char c;for(;;){String str=readKeyBoard(1);c=str.charAt(0);if(c!='1'&&c!='2'&&c!='3'&&c!='4'){System.out.println("输入错误,请从新输入!");}elsebreak;}return c;}//用于读取4位数的收入或者支出,限制4位数字public static int readNumber(){int n;for(;;){String str=readKeyBoard(4);try{n=Integer.parseInt(str);break;}catch(NumberFormatException e){System.out.println("数字输入有误,请从新输入!");}}return n;}//用于对收入或者支出的说明,不超过16个长度的字符串public static String readString(){String str=readKeyBoard(16);return str;}//用于确认选择的输入public static char readConfirmSelection(){char c;for(;;) {String str =readKeyBoard(1).toUpperCase();c=str.charAt(0);if(c=='Y'||c=='N'){break;}elseSystem.out.println("输入错误,请从新输入!");}return c;}//写出readKeyBoard方法private static String readKeyBoard(int limit){String line="";while(scanner.hasNext()) {line = scanner.nextLine();if(line.length()<1||line.length()>limit){System.out.println("输入长度不超过"+limit+",请从新输入!");continue;}break;}return line;}
}

FamilyAccount类

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 退    出\n");System.out.println("                   请选择(1-4):");//获取用户的选择char selection= Tool.readMenuSelector();switch(selection){case '1':System.out.println("-----------------当前收支明细记录-----------------");System.out.println(details);System.out.println("--------------------------------------------------");break;case '2':System.out.print("本次收入金额:");int money1=Tool.readNumber();System.out.print("本次收入说明:");String info1=Tool.readString();balance=balance+money1;details+="收入\t"+balance+"\t\t"+money1+"\t\t\t"+info1+"\n";System.out.println("---------------------登记完成---------------------");break;case '3':System.out.print("本次支出金额:");int money2 = Tool.readNumber();System.out.print("本次支出说明:");String info2 = Tool.readString();if(money2<=balance) {balance -= money2;details += "支出\t" + balance + "\t\t" +money2 + "\t\t\t" + info2 + "\n";}elseSystem.out.println("支出超出账户额度!支付失败");System.out.println("---------------------登记完成---------------------");break;case '4':System.out.print("确认是否退出!Y/N");char isExit= Tool.readConfirmSelection();if(isExit=='Y'){isFlag=false;}break;}}}
}

java家庭收支记账软件相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. Java实现家庭收支记账软件及编写过程中的注意事项

    一.思路 1.明确需求 总需求也就是家庭收支记账软件要实现的功能,要能实现记录家庭的收入与支出,并打印收支明细表. 2.实现步骤 第一步要展示程序的主界面,内容要包含四个菜单选项. 第二步实现根据用户 ...

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

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

最新文章

  1. 用Python分析了1982场英雄联盟数据,开局前预测游戏对局胜负!
  2. linux内核中启动页面,Linux内核启动过程分析
  3. java多语言编程语言_为什么很多程序员信仰“Java是世界上最好的编程语言”
  4. 有关struts2中用到 js 总结
  5. UVA 10635——Prince and Princess
  6. 用doss进入mysql_一键连接给你省了多少事_DOSS 听吧_音频评测-中关村在线
  7. 使用Ant 实现批量打包Android应用
  8. Windows phone 8 学习笔记(7) 设备
  9. 电脑主机换了什么东西才需要重新安装系统?
  10. 关于ashx的基本应用
  11. 在 Visual Studio 2010 中配置SharpPcap
  12. android音乐播放器flac,无损高保真音乐播放器app
  13. 蓝牙防丢器原理和作用
  14. Celery 立即执行任务 延迟执行任务
  15. ※前端面试--知识总结
  16. 天蝎项目整机柜服务器解决方案,天蝎2.0整机柜服务器技术规范rev0.5(final).doc
  17. [HSI论文阅读] | HybridSN: Exploring 3-D–2-D CNN Feature Hierarchy for Hyperspectral Image Classification
  18. kafka-connect-jdbc 增加source报错:query may not be combined with whole-table copying settings
  19. 大数据就业前景真的那么好吗
  20. 词根词缀prim/prehend/pri/psych等延伸词汇

热门文章

  1. 关于数字编码的小知识
  2. STM32+MCGS触摸屏四通道数据采集
  3. 准备重装系统?且慢,学会这一招,可以解决大小故障。
  4. 不同坐标系下3D bbox通过中心点坐标和长宽高求8个角点问题
  5. linux动态库修改名称(修改库文件内容)
  6. 社会最底层的人,如何突破人生圈层,改变命运?
  7. RSRP/RSRQ/RSSI/RS-SINR/RS-CINR/RSCP
  8. 【通俗易懂的解释】HttpSession session = request.getSession(false);中的false是什么意思
  9. Ajax+Css表格(转载)
  10. 在哪里找最好用的CAD看图软件下载使用