零钱通小项目

项目说明

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

该项目展现了面向对象中封装的好处

(该项目来源:韩顺平java 0基础)

/**
面向过程
**/
import javax.xml.crypto.Data;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

/**
 * 显示页面菜单
 */


public class Smallchange {
    public static void main(String[] args) {
        boolean loop = true;
        Scanner input = new Scanner(System.in);
        String key = "";
        double money;//入账
        double balance = 0;
        String details = "-----------零钱通明细-------------";
        Date date = null;
        String note;
        String choice = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//可以用于日期格式化的
        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.print("请选择(1-4)");
            key = input.next();
            switch (key) {
                case "1"://零钱通明细
                    System.out.println(details);
                    break;
                case "2"://收费入账
                    System.out.println("收益入账金额:");
                    money = input.nextDouble();
                    //金额校验(过关斩将法:找出不正确的情况)
                    if(money<=0){
                        System.out.println("输入金额应大于0");
                        break;
                    }
                    balance += money;
                    date = new Date();
                    //拼接信息
                    details += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t余额:" + balance;
                    break;
                case "3"://消费
                    System.out.println("消费说明:");
                    note = input.next();
                    System.out.println("消费金额:");
                    money = input.nextDouble();
                    if(money<0 ||balance<money){
                        System.out.println("你的消费金额 应该在"+"0-"+balance);
                        break;
                    }
                    balance -= money;
                    date = new Date();
                    details += "\n" + note + "\t-" + money + "\t" + sdf.format(date) + "\t余额:" + balance;
                    break;
                case "4"://退出
                    /**1)定义变量choice
                     2)使用while+break 处理接收的输入时 y/n
                     3)退出while后,再判断choice是 y/n,就可以决定是否退出
                     4)原则:一段代码,完成一个小功能
                     */
                    while (true) {
                        System.out.println("你确定要退出吗?(y/n)");
                        choice = input.next();
                        if ("y".equals(choice) || "n".equals(choice)) {
                            break;
                        }
                    }
                    if (choice.equals("y")) {
                        loop = false;
                    }
                      break;
                    default:
                    System.out.println("选择有误,请重新选择");
            }

        }while (loop);

        System.out.println("退出了零钱通项目");

        }

    }







/**
面向对象
**/

package smallage;

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

public class SmallChangeOOP {
//属性
boolean loop = true;
    Scanner input = new Scanner(System.in);
    String key = "";
    double money;//入账
    double balance = 0;
    String details = "-----------零钱通明细-------------";
    Date date = null;
    String note;
    String choice = "";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//可以用于日期格式化的

    //菜单的显示
    public void Menu(){
        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.print("请选择(1-4)");
            key = input.next();
            switch (key) {
                case "1":
                  this.details();
                    break;
                case "2":
                   this.Income();
                    break;
                case "3":
                    this.pay();
                    break;
                case "4":
                    /**1)定义变量choice
                     2)使用while+break 处理接收的输入时 y/n
                     3)退出while后,再判断choice是 y/n,就可以决定是否退出
                     4)原则:一段代码,完成一个小功能
                     */

                this.exit();
                    break;
                default:
                    System.out.println("选择有误,请重新选择");
            }

        }while (loop);

        System.out.println("退出了零钱通项目");

    }


    //零钱通明细
    public void details(){
        System.out.println(details);
    }
    //入账
    public void Income(){
        System.out.println("收益入账金额:");
        money = input.nextDouble();
        //金额校验(过关斩将法:找出不正确的情况)
        if(money<=0){
            System.out.println("输入金额应大于0");
            return;//方法用return,不是逻辑操作的break/continue
        }
        balance += money;
        date = new Date();
        //拼接信息
        details += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t余额:" + balance;
    }
    //消费
    public void pay(){
        System.out.println("消费说明:");
        note = input.next();
        System.out.println("消费金额:");
        money = input.nextDouble();
        if(money<0 ||balance<money){
            System.out.println("你的消费金额 应该在"+"0-"+balance);
            return;
        }
        balance -= money;
        date = new Date();
        details += "\n" + note + "\t-" + money + "\t" + sdf.format(date) + "\t余额:" + balance;
    }
    //退出
    public void exit(){

        while (true) {
            System.out.println("你确定要退出吗?(y/n)");
            choice = input.next();
            if ("y".equals(choice) || "n".equals(choice)) {
                break;
            }
        }
        if (choice.equals("y")) {
            loop = false;
        }
    }

}

package smallage;

public class SmallChangeAPP {
    public static void main(String[] args) {
        new SmallChangeOOP().Menu();
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值