JAVA记账小程序

学习过程整理

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

导包 import java.util.Scanner;

public class Unility {
private static Scanner scanner=new Scanner(System.in);
private static String readKeyBoard(int limit){
    String line="";
    while(scanner.hasNext()){
        line=scanner.nextLine();
        if (line.length()<1||line.length()>limit){
            System.out.print("输入长度错误,请重新输入:");
            continue;
        }
        break;
    }
    return line;
}

//用于菜单界面的选择。如果键盘输入1-4,则返回用户键入字符
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;
}

//用于收入和支出金额的输入。从键盘读取一个长度不超过4位的整数,并将其作为方法的返回值
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;
}

//用于收入和支出金额说明的输入。从键盘读取一个长度不超过8位的字符串,并将其作为方法的返回值
public static String readString(){
    String str=readKeyBoard(8);
    return str;
}

//用于确认选择的输入。从键盘读取‘Y’或‘N’,并将其作为方法的返回值
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;
}
}

主界面

public class FamilyAccount {
public static void main(String[] args){

    boolean isFlag=true;
    //用于记录用户收入和支出详情
    String details ="收支\t\t账户金额\t\t收支金额\t\t说 明\n";
    //初始金额
    int money=10000;

    while(isFlag){
        System.out.println("------------家庭收支记账软件------------\n");
        System.out.println("             1、收支明细");
        System.out.println("             2、登记收入");
        System.out.println("             3、登记支出");
        System.out.println("             4、退   出\n");
        System.out.println("-------------------------------------\n");
        System.out.print("             请选择(1-4):");

        //获取用户的选择
        char selection = Unility.readMenuSelection();
        switch(selection){
            case '1':
                System.out.println("------------当前收支明细记录------------\n");
                System.out.println(details);
                System.out.println("-------------------------------------\n");
                break;
            case '2':
                System.out.print("本次收入金额:");
                int getMoney=Unility.readNumber();
                System.out.print("本次收入说明:");
                String getShuoMing=Unility.readString();

                //处理money
                money+=getMoney;

                //处理details
                details += ("收入\t\t" + money + "\t\t" + getMoney + "\t\t\t" + getShuoMing + "\n");
                System.out.println("---------------登记完成---------------\n");
                break;
            case '3':
                System.out.print("本次支出金额:");
                int setMoney=Unility.readNumber();
                System.out.print("本次支出说明:");
                String setShuoMing=Unility.readString();

                if(setMoney>money) {
                    System.out.println("支出超出账户额度,支付失败");
                }
                else{
                    money-=setMoney;
                    details += ("支出\t\t" + money + "\t\t" + setMoney + "\t\t\t" + setShuoMing+ "\n");
                    System.out.println("---------------登记完成---------------\n");
                }
                break;
            case '4':
                System.out.print("确定是否退出(Y/N):");
                char isExit = Unility.readConfirmSelection();
                if (isExit=='Y'){
                    isFlag=false;
                }
                break;
        }
    }
}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值