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

项目代码实现
编写文件 SmallChangeSys.java 完成基本功能 (过程编程)
先使用过程编程,后面改成 OOP 版本
项目代码实现改进
-
用户输入4退出时 ,给出提示 "你确定要退出码?y/n" ,必须输入正确的y/n ,否则循环输入指令 ,知道输入y或者n
-
在收益入账和消费时 ,判断金额是否合理 ,并给出相应的提示
-
将面向过程的代码修改为面向对象的方法 ,编写
SmallChangeSysOOP.java类 ,并使用SmallChangeSysApp.java完成调试
化繁为简.
-
先完成显示菜单,并可以选择
-
完成零钱通明细.
-
完成收益入账
-
消费
-
退出
package com.edu.smallchange;
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);
String key = "";
double balance = 0.0;
double account = 0.0;
Date date = null;
//date是java.util.Date表示日期
//定义新的变量 ,保存消费的原因
String note = "";
String details = "--------------零钱通明细-------------";
do {
System.out.println("-----------------项目菜单--------------------");
System.out.println("-----------1.零钱通明细----------------------");
System.out.println("-----------2.收益入账------------------------");
System.out.println("-----------3.消费---------------------------");
System.out.println("-----------4.退出---------------------------");
System.out.println("请选择(1-4)");
key = scanner.next();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
//用于将获取到的日期格式化
//使用switch分支结构
switch (key) {
case "1":
System.out.println(details);
break;
case "2":
System.out.println("--------------收益入账---------------");
System.out.println("请输入入账的金额:");
account = scanner.nextDouble();
if (account <= 0 ){
System.out.println("输入的金额有误,请重新输入");
break;
}else {
balance += account;
date = new Date();//获取当前日期
details += "\n收益入账\t+" + account + "\t" + sdf.format(date) + "\t余额:" + " " + balance;
}
break;
case "3":
System.out.println("---------------消费------------------");
System.out.println("请输入消费的金额");
account = scanner.nextDouble();
//编程思想
//找出不正确金额的条件,然后给出提示,直接break
if (account <= 0 || account > balance){
System.out.println("输入有误,你的消费金额 应在 0-"+balance+",请重新输入");
break;
}else {
System.out.println("请输入消费说明");
note = scanner.next();
balance -= account;
date = new Date();//获取当前日期
details += "\n" + note +"\t-" +account+ "\t" + sdf.format(date) + "\t余额:" + " " + balance;
}
break;
case "4":
System.out.println("---------------退出-------------------");
String Choice = "";
//建议一段代码,完成一个小功能,尽量不要混在一起
while (true) {//要求用户输入的必须是y/n否则就一直循环
System.out.println("你确定要退出码?y/n");
Choice = scanner.next();
if ("y".equals(Choice)||"n".equals(Choice)){
break;
}
}
if (Choice.equals("y"))
{
loop = false;
break;
}
break;
default:
System.out.println("输入有误");
}
} while (loop);
System.out.println("已退出零钱通项目");
}
}
接下来我们来尝试将其更改为OOP 版本 ,即面向对象的版本
将面向过程的代码修改为面向对象的方法 ,编写
SmallChangeSysOOP.java类 ,并使用SmallChangeSysApp.java完成调试
SmallChangeSysOOP.java首先这个类是完成零钱通各个功能的类 , 因此我们可以将各个功能编写成方法
package com.edu.smallchange.oop;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class SmallChangeSysOOP {
String key;
double balance;
double money;
String note;
boolean loop = true;
String details = "-----------零钱通明细--------------";
Date date;
Scanner scanner = new Scanner(System.in);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
public void mainMenu(){
//显示零钱通菜单
do {
System.out.println("-----------------项目菜单OOP版本-------------");
System.out.println("-----------1.零钱通明细----------------------");
System.out.println("-----------2.收益入账------------------------");
System.out.println("-----------3.消费---------------------------");
System.out.println("-----------4.退出---------------------------");
System.out.println("请选择(1-4)");
key = scanner.next();
switch (key){
case "1":
this.show_details();
break;
case "2":
this.income();
break;
case "3":
this.Consumption();
break;
case "4":
this.exit();
break;
default:
System.out.println("输入有误");
}
}while (loop);
}
public void show_details(){
System.out.println(details);
}
public void income(){
System.out.println("--------------收益入账---------------");
System.out.println("请输入入账的金额:");
money = scanner.nextDouble();
if (money <= 0 ){
System.out.println("输入的金额有误,请重新输入");
return;
//退出方法,不在执行后面的代码
}
balance += money;
date = new Date();//获取当前日期
details += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t余额:" + " " + balance;
}
//完成消费的方法
public void Consumption(){
System.out.println("---------------消费------------------");
System.out.println("请输入消费的金额");
money = scanner.nextDouble();
//编程思想
//找出不正确金额的条件,然后给出提示,直接break
if (money <= 0 || money > balance){
System.out.println("输入有误,你的消费金额 应在 0-"+balance+",请重新输入");
return;
}
System.out.println("请输入消费说明");
note = scanner.next();
balance -= money;
date = new Date();//获取当前日期
details += "\n" + note +"\t-" +money+ "\t" + sdf.format(date) + "\t余额:" + " " + balance;
}
public void exit(){
System.out.println("---------------退出-------------------");
String Choice = "";
//建议一段代码,完成一个小功能,尽量不要混在一起
while (true) {//要求用户输入的必须是y/n否则就一直循环
System.out.println("你确定要退出码?y/n");
Choice = scanner.next();
if ("y".equals(Choice)||"n".equals(Choice)){
break;
}
}
if (Choice.equals("y"))
{
loop = false;
}
}
SmallChangeSysApp.java 编写主类调用OOP类中的方法 ,即可完成零钱通的运行
package com.edu.smallchange.oop;
public class SmallChangeSysApp {
public static void main(String[] args) {
SmallChangeSysOOP smallChangeSysOOP = new SmallChangeSysOOP();
smallChangeSysOOP.mainMenu();
}
}

浙公网安备 33010602011771号