自从有了它,妈妈再也不用担心我管理不好生活费啦!——家庭记账程序

本文主要是介绍自从有了它,妈妈再也不用担心我管理不好生活费啦!——家庭记账程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目标:

1.模拟实现一个基于文本界面的家庭记账软件
2.掌握初步的编程技巧和调试技巧
3.灵活运用基础知识

需求:

在这里插入图片描述

流程图:

在这里插入图片描述

难点:

个人感觉理解和运用工具包的方法比较难,剩下的就是一些小细节的问题。

思路:

1.先定义总金额和一个数组来存储数据,再定义一个变量方便数组存储数据。
2通过一个while循环语句来实现用户的进入、退出和返回。
3通过一个switch分支语句来实现四种功能。
4其中各个功能的数据接收和提醒输入数据错误通过工具包的方法来完成。

上代码!!

package Guankaer;import Guankaer.Utility;import java.util.Scanner;public class FamilyAccount {public static void main(String[] args) {String[][] arr = new String[10][4];int acount = 0;//定义一个变量方便数组存储数据int sumnum = 10000;//总金额和数组定义在循环之前while (true) {menu();char a = Utility.readMenuSelection();//调用工具包的方法提醒录入错误的情况switch (a) {//功能选择case '1': //收支明细功能case1(arr);break;case '2': //收入功能case2(arr, acount, sumnum);break;case '3': //支出功能case3(arr, acount, sumnum);break;case '4': //退出功能System.out.println("确认是否推出(Y/N)");char b = Utility.readConfirmSelection();//Scanner 不能直接方法得到char//String类型不能直接用"=="去比较大小 而是用equals方法if (b == 'Y') {System.out.println("退出成功");return;//退出整个main方法} else {break;//退出switch}}}}public static void menu() {Scanner sc = new Scanner(System.in);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.println("请选择(1-4)");}public static void case1(String[][] arr) {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]);}}System.out.println("-------------------------");}public static void case2(String[][] arr, int acount, int sumnum) {System.out.println("请输入本次收入金额");int income = Utility.readNumber();//接收正确录入的金额System.out.println("请输入本次收入说明");String explain1 = Utility.readString();//接收正确录入的说明arr[acount][0] = "收入";sumnum += income;//总金额变化arr[acount][1] = sumnum + "";//拼接前面的数据转换成字符串arr[acount][2] = "+" + income;arr[acount][3] = explain1 + "";acount++;System.out.println("添加成功!");}public static void case3(String[][] arr, int acount, int sumnum) {System.out.println("请输入本次支出金额");int expend = Utility.readNumber();//接收正确录入的金额System.out.println("请输入本次支出说明");String explain2 = Utility.readString();//接收正确录入的说明arr[acount][0] = "支出";sumnum -= expend;arr[acount][1] = sumnum + "";arr[acount][2] = "-" + expend;arr[acount][3] = explain2 + "";System.out.println(arr[acount][0] + "  " + arr[acount][1] + "   " + arr[acount][2] + "   " + arr[acount][3]);acount++;System.out.println("添加成功!");}
}

这篇关于自从有了它,妈妈再也不用担心我管理不好生活费啦!——家庭记账程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/874267

相关文章

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

在Node.js中使用.env文件管理环境变量的全过程

《在Node.js中使用.env文件管理环境变量的全过程》Node.js应用程序通常依赖于环境变量来管理敏感信息或配置设置,.env文件已经成为一种流行的本地管理这些变量的方法,本文将探讨.env文件... 目录引言为什么使php用 .env 文件 ?如何在 Node.js 中使用 .env 文件最佳实践引

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象