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

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

目标:

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

相关文章

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 中存储指针类型的对象

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优

Spring Security 前后端分离场景下的会话并发管理

《SpringSecurity前后端分离场景下的会话并发管理》本文介绍了在前后端分离架构下实现SpringSecurity会话并发管理的问题,传统Web开发中只需简单配置sessionManage... 目录背景分析传统 web 开发中的 sessionManagement 入口ConcurrentSess

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

C#控制台程序同步调用WebApi实现方式

《C#控制台程序同步调用WebApi实现方式》控制台程序作为Job时,需同步调用WebApi以确保获取返回结果后执行后续操作,否则会引发TaskCanceledException异常,同步处理可避免异... 目录同步调用WebApi方法Cls001类里面的写法总结控制台程序一般当作Job使用,有时候需要控制

Linux之UDP和TCP报头管理方式

《Linux之UDP和TCP报头管理方式》文章系统讲解了传输层协议UDP与TCP的核心区别:UDP无连接、不可靠,适合实时传输(如视频),通过端口号标识应用;TCP有连接、可靠,通过确认应答、序号、窗... 目录一、关于端口号1.1 端口号的理解1.2 端口号范围的划分1.3 认识知名端口号1.4 一个进程