【java】基于文本界面的家庭收支记账软件

摘  要(四号、黑体

目的:创建一个家庭收支记账软件,给家庭提供一个文本管理平台,家庭可以将每天的收入、支出进行记录管理操作,方便家庭记录生活中的各种开支。

方法:使用while循环构建循环体,并且在其中提供分支结构,通过Scanner方法读取用户的选择,并为收入支出两种情况的变动进行录入,并使用数组将相关信息进行存储,同时在选择结构内通过输出方法,可以满足对已存储的数组内容输出,并且在该循环体内使用exit()方法来退出循环体结构,结束程序。

结果:通过构造的程序,可以清晰的实现家庭收支情况的录入以及计算家庭资金的变换,能够顺利满足题目中文本界面对相关内容的操作,完成对家庭收支情况的记录。

一、概述 

模拟实现基于文本界面的《家庭记账软件》;家庭记账软件主要记录家庭的收入、支出,并能够打印收支明细表。

系统需求分析

模拟实现基于文本界面的《家庭记账软件》。

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

项目采用分级菜单方式。

总体设计

3.1设计原理

本系统的总体思想基于结构化的程序设计。使用高级语言程序设计中的基本控制结构,如循环和选择,着重实现管理系统的存储,查找等功能,本次实验由while语句构建的循环体开始,重复循环显示菜单界面,后使用分支语句为用户提供选择,并且用数组为用户的信息提供存储空间,另外系统的退出则使用Java中的System.exit()方法。

3.2流程图

3.2.1主流程

3.2.2流程图(活动图)—收入和支出处理流程

3.2.3 流程图(活动图)—打印家庭收支明细处理流程

实现步骤

1实现主程序结构

  1. 创建FamilyAccount类及main方法
  2. main方法中,参照主流程图,实现程序主体结构
  3. 测试程序,确认可以正常执行第1和第4菜单选项

2实现收入和支出登记处理

  1. main方法中,参照收入和支出流程,实现登记收入功能
  2. 测试登记收入功能
  3. main方法中,参照收入和支出流程,实现登记支出功能
  4. 测试登记支出功能

3打印收支明细

  1. main方法中,参照打印收支明细流程,实现打印details功能
  2. 测试打印details功能

4跳出循环体结束程序

  1. main方法中,首先让用户进行选择
  2. 后使用java中exit方法结束while死循环以此结束程序
  3. 测试结束程序功能

代码调试

package Baogao;
import java.util.Scanner;
public class demo {
    public static void main(String[] args) {
        double[] Get = new double[10];
        double[] Use = new double[10];
        double basic = 10000;
        String[] GetName = new String[10];
        String[] UseName = new String[10];
        String details = "收支 \t 账户金额 \t 收支金额 \t 说明\n";
        Scanner input = new Scanner(System.in);
        System.out.println("-------------家庭收支记账软件---------------");
        System.out.println("1" + '\t' + "收支明细");
        System.out.println("2" + '\t' + "登记收入");
        System.out.println("3" + '\t' + "登记支出");
        System.out.println("4" + '\t' + "退出");
        System.out.println("请选择(1-4):");
        while (true) {
            int key = input.nextInt();
            switch (key) {
                case 1 :{
                    System.out.println("-------------家庭收支记账软件---------------");
                    System.out.println("1" + '\t' + "收支明细");
                    System.out.println("2" + '\t' + "登记收入");
                    System.out.println("3" + '\t' + "登记支出");
                    System.out.println("4" + '\t' + "退出");
                    System.out.println("-------------当前收支明细记录---------------");
                    System.out.println("收支帐户金额说明");
                    System.out.println(details);
                    break;
                }
                case 2 :{
                    System.out.println("-------------家庭收支记账软件---------------");
                    System.out.println("1" + '\t' + "收支明细");
                    System.out.println("2" + '\t' + "登记收入");
                    System.out.println("3" + '\t' + "登记支出");
                    System.out.println("4" + '\t' + "退出");
                    int index = -1;
                    for(int i= 0; i<GetName.length;i++){
                        if (GetName[i] == null){
                            index = i;
                            break;
                        }
                    }
                    System.out.print("本次收入金额:");
                    Get[index] = input.nextDouble();
                    System.out.print("本次收入说明:");
                    GetName[index] = input.next();
                    basic += Get[index];
                    details += "收入 \t " + basic + " \t " + Get[index] + " \t " + GetName[index] + "\n";
                    System.out.println("----------------------登记完成-----------------------\n");
break;
                }
                case 3 :{
                    System.out.println("-------------家庭收支记账软件---------------");
                    System.out.println("1" + '\t' + "收支明细");
                    System.out.println("2" + '\t' + "登记收入");
                    System.out.println("3" + '\t' + "登记支出");
                    System.out.println("4" + '\t' + "退出");
                    int index = -1;
                    for(int i= 0; i<UseName.length;i++){
                        if (UseName[i] == null){
                            index = i;
                            break;
                        }
                    }
                    System.out.print("本次支出金额:");
                    Use[index] = input.nextDouble();
                    System.out.print("本次支出说明:");
                    UseName[index] = input.next();
                    basic -= Use[index];
                    details += "支出 \t " + basic + " \t " + Use[index] + " \t " + UseName[index] + "\n";
                    System.out.println("----------------------登记完成-----------------------\n");
                    break;
                }
                case 4 :{
                    System.out.println("-------------家庭收支记账软件---------------");
                    System.out.println("1" + '\t' + "收支明细");
                    System.out.println("2" + '\t' + "登记收入");
                    System.out.println("3" + '\t' + "登记支出");
                    System.out.println("4" + '\t' + "退出");
                    System.out.println("是否退出系统?(Y/N)");
                    String str = input.next();
                    if (str.equals("Y") || str.equals("y")) {
                        System.out.println("退出系统.......");
                        System.exit(0);  //中断程序
                        break;
                    }
                }
            }
        }
    }
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值