Java初级流程控制实战项目豹捷记账程序

Java初级流程控制实战项目豹捷记账程序

Richer Chen
2024-03-14 / 0 评论 / 35 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2024年03月14日,已超过198天没有更新,若内容或图片失效,请留言反馈。
本文共 1068 个字数,平均阅读时长 ≈ 3分钟

需求分析

目标

  • 模拟实现基于文本界面的《豹捷记账》
  • 掌握初步的编程技巧和调试技巧
  • 主要设计以下知识点

    • 变量的定义
    • 基本数据类型的使用
    • 循环语句
    • 分支语句
    • 方法声明、调用和返回值的接收
    • 简单的屏幕输出格式控制

深入分析

  • 模拟实现基于文本界面的《豹捷记账》
  • 该软件能够记录家庭的收入、支出,并额能够打印收支明细表。
  • 项目采用分级菜单方式。主菜单如下
    -----------豹捷记账软件-----------

        1.收支明细
        2.登记收入
        3.登记支出
        4.退出

        请选择(1-4):_

  • 假设家庭起始的生活基本金为10000元。
  • 每次登记收入(菜单2)后,收入的金额应累加到基本金上,并记录本次收入明细,以便后续的查询。
  • 每次登记支出(菜单3)后,支出的金额应从基本金中扣除,并记录本次支出明细,以便后续的查询。
  • 查询收支明细(菜单1)时,将显示所有的收入、支出名细列表
  • "登记收入"的界面及操作过程如下所示:
    -----------豹捷记账软件-----------

        1.收支明细
        2.登记收入
        3.登记支出
        4.退出

        请选择(1-4): 2

  本次收入金额:1000
  本次收入说明:劳务费

  • "登记支出"的界面及操作过程如下所示:
    -----------豹捷记账软件-----------

        1.收支明细
        2.登记收入
        3.登记支出
        4.退出

        请选择(1-4): 3

  本次收入金额:800
  本次收入说明:物业费

  • "收支明细"的界面及操作过程如下所示:
    -----------豹捷记账软件-----------

        1.收支明细
        2.登记收入
        3.登记支出
        4.退出

        请选择(1-4): 1

  -----------当前收支明细-----------
  收支   账户金额   收支金额  说明
  收入   11000    1000   劳务费
  收入   11000   800  物业费
  ----------------------------------

  • 提示:明细表格的对其,可以简单使用制表符'\t'来实现
  • "退出"的界面及操作过程如下所示:
    -----------豹捷记账软件-----------

        1.收支明细
        2.登记收入
        3.登记支出
        4.退出

        请选择(1-4): 4

  确认是否推出(Y/N): _

  • 基本金的记录可以使用int类型的变量来实现:int balance = 10000
  • 收支明细记录可以使用String类型的变量来实现,其初始值为明细表的表头。例如
    String details = "收支\t账户金额\t说 明\n";
  • 在登记收支时,将收支金额与balance相加或相减,收支记录直接串接到details后面即可

系统设计

流程图

主流程:
ltqywklv.png
收入和支出处理流程
ltqyx31z.png

键盘访问的实现

  • 项目中提供了Utility.java类,可用来方便地实现键盘访问。
  • 该类提供以下静态方法

    • public static char readMenuSelection():该方法读取键盘输入,如果用户键入'1-4'中的任意字符,则方法返回。返回值为用户键入的字符
    • public static int readNumber():该方法从键盘读取一个不超过4位长度的整数,并将其座位方法的返回值
    • public static String readString():该方法从键盘读取一个不超过8位长度的字符串,并将其座位方法的返回值。
    • public static char readConfirmSelection():该方法从键盘读取'Y'或'N',并将其作为方法的返回值

Utility.java下载

功能实现

实现主程序结构

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

实现收入和支出登记处理

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

具体实现

code代码

/*
阶段一的项目:豹捷记账软件的实现
 */
public class BaoJieAccount {
    public static void main(String[] args) {
        //初始金额
        int balance = 10000;

        //记录收支的信息
        String info = "";

        //判断是否退出
        boolean exitFlag = true;

        //记账菜单及实现
        while (exitFlag) {
            //记账菜单
            System.out.println("------------豹捷记账软件------------");
            System.out.println("\n\t\t\t1.收支明细");
            System.out.println("\t\t\t2.登记收入");
            System.out.println("\t\t\t3.登记支出");
            System.out.println("\t\t\t4.退出");
            System.out.print("\n\t\t\t请选择(1-4):");

            //获取用户的选项
            char selection = Utility.readMenuSelection();

            //根据用户选择对应操作
            switch (selection) {
                case '1':
                    System.out.println("------------当前收支明细记录------------");
                    System.out.println("收支\t\t账户金额\t\t收支金额\t\t说  明");
                    System.out.print(info);
                    System.out.println("剩余金额:" + balance);
                    System.out.println("-------------------------------------");
                    break;
                case '2':
                    System.out.print("\n本次收入金额:");
                    int money = Utility.readNumber();
                    if (money > 0) balance += money;
                    System.out.print("本次收入说明:");
                    String addDesc = Utility.readString();
                    info += "收入\t\t" + balance + "\t\t" + money + "\t\t\t" + addDesc + "\n";
                    System.out.println("-------------登记完成--------------");
                    break;
                case '3':
                    System.out.print("\n本次支出金额:");
                    int out = Utility.readNumber();
                    if (out > 0) balance -= out;
                    System.out.print("本次收入说明:");
                    String delDesc = Utility.readString();
                    info += "收入\t\t" + balance + "\t\t" + out + "\t\t\t" + delDesc + "\n";
                    System.out.println("-------------登记完成--------------");
                    break;
                case '4':
                    System.out.print("确认是否推出(Y/N):");
                    char isExit = Utility.readConfirmSelection();
                    if (isExit == 'Y') exitFlag = false;
                    break;
            }
        }
    }
}

运行效果

ltr5pa9o.png
ltr5poyk.png
ltr5qnbb.png

2

打赏

海报

正在生成.....

评论 (0)

语录
取消