/**
* 零钱通基础功能介绍:
* 可以完成收益入账,消费,查看明细,退出系统等功能
* <p>
* 功能改进:
* 1.用户退出时,要提示是否退出,输入正常才能退出
* 2.在收益入账和消费时,要合理,并给提示
* <p>
* 步骤:
* 1.完成菜单,并给出相应提示信息
* 2.零钱通明细
* 3.收益入账
* 4.消费
* 5.退出确认
*/
一.过程编程写法
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
/**
* 零钱通基础功能介绍:
* 可以完成收益入账,消费,查看明细,退出系统等功能
* <p>
* 功能改进:
* 1.用户退出时,要提示是否退出,输入正常才能退出
* 2.在收益入账和消费时,要合理,并给提示
* <p>
* 步骤:
* 1.完成菜单,并给出相应提示信息
* 2.零钱通明细
* 3.收益入账
* 4.消费
* 5.退出确认
*/
public class Controller {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
boolean loop = true;
String detail = "";//拼接信息
double balance = 0;//余额信息
double money;//金额
//格式化时间
Date data = new Date();
SimpleDateFormat simp = new SimpleDateFormat("yyyy-MM-dd HH:mm");
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)");
int sel = scanner.nextInt();
switch (sel) {
case 1://明细
System.out.println("------------零钱通明细-------------");
System.out.println(detail);
break;
case 2://入账
System.out.println("收益入账:");
money = scanner.nextDouble();
//加入判断
if (money <= 0) {
System.out.println("收入金额需要大于等于0");
break;
}
balance += money;
detail += "收益入账: +" + money + "\t" + simp.format(data) + "\t" + "余额: " + balance + "\n";
break;
case 3://消费
System.out.println("消费金额:");
money = scanner.nextDouble();
//加入判断
if (money <= 0 || money > balance) {
System.out.println("余额不足,无法消费");
break;
}
balance -= money;
System.out.println("消费处:");
String name = scanner.next();//商家名字
detail += name + ": -" + money + "\t" + simp.format(data) + "\t" + "余额: " + balance + "\n";
break;
case 4://退出
System.out.println("确定退出吗?(yes/no)");
String choose = scanner.next();
if (choose.equals("yes")) {
System.out.println("成功退出");
loop = false;
break;
} else if (choose.equals("no")) {
System.out.println("返回菜单页面");
break;
} else {
System.out.println("输入有误,返回菜单界面");
break;
}
default:
System.out.println("输入有误,请重新输入");
}
} while (loop);
}
}
结果展示
二.OOP编程写法
步骤:
1.建立一个App类,用于功能实现
2.建立一个Controller类,充当主函数
1.App类
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
/**
* 在该类实现各项功能
*/
public class App {
String detail = "";//拼接信息
double balance = 0;//余额信息
double money;//金额
//格式化时间
Date data = new Date();
SimpleDateFormat simp = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Scanner scanner = new Scanner(System.in);
//菜单
public int memu() {
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)");
int sel = scanner.nextInt();
return sel;
}
//账单明细
public void bill() {
System.out.println("------------零钱通明细-------------");
System.out.println(detail);
}
//收入
public void earn() {
System.out.println("收益入账:");
money = scanner.nextDouble();
//加入判断
if (money <= 0) {
System.out.println("收入金额需要大于等于0");
} else {
balance += money;
detail += "收益入账: +" + money + "\t" + simp.format(data) + "\t" + "余额: " + balance + "\n";
}
}
//消费
public void spend() {
System.out.println("消费金额:");
money = scanner.nextDouble();
//加入判断
if (money <= 0 || money > balance) {
System.out.println("余额不足,无法消费");
} else {
balance -= money;
System.out.println("消费处:");
String name = scanner.next();//商家名字
detail += name + ": -" + money + "\t" + simp.format(data) + "\t" + "余额: " + balance + "\n";
}
}
//退出
public boolean exit() {
System.out.println("确定退出吗?(yes/no)");
String choose = scanner.next();
//加入判断
if (choose.equals("yes") || choose.equals("no")) {
if (choose.equals("yes")) {
System.out.println("成功退出");
return false;
} else if (choose.equals("no")) {
System.out.println("返回菜单页面");
return true;
}
}
System.out.println("输入有误,返回菜单界面");
return true;
}
public void use() {
boolean loop = true;
int count;
do {
count = this.memu();
switch (count) {
case 1:
this.bill();
break;
case 2:
this.earn();
break;
case 3:
this.spend();
break;
case 4:
loop = this.exit();
break;
default:
System.out.println("输入有误,返回菜单");
break;
}
} while (loop);
}
}
2.Controller类
/**
* 零钱通OOP改进版
*/
public class Controller {
public static void main(String[] args) {
new App().use();
}
}