目录

目标

需求说明

具体操作

项目阶段一

项目阶段二

收入功能

支出功能

收支明细功能

退出功能

完整代码:


目标

1 模拟一个基于文本界面的《家庭记账软件》

2 掌握初步的编程技巧和调试技巧

3 灵活运用基础知识

需求说明

该软件能够记录家庭的收入和支出,并能打印收支明细表

采用分级菜单方式,主菜单如下:

1 假设家庭起始的生活基本金为10000元

2 每次登记收入(菜单2)后, 收入的金额应累加到基本金上,并记录本次收入明细, 以便后续的查询。。

3 每次登记支出(菜单3)后, 支出的金额应从基本金中扣除,并记 录本次支出明细,以便后续的查询。

4 查询收支明细( 菜单1)时, 将显示所有的收入、支出名细列表

具体操作

项目阶段一

主界面构建

使用switch语句,做成菜单,输入对应语句,进入相对应功能。case '2' 和 case '3'里面调用方法后使用count++是为了记录输入记录的条数,以便后续操作。

System.out.println("-------------------------家庭收支记账软件-------------------------");System.out.println();System.out.println("                       1 收支明细");System.out.println("                       2 登记收入");System.out.println("                       3 登记支出");System.out.println("                       4 退出");System.out.println();System.out.print("                       请选择(1-4):");int n = tool.readMenuSelection();   //readMenuSelection()是另一个类里面的方法switch (n) {case '1':numOne(arr,count);   //遍历数组并且输出break;case '2':sum = numTwo(arr,count,sum);     //调用方法,返回sum值count++;     //count++一定要在方法调用后,否则会出现一行null值break;case '3':sum = numThree(arr,count,sum);count++;break;case '4':numFour();   //退出运行或者继续运行break;}}

