java-零钱通(项目)
Posted -深蓝。
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java-零钱通(项目)相关的知识,希望对你有一定的参考价值。
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();
}
}
以上是关于java-零钱通(项目)的主要内容,如果未能解决你的问题,请参考以下文章