零钱通实现的功能
一.面向过程实现程序public class SmallChangeSys {
//1.首先完成显示菜单,并可以选择菜单,给出对应提示
//2.完成零钱通明细:(1)可以把收益入账和消费,保存到数组 (2)可以使用对象 (3)简单的话使用String
//3.完成收益入账
//4.消费
//5.退出
//6.用户输入4退出时,给出提示“你确定要退出吗?” y/n,必须输入正确的y/n,否则循环输入指令,直到输入y或者n
//7.在收益入账和消费时,判断金额是否合理,并给出相应的提示
public static void main(String[] args) {
//定义相关变量
boolean loop = true;
Scanner scanner = new Scanner(System.in);
String key = "";
//2.完成零钱通明细
String details = "-------------零钱通明细---------------";
//3.完成收益入账
double money = 0;
double balance = 0;
Date date = null; //date是java.util.Date类型,表示日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//可以用于日期格式化
//4.消费
String note = "";
do {
System.out.println("\n===============零钱通菜单===============");
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" :
System.out.println(details);
break;
case "2" :
System.out.println("收益入账金额:");
money = scanner.nextDouble();
//先判断money符不符合条件,不符合的直接跳出循环
if (money <= 0){
System.out.println("收益入账金额需要大于0");
break;
}
balance += money;
//拼接收益入账信息
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("你的消费金额有误");
break;
}
System.out.println("消费说明:");
note = scanner.next();
balance -= money;
//拼接消费信息到detail
date = new Date();//获取当前的日期
details = "\n" + note + "\t-" + money + "\t" + sdf.format(date) + "\t" +balance;
break;
case "4" :
//(1) 定义一个变量choice,接收用户的输入
//(2) 使用while+break,来处理收到的输入是y或者n
//(3) 退出while后,在判断choice是y还是n,就决定是否可以退出
//(4) 建议一段代码完成一个功能,尽量不要混在一起
String choice = "";
while(true){
System.out.println("你确定要退出吗?y/n");
choice = scanner.next();
if ("y".equals(choice) || "n".equals(choice)){
break;
}
}
if ("y".equals(choice)){
loop = false;
}
break;
default:
System.out.println("选择有误,请重新选择 ");
}
}while(loop);
System.out.println("--------退出了零钱通项目----------");
}
}
二.面向对象实现程序
public class SmallChangeSysOOP {
boolean loop = true;
Scanner scanner = new Scanner(System.in);
String key = "";
//2.完成零钱通明细
String details = "-------------零钱通明细---------------";
//3.完成收益入账
double money = 0;
double balance = 0;
Date date = null; //date是java.util.Date类型,表示日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//可以用于日期格式化
//4.消费
String note = "";
//面向对象编程
//先完成显示菜单,并可以选择
public void mainMenu(){
do {
System.out.println("\n===============选择零钱通菜单===============");
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.detail();
break;
case "2" :
this.income();
break;
case "3" :
this.consume();
break;
case "4" :
this.exit();
break;
default:
System.out.println("选择有误,请重新选择 ");
}
}while(loop);
}
//完成零钱通明细
public void detail(){
System.out.println(details);
}
//完成收益入账
public void income(){
System.out.println("收益入账金额:");
money = scanner.nextDouble();
//先判断money符不符合条件,不符合的直接跳出循环
if (money <= 0){
System.out.println("收益入账金额需要大于0");
return;//退出方法,不再执行后边的代码
}
balance += money;
//拼接收益入账信息
date = new Date();//获取当前的日期
details += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t" +balance;
}
//完成消费
public void consume(){
System.out.println("消费金额:");
money = scanner.nextDouble();
if (money <= 0 || money > balance){
System.out.println("你的消费金额有误");
return;
}
System.out.println("消费说明:");
note = scanner.next();
balance -= money;
//拼接消费信息到detail
date = new Date();//获取当前的日期
details = "\n" + note + "\t-" + money + "\t" + sdf.format(date) + "\t" +balance;
}
//退出
public void exit(){
//(1) 定义一个变量choice,接收用户的输入
//(2) 使用while+break,来处理收到的输入是y或者n
//(3) 退出while后,在判断choice是y还是n,就决定是否可以退出
//(4) 建议一段代码完成一个功能,尽量不要混在一起
String choice = "";
while(true){
System.out.println("你确定要退出吗?y/n");
choice = scanner.next();
if ("y".equals(choice) || "n".equals(choice)){
break;
}
}
if ("y".equals(choice)){
loop = false;
}
return;
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)