java-零钱通介绍
   
java-零钱通菜单
   源码 package com.Start300.SmallChange;
import java.util.Scanner;
public class SmallChangeSys { //化繁为简 //1.先完成显示菜单 并可以选择 给吃对应提示 public static void main(String[] args) { //定义相应的变量 boolean loop = true; Scanner scanner = new Scanner(System.in); String key = “”; 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分支结构
switch (key) {
case "1"://输入1 则显示零钱通明细
System.out.println("1 零钱通明细");
break;
case "2"://输入1 则显示零钱通明细
System.out.println("2 收益入账");
break;
case "3"://输入1 则显示零钱通明细
System.out.println("3 消费");
break;
case "4"://输入1 则显示零钱通明细
System.out.println("4 退 出");
loop = false;
break;
default:
System.out.println("选择有误 请重新选择");
}
} while (loop);
System.out.println("———————————退出了零钱通————————————");
}
}
零钱通明细
   
零钱通收益
  源码 package com.Start300.SmallChange;
import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner;
public class SmallChangeSys { //化繁为简 //1.先完成显示菜单 并可以选择 给吃对应提示 //2.完成零钱通明细 //3.完成收益入账 public static void main(String[] args) { //定义相应的变量 boolean loop = true; Scanner scanner = new Scanner(System.in); String key = “”;
//2.完成零钱通明细 //(1)可以把收益入账和消费保存到数组 (2)可以使用对象 (3)简单的话可以使用String拼接 String details = “--------------零钱通明细----------------”;
//3.完成收益入账 完成功能驱动程序员增加新的变量和代码
//定义新的变量
double money = 0;
double balance = 0;//balance 余额
Date date = null;//date是java.util.Date类型,表示日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
//上面是用来日期格式化的 具体以后还会说到 这里只是了解即可
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.println("请选择(1-4)");
key = scanner.next();
//使用switch分支结构
switch (key) {
case "1":
System.out.println(details);
break;
case "2":
System.out.print("收益入账金额");
money = scanner.nextDouble();
//money 的值范围应该效验 一会在完善
balance += money;//这里因为是入账 所以是+
//拼接收益入账信息到details
date = new Date();//获取当前日期
//System.out.println(sdf.format(date));//用sdf格式化当前日期
details += "\n收益入账\t+" + money + "\t" + sdf.format(date)
+ "\t" + "余额" + balance;
break;
case "3":
System.out.println("3 消费");
break;
case "4":
System.out.println("4 退 出");
loop = false;
break;
default:
System.out.println("选择有误 请重新选择");
}
} while (loop);
System.out.println("———————————退出了零钱通————————————");
}
}
零钱通消费
  源码 package com.Start300.SmallChange;
import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner;
public class SmallChangeSys { //化繁为简 //1.先完成显示菜单 并可以选择 给吃对应提示 //2.完成零钱通明细 //3.完成收益入账 //4.消费 public static void main(String[] args) { //定义相应的变量 boolean loop = true; Scanner scanner = new Scanner(System.in); String key = “”;
//2.完成零钱通明细 //(1)可以把收益入账和消费保存到数组 (2)可以使用对象 (3)简单的话可以使用String拼接 String details = “--------------零钱通明细----------------”;
//3.完成收益入账 完成功能驱动程序员增加新的变量和代码
//定义新的变量
double money = 0;
double balance = 0;//balance 余额
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("\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分支结构
switch (key) {
case "1":
System.out.println(details);
break;
case "2":
System.out.print("收益入账金额");
money = scanner.nextDouble();
//money 的值范围应该效验 一会在完善
balance += money;//这里因为是入账 所以是+
//拼接收益入账信息到details
date = new Date();//获取当前日期
//System.out.println(sdf.format(date));//用sdf格式化当前日期
details += "\n收益入账\t+" + money + "\t" + sdf.format(date)
+ "\t" + "余额" + balance;
break;
case "3":
System.out.print("消费金额");
money = scanner.nextDouble();
//money 的值范围应该效验余额只有100 消费200肯定是不行的 一会在改善
System.out.print("消费说明:");
note = scanner.next();
balance -= money;
//拼接消费信息到details
date = new Date();//获取当前日期
details += "\n" + note + "\t-" + money + "\t" +
sdf.format(date) + "\t" + "余额" + balance;
break;
case "4":
System.out.println("4 退 出");
loop = false;
break;
default:
System.out.println("选择有误 请重新选择");
}
} while (loop);
System.out.println("———————————退出了零钱通————————————");
}
}
零钱通退出确认
   源码 package com.Start300.SmallChange;
