首页 > 其他分享 >家庭记账软件

家庭记账软件

时间:2023-03-24 16:12:36浏览次数:34  
标签:String 家庭 System break println 记账 print 软件 out

家庭记账软件


FamilyAccount

        int balance = 10000;//生活基本金额
        String details = "描述\t账户金额\t\t流水金额\t\t说 明\n";
        boolean loopFlag = true;//控制循环的标记

        do {
            System.out.println("\n-----------------家庭收支记账软件-----------------\n");
            System.out.println("\t\t\t\t 1 收支明细");
            System.out.println("\t\t\t\t 2 登记收入");
            System.out.println("\t\t\t\t 3 登记支出");
            System.out.println("\t\t\t\t 4 退 出");
            System.out.println();
            System.out.print("\t\t\t\t 请选择(1-4):");
            
            //此方法接收 1-4 任意字符
            char ch = Utility.readMenuSelection();
            
            switch (ch) {
                    //收支明细
                case '1':
                    System.out.println("-----------------当前收支明细记录-----------------");
                    System.out.println(details);
                    break;
                    
                    //登记收入
                case '2':
                    System.out.print("本次收入金额:");
                    int amount1 = Utility.readNumber();//接收3位数的整数
                    System.out.print("本次收入说明:");
                    String str1 = Utility.readString();//收入的描述
                    balance += amount1;
                    details += "收入\t" + balance + "\t\t" + amount1 + "\t\t\t" + str1 + "\n";
                    break;
                    
                    //登记支出
                case '3':
                    System.out.print("本次支出金额:");
                    int num2 = Utility.readNumber();//接收3位数的整数
                    System.out.print("本次支出说明:");
                    String str2 = Utility.readString();//支出的描述
                    balance -= num2;
                    details += "支出\t" + balance + "\t\t" + num2 + "\t\t" + str2 + "\n";
                    break;
                   
                    //退出
                case '4':
                    System.out.print("请确认是否退出(y/n):");
                    char yn = Utility.readConfirmSelection();
                    if (yn == 'Y') {
                        loopFlag = false;
                    }
                    break;
            }
        } while (loopFlag);

Utility

        package com.dream;

        import java.util.*;

        public class Utility {
            private static Scanner scanner = new Scanner(System.in);

            public static char readMenuSelection() {
                char c;
                for (; ; ) {
                    String str = readKeyBoard(1);
                    c = str.charAt(0);
                    if (c != '1' && c != '2' && c != '3' && c != '4') {
                        System.out.print("选择错误,请重新输:");
                    } else break;
                }
                return c;
            }

            public static int readNumber() {
                int n;
                for (; ; ) {
                    String str = readKeyBoard(4);
                    try {
                        n = Integer.parseInt(str);
                        break;
                    } catch (NumberFormatException e) {
                        System.out.print("数字输入错误,请重新输入:");
                    }
                }
                return n;
            }

            public static String readString() {
                String str = readKeyBoard(8);
                return str;
            }

            public static char readConfirmSelection() {
                char c;
                for (; ; ) {
                    String str = readKeyBoard(1).toUpperCase();
                    c = str.charAt(0);
                    if (c == 'Y' || c == 'N') {
                        break;
                    } else {
                        System.out.print("选择错误,请重新输入:");
                    }
                }
                return c;
            }

            private static String readKeyBoard(int limit) {
                String line = "";

                while (scanner.hasNext()) {
                    line = scanner.nextLine();
                    if (line.length() < 1 || line.length() > limit) {
                        System.out.print("输入长度(不大于" + limit + ")错误,请重新输入:");
                        continue;
                    }
                    break;
                }

                return line;
            }
        }

标签:String,家庭,System,break,println,记账,print,软件,out
From: https://www.cnblogs.com/yimengxunchen/p/17252336.html

相关文章

  • 零基础转行软件测试首先需要学习哪些内容?
    随着现在互联网行业的迅猛发展,越来越多的人想涌入进来,因为大家都觉得IT行业工资高,做测试门槛又低,是的,入门门槛确实比较低,但是要做好的话,还是有点难的,毕竟术业有专攻嘛,......
  • 防火墙是什么?硬件防火墙和软件防火墙的区别
    防火墙是什么?硬件防火墙和软件防火墙的区别随着时代的发展现在对网络数据安全的要求越来越高,很多租用服务器的客户经常会问我:艾西你们的机房有防火墙吗?我们还需要部署和安装......
  • 提升软件质量?为什么不试试华为云CodeArts Check
    1996年,欧洲最新的无人卫星发射火箭阿丽亚娜5号在首次发射后仅仅36秒,工程师就不得不按下了自毁按钮。事后经分析查明,由于它重用了其前身阿丽亚娜4号的系统软件,发动机遭遇了之......
  • 小程序开发软件有哪些优点?这几个优点很独特
     近些年来,许多企业个人为了满足自身发展需求都会找开发商帮助自己进行小程序开发软件。有些人就会好奇小程序开发软件有哪些优点?对于这个问题,下面名锐讯动为大家介绍这几......
  • 最完美LTSC2021_19044.2788软件选装纯净版VIP40.0
    【系统简介】=============================================================1.本次更新母盘来LTSC2021.19044.2788。进一步优化调整。2.此版本精简量不大,满足各大平台需求......
  • 亚信安慧携AntDB数据库入选信通院软件供应链厂商和产品名录
    日前,中国信息通讯研究院(简称:中国信通院)在其主办的3SCON软件供应链安全大会上,发布了软件供应链厂商和产品名录。中国信通院云计算与大数据研究所副所长栗蔚表示,我国软件供应......
  • 测绘工程专业软件使用心得
    测绘工程专业软件使用心得前言:近年来,随着计算机技术以及互联网技术的飞速发展,测绘行业也跟发生着巨大的变化,越来越多的专业化软件在行业中不断涌现,这些专业化软件自动化程......
  • 全新达芬奇软件下载18.1.3中文版!一键安装,永久使用!
    今天给大家分享的是DaVinciResolve18.1.3。达芬奇是一款在同一个软件工具中,将剪辑、调色、视觉特效、动态图形和音频后期制作融于一身的解决方案!它采用美观新颖的界面设......
  • ISM Web组态软件采集西门子PLC
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、西门子PLC二、使用步骤1.创建西门子PLCS7模型2.创建设备总结前言本文详细讲述了ISMWeb组......
  • 第六节 使用ISM Web组态软件的自定义数据
    文章目录前言一、ISM的自定义数据支持哪些运算二、使用说明1.取位运算2.复杂数据运算3.查看自定义数据结果总结前言自定义数据是数据模型的额外补充,比如有的数据模型里面......