Java/java程序设计:编程零钱通SmallChangeSys小项目
- 一、前言
- 二、思路分析:
- 三、代码片段:
- 四、运行效果展示:
- 3.1 先输入 1 显示空的 零钱明细
- 3.2 输入 2 增加零钱余额 100元
- 3.3 输入 3 进行消费 先出入合理值 50 看电影
- 3.4 输入错误的消费 10000 检验代码健壮性
- 3.5 输入 4 加 n 否定退出
- 3.6 输入错误的菜单按钮,检验代码的健壮性
- 3.7 正确执行退出
- 五、写在最后
一、前言
题目如下图所示:
分析需求,按要求完成实现目标
二、思路分析:
化繁为简
1.先完成显示菜单,并可以选择菜单,给出相应提示;
2.完成零钱通明细;
3.完成收益入账
4.消费
5.退出
6.退出给出提示“是否确定退出,请输入(y/n)“,否则循环输入指令,直到正确输入y 或者 n
7.在收益入账和消费时,判断合理性,并给出相应的提示
三、代码片段:
package smallchange;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class SmallChangeSys {
// 化繁为简
// 1.先完成显示菜单,并可以选择菜单,,给出相应提示;
// 2.完成零钱通明细;
// 3.完成收益入账
// 4.消费
// 5.退出
// 6.退出给出提示“是否确定退出,请输入(y/n)“,否则循环输入指令,直到正确输入y 或者 n
// 7.在收益入账和消费时,判断合理性,并给出相应的提示
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 banlance = 0;
Date date = null; //date 是java.util.Date 类型, 表示日期
//可以用于日期格式化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//4.消费
//定义新变量,保存消费原因
String note = " ";
do{
System.out.println("\n=================零钱通菜单=================");
System.out.println("\t\t\t 1. 零钱通明细");
System.out.println("\t\t\t 2. 收益入账");
System.out.println("\t\t\t 3. 消费");
System.out.println("\t\t\t 4. 退 出");
System.out.print("请选择1~4:");
key = scanner.next();
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;
}
banlance += money;
//拼接收益入账信息到 details
date = new Date();//获取当前时间
details += "\n收益入账" + "\t+" + money + "\t" + sdf.format(date) + "\t" + "余额:" + banlance;
break;
case "3" :
System.out.print("消费金额:");
money = scanner.nextDouble();
if (money <= 0 || money > banlance){
System.out.println("你的消费金额应当在 ( 0 ~ " + banlance + ") ");
break;
}
System.out.print("消费明细:");
note = scanner.next();
banlance -= money;
date = new Date();//获取当前时间
details += "\n" + note +"\t-" + money + "\t" + sdf.format(date) + "\t" + "余额:" + banlance;
break;
case "4" :
//退出给出提示“是否确定退出,请输入(y/n)“,否则循环输入指令,直到正确输入y 或者 n
//(1)定义一个变量 choise ,接收输入y or n
//(2)小编这里再嵌套一个while + break
//(3)退出内层while后再判断是否决定退出
//注意:编程种最好按照一段代码一个功能所以分(2)、(3)步骤
String choise = " ";
while(true){
System.out.print("是否确定退出,请输入(y/n):");
choise = scanner.next();
if("y".equals(choise) || "n".equals(choise)){
break;
}
}
//当用户退出while,进行判断
if("y".equals(choise)){
loop = false;
}
break;
default:
System.out.println("菜单选择有误,请重新选择~ ");
}
}while(loop);
System.out.println("已退出零钱通~");
}
}
四、运行效果展示:
3.1 先输入 1 显示空的 零钱明细
3.2 输入 2 增加零钱余额 100元
3.3 输入 3 进行消费 先出入合理值 50 看电影
3.4 输入错误的消费 10000 检验代码健壮性
3.5 输入 4 加 n 否定退出
3.6 输入错误的菜单按钮,检验代码的健壮性
3.7 正确执行退出
五、写在最后
这个小项目呢,使用的方法并不高级,具体事项小编都交代在代码注释中了,干什么事不可一跃而就,要慢下来跟着敲一遍,才能更容易了解并掌握编程思想,加油同行人 ^ - ^
xiexie 阅读!欢迎复制源码 运行体验