Java零钱通项目

面向过程版本 

package com.hansp.project.SmallChange.tradition;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class menu {
    public static void main(String[] args) {
        boolean loop = true;
        Scanner scanner = new Scanner(System.in);
         String key="";

         //先完成显示菜单
        //完成零钱通明细的功能
        //完成收益入账的功能
        //改进功能,一般都是找不正确的功能
        String note="";
        double money = 0;
        double balance= 0;
        char x='x';

        Date date = null;
        SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm");

        String details="----------零钱通明细----------";
        do{
            System.out.println("\n==========零钱通菜单==========");
            System.out.println("\t\t1.零钱通明细");
            System.out.println("\t\t2.收益入账");
            System.out.println("\t\t3.消费情况 ");
            System.out.println("\t\t4.退   出");
            System.out.println("请输入1-4");
    key=scanner.next();
                    switch (key){
                        case "1":
                            System.out.println(details);
                            break;
                        case  "2":
                            System.out.println("收益入账金额");
                            money=scanner.nextDouble();
                            //校验收益
                            if(money<=0)
                            {
                                System.out.println("你输入了错误的收益");
                                break;
                            }
                            balance+=money;
                            //拼接收益入账信息

                            date=new Date();//获取到当前日期

                            details +="\n收益入账\t+"+money+"\t"+sdf.format(date )+"\t"+balance;
                            break;
                        case  "3" :
                            System.out.println("输入消费金额");
                            money=scanner.nextInt();
                            if(money>balance||money<=0)
                            {
                                System.out.println("不能花费大于你,并且应该是正数");
                            }

                            //范围校验,一会实现细节
                            System.out.println("消费说明");
                            note=scanner.next();


                            date=new Date();

                            balance-=money;
                            //开始拼接
                            details +="\n"+note+"\t-"+money+"\t"+sdf.format(date )+"\t"+balance;

                               break;
                        case  "4":
                            System.out.println("你确定退出吗,确定的话输入y,不想退出的话输入n");
                            x=scanner.next().charAt(0);
            while(true){
                if(x=='y' || x=='n'){
                    break;

                }
                else System.out.println("请输入y或者n");
                x=scanner.next().charAt(0);
            }
                            if(x=='y')
                                loop=false;

                            //退出零钱通项目
                            break;
                        default:
                            System.out.println("请选择1-4中的一个数");
                    }


        }while(loop);

    }

}

OOP(面向对象)版本 

package com.hansp.project.SmallChange.OOP;
//app类
import java.util.Date;

public class App {
    public static void main(String[] args) {
        function f = new function();
        f.mainMenu();
    }
}

 功能类

package com.hansp.project.SmallChange.OOP;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

/**
 * 该类是完成零钱通的各个功能的类
 * 使用OOP
 * 一个功能对应一个方法
 */

public class function {

    boolean loop = true;
    Scanner scanner = new Scanner(System.in);
    String key="";
    String note="";
    double money = 0;
    double balance= 0;
    char x='x';

    Date date = null;
    SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm");

    String details="----------零钱通明细----------";

    public void mainMenu(){
        do{
            System.out.println("\n==========零钱通菜单==========");
            System.out.println("\t\t1.零钱通明细");
            System.out.println("\t\t2.收益入账");
            System.out.println("\t\t3.消费情况 ");
            System.out.println("\t\t4.退   出");
            System.out.println("请输入1-4");
            key=scanner.next();
            switch (key){
                case "1":
                    this.detail();
                    break;
                case  "2":
                    this.income();
                    break;
                case  "3" :
                    this.pay();

                    break;
                case  "4":
                   this.exit();
                    break;
                default:
                    System.out.println("请选择1-4中的一个数");
            }


        }while(loop);
    }
    public void detail(){
        System.out.println(details);
    }
    public void income(){
        System.out.println("收益入账金额");
        money=scanner.nextDouble();
        //校验收益
        if(money<=0)
        {
            System.out.println("你输入了错误的收益");
        return;//退出方法不再执行后面的代码
        }
        balance+=money;
        //拼接收益入账信息

        date=new Date();//获取到当前日期

        details +="\n收益入账\t+"+money+"\t"+sdf.format(date )+"\t"+balance;
    }
    public void pay(){ System.out.println("输入消费金额");
        money=scanner.nextInt();
        if(money>balance||money<=0)
        {
            System.out.println("不能花费大于你,并且应该是正数");
            return;
        }

        //范围校验,一会实现细节
        System.out.println("消费说明");
        note=scanner.next();


        date=new Date();

        balance-=money;
        //开始拼接
        details +="\n"+note+"\t-"+money+"\t"+sdf.format(date )+"\t"+balance;
    }
    public void exit(){
        System.out.println("你确定退出吗,确定的话输入y,不想退出的话输入n");
        x=scanner.next().charAt(0);
        while(true){
            if(x=='y' || x=='n'){
                break;

            }
            else System.out.println("请输入y或者n");
            x=scanner.next().charAt(0);
        }
        if(x=='y')
            loop=false;
    }
}

积累经验:

1.当我们想杜宇某一个值进项判断从而约束时,可以想想他不正确的情况(比较好想)

if(条件){报错提示 break;}

if(另一个条件) {报错提示 break;}

这样的代码可读性会大大增强

2.OOP的特性的封装在这里体现出来了

功能类写方法再通过功能类的主菜单调用各种方法

最后应用,而不是在应用再写代码了

而且修改比较方便,新增功能也比较方便

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小袁拒绝摆烂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值