使用Java实现简单的家庭记账程序
文章目录
- 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实现简单的家庭记账程序相关推荐
- 简单实现家庭记账程序
简易家庭记账程序 一.需求说明 二.代码解析 主方法 记录收入 记录支出 收支明细 三.运行部分效果 四.完整源代码 一.需求说明 主要是用Java实现一个能记录家庭记账的小程序,所需要的方法也比较简 ...
- 使用java实现基础的家庭记账程序
家庭记账程序 需求说明 具体操作 完整代码 总结 需求说明 1.该程序能够记录家庭的收入.支出,并能打印收支明细表 2.项目采用分级菜单的方式.主菜单如下: 3.假设家庭起始的生活基本金为10000元 ...
- 简单实现家庭记账程序(java)
目录 一.项目需求及流程说明 1.需求说明: 2.流程说明 项目阶段1 项目阶段2 项目阶段3 二.完整源代码及工具类 1.工具类 2.主功能程序 一.项目需求及流程说明 1.需求说明 整体说明: 模 ...
- java实现简单的家庭记账小软件
*需求说明 该软件能够记录家庭的收入.支出,并能够打印收支明细表. 项目采用分级菜单方式.主菜单如下: -----------------家庭收支记账软件----------------- 1 收支明 ...
- java实现简单的家庭收支记账程序
java实现简单的家庭收支记账程序 文章目录 java实现简单的家庭收支记账程序 前言 一.需求分析 1.要求 2.不同模块功能 3.需定义的变量(仅供参考) 4.一些优化建议 二.工具类 概念 本项 ...
- java小项目家庭记账程序
文章目录 java小项目家庭记账程序 **1.项目目标:** 2.项目需求: 3.具体思路: 4.具体代码: 1.页面: 2.Option_1类: 3.Option_2类: 4.Option_3类: ...
- Java家庭记账程序
目录 目标 需求说明 具体操作 项目阶段一 项目阶段二 收入功能 支出功能 收支明细功能 退出功能 完整代码: 目标 1 模拟一个基于文本界面的<家庭记账软件> 2 掌握初步的编程技巧和调 ...
- Java基础:家庭记账程序
目标: 模拟实现一个基于文本界面的家庭记账软件,灵活运用基础知识 需求分析: 该软件能够记录家庭的收入.支出,并能够打印收支明细表 其主菜单如下: 需要满足的条件有: 工作流程图如下: 这里是实现代码 ...
- 关于java实现简单的售货机程序
**今天给大家带来一个简单的售货机程序.** 主要流程: 1.利用数组实现相关商品的存储和价格. 2.利用三个函数: (1)menu():主菜单,用于实现商品的展示和基本选择. (2)getnumbe ...
最新文章
- mysql innodbmaxdirtypagespct_MySQL参数解析innodb_max_dirty_pages_pct
- echarts y轴添加点击事件_ECharts中的事件和行为
- Visual Studio Debug和Release的区别及obj的作用
- Eclipse中使用Ctrl键卡顿响应慢的解决方法
- 134. 加油站(贪心算法)
- Android Activity动画属性简介
- 远程查看服务器版本,远程管理控制服务器(服务器远程控制工具)V4.2.2019.5.27 官方版...
- AAC Explicit or Implicit SBR PS issue
- 基于VisualStudio11开发Windows8的Metro sample讲解(1)MessageBox
- 微信公众号开发_调用新闻查询接口_回复图文消息
- 微信小程序下拉刷新功能--onPullDownRefresh
- 使用C语言来访问ARM寄存器的语法
- 移动小额支付业务系统几种常用实现方式的分析和比较
- 2022全国高职院校教师真实薪酬数据汇总
- 全志T7/T507 Qt5.12.5移植记录
- 目标检测 IoU、GloU、DloU、CloU详解
- 计算机概念知识点,计算机知识点最全版概念.doc
- 完美洗牌问题(打乱数组间各元素的顺序)
- Java怎样存钱利息最大_C_怎样存钱利最大
- 微软数字签名工具--SigCheck的应用
热门文章
- 拥有微软Windows CE的实时系统
- android recovery下使用adb出现device offline问题
- 北京计算机游戏专业排名2015,2015大学专业排行榜_大学最佳专业排行榜_游戏专业怎么样_52PK游戏网...
- ORA-01012: not logged on 解决办法记录错误
- 计算机查找全部文件,一键找到你电脑中的所有文件
- 【VBA】通过VBA实现EXCEL全屏显示
- 精玉PC技术GHOSTXP_SP3纯净版V10_祥和版
- esp-idf手动设置系统时间
- 梁漱溟:人生的三种关系
- kernel printk的打印等级