java-method 1
package com.edu.proj1;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Sys {
//1. 先完成显示菜单,并可以选择菜单,给出相应提示
//2. 完成零钱通明细
// 把收益和消费保存在数组 / 使用对象 / 使用String拼接
//3. 完成收益
//4. 完成消费
//5. 退出
public static void main(String[] args) {
//菜单最好用do while,因为菜单必须显示一次
//定义相关变量
boolean loop = true;
// new Scanner(System.in).var
Scanner scanner = new Scanner(System.in);
String key = "";
// 使用string拼接完成
String details = "-------零钱通明细-----------";
// 收益,增加的变量
double money = 0;
double balance = 0;
Date date = null; //表示当前日期,是一个class
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); //用于日期格式化
//消费,增加的变量
String note = "";
do{
System.out.println("\n=======零钱通菜单=======");
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.print("请选择(1-4)");
key = scanner.next(); //手动输入的string附给key
//使用switch 分支结构
switch (key){
case "1" :
System.out.println(details);
break;
case "2" :
System.out.println("收益金额:");
money = scanner.nextDouble(); //手动输入的数字附给Money
//money的值应该校验
// 找出不正确的金额,把不正确的break----避免不必要的分支
if(money <= 0){
System.out.println("收益金额需要大于0");
break;
}
balance += money;
//拼接收益信息到details
date = new 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");
break;
}
System.out.println("请输入消费的说明:");
note = scanner.next();
balance -= money;
date = new Date();
//拼接消费信息到details
details += "\n" + note + "\t-" + money + "\t" + sdf.format(date) + "\t余额" + balance;
break;
case "4" :
//定义一个变量,接收用户的输入
String choice = "";
//使用while+break
while(true){
System.out.println("确定要退出吗?y/n");
choice = scanner.next();
if("y".equals(choice) || "n".equals(choice)){
break;
}
}
//用户退出while循环后,再判断输入的是y or n
if(choice.equals("y")){
loop = false;
}
break;
default:
System.out.println("选择有误,请重选");
}
}while (loop);
System.out.println("------退出了零钱通-------");
}
}
oop版本
package com.edu.proj1.oop;
//该类是完成零钱通的各个功能的类---OOP
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
//将各个功能对应一个方法
public class Sys2 {
//属性
boolean loop = true;
Scanner scanner = new Scanner(System.in);
String key = "";
// 使用string拼接完成
String details = "-------零钱通明细-----------";
// 收益,增加的变量
double money = 0;
double balance = 0;
Date date = null; //表示当前日期,是一个class
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); //用于日期格式化
//消费,增加的变量
String note = "";
// 方法
public void mainMenu(){
do{
System.out.println("\n=======零钱通菜单=======");
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.print("请选择(1-4)");
key = scanner.next(); //手动输入的string附给key
//使用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);
System.out.println("------退出了零钱通-------");
}
public void detail(){
System.out.println(details);
}
public void income(){
System.out.println("收益金额:");
money = scanner.nextDouble(); //手动输入的数字附给Money
//money的值应该校验
// 找出不正确的金额,把不正确的break----避免不必要的分支
if(money <= 0){
System.out.println("收益金额需要大于0");
// break;
return; //退出方法,不再执行后面的代码
}
balance += money;
//拼接收益信息到details
date = new Date(); //获取当前的日期
details += "\n收益\t+" + money +"\t" + sdf.format(date) +"\t余额" + balance;
}
public void pay(){
money = scanner.nextDouble();
//范围的校验
if(money <= 0 || money > balance){
System.out.println("消费金额需要大于0");
return;
}
System.out.println("请输入消费的说明:");
note = scanner.next();
balance -= money;
date = new Date();
//拼接消费信息到details
details += "\n" + note + "\t-" + money + "\t" + sdf.format(date) + "\t余额" + balance;
}
public void exit(){
String choice = "";
//使用while+break
while(true){
System.out.println("确定要退出吗?y/n");
choice = scanner.next();
if("y".equals(choice) || "n".equals(choice)){
break;
}
}
//用户退出while循环后,再判断输入的是y or n
if(choice.equals("y")){
loop = false;
}
}
}
package com.edu.proj1.oop;
public class SysApp {
public static void main(String[] args) {
new Sys2().mainMenu();
}
}