IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java学习笔记:模拟实现微信零钱通(面向过程和OOP两种方法) -> 正文阅读

[Java知识库]Java学习笔记:模拟实现微信零钱通(面向过程和OOP两种方法)

?写在前面:本次一个小测验技术范围非常浅,非常适用于像我这样小白的人练习,并深刻体会面向过程和面向对象最直观的区别。

1、面向过程代码实现:

package com.codetest.smallchange;
//自动补全alt+/   快捷注释ctrl+/  删除行ctrl+d  复制行ctrl+alt+向下键
//导入需要的类alt+enter 快速格式化代码ctrl+alt+l  快速运行alt+r
//生成构造器alt+insert  查看类的层次关系ctrl+h  快速定位方法ctrl+b
//自动分配变量名 后面加.var
//模板快捷键 soutm main

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


public class SmallChangeSys {
    public static void main(String[] args) {
        //定义循环判断变量
        boolean loop = true;
        //定义选择变量
        String choice = null;
        //1、先完成显示菜单,并能够选择
        //2、完成零钱通明细
        //定义零钱通明细变量,其实一开始是看不出来这个的,这是列出总的明细
        //方法一:String拼接
        String detail = "==========零钱通明细==========\n";
        //3、完成收益入账
        //定义收益入账中的变量
        double money = 0;//定义收益出入账的钱
        double balance = 0;//定义余额
        Date date = null;//定义日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//日期格式化
        //4、消费
        //定义支出原因变量
        String note = null;
        Scanner scanner = new Scanner(System.in);
        System.out.println("==========零钱通菜单==========");
        System.out.println("\t\t1 零钱通明细\n\t\t2 收益入账\n\t\t3 消费\n\t\t4 退 \t出");
        do {
            System.out.print("请选择(1~4):");
            choice = scanner.next();

            switch (choice) {
                case "1":
                    System.out.println(detail);
                    break;
                case "2":
                    System.out.print("收益入账:");
                    money = scanner.nextDouble();//接收记入的账单金额
                    //此处应该控制money范围
                    //思路:找出不正确的条件,然后给出提示,最后跳出
                    if (money < 0) {
                        System.out.println("收益入账应该大于0元!");
                        break;
                    }
                    date = new Date();
                    balance += money;
                    //这一步如果理解不了,就用debug一步一步调出来
                    detail += "收益入账\t+" + money + "\t" + sdf.format(date) + "\t余额:" + balance + "\n";
                    break;
                case "3":
                    System.out.print("消费金额:");
                    money = scanner.nextDouble();//接收支出的账单金额
                    //此处应该控制money范围
                    if (money < 0 ||money>balance) {
                        System.out.println("消费金额应该在0~"+balance+"之间!");
                        break;
                    }
                    date = new Date();
                    balance -= money;
                    System.out.print("消费说明:");
                    note = scanner.next();
                    detail += note + "\t-" + money + "\t" + sdf.format(date) + "\t余额:" + balance + "\n";
                    break;
                case "4":
                    //优化  
                    //用户输出4时,给出提示"你确定要退出吗?y/n",要求必须输入y或n,
                    //否则循环输入指令直到y和n
//                    do{
//                        System.out.print("你确定要退出吗?y/n");
//                        //定义一个接收变量key接收指令
//                        char key=scanner.next().charAt(0);
//                        if(key=='y'){
//                            break;
//                        }
//                    }while(true);
                    //上面这段还可以优化
                    //首先判断输入的字符是否是y或是n
                    //定义一个接收变量key接收指令
                    char key;
                    while (true) {
                        System.out.println("你确定要退出吗?y/n");
                        key = scanner.next().charAt(0);
                        if (key == 'y' || key == 'n') {
                            break;
                        }
                    }
                    //然后做出y和n的功能分支
                    if (key == 'y') {
                        System.out.println("退出程序....");
                        loop = false;
                    } else {
                        System.out.println("欢迎回来,请选择你需要选择的服务?");
                    }
                    break;
                default:
                    System.out.println("选择输入有误,请重新输入(1~4):");
            }
        } while (loop);
        System.out.println("欢迎下次使用零钱通!");
    }
}

?2、OOP面向对象

分析功能板块

?

SmallChangeSysOOP类
package com.codetest.smallchange.oop;

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

/**
 * 该类是完成零钱通各个功能的类
 * 用OOP(面向对象编程)
 */
public class SmallChangeSysOOP {
    Scanner scanner = new Scanner(System.in);
    //定义循环判断变量
    boolean loop = true;
    //定义选择变量
    String choice = null;
    //1、先完成显示菜单,并能够选择
    //2、完成零钱通明细
    //定义零钱通明细变量,其实一开始是看不出来这个的,这是列出总的明细
    //方法一:String拼接
    String detail = "==========零钱通明细==========\n";
    //3、完成收益入账
    //定义收益入账中的变量
    double money = 0;//定义收益出入账的钱
    double balance = 0;//定义余额
    Date date = null;//定义日期
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//日期格式化
    //4、消费
    //定义支出原因变量
    String note = null;
    //1、先完成显示菜单,并能够选择
    public void mainMenu(){
        System.out.println("==========零钱通菜单(OOP)==========");
        System.out.println("\t\t1 零钱通明细\n\t\t2 收益入账\n\t\t3 消费\n\t\t4 退 \t出");
        do {
            System.out.print("请选择(1~4):");
            choice = scanner.next();

            switch (choice) {
                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);
    }
    //2、完成零钱通明细
    public void detail(){
        System.out.println(detail);
    }
    //3、完成收益入账
    public void income(){
        System.out.print("收益入账:");
        money = scanner.nextDouble();//接收记入的账单金额
        //此处应该控制money范围
        //思路:找出不正确的条件,然后给出提示,最后跳出
        if (money < 0) {
            System.out.println("收益入账应该大于0元!");
            return;//退出方法不再执行后面的代码
        }
        date = new Date();
        balance += money;
        //这一步如果理解不了,就用debug一步一步调出来
        detail += "收益入账\t+" + money + "\t" + sdf.format(date) + "\t余额:" + balance + "\n";
    }
    //4、消费
    public void pay(){
        System.out.print("消费金额:");
        money = scanner.nextDouble();//接收支出的账单金额
        //此处应该控制money范围
        if (money < 0 || money > balance) {
            System.out.println("消费金额应该在0~"+balance+"之间!");
            return;
        }
        date = new Date();
        balance -= money;
        System.out.print("消费说明:");
        note = scanner.next();
        detail += note + "\t-" + money + "\t" + sdf.format(date) + "\t余额:" + balance + "\n";
    }

    //5、退出
    public void exit(){
        char key;
        while (true) {
            System.out.println("你确定要退出吗?y/n");
            key = scanner.next().charAt(0);
            if (key == 'y' || key == 'n') {
                break;
            }
        }
        //然后做出y和n的功能分支
        if (key == 'y') {
            System.out.println("退出程序....");
            loop = false;
        } else {
            System.out.println("欢迎回来,请选择你需要选择的服务?");
        }
    }

}

SmallChangeSysApp类
package com.codetest.smallchange.oop;

/**
 * 这里直接调用SmallChangeSysOOP对象完成菜单的使用
 */
public class SmallChangeSysApp {
    public static void main(String[] args) {
        SmallChangeSysOOP smallChangeSysOOP = new SmallChangeSysOOP();
        smallChangeSysOOP.mainMenu();
    }
}

?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-12-28 22:46:11  更:2021-12-28 22:48:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:53:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码