功能明细:

实现代码:

package smallchange;import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;public class SmallChangeSys
{// 化繁为简// 1、先完成显示菜单,并可以选择菜单,给出对应提示// 2、完成零钱通明细// 3、完成收益入账// 4、消费// 5、退出// 6、用户输入4退出时,给出提示"你确定要退出吗?"y或n",必须输入正确的y或n// 7、在收益入账和消费时,判断金额是否合理,并给出相应的提示public static void main(String[] args){// 定义相关的变量boolean loop = true; // 判断零钱通运行标记Scanner scanner = new Scanner(System.in);String key = "";// 2、完成零钱通明细// (1)可以把收益入账和消费,保存到数组  (2)可以使用对象  (3)简单的话可以使用String拼接String details = "--------------------零钱通明细--------------------";// 3、完成收益入账// 定义新的变量(入账的金额、入账时间、金额总数)double money = 0;   // 入账金额double balance = 0; // 金额总数Date date = null; // 入账时间(date 是 java.util.Date 类型,表示日期)SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); // 可以用于日期格式化// 4、消费// 定义新的变量()String note = "";do{// 页面信息System.out.println("====================零钱通菜单====================");System.out.println("\t\t\t1 零钱通明细");System.out.println("\t\t\t2 收益入账");System.out.println("\t\t\t3 消费");System.out.println("\t\t\t4 退      出");System.out.println("请选择(1-4): ");key = scanner.next();//使用switch分支控制switch (key){case "1" :System.out.println(details);break;case "2" :System.out.println("收益入账金额:");money = scanner.nextDouble();// money 的值范围应该校验if(money<=0){System.out.println("收益入账金额需要大于 0");break;}balance += money; // 入账// 拼接收益入账信息到 detailsdate = new Date(); // 获取当前日期details += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t" + "余额:" + balance;break;case "3" :System.out.println("消费金额");// money 的值范围应该校验 (判断当前消费是否满余额)money = scanner.nextDouble();if(money<=0 || money>balance){System.out.println("你的消费金额应该在 0-" + balance);break;}System.out.println("消费商家:");note = scanner.next();balance -= money; // 消费// 拼接收益入账信息到 detailsdate = new Date(); // 获取当前日期//System.out.println(sdf.format(date));details += "\n" + note + "\t-" + money + "\t" +sdf.format(date) + "\t" + "余额:" +balance;break;case "4" :// 用户输入4退出时,给出提示"你确定要退出吗?"y或n",必须输入正确的y或nString choice = "";while(true) // 要求用户必须输入y/n,否则一直循环{System.out.println("你确定要退出吗?y/n");choice = scanner.next();if("y".equals((choice)) || "n".equals(choice)){break;}}// 当用户退出while,进行判断if(choice.equals("y")){loop = false;}break;default:System.out.println("选择有误,请重新选择");}}while(loop);System.out.println("--------------------退出了零钱通项目---------------------");}
}

实现零钱通oop版本:

package smallchange.oop;import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;/***该类是完成零钱通各个功能的类*使用OOP(面向对象编程)* 将各个功能对应一个方法
*/
public class SmallChangeSysOOP
{boolean loop = true; // 判断零钱通运行标记Scanner scanner = new Scanner(System.in);String key = "";// 2、完成零钱通明细// (1)可以把收益入账和消费,保存到数组  (2)可以使用对象  (3)简单的话可以使用String拼接String details = "--------------------零钱通明细--------------------";// 3、完成收益入账// 定义新的变量(入账的金额、入账时间、金额总数)double money = 0;   // 入账金额double balance = 0; // 金额总数Date date = null; // 入账时间(date 是 java.util.Date 类型,表示日期)SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); // 可以用于日期格式化// 4、消费// 定义新的变量()String note = "";//先完成显示菜单,并可以选择public void mainMenu(){do{// 页面信息System.out.println("====================零钱通菜单====================");System.out.println("\t\t\t1 零钱通明细");System.out.println("\t\t\t2 收益入账");System.out.println("\t\t\t3 消费");System.out.println("\t\t\t4 退      出");System.out.println("请选择(1-4): ");key = scanner.next();//使用switch分支控制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("选择有误,请重新选择");}}while(loop);}// 完成零钱通明细public void detail(){System.out.println(details);}// 完成收益入账public void income(){System.out.println("收益入账金额:");money = scanner.nextDouble();// money 的值范围应该校验if(money<=0){System.out.println("收益入账金额需要大于 0");return; // 退出方法,不再执行后面的代码}balance += money; // 入账// 拼接收益入账信息到 detailsdate = new Date(); // 获取当前日期details += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t" + "余额:" + balance;}// 完成消费public void pay(){System.out.println("消费金额");// money 的值范围应该校验 (判断当前消费是否满余额)money = scanner.nextDouble();if(money<=0 || money>balance){System.out.println("你的消费金额应该在 0-" + balance);return;}System.out.println("消费商家:");note = scanner.next();balance -= money; // 消费// 拼接收益入账信息到 detailsdate = new Date(); // 获取当前日期//System.out.println(sdf.format(date));details += "\n" + note + "\t-" + money + "\t" +sdf.format(date) + "\t" + "余额:" +balance;}// 退出public void exit(){// 用户输入4退出时,给出提示"你确定要退出吗?"y或n",必须输入正确的y或nString choice = "";while(true) // 要求用户必须输入y/n,否则一直循环{System.out.println("你确定要退出吗?y/n");choice = scanner.next();if("y".equals((choice)) || "n".equals(choice)){break;}}// 当用户退出while,进行判断if(choice.equals("y")){loop = false;}}
}
package smallchange.oop;public class SmallChangeSysApp
{public static void main(String[] args){new SmallChangeSysOOP().mainMenu();}
}

