Java项目1_day3

项目描述

  • 来自尚硅谷的java课程的项目一
  • 项目目标:
  • 模拟实现一个基于文本界面的《家庭记账软件》
  • 掌握初步的编程技巧和调试技巧
  • 主要涉及以下知识点:
  • 1.变量的定义
  • 2.基本数据类型的使用
  • 3.循环语句
  • 4.分支语句
  • 5.方法声明、调用和返回值的接收
  • 6.简单的屏幕输出格式控制

代码

工具类

/**
 * @author 「小元宝宝」CSDN:qq_57780419
 * 来自尚硅谷的java课程的项目一
 * 首先先编写工具类:从键盘上获取数值、字符串、字符等等,
 * 需要加上异常处理,并且保障程序的健壮性
 */
import java.util.InputMismatchException;
import java.util.Scanner;
 public class Utility {
    private static Scanner s=new Scanner(System.in);
    //从键盘上获取值
    private static String readKeyBoard(int lim){
        //lim是获取前lim的字符
        String strInput="";
        strInput=s.nextLine();
        while(true){
            if(strInput.length()<1&&strInput.length()<lim){
                System.out.println("输入错误,请重新输入:");
                continue;
            }
            break;
        }
        return strInput;
    }


    //用于界面菜单的选择。该方法读取键盘,如果用户键入’1’-’4’中的任意字符,则方法返回。返回值为用户键入字符。
    public static char readMenuSelection(){
        char MenuSelection=' ';
        while(true){
            MenuSelection=readKeyBoard(1).charAt(0);
            if(MenuSelection!='1'&&MenuSelection!='2'&&MenuSelection!='3'&&MenuSelection!='4'){
                System.out.println("输入非选项要求的数字,请重新输入:");
            }else{
                break;
            }
        }
        return MenuSelection;
    }


    //用于收入和支出金额的输入。该方法从键盘读取一个不超过4位长度的整数,并将其作为方法的返回值。
    public static int readNumber(){
        int money=0;
        while(true){
            try{
                money=Integer.parseInt(readKeyBoard(4));
                break;
            }catch(InputMismatchException e){
                System.out.println("输入的不是整数数字,需要重新输入:");
            }
        }
        return money;
    }


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


    //用于确认选择的输入。该方法从键盘读取‘Y’或’N’,并将其作为方法的返回值。
    public static char readComfirmSelection(){
        char selection=' ';
        while(true){
            selection=readKeyBoard(1).toUpperCase().charAt(0);
            //以上是先把从键盘中获取的字符串全转成大写,再取第一个作为字符进行判断
            if(selection!='Y'&&selection!='N'){
                System.out.println("输入非要求的同意或否定,需重新输入:");
            }else{
                return selection;
            }
        }
    }
}

框架及功能

/**
 * @author 「小元宝宝」CSDN:qq_57780419
 * 来自尚硅谷的java课程的项目一
 * 项目目标:
 * 模拟实现一个基于文本界面的《家庭记账软件》
 * 掌握初步的编程技巧和调试技巧
 * 主要涉及以下知识点:
 * 1.变量的定义
 * 2.基本数据类型的使用
 * 3.循环语句
 * 4.分支语句
 * 5.方法声明、调用和返回值的接收
 * 6.简单的屏幕输出格式控制
 */
public class FamilyAccount {
    public static void main(String[] args){
        boolean isTrue=true;
        int originalMoney=10000;//用户的初始钱
        String detail="";//用于记录收入和支出的详情

        while(isTrue){//一般选择用是否的标签来判断while循环是否执行
            System.out.println("---------------家庭收支记账软件---------------");
            System.out.println();
            System.out.println("                  1.收支明细                  ");
            System.out.println("                  2.登记收入                  ");
            System.out.println("                  3.登记支出                  ");
            System.out.println("                  4.退    出                  ");
            System.out.println();
            System.out.print("                 请选择(1-4):");
            char menuSelection=Utility.readMenuSelection();
            switch(menuSelection){
                case '1':{
                    System.out.println("------当前收支明细记录------");
                    System.out.println("收 支\t账户金额\t收支金额\t说 明");
                    System.out.println(detail);
                    System.out.println("---------------------------");
                    break;
                }
                case '2':{
                    System.out.print("本次收入金额:");
                    int money=Utility.readNumber();
                    System.out.print("本次收入说明:");
                    String info=Utility.readString();
                    originalMoney+=money;
                    detail+="收入\t"+originalMoney+"\t\t"+money+"\t\t"+info+"\n";
                    System.out.println("------登记完成------");
                    break;
                }
                case '3':{
                    System.out.println("本次支出金额:");
                    int pay;
                    while(true){
                        pay=Utility.readNumber();
                        int isNegative=originalMoney-pay;
                        if(isNegative<0){
                            System.out.println("没有足够的钱去支出,请重新输入支出金额:");
                        }else{
                            originalMoney=isNegative;
                            break;
                        }
                    }
                    System.out.print("本次支出说明");
                    String info=Utility.readString();
                    detail+="支出\t"+originalMoney+"\t\t"+pay+"\t\t"+info+"\n";
                    System.out.print("------登记完成------");
                    break;
                }
                case '4':{
                    System.out.println("确认是否退出(Y/N)");
                    if(Utility.readComfirmSelection()=='Y'){
                        isTrue=false;
                    }
                }
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值