Java项目—零钱通
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项目—零钱通相关推荐
- 自学Java day8 项目-零钱通 从jvav到架构师
一个小项目,也无明确的需求,随便敲敲,权当练练手了 jvav实现源码: package com.jvav.project;import java.time.LocalDateTime; import ...
- Java实现零钱通功能
功能明细: 实现代码: package smallchange;import java.text.SimpleDateFormat; import java.util.Date; import jav ...
- java (零钱通)
模板类: import java.text.SimpleDateFormat; import java.util.Date; //(获取时间的包) import java.util.Scanner; ...
- java实现零钱通系统
和微信零钱通类似,通过java来实现一个零钱通系统,实现支付和支出以及零钱明细功能 将其分成五个功能来实现 1.菜单编写:通过简单的输出语句即可 2.零钱通明细:利用字符串拼接 3:金额入账:设置入账 ...
- Java 零钱通项目
写在前面 满打满算,学习韩老师Java视频已经有一个月了,现在也算碰到了第三个案例,因为我是先做,再看视频解析,前面几个案例写得还是挺磕磕绊绊的.经过这么长时间,这个案例做得还挺顺利的,所在这里记录 ...
- Java学习笔记 --- 零钱通项目
一,项目开发流程说明 1.项目需求: 使用Java开发 零钱通项目,可以完成收益入账,消费,查看明细,退出系统等功能 2.项目界面: 二.使用面向过程编程实现: package com.javase. ...
- 零钱通项目(Java实现-命令行练习版)
前言 适合初学者理解面向对象以及初步建立系统概念,体会面向对象OOP优点 需求 使用 Java 开发零钱通项目 , 可以完成收益入账,消费,查看明细,退出系统等功能. 界面 项目实现 过程实现 imp ...
- JAVA 零钱通项目OOP(韩顺平)
目录 一.项目需求说明 二.项目界面 三.步骤(化繁为简) 四.具体步骤及其代码 1.菜单的显示 2.完成零钱通明细 3.完成收益入账 4.消费 5.退出 五.完整代码OOP 六.注意事项 七.过程编 ...
- 零钱通项目 - 韩老师
零钱通项目 项目开发流程说明 项目需求说明 使用java开通零钱通项目,可以完成收益入账,消费,查看明细,退出系统等功能 项目的界面 – 化繁为简 --------------------零钱通菜单- ...
最新文章
- vfp语言第 代计算机语言,VFP语言属于第()代计算机语言。A、一B、二C、三D、四...
- 大四上学期的分数和分析感悟
- 01-sql优化及索引
- ref:下一个项目为什么要用 SLF4J
- virtual lab motion对连杆载荷进行扫速瀑布图及阶次切片分析
- 对No Starch Press出版的《Python Playground》一书的书评及其作者访谈录
- buffernbife会不会对性能有影响
- VS Code离线安装C/C++插件cpptools-linux-aarch64.vsix
- 装tensorflow未果
- Raki的读paper小记:FastText:Enriching Word Vectors with Subword Information
- 503.下一个更大元素II(力扣leetcode) 博主可答疑该问题
- 尚品汇笔记——尚硅谷
- python文件传输进度条_Python复制和移动文件的进度条
- JEECMS安装部署方法以及使用说明教程
- PS 滤镜——素描算法(一)
- 开闭原则、迪米特法则、合成复用原则
- Java对数组对象进行排序
- HTML5仿五子棋游戏源码
- Android剪贴板的使用
- 漫谈SOA(面向服务架构)