文章目录

  • 1.需求说明
  • 2.具体实现

1.需求说明

1.模拟实现一个基于文本界面(程序控制台)的《家庭收支记录程序》,该程序能够记录家庭的收入、支出,并能够打印收支明细表。
2.项目采用分级菜单方式。主菜单如下:

3.详细要求

  • 假设家庭起始的生活基本金为10000元
  • 每次登记收入(菜单2)后,收入的金额应累加到基本金上,并记录本次收入明细,以便后续的查询。
  • 每次登记支出(菜单3)后,支出的金额应从基本金中扣除,并记录本次支出明细,以便后续的查询。
  • 每次收入支出存入数组
  • 查询收支明细( 菜单1)时,将显示所有的收入、支出名细列表

2.具体实现

1.思路:根据流程图可以判断有四个选择,所以用switch()语句来实现每个菜单功能,然后程序不可能只运行一次,且不知道具体的循环次数,所以用while()循环来实现,然后编写每个菜单具体实现功能。
2.各个模块代码:
主菜单界面

 System.out.println("-------------------家庭收支记账软件---------------------");//分割线 方便使用及查看//四个菜单选项System.out.println("        1.收支明细");System.out.println("        2.登记收入");System.out.println("        3.登记支出");System.out.println("        4.退   出");System.out.print("         请选择(1-4):");System.out.println();int a = sc.nextInt();//接收输入的数字进入菜单

菜单1:
使用一个for()循环来遍历数组每一行数据

  case 1://菜单1,收支明细System.out.println("-------------------收支明细记录表-----------------------");//收支明细的四个要素,及数组设置的每个一维数组的一维数组中的四个元素System.out.println("收支     账户总金额     收支金额     说    明");for (int i = 0; i <arr.length ; i++) {//循环打印 输入的数据if (arr[i][0]!=null){System.out.println(arr[i][0]+"     "+arr[i][1]+"        "+arr[i][2]+"         "+arr[i][3]);}}break;

菜单2:
菜单2是收入录入功能,定义一个count来进行自加操作,每一次录入完毕都会自动跳入下一个索引值,即下一行。这里使用了String.valueOf()方法来强制转换数据类型

case 2://菜单2,收入System.out.println("请输入本次收入的金额:");int num = sc.nextInt();System.out.println("请输入本次收入的来源:");String info = sc.next();//这里使用String类型,用next接收键盘输入,生成字符串//count每次运行都++ 数据会一行一行填入arr[count][0]="收入";sumNum+=num;//总余额等于基础的加收入的arr[count][1]=String.valueOf(sumNum);//直接把sumNum和num都转换成字符串类型arr[count][2]=String.valueOf(num);arr[count][3]=info;count++;System.out.println("添加成功!");break;

菜单3:
菜单3是支出录入功能,实际实现方法与菜单二相同,唯一区别就是支出是sunNum是-num

case 3:System.out.println("请输入本次支出的金额:");int num1 = sc.nextInt();System.out.println("请输入本次支出的说明:");String info1 = sc.next();arr[count][0]="支出";sumNum-=num1;arr[count][1]=String.valueOf(sumNum);arr[count][2]=String.valueOf(num1);arr[count][3]=info1;System.out.println("添加成功!");break;

菜单4:
菜单4是退出功能,我这里使用Boolean来接收键盘输入的是true还是false,然后做一个判断,因为整个循环都是因为flag为true为前提条件,所以如果输入的为true确定退出程序,需要将flag的值变为false,如果输入的是false,就继续回到循环。

case 4:System.out.println("是否要退出(true/false):");Boolean choice = sc.nextBoolean();//用一个布尔类型来进行是否退出程序的判断if (choice==true){System.out.println("结束本次记录");flag = false;//因为整个循环的运行基础是flag为true,所以如果是否退出输入true这里需要改变flag值来结束循环。break;}else {break;}

此外为了防止菜单栏1,2,3,4输入错误,在switch最后用一个default来输出”输入错误“
最后附上整体代码:

