java基础项目–零钱通
-
项目开发流程说明
-
项目需求说明
- 使用java开发零钱通项目,可以完成收益入账,消费,查看明细,退出系统等功能
- 项目的界面
-
项目代码实现改进
-
用户输入4退出时,给出提示“你确定要退出吗?y/n”,必须驶入正确的y/n,否则循环输入指令,知道输入y或者n
-
在收益入账和消费时,判断金额是否合理,并给出相应的提示
-
package com.lyn.b.object; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; /** * @author L.yn * @version 1.0 * @date 2021/12/23 20:28 */ public class SmallChangeSys { public static void main(String[] args) { /** * 化繁为简 * 一、先完成显示菜单,并可以根据选择菜单,给出对应提示 * 二、完成零钱通明细 * 1、把收益入账和消费,保存到数组 * 2、可以使用对象 * 3、可以使用String拼接 * 三、完成收益入账,完成功能驱动程序员增加新的变化和代码 * 1、定义新的变量 * 四、消费 * 1、定义新的变量,保存消费的原因 * 五、退出 * 1、用户输入4退出时,给出提示“你确定要退出吗?y/n”,必须输入正确的y/n,否则循环输入指令,直到输入y/n */ //定义相关的变量 boolean loop = true; String key = ""; String node = ""; String details = "========退出零钱通明细========"; double money = 0; double balance = 0; Date date = null;//表示日期 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");//用于日期格式化 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.退\t出"); System.out.println("请选择(1~4):"); key = new Scanner(System.in).nextLine(); //使用switch分支 switch (key) { case "1": System.out.println(details); break; case "2": System.out.println("收益入账金额"); money = new Scanner(System.in).nextDouble(); //找出不正确的金额条件,然后给出提示,就是直接break if (money <= 0) { System.out.println("收益金额范围需要大于0"); break; } //money的值范围应该校验 balance += money; //拼接入账信息到details date = new Date(); details += "\n收益入账\t" + money + "\t" + simpleDateFormat.format(date) + "\t余额" + balance; break; case "3": System.out.println("3.消费金额:"); money = new Scanner(System.in).nextDouble(); //找出金额不正确的情况 if (money < 0 || balance < money) { System.out.println("消费金额应该在0-" + balance + "之间"); break; } System.out.println("消费说明:"); node = new Scanner(System.in).nextLine(); balance -= money; date = new Date(); details += "\n" + node + "\t-" + money + "\t" + simpleDateFormat.format(date) + "\t余额" + balance; break; case "4": System.out.println("你确定要退出吗?y/n"); //定义变量choice String choice = ""; while (true) {//要求用户必须输入y/n,否则就一直循环 choice = new Scanner(System.in).nextLine(); if ("y".equals(choice) || "n".equals(choice)) { break; } System.out.println("必须输入正确的y/n"); } //退出while后在判断收到的是y还是n if ("y".equals(choice)) { loop = false; } break; default: System.out.println("菜单选择有误,请重新选择"); } } while (loop); System.out.println("========退出零钱通明细========"); } }
-
将面向过程的代码修改成面向对象的方法
-
package com.lyn.b.object; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; /** * 完成各个功能 * 一、先完成显示菜单,并可以根据选择菜单,给出对应提示 * 二、完成零钱通明细 * 1、把收益入账和消费,保存到数组 * 2、可以使用对象 * 3、可以使用String拼接 * 三、完成收益入账,完成功能驱动程序员增加新的变化和代码 * 1、定义新的变量 * 四、消费 * 1、定义新的变量,保存消费的原因 * 五、退出 * 1、用户输入4退出时,给出提示“你确定要退出吗?y/n”,必须输入正确的y/n,否则循环输入指令,直到输入y/n * * @author L.yn * @version 1.0 * @date 2021/12/23 21:15 */ public class SmallChangeSysOOP { //属性 //定义相关的变量 boolean loop = true; String key = ""; String node = ""; String details = "========退出零钱通明细========"; double money = 0; Scanner sc = new Scanner(System.in); double balance = 0; Date date = null;//表示日期 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");//用于日期格式化 //先完成显示菜单,并可以根据选择菜单,给出对应提示 public void mainMenu() { 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.退\t出"); System.out.println("请选择(1~4):"); key = sc.nextLine(); //使用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.println("收益入账金额"); money = sc.nextDouble(); //找出不正确的金额条件,然后给出提示,就是直接break if (money <= 0) { System.out.println("收益金额范围需要大于0"); return; } //money的值范围应该校验 balance += money; //拼接入账信息到details date = new Date(); details += "\n收益入账\t" + money + "\t" + simpleDateFormat.format(date) + "\t余额" + balance; } //消费 public void pay() { System.out.println("3.消费金额:"); money = sc.nextDouble(); //找出金额不正确的情况 if (money < 0 || balance < money) { System.out.println("消费金额应该在0-" + balance + "之间"); return; } System.out.println("消费说明:"); node = new Scanner(System.in).nextLine(); balance -= money; date = new Date(); details += "\n" + node + "\t-" + money + "\t" + simpleDateFormat.format(date) + "\t余额" + balance; } //退出 public void exit() { System.out.println("你确定要退出吗?y/n"); //定义变量choice String choice = ""; while (true) {//要求用户必须输入y/n,否则就一直循环 choice = sc.nextLine(); if ("y".equals(choice) || "n".equals(choice)) { break; } System.out.println("必须输入正确的y/n"); } //退出while后在判断收到的是y还是n if ("y".equals(choice)) { loop = false; } } } package com.lyn.b.object; /** * 创建SmallChangeSysOOP,调用相关方法,完成功能 * * @author L.yn * @version 1.0 * @date 2021/12/23 21:16 */ public class SmallChangeSysAPP { public static void main(String[] args) { new SmallChangeSysOOP().mainMenu(); } }
-
-