零钱通项目
1.菜单主界面
2.零钱通明细界面
选择“1”,查看零钱通明细,包含入账、消费、时间、余额
3.收益入账界面
(1)选择 输入“2”之后,再输入收益“200”。
(2)输入收益后,再选择“1”查看零钱通明细,显示入账收益金额,余额,时间。
4.零钱通消费
(1)选择3,进行消费,输入消费金额和说明。
(2)选择1,查看零钱通明细,可以看到消费记录,包含金额,时间,余额。
5.零钱通退出确认
选择4,输入y/n,输入y,则退出项目。输入n,则项目继续。
6.零钱通金额校验
(1)收益金额必须为正数,当输入不合法,给出提示。
(2)消费金额必须为正数且不能超过余额,否则给出提示。
7.零钱通代码与运行步骤(面向过程的代码版本)
方式1:新建一个项目(项目名称随便取),然后在项目的src文件下新建一个Hello.java类,然后将下面的代码直接复制粘贴进行就行。
方式2:新建一个项目(项目名称随便取),然后在项目的src文件下新建一个java类(类名称随便取),然后将下面代码复制粘贴进行,此时会报错,将第5行代码public class Hello中的Hello改为你所取的java类的名称即可。(原因是,公有类名称必须与.java文件的名称相同)。
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String key = ""; // 输入的数字选项
boolean loop = true; //判断菜单循环是否继续
//1.零钱通明细的相关变量
String details = "---------零钱通明细------------"; // 采用字符串拼接的方式记录零钱通明细的内容,details就是此字符串
//2.收益入账的相关变量
double money = 0; // 入账/消费金额
double balance = 0; //余额
Date date = null; //日期变量 date为java.util.Date类型的对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); // 变量目的:对日期格式进行调整
//3.消费的相关变量的添加
String note = ""; //消费信息的说明
//4.退出的相关变量
String quit = ""; //确认退出
do{
System.out.println("\n-----------零钱通菜单-----------");
System.out.println("1 零钱通明细" );
System.out.println("2 收益入账" );
System.out.println("3 消 费" );
System.out.println("4 退 出" );
System.out.print("请选择(1-4):");
key = sc.next(); // 输入的数字选项
switch(key){
case "1":
System.out.println(details);
break;
case "2":
System.out.print("输入收益:");
money = sc.nextDouble(); //收入保存在money中
if(money <= 0){
System.out.println("输入合理金额,收入必须大于0");
break;
}
balance += money; //余额 = 原来的余额 + 本次收入
date = new Date(); //获取当前日期
//对保存零钱通明细的字符串变量details进行拼接
details += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t" + "余额:" + balance;
break;
case "3":
System.out.print("输入消费金额:");
money = sc.nextDouble(); //消费金额保存在money中
if(money <= 0 || money > balance){
System.out.println("输入要在 0-" + balance);
break;
}
balance -= money; //余额 = 原来的余额 - 本次消费
System.out.print("输入消费说明:");
note = sc.next();
date = new Date(); //获取当前日期
//将消费记录拼接到details字符串
details += "\n"+ note + "\t-" + money + "\t" + sdf.format(date) + "\t" + "余额:" + balance;
break;
case "4":
while(true){
System.out.println("你确定要退出吗?y/n");
quit = sc.next();
if(quit.equals("y") || quit.equals("n")){
break;
}
}
if(quit.equals("y")){
loop = false;
}
break;
default:
System.out.println("请从1-4中进行选择,重新选择");
}
}while(loop);
System.out.println("-----零钱通项目结束------");
}
}
8.零钱通oop版(面向对象版)
创建两个不同类,一个Hello1.java类,用于完成零钱通的各个功能。Hello2.java类,用于创建对象,调用零钱通的各个功能。
Hello1.java类中的代码如下:
package test;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
/**
* 该类是完成零钱通的各个功能的类
* 使用OOP(面向对象编程)
* 将各个功能对应一个方法
*/
public class Hello1 {
Scanner sc = new Scanner(System.in);
String key = ""; // 输入的数字选项
boolean loop = true; //判断菜单循环是否继续
//1.零钱通明细的相关变量
String details = "---------零钱通明细(OOP面向对象版)------------"; // 采用字符串拼接的方式记录零钱通明细的内容,details就是此字符串
//2.收益入账的相关变量
double money = 0; // 入账/消费金额
double balance = 0; //余额
Date date = null; //日期变量 date为java.util.Date类型的对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); // 变量目的:对日期格式进行调整
//3.消费的相关变量的添加
String note = ""; //消费信息的说明
//4.退出的相关变量
String quit = ""; //确认退出
/*
以下为方法的实现
*/
//实现主菜单功能
public void mainMenu(){
do{
System.out.println("\n-----------零钱通菜单-----------");
System.out.println("1 零钱通明细" );
System.out.println("2 收益入账" );
System.out.println("3 消 费" );
System.out.println("4 退 出" );
System.out.print("请选择(1-4):");
key = sc.next(); // 输入的数字选项
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("请从1-4中进行选择,重新选择");
}
}while(loop);
}
//实现零钱通明细功能
public void detail(){
System.out.println(details);
}
//实现收益功能
public void income(){
System.out.print("输入收益:");
money = sc.nextDouble(); //收入保存在money中
if(money <= 0){
System.out.println("输入合理金额,收入必须大于0");
return;
}
balance += money; //余额 = 原来的余额 + 本次收入
date = new Date(); //获取当前日期
//对保存零钱通明细的字符串变量details进行拼接
details += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t" + "余额:" + balance;
}
//实现消费功能
public void pay(){
System.out.print("输入消费金额:");
money = sc.nextDouble(); //消费金额保存在money中
if(money <= 0 || money > balance){
System.out.println("输入要在 0-" + balance);
return;
}
balance -= money; //余额 = 原来的余额 - 本次消费
System.out.print("输入消费说明:");
note = sc.next();
date = new Date(); //获取当前日期
//将消费记录拼接到details字符串
details += "\n"+ note + "\t-" + money + "\t" + sdf.format(date) + "\t" + "余额:" + balance;
}
//实现退出功能
public void exit(){
while(true){
System.out.println("你确定要退出吗?y/n");
quit = sc.next();
if(quit.equals("y") || quit.equals("n")){
break;
}
}
if(quit.equals("y")){
loop = false;
}
}
}
Hello2.java中的代码如下:
package test;
/**
* 直接调用Hello1 对象,显示主菜单
*/
public class Hello2 {
public static void main(String[] args) {
new Hello1().mainMenu();
}
}