1.非oop版:

package projection;import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;public class SmallChangeSys {public static void main(String[] args) {//面向过程,非数组,boolean loop = true;//结束的标志。Scanner scanner = new Scanner(System.in);//scanner方法,很重要String key = "";//直接数组,或者对象,或者string拼接String details = "--------------零钱通明细------------------";double money = 0;//总金额:double balance = 0;Date date = null;//date是java.util.Date类型,日期SimpleDateFormat sdf = new SimpleDateFormat("yyyy--MM--dd hh:mm");//格式化日期//消费说明,定义新变量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 (key) {case "1":System.out.println(details);break;case "2":System.out.println("收益入账金额:");money = scanner.nextDouble();//检测是否符合常理,判断其不正确的情况显然可读性大于判断其正确输入的情况,编程经验if(money<=0){System.out.println("Are You Killing Me? 重新输!");break;}//值的范围需要效验,之后才能完善balance += money;date = new Date();//日期System.out.println(sdf.format(date));details += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t" + balance;break;case "3":System.out.println("消费金额:");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();details += "\n" + note + "\t\t-" + money + "\t" + sdf.format(date) + "\t" + balance;break;case "4":String choice = "";while(true){System.out.println("你确定退出吗?y/n");choice = scanner.next();if("y".equals(choice)){loop = false;break;}else if("n".equals(choice)){break;}}//loop = false; //此时退出可以执行while语句,while循环结构换可以当选择结构用,为false时不再循环,只do一次,因此不需要循环体。break;default:System.out.println("选择有误,请重新选择");}}while(loop);System.out.println("退出了零钱通项目");}
}

2.oop版:

SmallChangeSysOOP.java:

package projection.OOP;import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;//这里储存其面向对象的方法,各个功能对应一个方法
public class SmallChangeOOP {//属性直接全复制过来即可。//面向过程,非数组,boolean loop = true;//结束的标志。Scanner scanner = new Scanner(System.in);//scanner方法,很重要String key = "";//直接数组,或者对象,或者string拼接String details = "--------------零钱通明细------------------";double money = 0;//总金额:double balance = 0;Date date = null;//date是java.util.Date类型,日期SimpleDateFormat sdf = new SimpleDateFormat("yyyy--MM--dd hh:mm");//格式化日期//消费说明,定义新变量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 (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() {//case1直接粘贴来System.out.println(details);}public void income() {System.out.println("收益入账金额:");money = scanner.nextDouble();//检测是否符合常理,判断其不正确的情况显然可读性大于判断其正确输入的情况,编程经验if(money<=0){System.out.println("Are You Killing Me? 重新输!");return;//需要将break改为return}//值的范围需要效验,之后才能完善balance += money;date = new Date();//日期System.out.println(sdf.format(date));details += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t" + balance;//不用return,没有在循环内。}public void pay() {System.out.println("消费金额:");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();details += "\n" + note + "\t\t-" + money + "\t" + sdf.format(date) + "\t" + balance;}public void exit() {String choice = "";while(true){System.out.println("你确定退出吗?y/n");choice = scanner.next();if("y".equals(choice)){loop = false;break;}else if("n".equals(choice)){return;}}//loop = false; //此时退出可以执行while语句,while循环结构换可以当选择结构用,为false时不再循环,只do一次,因此不需要循环体。}
}

SmallChangeSysApp.java:

package projection.OOP;public class SmallChangeSysApp {public static void main(String[] args) {new SmallChangeOOP().mainMenu();}}

Java项目—零钱通相关推荐

  1. 自学Java day8 项目-零钱通 从jvav到架构师

    一个小项目,也无明确的需求,随便敲敲,权当练练手了 jvav实现源码: package com.jvav.project;import java.time.LocalDateTime; import ...

  2. Java实现零钱通功能

    功能明细: 实现代码: package smallchange;import java.text.SimpleDateFormat; import java.util.Date; import jav ...

  3. java (零钱通)

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

  4. java实现零钱通系统

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

  5. Java 零钱通项目

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

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

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

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

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

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

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

  9. 零钱通项目 - 韩老师

    零钱通项目 项目开发流程说明 项目需求说明 使用java开通零钱通项目,可以完成收益入账,消费,查看明细,退出系统等功能 项目的界面 – 化繁为简 --------------------零钱通菜单- ...

最新文章

  1. vfp语言第 代计算机语言,VFP语言属于第()代计算机语言。A、一B、二C、三D、四...
  2. 大四上学期的分数和分析感悟
  3. 01-sql优化及索引
  4. ref:下一个项目为什么要用 SLF4J
  5. virtual lab motion对连杆载荷进行扫速瀑布图及阶次切片分析
  6. 对No Starch Press出版的《Python Playground》一书的书评及其作者访谈录
  7. buffernbife会不会对性能有影响
  8. VS Code离线安装C/C++插件cpptools-linux-aarch64.vsix
  9. 装tensorflow未果
  10. Raki的读paper小记:FastText:Enriching Word Vectors with Subword Information
  11. 503.下一个更大元素II(力扣leetcode) 博主可答疑该问题
  12. 尚品汇笔记——尚硅谷
  13. python文件传输进度条_Python复制和移动文件的进度条
  14. JEECMS安装部署方法以及使用说明教程
  15. PS 滤镜——素描算法(一)
  16. 开闭原则、迪米特法则、合成复用原则
  17. Java对数组对象进行排序
  18. HTML5仿五子棋游戏源码
  19. Android剪贴板的使用
  20. 漫谈SOA(面向服务架构)

热门文章

  1. realsense深度图测试程序
  2. Word 2013中插入图片与复制图片,之后转化为PDF文档的区别
  3. 京东Android面试记录
  4. 捕获 iPhone 电话呼叫事件的方法
  5. 浏览器是什么? (类似socket客户端)
  6. 关于华为应用市场不再支持纯32位软件包上架的策略
  7. 李书福造手机,图个吉利?
  8. 苹果重视中国市场恶补“中国话”
  9. 机器人控制该怎么入门?
  10. 2021年京东预售双11什么时候开始?