零钱通项目

最近学习了Javase的一些基础知识,由于一些原因学的比较慢(其实归根结底可能是我太懒了😅

我看的课程是小po站上面的韩顺平老师,我看后的感受只能说:对小白真的太好啦,讲的非常的详细。

这不,我也是看老师的课程,跟这写了零钱通项目(虽然这个比较简单,但我觉得对于新手来说刚刚好),但我也学到了不少。下面是要求。

这里我就来解释一下这个项目它具体有上面需求吧:

1.这个小项目我们需要有入账(也就是收益入账)

2.有收账也就会有消费(这里也就是真功夫,我懒得打字,我就在我自己的代码里面改成了消费金额)

3.有收入和消费,那么我们肯定每次都会有记录呀(零钱通明细)

4.退出

完善需求:

5.这里韩老师想的很周到:首先,那就是我们存钱不能存负数吧;

                                          其次,我们消费多少总要在余额的范围之内吧。

                                          退出,我们也需要避免用户一下子就退出去了,我们要来个是否确认。

好了,功能差不多就是介绍在这里。

接下来,废话不多说,我们直接上代码!

这里是我们类里面的一些属性:

一些简单的属性,看名字和我的注释应该能够知道他们的用途,这里我就说两个:

Date date = null;(这个我们不是有消费记录的实际嘛,这个的作用就是来获取当前时间的)
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");(因为我们所获取的时间可能不是我们需求中的那种格式,所以这个的作用也就是将我们获取的时间对其来个格式化)。
 boolean loop = true;
    Scanner scanner = new Scanner(System.in);
    int key=0;
    //1.零钱通明细
    //实现有三个思路吧(其实本人只有两个思路,1,3)
    //韩老师:1.用数组进行储存;2.用对象;3.用string进行拼接(其实哈,我感觉还能用集合)
    //这里我们用的是字符串的拼接
    String details = "-------------零钱通明细-------------";

    //2.收益入账
    double money;
    double balance = 0;//余额
    Date date = null;
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");

    //3.消费
    //String note = " ";//记录消费出处

    //4.退出系统的优化

    //5.我们现在还需要判断他存钱和用钱是否正确

    String tuichu = " ";

1.入账

这里我们从的是第三种比较简单的字符串拼接(就是这里的details)来完成信息的加入(由于我已经学了C语言嘛,我也知道这个的缺陷,不像C那样,我还不知道如何删改呢,不过慢慢来嘛)

//收益到账
    public void  income(){
        System.out.println("2 收益入账");
        System.out.println("请输入你存入的金额:");
        money = scanner.nextDouble();
        if(money<=0){
            System.out.println("存入的钱不能少于0!");
            return ;
        }
        balance += money;
        date = new Date();//获取当前的时间
        //这就是一个简单的字符串的拼接了
        details +="\n收益入账 "+ "+" + money +"\t "+ sdf.format(date)/*将时间格式化*/ +"\t余额:"+ balance;
    }

2.入账知道了,那么消费也就是类似的了

public void pay(){
        System.out.println("3 消费");
        // System.out.print("消费记录:");
        //note = scanner.next();
        System.out.print("消费金额:");
        money = scanner.nextInt();
        if(money<=0 || money > balance){
            System.out.println("消费出错了/余额不足了");
            return ;
        }
        balance -=money;
        date = new Date();//获取当前的时间
        //这就是一个简单的字符串的拼接了
        details +="\n消费记录 " + "-" + money +"\t "+ sdf.format(date)/*将时间格式化*/ +"\t余额:"+ balance;
    }

相信你们也看到了,我们这里和入账一样多了一个判断,其实这就是完善他们。

这里我也学到了韩老师的一个思路:我们不能老是往上什么条件下可以进行,如果反过来想什么情况下不可以进行(可能会有奇效哦 )

3.零钱通明细

在C语言中,现在的我很容易就知道数组,链表。

但是在Java里面我会以下的三种想法:

//实现有三个思路吧(其实本人只有两个思路,1,3)
//韩老师:1.用数组进行储存;2.用对象;3.用string进行拼接(其实哈,我感觉还能用集合)
//这里我们用的是字符串的拼接
public void details(){
        System.out.println(details);
    }

其实这里也很简单,我们用的是字符串的拼接嘛,我们就是每次调用的时候,将字符串输出来就好了。

4.退出

public void exit(){
        while(true){
            System.out.println("你确定要退出吗? y/n");
            tuichu = scanner.next();
            if(tuichu.equals("y")||tuichu.equals("n")){
                break;
            }
        }
        if(tuichu.equals("y")){
            //这里真的是一个很秒的点,我们需要考虑如何退出这个循环,我们就可以在四退出的
            //时候,直接将loop赋值false,这样就可以退出循环了
            System.out.println("成功退出零钱通系统");
            loop=false;
        }
    }

退出功能挺简单的,这里我也不多赘述了,有问题的话,评论区可以提问哦

现在我们又回到了像C语言一样,整合!

其实我觉得这整合应该算是最简单的东西了,只要思路捋清楚就行。

public void MainMenu(){
        do{
            System.out.println("\n============零钱通菜单(OPP)============");
            System.out.println("\t\t\t1 零钱通明细");
            System.out.println("\t\t\t2 收益入账");
            System.out.println("\t\t\t3 消费");
            System.out.println("\t\t\t4 退    出");
            // loop=false;
            System.out.print("请选择(1-4):");
            key = scanner.nextInt();
            switch (key){
                case 1: this.details();
                        break;
                case 2: this.income();
                        break;
                case 3: this.pay();
                        break;
                case 4: this.exit();
                        break;
                default:
                        System.out.println("输入错误了,请重新输入:");
            }
        }while (loop);
    }

由于Java是面向对象的编程语言嘛,我们上面就是去实现了他的一个功能类,

我们需要使用,还得重新创建一个类,来调用这里面的方法。

public class smallchangeSysOppAPP {
    public static void main(String[] args) {
        new smallchangeSysOpp().MainMenu();
    }
}

这也就涉及到new一个对象啦!

本次分享就到此结束啦,欢迎大家来交流!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值