为了可以多次进行记录,我们需要在此基础上,添加一个循环,因为是未知次数,所以我们使用while(true)进行无限循环,使用case '4'里面的方法进行结束循环。

    while(true) {System.out.println("-------------------------家庭收支记账软件-------------------------");System.out.println();System.out.println("                       1 收支明细");System.out.println("                       2 登记收入");System.out.println("                       3 登记支出");System.out.println("                       4 退出");System.out.println();System.out.print("                       请选择(1-4):");int n = tool.readMenuSelection();switch (n) {case '1':numOne(arr,count);break;case '2':sum = numTwo(arr,count,sum);     //返回sum值count++;     //count++一定要在方法调用后,否则会出现一行null值break;case '3':sum = numThree(arr,count,sum);count++;break;case '4':numFour();break;}}

故主函数里面的全部代码如下:

        int count = 0;int sum = 1000;String[][] arr = new String[10][4];while(true) {System.out.println("-------------------------家庭收支记账软件-------------------------");System.out.println();System.out.println("                       1 收支明细");System.out.println("                       2 登记收入");System.out.println("                       3 登记支出");System.out.println("                       4 退出");System.out.println();System.out.print("                       请选择(1-4):");int n = tool.readMenuSelection();switch (n) {case '1':numOne(arr,count);break;case '2':sum = numTwo(arr,count,sum);     //返回sum值count++;     //count++一定要在方法调用后,否则会出现一行null值break;case '3':sum = numThree(arr,count,sum);count++;break;case '4':numFour();break;}}}

项目阶段二

完成收入、支出的记录功能

收入功能

界面:

代码:

    public static int numTwo(String[][] arr,int count, int sum){            //收入记录功能System.out.println("请输入本次收入金额:");int money = tool.readNumber();    //调用tool类里面已经写好的方法,进行输入收入金额System.out.println("请输入本次收入的说明:");String explain = tool.readString();      //调用tool类里面已经写好的方法,进行收入说明arr[count][0]="收入";   //count是main函数里面记录的记录次数,目的是为了表明这条数据输入是第几行sum+=money;arr[count][1]= Integer.toString(sum);  //这里需要进行强制转换arr[count][2]= "+" + String.valueOf(money);arr[count][3]=explain;System.out.println("添加成功!");return sum;}

注:因为数组定义的是String类型,所以sum需要进行强制转换,这里的强制转换需要用Integer.toString,而不能直接使用int;

转换成int类型是为了对总金额进行收入、支出的运算

支出功能

界面:

代码:

    public static int numThree(String[][] arr,int count, int sum){System.out.println("请输入本次支出金额:");int money = tool.readNumber();System.out.println("请输入本次支出的说明:");String explain = tool.readString();arr[count][0]="支出";sum-=money;arr[count][1]= Integer.toString(sum);   //进行强制转换arr[count][2]= "-" + String.valueOf(money);arr[count][3]=explain;System.out.println("添加成功!");return sum;}

支出功能具体代码和注意事项和收入功能差不多,支出功能需要注意一点的是,对总金额进行运算时,支出功能是sum -= money,进行减法运算,而收入功能是sum += money,进行加法运算

收支明细功能

界面:

代码:

    public static void numOne(String[][] arr,int count){          //收支明细功能System.out.println("收支\t\t\t账户总金额\t收支金额\t\t说 明");for( int i = 0; i < count; i++){for(int j = 0; j < arr[i].length; j++){   //for循环遍历System.out.print(arr[i][j] + "\t\t\t");}System.out.println();}System.out.println("------------------------------------------------------------------");}

使用二维数组的遍历,对记录入二维数组的数据进行输出

值得注意的一点是,我需要输出的行数是我输入的行数,使用这里使用count,而不是arr.length

退出功能

界面:

代码:

    public static char numFour(){Scanner sc = new Scanner(System.in);System.out.println("是否确认退出?(Y/N):");String confirm = sc.nextLine();char y = confirm.charAt(0);   //类型转换char yes = 'Y';char no = 'N';if(y == yes){System.exit(0);}else if(y == no){return 0;}else{System.out.println("请输入正确指令");}return numFour();      //返回方法}

退出功能比较简单,使用判断,如果是'Y',就停止运行,如果是 'N'则返回到开始,如果两者都不是,则输出提示语句,并且返回到这个方法。

完整代码:

package com;import java.util.Scanner;public class work {public static void main(String[] args) {int count = 0;int sum = 1000;String[][] arr = new String[10][4];while(true) {System.out.println("-------------------------家庭收支记账软件-------------------------");System.out.println();System.out.println("                       1 收支明细");System.out.println("                       2 登记收入");System.out.println("                       3 登记支出");System.out.println("                       4 退出");System.out.println();System.out.print("                       请选择(1-4):");int n = tool.readMenuSelection();switch (n) {case '1':numOne(arr,count);break;case '2':sum = numTwo(arr,count,sum);     //返回sum值count++;     //count++一定要在方法调用后,否则会出现一行null值break;case '3':sum = numThree(arr,count,sum);count++;break;case '4':numFour();break;}}}public static void numOne(String[][] arr,int count){          //收支明细功能System.out.println("收支\t\t\t账户总金额\t收支金额\t\t说 明");for( int i = 0; i < count; i++){for(int j = 0; j < arr[i].length; j++){   //for循环遍历System.out.print(arr[i][j] + "\t\t\t");}System.out.println();}System.out.println("------------------------------------------------------------------");}public static int numTwo(String[][] arr,int count, int sum){            //收入记录功能System.out.println("请输入本次收入金额:");int money = tool.readNumber();System.out.println("请输入本次收入的说明:");String explain = tool.readString();arr[count][0]="收入";sum+=money;arr[count][1]= Integer.toString(sum);  //进行强制转换arr[count][2]= "+" + String.valueOf(money);arr[count][3]=explain;System.out.println("添加成功!");return sum;}public static int numThree(String[][] arr,int count, int sum){     //支出记录功能System.out.println("请输入本次支出金额:");int money = tool.readNumber();System.out.println("请输入本次支出的说明:");String explain = tool.readString();arr[count][0]="支出";sum-=money;arr[count][1]= Integer.toString(sum);   //进行强制转换arr[count][2]= "-" + String.valueOf(money);arr[count][3]=explain;System.out.println("添加成功!");return sum;}public static char numFour(){Scanner sc = new Scanner(System.in);System.out.println("是否确认退出?(Y/N):");String confirm = sc.nextLine();char y = confirm.charAt(0);char yes = 'Y';char no = 'N';if(y == yes){System.exit(0);}else if(y == no){return 0;}else{System.out.println("请输入正确指令");}return numFour();}}

tool工具类完整代码:

package com;
import java.util.Scanner;
public class tool {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;}
}

Java家庭记账程序相关推荐

  1. java小项目家庭记账程序

    文章目录 java小项目家庭记账程序 **1.项目目标:** 2.项目需求: 3.具体思路: 4.具体代码: 1.页面: 2.Option_1类: 3.Option_2类: 4.Option_3类: ...

  2. 使用java实现基础的家庭记账程序

    家庭记账程序 需求说明 具体操作 完整代码 总结 需求说明 1.该程序能够记录家庭的收入.支出,并能打印收支明细表 2.项目采用分级菜单的方式.主菜单如下: 3.假设家庭起始的生活基本金为10000元 ...

  3. 简单实现家庭记账程序

    简易家庭记账程序 一.需求说明 二.代码解析 主方法 记录收入 记录支出 收支明细 三.运行部分效果 四.完整源代码 一.需求说明 主要是用Java实现一个能记录家庭记账的小程序,所需要的方法也比较简 ...

  4. 简单实现家庭记账程序(java)

    目录 一.项目需求及流程说明 1.需求说明: 2.流程说明 项目阶段1 项目阶段2 项目阶段3 二.完整源代码及工具类 1.工具类 2.主功能程序 一.项目需求及流程说明 1.需求说明 整体说明: 模 ...

  5. Java基础:家庭记账程序

    目标: 模拟实现一个基于文本界面的家庭记账软件,灵活运用基础知识 需求分析: 该软件能够记录家庭的收入.支出,并能够打印收支明细表 其主菜单如下: 需要满足的条件有: 工作流程图如下: 这里是实现代码 ...

  6. 使用Java实现简单的家庭记账程序

    文章目录 1.需求说明 2.具体实现 1.需求说明 1.模拟实现一个基于文本界面(程序控制台)的<家庭收支记录程序>,该程序能够记录家庭的收入.支出,并能够打印收支明细表. 2.项目采用分 ...

  7. java家庭记账代码_Java的家庭记账本程序(B)

    package sql.mysql; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepar ...

  8. Java家庭记账小软件

    通过以下这个小案例,来作为Java入门的第一课.虽然之前学过C#语言和C语言,但还是仔仔细细的敲了以下代码,并且都有详细的注释.相信这对有过其它编程语言基础的你并不难. 先来看下要实现的效果: 首先要 ...

  9. Java写家庭记账软件

    java 家庭记账软件 Miraitowa 本内容介绍的是有关java制作一个家庭记账软件的相关知识.但是由于我也是初学,所以希望大家多多指教. 以下就是我们这次的题: 需求说明 •模拟实现基于文本界 ...

最新文章

  1. springboot集成swagger2测试接口
  2. 前端知识点回顾之重点篇——JavaScript异步机制
  3. 给FlvDownloader加了一个视频预览的功能
  4. delphi调用windows api
  5. 8屏 旌宇多屏管理软件_如何选择拼接屏,不能说的秘密,都在这!
  6. 向量 矩阵 张量_张量,矩阵和向量有什么区别?
  7. 精心准备了10个行业30张大屏模板,0代码直接套用
  8. pytorch学习笔记(十):MLP
  9. matlab按图像边缘抠图_PS抠图教程_PS抠图方法大全
  10. APP与服务器数据传输的加密方式
  11. “去中心化”和“分布式”的区别
  12. 谨以此篇献给正在迷茫的人生 浅谈网络时代各种骗局
  13. transition(过渡)
  14. Digital Clock 3D for Mac(3D机械时钟动态桌面壁纸)
  15. SPRINGBOOT中如何进行开发环境和生产环境的配置?
  16. ArcGIS教程 - 10 栅格数据分析
  17. 初识pandas及基本的增删改查
  18. JAVA 知识点 | Hook
  19. esb和eai的区别
  20. 字符串(varchar)和二进制(varbinary)互转

热门文章

  1. 手机web端唤醒qq客户端以及电脑web端唤醒qq客户端
  2. 我的markdown临时图片区(for 印象笔记web)
  3. 蜘蛛大战之 站点LOGO(SEO)
  4. python弧度值转角度值_python 弧度与角度互转实例
  5. 《沉思录卷十》幸福就是按照本性生活
  6. Paypal+本地支付,是跨境外贸收款最好的解决方案!
  7. 【JZOJ4597】现世斩
  8. 程序员视角的计算机系统 第一章 计算机系统 之旅
  9. 格力美的,谁代表中国制造的未来
  10. vs2017或vs2019安装中Microsoft.VisualStudio.MinShell.Msi.Resources出错的问题