Java实现零钱通功能相关推荐

  1. java实现零钱通系统

    和微信零钱通类似,通过java来实现一个零钱通系统,实现支付和支出以及零钱明细功能 将其分成五个功能来实现 1.菜单编写:通过简单的输出语句即可 2.零钱通明细:利用字符串拼接 3:金额入账:设置入账 ...

  2. 支付宝绑定社保;微信正式上线零钱通功能|ServiceHot一周热闻

    中国加快基于 IPv6 的互联网发展,2025 年实现全覆盖 近日,中共中央办公厅.国务院办公厅印发了<推进互联网协议第六版(IPv6)规模部署行动计划>,并发出通知,要求各地区各部门结合 ...

  3. Java项目—零钱通

    1.非oop版: package projection;import java.text.SimpleDateFormat; import java.util.Date; import java.ut ...

  4. java (零钱通)

    模板类: import java.text.SimpleDateFormat; import java.util.Date; //(获取时间的包) import java.util.Scanner; ...

  5. Java 零钱通项目

     写在前面 满打满算,学习韩老师Java视频已经有一个月了,现在也算碰到了第三个案例,因为我是先做,再看视频解析,前面几个案例写得还是挺磕磕绊绊的.经过这么长时间,这个案例做得还挺顺利的,所在这里记录 ...

  6. Java学习笔记 --- 零钱通项目

    一,项目开发流程说明 1.项目需求: 使用Java开发 零钱通项目,可以完成收益入账,消费,查看明细,退出系统等功能 2.项目界面: 二.使用面向过程编程实现: package com.javase. ...

  7. Java学习笔记334 - 零钱通01

    序言 在写代码我们会碰到很多困惑,不知道用哪个知识点,不知道怎么写了. 最理想情况是可以学以致用,掌握底层原理,才能灵活运用,从而体会编程之乐.本节我们会将一些java基础知识点运用到具体的项目上,从 ...

  8. 零钱通项目(Java实现-命令行练习版)

    前言 适合初学者理解面向对象以及初步建立系统概念,体会面向对象OOP优点 需求 使用 Java 开发零钱通项目 , 可以完成收益入账,消费,查看明细,退出系统等功能. 界面 项目实现 过程实现 imp ...

  9. JAVA 零钱通项目OOP(韩顺平)

    目录 一.项目需求说明 二.项目界面 三.步骤(化繁为简) 四.具体步骤及其代码 1.菜单的显示 2.完成零钱通明细 3.完成收益入账 4.消费 5.退出 五.完整代码OOP 六.注意事项 七.过程编 ...

最新文章

  1. setTimeOut() 和 setTimeInterval()
  2. 中部四省会打造人才信息云平台
  3. 函数 —— fork()将运行着的程序分成2个(几乎)完全一样的进程
  4. Operating System Concepts--chap9 Memory Management;
  5. 【吉林】2021年下半年软考报考时间及通知
  6. shell / 获取当前工作目录的方法
  7. [css] 浏览器是怎样判断元素是否和某个CSS选择器匹配?
  8. python交并补_python两个列表求交、并、差
  9. HTML5 Canvas中绘制矩形
  10. 使用git版本管理时的免密问题
  11. A Bit of Fun
  12. 6.1.1.2 属性类型之访问器属性
  13. SpringMVC, Spring和Mybatis整合案例一
  14. SVM入门(十)将SVM用于多类分类
  15. Chapter 20 磁场对电流的作用
  16. 随身WiFi刷OPENWRT作为旁路由
  17. 网络通信词汇——MCC、MNC、dbm、TAC、ECI、PCI、BAND、EARFCN、FREQ、RSSI、RSRP、RSRQ、SINR
  18. 微分方程数值解法的matlab程序
  19. Web 组件完整介绍
  20. matlab仿真ppt,Matlab系列之Simulink仿真教程.ppt

热门文章

  1. Reflex WMS入门系列二十三:几个库存相关的报表
  2. [机缘参悟-29]:鬼谷子-内揵篇-与上司交往的五种层次
  3. submit表单提交
  4. vs2010下backspace键失效解决之道
  5. Xshell终端工具,使用backspace删除键终端显示为^H的解决方法
  6. Linux unar提取存档文件内容
  7. ESG评级:Ecovadis
  8. 关于使用外部电源供电舵机的所思所想
  9. BUUCTF Web 第二页全部Write ups
  10. 解决大型企业项目规划难题,「ONES Plan 项目集管理」重磅发布