项目01 家庭记录收支程序

一、要求

             程序需求说明:能够记录家庭的收入、支出,并能够打印收支明细表
             项目采用分级菜单方式。主菜单如下:(用户键盘键入选择)

在这里插入图片描述
说明:1. 假设家庭起始的生活基本金为10000元;
2. 每次登记收入(菜单2)后,收入的金额应累加到基本金上,并记录本次收入明细,以便后续的查询;
3. 每次登记支出(菜单3)后,支出的金额应从基本金中扣除,并记录本次支出明细,以便后续的查询;
4. 查询收支明细(菜单1)时,将显示所有的收入、支出名细列表;
5. 能顺利进入每个功能里面;
6. 选择(菜单1)时,能清楚显示所有收入、支出及其原因;
7. 引入工具类,实现一些错误输入判断,使项目代码更完善。

2、实现

1.导包

//可以先导入程序包,也可以先编译程序后按Alt+Enter直接导入
import java.util.Scanner;
import java.util.regex.Pattern;

2.定义通用变量

//这里定义的静态对象,可以用于每一个方法中
 private static Scanner sc = new Scanner(System.in);
    //定义初始的账户余额
    private static double sumMoney = 10000;
    //定义数组的条数
    private static int count = 0;

3.主函数

//其中定义数组,同时将界面显示出来
//用switch实现用户选择
 public static void main(String[] args) {
   
        //定义数组
        String[][] arr = new String[10][4];
        //定义一个boolean值,保持初始页面
        boolean flag = true;
        while (flag) {
   
            arr = expandArr(arr);
            System.out.println("----------家庭收支记账软件----------");
            System.out.println("           1   收支明细            ");
            System.out.println("           2   登记收入            ");
            System.out.println("           3   登记支出            ");
            System.out.println("           4    退 出            ");
            System.out.print("       请选择(1-4):");

            String num = sc.next();
            char read = readNum(num);
            switch (read) {
   
                case '1':
                    //调用查看信息的方法
                    reeInformation(arr);
                    break;
                case '2':
                    //调用添加收入记录的方法
                    addRecord(arr);
                    break;
                case '3':
                    //调用添加支出记录的方法
                    addExpense(arr);
                    break;
                case '4':
                    //调用选择退出的方法
                    if (quitSystem()){
   
                        flag = false;
                    }
                    else break;
                default:
                    System.out.println("输入错误!");
            }

        }
    }

4.判断用户输入字符是否符合要求 (使用死循环,符合要求输出)

//设置死循环,判断输入的值是否符合条件
    // 返回值类型为char
    //  用户输入类型为String
    public static char readNum(String num) {
   
        char c;
        //设置死循环,满足条件后退出,直到获取到正确操作数字符
        while (true) {
   
            //获取参数字符串的第一个字符
            c = num.charAt(0);
            //判断是否对应给定的操作数字符
            if (c != '1' && c != '2' && c != '3' && c != '4') {
   
                System.out.print("输入数字错误,请按提示正确输入:");
                 num = sc.next();
            } else break;
        }
        //返回给定的正确操作数字符
        return c;
    }

5.判断输入内容是否符合要求 (是否为全数字、是否为全汉字,使用特定转换语句实现 )

//判断字符
public static int printInt(String num2){
   
                //调用判断字符串是否全为数字的方法的返回值进行判断
                if(isNumber(num2)){
   
                    //将获取到的数字字符串转为int类型的数字
                    int y = Integer.parseInt(num2);
                    return y;
                }else{
   
                    //写一个死循环,直到用户输入全为数字字符串时才停止
                    while(true){
   
                        System.out.print("你输入的值无意义! 请你重新输入: ");
                        String num = sc.next();
                        if(isNumber(num)){
   
                            int y1 = Integer.parseInt(num);
                            return y1;
                        }

                    }
                }
            }
            
            //判断字符是否全为数字
            public static boolean isNumber(String str) {
   
                //使用正则表达式进行判断是否全为数字
                Pattern pattern = Pattern.compile("[0-9]*");
                return pattern.matcher(str).matches();
            }
            //判断字符串是否全为汉字,是则返回,否则从新输入字符串
            public static String printString(String x){
   
                if(isChinese(x)){
   
                    return x;
                }else<
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值