简单介绍
创建一个简单的管理系统,帮助我们记录零钱的收入和支出,以及余额的变化。
编程思路
1.先完成显示菜单,并可以选择菜单,给出对应提示 2.完成零钱通明细 3.完成收益入账 4.消费 5.退出 6.进行退出确认 7.在收益入账和消费时,判断金额是否合理,并给出相应提示
难点以及解决方法
1.零钱通明细的改变
三种方法 (1)可以把收益入账和消费,保存到数组 (2)可以使用对象 (3)简单的话可以使用String拼接 这里选择第三种
String details = "-------零钱通明细-------";
details+="\n收益入账\t+"+money+"\t"+
sdf.format(date)+
"\t"+"余额:"+balance;
2.日期的格式化输出
(1)导入两个关于日期的包
import java.util.Date;
import java.util.SimpleTimeZone;
(2)使用Date和SimpleDateFormat类
Date date = null;
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");//可以用于日期格式化
3.退出确认
(1)定义一个变量choice,接受用户的输入 (2)使用while+break,来处理接收到的输入是y或者n (3)退出while后,再判断choice是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("y".equals(choice)){
loop = false;
}
运行截图
1.菜单界面
2.零钱通明细
3.收益入账
如果小于等于0,输出"收益入账金额 需要 大于 0"。
3.消费
如果金额小于等于0,或者大于余额,输出"你的消费金额应该在0-余额"。
完整代码
package com.llhstu.smallchange;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
import java.util.SimpleTimeZone;
public class SmallChangeSys {
/*化繁为简
1.先完成显示菜单,并可以选择菜单,给出对应提示
2.完成零钱通明细
3.完成收益入账
4.消费
5.退出
6.进行退出确认
7.在收益入账和消费时,判断金额是否合理,并给出相应提示
*/
public static void main(String[] args) {
//定义相关的变量
boolean loop = true;
Scanner scanner = new Scanner(System.in);
String key = "";
String details = "-------零钱通明细-------";
/*
三种方法
(1)可以把收益入账和消费,保存到数组
(2)可以使用对象
(3)简单的话可以使用String拼接
这里选择第三种
*/
double money = 0;
double balance = 0;
String name;
Date date = null;
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");//可以用于日期格式化
do {
System.out.println("\n=======零钱通菜单========");
System.out.println("\t1 零钱通明细");
System.out.println("\t2 收益入账");
System.out.println("\t3 消费");
System.out.println("\t4 退出");
System.out.print("请选择(1-4):");
key = scanner.next();
//使用switch分支控制
switch (key) {
case "1":
System.out.println(details);
break;
case "2":
System.out.print("收益入账金额:");
money = scanner.nextDouble();
//money的值应该校验
//找出不正确的金额条件,给出提示即可
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.print("消费项目:");
name = scanner.next();
System.out.print("消费金额:");
money = scanner.nextDouble();
//money的值应该校验
//找出不正确的情况
if(money<=0||money>balance){
System.out.println("你的消费金额应该在0-"+balance);
break;
}
balance-=money;
//拼接收益信息到details
date=new Date();
details+="\n消费"+name+"\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){//要求用户必须输入y/n,否则就一直循环
System.out.println("你确定要退出吗? y/n");
choice =scanner.next();
if("y".equals(choice)||"n".equals(choice)){
break;
}
}
//当用户退出while,进行判断
if("y".equals(choice)){
loop = false;
}
break;
default:
System.out.println("选择有误,请重复选择");
}
} while (loop);
System.out.println("已退出,感谢使用!");
}
}