简易项目--零钱通(1)--面向过程版

零钱通

项目要求:使用java开发零钱通,可以完成收益入账,消费,查看明细,推出系统等功能

面向过程完成

步骤分解:
1.菜单制作,且可以选择功能
2.完成查看零钱通明细
3.完成收益入账
4.完成消费功能

  • 菜单制作
public class Changes {
    public static void main(String[] args) {
        //1.使用do while循环制作菜单
        boolean loop = true;
        Scanner mysc = new Scanner(System.in);
        do{
            System.out.println("===============零钱通菜单==============");
            System.out.println("\t1.零钱通明细");
            System.out.println("\t2.收益入账");
            System.out.println("\t3.消费");
            System.out.println("\t4.退   出");
            System.out.println("请选择(1-4)");
            //2.使用switch语句完成选择
            char key = mysc.next().charAt(0);
            switch(key){
                case '1':
                    System.out.println("\t1.零钱通明细");
                    break;
                case '2':
                    System.out.println("\t2.收益入账");
                    break;
                case '3':
                    System.out.println("\t3.消费");
                    break;
                case '4':
                    System.out.println("\t4.退   出");
                    break;
            }
        }while (loop);
    }
}
  • 完成零钱通查看明细
public class Changes {
    public static void main(String[] args) {
        //1.使用do while循环制作菜单
        boolean loop = true;
        Scanner mysc = new Scanner(System.in);
        String details = "==============明细===================";
        do{
            System.out.println("===============零钱通菜单==============");
            System.out.println("\t1.零钱通明细");
            System.out.println("\t2.收益入账");
            System.out.println("\t3.消费");
            System.out.println("\t4.退   出");
            System.out.println("请选择(1-4)");
            //2.使用switch语句完成选择
            char key = mysc.next().charAt(0);
            switch(key){
                case '1':
                    //3.完成明细显示功能,这里使用字符串拼接。
                    System.out.println(details);
                    break;
                case '2':
                    System.out.println("\t2.收益入账");
                    break;
                case '3':
                    System.out.println("\t3.消费");
                    break;
                case '4':
                    System.out.println("\t4.退   出");
                    loop = false;
                    break;
            }
        }while (loop);
        System.out.println("零钱通已退出");
    }
}
  • 完成收益入账
public class Changes {
    public static void main(String[] args) {
        //1.使用do while循环制作菜单
        boolean loop = true;
        Scanner mysc = new Scanner(System.in);
        String details = "==============明细===================";//明细拼接头部
        double money = 0;//单次进出金额初始化
        double balance = 0;//余额
        Date date = null;//实时时间变量
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//把时间的格式改成自己想要的
        do{
            System.out.println("===============零钱通菜单==============");
            System.out.println("\t1.零钱通明细");
            System.out.println("\t2.收益入账");
            System.out.println("\t3.消费");
            System.out.println("\t4.退   出");
            System.out.println("请选择(1-4)");
            //2.使用switch语句完成选择
            char key = mysc.next().charAt(0);
            switch(key){
                case '1':
                    //3.完成明细显示功能,这里使用字符串拼接。
                    System.out.println(details);
                    break;
                case '2':
                    //4.完成收益入账
                    System.out.println("请输入收益金额:");
                    money = mysc.nextDouble();
                    balance+=money;
                    date = new Date();//获取最新时间
                    //怎么拼接是关键
                    details+=
                            "\n收益入账\t +"+money+" "+sdf.format(date)+"\t余额:"+balance;
                    break;
                case '3':
                    System.out.println("\t3.消费");
                    break;
                case '4':
                    System.out.println("\t4.退   出");
                    loop = false;
                    break;
            }
        }while (loop);
        System.out.println("零钱通已退出");
    }
}
  • 完成消费
public class Changes {
    public static void main(String[] args) {
        //1.使用do while循环制作菜单
        boolean loop = true;
        Scanner mysc = new Scanner(System.in);
        String details = "==============明细===================";//明细拼接头部
        double money = 0;//单次进出金额初始化
        double balance = 0;//余额
        Date date = null;//实时时间变量
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//把时间的格式改成自己想要的
        String Merchant = null;
        do{
            System.out.println("===============零钱通菜单==============");
            System.out.println("\t1.零钱通明细");
            System.out.println("\t2.收益入账");
            System.out.println("\t3.消费");
            System.out.println("\t4.退   出");
            System.out.println("请选择(1-4)");
            //2.使用switch语句完成选择
            char key = mysc.next().charAt(0);
            switch(key){
                case '1':
                    //3.完成明细显示功能,这里使用字符串拼接。
                    System.out.println(details);
                    break;
                case '2':
                    //4.完成收益入账
                    System.out.println("请输入收益金额:");
                    money = mysc.nextDouble();
                    balance+=money;
                    date = new Date();//获取最新时间
                    //怎么拼接是关键
                    details+=
                            "\n收益入账\t +"+money+" "+sdf.format(date)+"\t余额:"+balance;
                    break;
                case '3':
                    //5.完成消费
                    System.out.println("请输入商户名:");
                    Scanner s = new Scanner(System.in);
                    Merchant = s.nextLine();
                    System.out.println("请输入消费金额:");
                    money = mysc.nextDouble();
                    balance-=money;
                    details+=
                            "\n"+Merchant+"\t -"+money+" "+sdf.format(date)+"\t余额:"+balance;
                    break;
                case '4':
                    System.out.println("\t4.退   出");
                    loop = false;
                    break;
            }
        }while (loop);
        System.out.println("零钱通已退出");
    }
}