import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner;
public class SmallChangeSys { //化繁为简 //1.先完成显示菜单 并可以选择 给吃对应提示 //2.完成零钱通明细 //3.完成收益入账 //4.消费 //5.退出 //6.用户输入4退出时 给出提示y/n public static void main(String[] args) { //定义相应的变量 boolean loop = true; Scanner scanner = new Scanner(System.in); String key = “”;
//2.完成零钱通明细 //(1)可以把收益入账和消费保存到数组 (2)可以使用对象 (3)简单的话可以使用String拼接 String details = “--------------零钱通明细----------------”;
//3.完成收益入账 完成功能驱动程序员增加新的变量和代码
//定义新的变量
double money = 0;
double balance = 0;//balance 余额
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("\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分支结构
switch (key) {
case "1":
System.out.println(details);
break;
case "2":
System.out.print("收益入账金额");
money = scanner.nextDouble();
//money 的值范围应该效验 一会在完善
balance += money;//这里因为是入账 所以是+
//拼接收益入账信息到details
date = new Date();//获取当前日期
//System.out.println(sdf.format(date));//用sdf格式化当前日期
details += "\n收益入账\t+" + money + "\t" + sdf.format(date)
+ "\t" + "余额" + balance;
break;
case "3":
System.out.print("消费金额");
money = scanner.nextDouble();
//money 的值范围应该效验 如果余额只有100 消费200肯定是不行的
System.out.print("消费说明:");
note = scanner.next();
balance -= money;
//拼接消费信息到details
date = new Date();//获取当前日期
details += "\n" + note + "\t-" + money + "\t" +
sdf.format(date) + "\t" + "余额" + balance;
break;
case "4":
//用户输入4退出时 给出提示"你确定要退出吗?y/n" 必须输入正确的y/n
//否则循环输入指令 知道输入y或者n
//思路分析
//(1)定义一个变量choice 接收用户的输入
//(2)使用while+break,来处理接收到的输入时y或者n
//(3)退出while后 在判断while是y还是n 就可以决定是否退出
//(4)建议一段代码 完成一个小功能 尽量不要混在一起
String choice = "";
while (true){//要求用户必须输入y/n 否则就一直循环
System.out.println("你确定要退出吗y/n");
choice = scanner.next();
if ("y".equals(choice)||"n".equals(choice)){
break;
}
}
//当用户退出while后 进行判断
if (choice.equals("y")){
loop = false;
}
break;
default:
System.out.println("选择有误 请重新选择");
}
} while (loop);
System.out.println("———————————退出了零钱通————————————");
}
}
零钱通金额效验
 在case “2”:和case “3”:里面加了些代码    源码 package com.Start300.SmallChange;
