写在前面:本次一个小测验技术范围非常浅,非常适用于像我这样小白的人练习,并深刻体会面向过程和面向对象最直观的区别。
1、面向过程代码实现:
package com.codetest.smallchange; //自动补全alt+/ 快捷注释ctrl+/ 删除行ctrl+d 复制行ctrl+alt+向下键 //导入需要的类alt+enter 快速格式化代码ctrl+alt+l 快速运行alt+r //生成构造器alt+insert 查看类的层次关系ctrl+h 快速定位方法ctrl+b //自动分配变量名 后面加.var //模板快捷键 soutm main import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; public class SmallChangeSys { public static void main(String[] args) { //定义循环判断变量 boolean loop = true; //定义选择变量 String choice = null; //1、先完成显示菜单,并能够选择 //2、完成零钱通明细 //定义零钱通明细变量,其实一开始是看不出来这个的,这是列出总的明细 //方法一:String拼接 String detail = "==========零钱通明细==========n"; //3、完成收益入账 //定义收益入账中的变量 double money = 0;//定义收益出入账的钱 double balance = 0;//定义余额 Date date = null;//定义日期 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//日期格式化 //4、消费 //定义支出原因变量 String note = null; Scanner scanner = new Scanner(System.in); System.out.println("==========零钱通菜单=========="); System.out.println("tt1 零钱通明细ntt2 收益入账ntt3 消费ntt4 退 t出"); do { System.out.print("请选择(1~4):"); choice = scanner.next(); switch (choice) { case "1": System.out.println(detail); break; case "2": System.out.print("收益入账:"); money = scanner.nextDouble();//接收记入的账单金额 //此处应该控制money范围 //思路:找出不正确的条件,然后给出提示,最后跳出 if (money < 0) { System.out.println("收益入账应该大于0元!"); break; } date = new Date(); balance += money; //这一步如果理解不了,就用debug一步一步调出来 detail += "收益入账t+" + money + "t" + sdf.format(date) + "t余额:" + balance + "n"; break; case "3": System.out.print("消费金额:"); money = scanner.nextDouble();//接收支出的账单金额 //此处应该控制money范围 if (money < 0 ||money>balance) { System.out.println("消费金额应该在0~"+balance+"之间!"); break; } date = new Date(); balance -= money; System.out.print("消费说明:"); note = scanner.next(); detail += note + "t-" + money + "t" + sdf.format(date) + "t余额:" + balance + "n"; break; case "4": //优化 //用户输出4时,给出提示"你确定要退出吗?y/n",要求必须输入y或n, //否则循环输入指令直到y和n // do{ // System.out.print("你确定要退出吗?y/n"); // //定义一个接收变量key接收指令 // char key=scanner.next().charAt(0); // if(key=='y'){ // break; // } // }while(true); //上面这段还可以优化 //首先判断输入的字符是否是y或是n //定义一个接收变量key接收指令 char key; while (true) { System.out.println("你确定要退出吗?y/n"); key = scanner.next().charAt(0); if (key == 'y' || key == 'n') { break; } } //然后做出y和n的功能分支 if (key == 'y') { System.out.println("退出程序...."); loop = false; } else { System.out.println("欢迎回来,请选择你需要选择的服务?"); } break; default: System.out.println("选择输入有误,请重新输入(1~4):"); } } while (loop); System.out.println("欢迎下次使用零钱通!"); } }
2、OOP面向对象
分析功能板块
SmallChangeSysOOP类
package com.codetest.smallchange.oop; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; public class SmallChangeSysOOP { Scanner scanner = new Scanner(System.in); //定义循环判断变量 boolean loop = true; //定义选择变量 String choice = null; //1、先完成显示菜单,并能够选择 //2、完成零钱通明细 //定义零钱通明细变量,其实一开始是看不出来这个的,这是列出总的明细 //方法一:String拼接 String detail = "==========零钱通明细==========n"; //3、完成收益入账 //定义收益入账中的变量 double money = 0;//定义收益出入账的钱 double balance = 0;//定义余额 Date date = null;//定义日期 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//日期格式化 //4、消费 //定义支出原因变量 String note = null; //1、先完成显示菜单,并能够选择 public void mainMenu(){ System.out.println("==========零钱通菜单(OOP)=========="); System.out.println("tt1 零钱通明细ntt2 收益入账ntt3 消费ntt4 退 t出"); do { System.out.print("请选择(1~4):"); choice = scanner.next(); switch (choice) { 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); } //2、完成零钱通明细 public void detail(){ System.out.println(detail); } //3、完成收益入账 public void income(){ System.out.print("收益入账:"); money = scanner.nextDouble();//接收记入的账单金额 //此处应该控制money范围 //思路:找出不正确的条件,然后给出提示,最后跳出 if (money < 0) { System.out.println("收益入账应该大于0元!"); return;//退出方法不再执行后面的代码 } date = new Date(); balance += money; //这一步如果理解不了,就用debug一步一步调出来 detail += "收益入账t+" + money + "t" + sdf.format(date) + "t余额:" + balance + "n"; } //4、消费 public void pay(){ System.out.print("消费金额:"); money = scanner.nextDouble();//接收支出的账单金额 //此处应该控制money范围 if (money < 0 || money > balance) { System.out.println("消费金额应该在0~"+balance+"之间!"); return; } date = new Date(); balance -= money; System.out.print("消费说明:"); note = scanner.next(); detail += note + "t-" + money + "t" + sdf.format(date) + "t余额:" + balance + "n"; } //5、退出 public void exit(){ char key; while (true) { System.out.println("你确定要退出吗?y/n"); key = scanner.next().charAt(0); if (key == 'y' || key == 'n') { break; } } //然后做出y和n的功能分支 if (key == 'y') { System.out.println("退出程序...."); loop = false; } else { System.out.println("欢迎回来,请选择你需要选择的服务?"); } } }
SmallChangeSysApp类
package com.codetest.smallchange.oop; public class SmallChangeSysApp { public static void main(String[] args) { SmallChangeSysOOP smallChangeSysOOP = new SmallChangeSysOOP(); smallChangeSysOOP.mainMenu(); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)