退出功能 把boole变量改成false就行。

优化

要求:

  • 在用户要退出时,增加一次是否确认退出的信息
  • 在收益入账和消费时,判断金额是否合理,并且给出相应的提示
public class Changes {
    public static void main(String[] args) {
        //1.使用do while循环制作菜单
        boolean loop = true;
        Scanner mysc = new Scanner(System.in);
        String details = "==============明细===================";//明细拼接头部
        double money = 0;//单次进出金额初始化
        double balance = 0;//余额
        Date date = null;//实时时间变量
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//把时间的格式改成自己想要的
        String Merchant = null;
        do{
            System.out.println("===============零钱通菜单==============");
            System.out.println("\t1.零钱通明细");
            System.out.println("\t2.收益入账");
            System.out.println("\t3.消费");
            System.out.println("\t4.退   出");
            System.out.println("请选择(1-4)");
            //2.使用switch语句完成选择
            char key = mysc.next().charAt(0);
            switch(key){
                case '1':
                    //3.完成明细显示功能,这里使用字符串拼接。
                    System.out.println(details);
                    break;
                case '2':
                    //4.完成收益入账
                    System.out.println("请输入收益金额:");
                    money = mysc.nextDouble();
                    //建立编程思想,不要全部放到分支语句,可以设置关卡,如果条件不满足直接break跳出不进行下面语句
                    if (money <= 0){
                        System.out.println("收益必须大于0");
                        break;
                    }
                    balance+=money;
                    date = new Date();//获取最新时间
                    //怎么拼接是关键
                    details+=
                            "\n收益入账\t +"+money+" "+sdf.format(date)+"\t余额:"+balance;
                    break;
                case '3':
                    //5.完成消费
                    System.out.println("请输入商户名:");
                    Scanner s = new Scanner(System.in);
                    Merchant = s.nextLine();
                    System.out.println("请输入消费金额:");
                    money = mysc.nextDouble();
                    if (money > balance || money <=0) {
                        System.out.println("支付失败,您的支付金额应该在1~"+balance+"之间");
                        break;
                    }
                        balance-=money;
                        details+=
                                "\n"+Merchant+"\t -"+money+" "+sdf.format(date)+"\t余额:"+balance;

                    break;
                case '4':
                    boolean out = true;
                    do{System.out.println("是否确认退出 y/n");//嵌套do while循环
                        char answer = new Scanner(System.in).next().charAt(0);
                        if (answer == 'y'){
                            loop = false;
                            out = false;
                        }else if(answer == 'n'){
                            System.out.println("已返回菜单");
                        }
                    }while (out);

                    break;
                default:
                    System.out.println("输入错误,请输入1-4");
            }
        }while (loop);
        System.out.println("零钱通已退出");
    }
}

使用演示:
---------------零钱通菜单------------------
1.零钱通明细
2.收益入账
3.消费
4.退 出
请选择(1-4)
2
请输入收益金额:
500
---------------零钱通菜单------------------
1.零钱通明细
2.收益入账
3.消费
4.退 出
请选择(1-4)
3
请输入商户名:
看电影
请输入消费金额:
50
---------------零钱通菜单------------------
1.零钱通明细
2.收益入账
3.消费
4.退 出
请选择(1-4)
1
--------------------明细------------------
收益入账 +500.0 2022-10-15 23:35 余额:500.0
看电影 -50.0 2022-10-15 23:35 余额:450.0
---------------零钱通菜单------------------
1.零钱通明细
2.收益入账
3.消费
4.退 出
请选择(1-4)
3
请输入商户名:
吃饭5001
请输入消费金额:
300
---------------零钱通菜单------------------
1.零钱通明细
2.收益入账
3.消费
4.退 出
请选择(1-4)
1
--------------------明细------------------
收益入账 +500.0 2022-10-15 23:35 余额:500.0
看电影 -50.0 2022-10-15 23:35 余额:450.0
吃饭5001 -300.0 2022-10-15 23:35 余额:150.0
---------------零钱通菜单------------------
1.零钱通明细
2.收益入账
3.消费
4.退 出
请选择(1-4)
3
请输入商户名:
买手机
请输入消费金额:
5000
支付失败,您的支付金额应该在1~150.0之间
---------------零钱通菜单------------------
1.零钱通明细
2.收益入账
3.消费
4.退 出
请选择(1-4)
4
是否确认退出 y/n
n
已返回菜单
---------------零钱通菜单------------------
1.零钱通明细
2.收益入账
3.消费
4.退 出
请选择(1-4)
4
是否确认退出 y/n
y
零钱通已退出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值