import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner;
public class SmallChangeSys { //化繁为简 //1.先完成显示菜单 并可以选择 给吃对应提示 //2.完成零钱通明细 //3.完成收益入账 //4.消费 //5.退出 //6.用户输入4退出时 给出提示y/n public static void main(String[] args) { //定义相应的变量 boolean loop = true; Scanner scanner = new Scanner(System.in); String key = “”;
//2.完成零钱通明细 //(1)可以把收益入账和消费保存到数组 (2)可以使用对象 (3)简单的话可以使用String拼接 String details = “--------------零钱通明细----------------”;
//3.完成收益入账 完成功能驱动程序员增加新的变量和代码
//定义新的变量
double money = 0;
double balance = 0;//balance 余额
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("\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分支结构
switch (key) {
case "1":
System.out.println(details);
break;
case "2":
System.out.print("收益入账金额");
money = scanner.nextDouble();
//money 的值范围应该效验 一会在完善
//编程思想 找出不正确的金额条件 然后给出提示 就直接break
if (money <= 0){
System.out.println("收益入账金额需要大于0");
break;
}
balance += money;//这里因为是入账 所以是+
//拼接收益入账信息到details
date = new Date();//获取当前日期
//System.out.println(sdf.format(date));//用sdf格式化当前日期
details += "\n收益入账\t+" + money + "\t" + sdf.format(date)
+ "\t" + "余额" + balance;
break;
case "3":
System.out.print("消费金额");
money = scanner.nextDouble();
//money 的值范围应该效验 如果余额只有100 消费200肯定是不行的
if (money <= 0 ||money > balance){
System.out.println("你的消费金额应该在0-"+balance);
break;
}
System.out.print("消费说明:");
note = scanner.next();
balance -= money;
//拼接消费信息到details
date = new Date();//获取当前日期
details += "\n" + note + "\t-" + money + "\t" +
sdf.format(date) + "\t" + "余额" + balance;
break;
case "4":
//用户输入4退出时 给出提示"你确定要退出吗?y/n" 必须输入正确的y/n
//否则循环输入指令 知道输入y或者n
//思路分析
//(1)定义一个变量choice 接收用户的输入
//(2)使用while+break,来处理接收到的输入时y或者n
//(3)退出while后 在判断while是y还是n 就可以决定是否退出
//(4)建议一段代码 完成一个小功能 尽量不要混在一起
String choice = "";
while (true){//要求用户必须输入y/n 否则就一直循环
System.out.println("你确定要退出吗y/n");
choice = scanner.next();
if ("y".equals(choice)||"n".equals(choice)){
break;
}
}
//当用户退出while后 进行判断
if (choice.equals("y")){
loop = false;
}
break;
default:
System.out.println("选择有误 请重新选择");
}
} while (loop);
System.out.println("———————————退出了零钱通————————————");
}
}
零钱通OOP版
    SmallChangeSysOOP类源码 package com.Start300.SmallChange.oop;
import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner;
/**
-
该类是完成零钱通的各个功能的类 -
使用OOP(面向对象编程) -
将各个功能对应一个方法 */ public class SmallChangeSysOOP { //属性 //定义相应的变量 boolean loop = true; Scanner scanner = new Scanner(System.in); String key = “”; //2.完成零钱通明细 //(1)可以把收益入账和消费保存到数组 (2)可以使用对象 (3)简单的话可以使用String拼接 String details = “--------------零钱通明细----------------”; //3.完成收益入账 完成功能驱动程序员增加新的变量和代码 //定义新的变量 double money = 0; double balance = 0;//balance 余额 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零钱通菜单(OOP)="); 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分支结构
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.print(“收益入账金额”); money = scanner.nextDouble(); //money 的值范围应该效验 一会在完善 //编程思想 找出不正确的金额条件 然后给出提示 就直接return if (money <= 0) { System.out.println(“收益入账金额需要大于0”); return;//退出方法 不在执行后面的代码 } balance += money;//这里因为是入账 所以是+ //拼接收益入账信息到details date = new Date();//获取当前日期 //System.out.println(sdf.format(date));//用sdf格式化当前日期 details += “\n收益入账\t+” + money + “\t” + sdf.format(date) + “\t” + “余额” + balance; } //消费 public void pay() { System.out.print(“消费金额”); money = scanner.nextDouble(); //money 的值范围应该效验 如果余额只有100 消费200肯定是不行的 if (money <= 0 || money > balance) { System.out.println(“你的消费金额应该在0-” + balance); return; } System.out.print(“消费说明:”); note = scanner.next(); balance -= money; //拼接消费信息到details date = new Date();//获取当前日期 details += “\n” + note + “\t-” + money + “\t” + sdf.format(date) + “\t” + “余额” + balance; } //退出 public void exit() { String choice = “”; while (true) {//要求用户必须输入y/n 否则就一直循环 System.out.println(“你确定要退出吗y/n”); choice = scanner.next(); if (“y”.equals(choice) || “n”.equals(choice)) { break; } } //当用户退出while后 进行判断 if (choice.equals(“y”)) { loop = false; } } } SmallChangeSysApp类源码 package com.Start300.SmallChange.oop;
/** *这里我们直接调用SmallChangeSysOOP对象 显示主菜单即可 */ public class SmallChangeSysApp { public static void main(String[] args) { new SmallChangeSysOOP().mainMenu(); } }
|