import java.util.Scanner;public static void main(String[] args) {String[][] arr = new String[10000][4];//定义数组,防止不够放,行设置大一点int count = 0;//控制行数int sumNum = 10000;//本金Scanner sc =new Scanner(System.in);boolean flag = true;//循环条件while (flag){//主界面设置System.out.println("-------------------家庭收支记账软件---------------------");//分割线 方便使用及查看//四个菜单选项System.out.println("        1.收支明细");System.out.println("        2.登记收入");System.out.println("        3.登记支出");System.out.println("        4.退   出");System.out.print("         请选择(1-4):");System.out.println();int a = sc.nextInt();//接收输入的数字进入菜单//菜单具体功能实现switch (a){case 1://菜单1,收支明细System.out.println("-------------------收支明细记录表-----------------------");//收支明细的四个要素,及数组设置的每个一维数组的一维数组中的四个元素System.out.println("收支     账户总金额     收支金额     说    明");for (int i = 0; i <arr.length ; i++) {//循环打印 输入的数据if (arr[i][0]!=null){System.out.println(arr[i][0]+"     "+arr[i][1]+"        "+arr[i][2]+"         "+arr[i][3]);}/*else if (arr[i][0]==null){System.out.println("");}*/}break;case 2://菜单2,收入System.out.println("请输入本次收入的金额:");int num = sc.nextInt();System.out.println("请输入本次收入的来源:");String info = sc.next();//这里使用String类型,用next接收键盘输入,生成字符串//count每次运行都++ 数据会一行一行填入arr[count][0]="收入";sumNum+=num;//总余额等于基础的加收入的arr[count][1]=String.valueOf(sumNum);//直接把sumNum和num都转换成字符串类型arr[count][2]=String.valueOf(num);arr[count][3]=info;count++;System.out.println("添加成功!");break;case 3://支出录入数据功能System.out.println("请输入本次支出的金额:");int num1 = sc.nextInt();System.out.println("请输入本次支出的说明:");String info1 = sc.next();arr[count][0]="支出";sumNum-=num1;arr[count][1]=String.valueOf(sumNum);arr[count][2]=String.valueOf(num1);arr[count][3]=info1;System.out.println("添加成功!");break;case 4:System.out.println("是否要退出(true/false):");Boolean choice = sc.nextBoolean();//用一个布尔类型来进行是否退出程序的判断if (choice==true){System.out.println("结束本次记录");flag = false;//因为整个循环的运行基础是flag为true,所以如果是否退出输入true这里需要改变flag值来结束循环。break;}else {break;}default:System.out.println("输入错误,请输入1-4中的数字");//避免有人还是输入1-4以外的数字}}}

使用Java实现简单的家庭记账程序相关推荐

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

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

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

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

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

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

  4. java实现简单的家庭记账小软件

    *需求说明 该软件能够记录家庭的收入.支出,并能够打印收支明细表. 项目采用分级菜单方式.主菜单如下: -----------------家庭收支记账软件----------------- 1 收支明 ...

  5. java实现简单的家庭收支记账程序

    java实现简单的家庭收支记账程序 文章目录 java实现简单的家庭收支记账程序 前言 一.需求分析 1.要求 2.不同模块功能 3.需定义的变量(仅供参考) 4.一些优化建议 二.工具类 概念 本项 ...

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

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

  7. Java家庭记账程序

    目录 目标 需求说明 具体操作 项目阶段一 项目阶段二 收入功能 支出功能 收支明细功能 退出功能 完整代码: 目标 1 模拟一个基于文本界面的<家庭记账软件> 2 掌握初步的编程技巧和调 ...

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

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

  9. 关于java实现简单的售货机程序

    **今天给大家带来一个简单的售货机程序.** 主要流程: 1.利用数组实现相关商品的存储和价格. 2.利用三个函数: (1)menu():主菜单,用于实现商品的展示和基本选择. (2)getnumbe ...

最新文章

  1. mysql innodbmaxdirtypagespct_MySQL参数解析innodb_max_dirty_pages_pct
  2. echarts y轴添加点击事件_ECharts中的事件和行为
  3. Visual Studio Debug和Release的区别及obj的作用
  4. Eclipse中使用Ctrl键卡顿响应慢的解决方法
  5. 134. 加油站(贪心算法)
  6. Android Activity动画属性简介
  7. 远程查看服务器版本,远程管理控制服务器(服务器远程控制工具)V4.2.2019.5.27 官方版...
  8. AAC Explicit or Implicit SBR PS issue
  9. 基于VisualStudio11开发Windows8的Metro sample讲解(1)MessageBox
  10. 微信公众号开发_调用新闻查询接口_回复图文消息
  11. 微信小程序下拉刷新功能--onPullDownRefresh
  12. 使用C语言来访问ARM寄存器的语法
  13. 移动小额支付业务系统几种常用实现方式的分析和比较
  14. 2022全国高职院校教师真实薪酬数据汇总
  15. 全志T7/T507 Qt5.12.5移植记录
  16. 目标检测 IoU、GloU、DloU、CloU详解
  17. 计算机概念知识点,计算机知识点最全版概念.doc
  18. 完美洗牌问题(打乱数组间各元素的顺序)
  19. Java怎样存钱利息最大_C_怎样存钱利最大
  20. 微软数字签名工具--SigCheck的应用

热门文章

  1. 拥有微软Windows CE的实时系统
  2. android recovery下使用adb出现device offline问题
  3. 北京计算机游戏专业排名2015,2015大学专业排行榜_大学最佳专业排行榜_游戏专业怎么样_52PK游戏网...
  4. ORA-01012: not logged on 解决办法记录错误
  5. 计算机查找全部文件,一键找到你电脑中的所有文件
  6. 【VBA】通过VBA实现EXCEL全屏显示
  7. 精玉PC技术GHOSTXP_SP3纯净版V10_祥和版
  8. esp-idf手动设置系统时间
  9. 梁漱溟:人生的三种关系
  10. kernel printk的打印等级