使用我们的java实现零钱通的功能:
===========零钱通菜单===========
1 零钱通明细
2 收益入账
3 消费
4 退出
请选择(1-4):1
===========零钱通明细============
===========零钱通菜单===========
1 零钱通明细
2 收益入账
3 消费
4 退出
请选择(1-4):2
收益入账金额:
100
===========零钱通菜单===========
1 零钱通明细
2 收益入账
3 消费
4 退出
请选择(1-4):3
消费金额:
50
消费方向:
吃饭
===========零钱通菜单===========
1 零钱通明细
2 收益入账
3 消费
4 退出
请选择(1-4):4
是否确定要退出零钱通(y(退出)或者是n(取消退出))
请输入:y
=========退出了零钱通项目=========
我们将实现上述所显示的各项功能:
1.零钱通菜单功能:
首先我们知道菜单栏里面有 1 零钱通明细 2 收益入账 3 消费 4 退出这四个选项,然后我们可以进行我们的选择,与此同时,当我们选择完成之后,会进入到我们所选的功能里面,当然我们知道当我们运行我们的程序之后,菜单栏就会出现,当我们体验完一个功能之后,也会再次跳转得到我们的菜单当中:
//定义一个开关,依此来使得菜单是否需要循环,还是需要退出
boolean loop = true;
int key = 0;
Scanner myscanner = new Scanner(System.in);
//使用do...while语句让菜单循环
do {
System.out.println("==========零钱通菜单==========");
System.out.println(" 1 零钱通明细 ");
System.out.println(" 2 收益入账 ");
System.out.println(" 3 消费 ");
System.out.println(" 4 退出 ");
System.out.print("请选择(1-4):");
//用一个变量来接收我们的选择
key = myscanner.nextInt();
//使用switch语句来判断我们的选择
switch(key) {
case 1:
System.out.println("零钱通明细");
break;
case 2:
System.out.println("收益入账");
break;
case 3:
System.out.println("消费");
break;
case 4:
System.out.println("退出");
loop = false;
break;
default:
System.out.println("输入有误,请输入(1-4),请重新输入:");
}
}while(loop);
System.out.println("退出零钱通程序...");
2.零钱通明细功能:
我们认为,零钱通明细的输出我们可以定义一个字符串,依此来输出我们的具体开销与收入
String details = "===========零钱通明细============\n";
case 1:
System.out.println(details);
break;
3.收益入账功能:
首先我们知道收益入账是我们的收入,我们需要一个变量来接收我们的收益,与此同时我们还需要一个变量来接收我们的总的余额,与此同时我们还需要一个时间,来记录收益时的时间,在这里我们需要注意,只有当输入的数值大于0才是正确的,
double money = 0;//收入与消费的金额
double balance = 0;//余额
//表示当前的日期,date是java.util.Date类型,表示日期
Date date = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm");
//可以用于日期格式化
case 2:
do {
System.out.println("请输入您的收入:");
money = myscanner.nextDouble();
if(money <= 0) {
System.out.println("请输入正确的收入:");
}
}while(money <= 0);
balance += money;
//获取时间
date = new Date();//获取当前日期
//拼接字符
details += "\n收益入账\t+"+money + "\t"+sdf.format(date) + " 余额:"+balance;
break;
4.消费功能:
对于消费功能我们需要一个变量知道我们的消费方向,与此同时也要对于消费的金额进行判断,要大于0,还有就是当我们的余额没有消费金额多,此消费是不能生效的。
//消费方向
String note = "";
case 3:
System.out.println("请输入您的消费金额:");
money = myscanner.nextDouble();
System.out.println("请输入消费动向:");
note = myscanner.next();
//判断我们账户的余额是否满足此消费
if(balance < money) {
System.out.println("账户余额不足,无法满足此消费。");
break;
}else if(money >= 0) { //判断是否money<0
System.out.println("您输入的金额不正确,请重新输入:");
break;
}
balance -= money;
//拼接消费支出到details
date = new Date();//获取当前日期
details += "\n"+note+"\t-"+money + "\t"+sdf.format(date) + " 余额:"+balance;
break;
5.退出功能:
在这里我们加入一个提问就是是不是真的需要退出
case 4:
String choice = "";
do {
System.out.println("是否需要退出该程序:(y(退出)或者是n(取消退出))");
System.out.print("请输入:");
choice = myscanner.next();
//进行判断
if(choice.equals("y")) {
loop = false;
}else if(choice.equals("n")) {
break;
}else {
System.out.println("输入有误,请重新输入:");
}
}while(!(choice.equals("y") || choice.equals("n")));
break;
这样我们的零钱通的各个功能就完成了
总体代码:
public class PocketMoneySystem {
public static void main(String[] args) {
//项目
//第一步:显示菜单,选择菜单,给出对应提示
//第二步:完成零钱通明细
//第三步:收益入账
//第四步:消费支出
//定义相关变量
boolean loop = true;
Scanner myscanner = new Scanner(System.in);
int key = 0;
//第二步:零钱通明细,使用字符串来拼接
String details = "===========零钱通明细============\n";
//第三步:收益入账
double money = 0;
double balance = 0;
//表示当前的日期,date是java.util.Date类型,表示日期
Date date = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm");//可以用于日期格式化
//第四步:消费支出
String note ="";
//第五步:退出的确定与规范
//收益入账money的校验
//消费支出money的校验
//菜单界面,初始化菜单界面,显示我们的菜单功能,并且可以选择我们的菜单功能
//使用do...while()循环,我们的菜单是需要循环的,不断的提供选择的,
//选择Scanner,用一个变量接收,使用switch语句进行判断执行哪个功能
do {
System.out.println("===========零钱通菜单===========");
System.out.println(" 1 零钱通明细 ");
System.out.println(" 2 收益入账 ");
System.out.println(" 3 消费 ");
System.out.println(" 4 退出 ");
System.out.print("请选择(1-4):");
key = myscanner.nextInt();
switch(key) {
case 1:
System.out.println(details);
break;
case 2:
do {
System.out.println("收益入账金额:");
money = myscanner.nextDouble();
//money要进行校验,是否正确
if(money <= 0 ) {
System.out.println("请输入正确的金额 需要大于0");
}
}while(money <= 0);
balance += money;
//拼接收益入账到details
date = new Date();//获取当前日期
details += "\n收益入账\t+"+money + "\t"+sdf.format(date) + " 余额:"+balance;
break;
case 3:
System.out.println("消费金额:");
money = myscanner.nextDouble();
//消费金额的校验
System.out.println("消费方向:");
note = myscanner.next();
if(balance < money) {
System.out.println("余额不足,无法消费此行为..");
break;
}else if(money <= 0) {
System.out.println("您的消费余额应该在0到"+balance+"之间"+"请重新输入:");
break;
}
balance -= money;
//拼接消费支出到details
date = new Date();//获取当前日期
details += "\n"+note+"\t-"+money + "\t"+sdf.format(date) + " 余额:"+balance;
break;
case 4:
String choice = "";
do {
System.out.println("是否确定要退出零钱通(y(退出)或者是n(取消退出))");
System.out.print("请输入:");
choice = myscanner.next();
if(choice.equals("y")) {
//选择退出的时候,我们改变整个控制菜单循环的变量,便可以退出
loop = false;
break;
}else if(choice.equals("n")){
break;
}else {
System.out.println("输入有误,请重新输入");
}
//进入循环的条件:当两个条件都为假的时候。取反才为真,才进入循环
}while(!(choice.equals("y") || choice.equals("n")));
break;
default:
System.out.println("您的选择有误,请重新选择输入...");
}
}while(loop);
System.out.println("=========退出了零钱通项目=========");
}
}
实现演示:
===========零钱通菜单===========
1 零钱通明细
2 收益入账
3 消费
4 退出
请选择(1-4):1
===========零钱通明细============
===========零钱通菜单===========
1 零钱通明细
2 收益入账
3 消费
4 退出
请选择(1-4):2
收益入账金额:
1000
===========零钱通菜单===========
1 零钱通明细
2 收益入账
3 消费
4 退出
请选择(1-4):3
消费金额:
-100
消费方向:
gg
您的消费余额应该在0到1000.0之间请重新输入:
===========零钱通菜单===========
1 零钱通明细
2 收益入账
3 消费
4 退出
请选择(1-4):1
===========零钱通明细============
收益入账 +1000.0 2024-06-29 09:35 余额:1000.0
===========零钱通菜单===========
1 零钱通明细
2 收益入账
3 消费
4 退出
请选择(1-4):3
消费金额:
1500
消费方向:
gg
余额不足,无法消费此行为..
===========零钱通菜单===========
1 零钱通明细
2 收益入账
3 消费
4 退出
请选择(1-4):1
===========零钱通明细============
收益入账 +1000.0 2024-06-29 09:35 余额:1000.0
===========零钱通菜单===========
1 零钱通明细
2 收益入账
3 消费
4 退出
请选择(1-4):3
消费金额:
500
消费方向:
gg
===========零钱通菜单===========
1 零钱通明细
2 收益入账
3 消费
4 退出
请选择(1-4):1
===========零钱通明细============
收益入账 +1000.0 2024-06-29 09:35 余额:1000.0
gg -500.0 2024-06-29 09:36 余额:500.0
===========零钱通菜单===========
1 零钱通明细
2 收益入账
3 消费
4 退出
请选择(1-4):4
是否确定要退出零钱通(y(退出)或者是n(取消退出))
请输入:b
输入有误,请重新输入
是否确定要退出零钱通(y(退出)或者是n(取消退出))
请输入:n
===========零钱通菜单===========
1 零钱通明细
2 收益入账
3 消费
4 退出
请选择(1-4):4
是否确定要退出零钱通(y(退出)或者是n(取消退出))
请输入:y
=========退出了零钱通项目=========
如有错误,还望指正。