專案名為“零錢通”
細節參考:
【零基礎 快速學Java】韓順平 零基礎30天學會Java
基本版:
1 package project; 2 3 import java.text.SimpleDateFormat; 4 import java.util.Date; 5 import java.util.Scanner; 6 7 public class SmallChangeSys { 8 public static void main(String[] args) { 9 //1.零錢通選單 10 boolean loop = true; 11 Scanner scanner = new Scanner(System.in); 12 String key = ""; 13 //2.零錢通明細 14 String details = "==============零錢通明細=============="; 15 //3.收益入賬 16 double money = 0; 17 double balance = 0; 18 Date date = null; 19 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//用于日期格式化的 20 //4.零錢通消費 21 String note = ""; 22 //5.零錢通退出確認 23 String choice = ""; 24 //6.判斷金額入賬和消費時金額是否合理 25 26 do { 27 System.out.println("==============零錢通選單=============="); 28 System.out.println("\t\t\t1 零錢通明細"); 29 System.out.println("\t\t\t2 收益入賬"); 30 System.out.println("\t\t\t3 消費"); 31 System.out.println("\t\t\t4 退 出"); 32 33 System.out.println("請選擇1-4"); 34 key = scanner.next(); 35 36 //switch 控制 37 switch (key) { 38 case "1": 39 System.out.println(details); 40 break; 41 case "2": 42 System.out.println("收益入賬金額"); 43 money = scanner.nextDouble(); 44 //money范圍校驗 45 if (money <= 0) { 46 System.out.println("收益入賬金額范圍 需要 大于 0"); 47 break; 48 } 49 balance += money; 50 //拼接資訊到收益入賬 51 date = new Date();//獲取當前日期 52 details += "\n收益入賬\t+" + money + "\t" + sdf.format(date) + "\t" + balance; 53 break; 54 case "3": 55 System.out.println("3 消費"); 56 money = scanner.nextDouble(); 57 //money范圍校驗 58 if (money <= 0 || money > balance) { 59 if (money <= 0){ 60 System.out.println("您的消費金額應該 大于 0"); 61 break; 62 }else{ 63 System.out.println("消費不能透支余額!"); 64 break; 65 } 66 } 67 68 System.out.println("消費說明"); 69 note = scanner.next(); 70 balance -= money; 71 date = new Date();//獲取當前日期 72 details += "\n" + note + "\t-" + money + "\t" + sdf.format(date) + "\t" + balance; 73 break; 74 case "4": 75 System.out.println("4 退 出"); 76 77 while (true) { 78 System.out.println("你確定要退出嗎?y/n"); 79 choice = scanner.next(); 80 if ("y".equals(choice) || "n".equals(choice)) { 81 break; 82 } 83 84 } 85 //當用戶退出while后再判斷choice是y還是n,就可以決定是否退出 86 if ("y".equals(choice)) { 87 loop = false; 88 } 89 90 break; 91 default: 92 System.out.println("選擇有誤,請重新選擇"); 93 break; 94 } 95 } while (loop); 96 System.out.println("==============退出了零錢通專案=============="); 97 98 99 } 100 }
OOP版:
SmallChangeSysOOP:
1 package project; 2 3 import java.text.SimpleDateFormat; 4 import java.util.Date; 5 import java.util.Scanner; 6 7 /** 8 * 該類完成零錢通的各個功能 9 * 要求使用OOP(面向物件) 10 */ 11 public class SmallChangeSysOOP { 12 //屬性 13 //1.零錢通選單 14 boolean loop = true; 15 Scanner scanner = new Scanner(System.in); 16 String key = ""; 17 //2.零錢通明細 18 String details = "==============零錢通明細=============="; 19 //3.收益入賬 20 double money = 0; 21 double balance = 0; 22 Date date = null; 23 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//用于日期格式化的 24 //4.零錢通消費 25 String note = ""; 26 //5.零錢通退出確認 27 String choice = ""; 28 //6.判斷金額入賬和消費時金額是否合理 29 30 //完成零錢通選單 31 public void mainMenu(){ 32 do { 33 System.out.println("============零錢通選單(OOP)============"); 34 System.out.println("\t\t\t1 零錢通明細"); 35 System.out.println("\t\t\t2 收益入賬"); 36 System.out.println("\t\t\t3 消費"); 37 System.out.println("\t\t\t4 退 出"); 38 39 System.out.println("請選擇1-4"); 40 key = scanner.next(); 41 42 //switch 控制 43 switch (key) { 44 case "1": 45 this.detail(); 46 break; 47 case "2": 48 this.income(); 49 break; 50 case "3": 51 this.pay(); 52 break; 53 case "4": 54 this.exit(); 55 break; 56 default: 57 System.out.println("選擇有誤,請重新選擇"); 58 break; 59 } 60 } while (loop); 61 } 62 //完成零錢通明細 63 public void detail(){ 64 System.out.println(details); 65 } 66 //完成收益入賬 67 public void income(){ 68 System.out.println("收益入賬金額"); 69 money = scanner.nextDouble(); 70 //money范圍校驗 71 if (money <= 0) { 72 System.out.println("收益入賬金額范圍 需要 大于 0"); 73 return;//退出方法,不再執行后面的代碼 74 } 75 balance += money; 76 //拼接資訊到收益入賬 77 date = new Date();//獲取當前日期 78 details += "\n收益入賬\t+" + money + "\t" + sdf.format(date) + "\t" + balance; 79 } 80 //完成消費 81 public void pay(){ 82 System.out.println("3 消費"); 83 money = scanner.nextDouble(); 84 //money范圍校驗 85 if (money <= 0 || money > balance) { 86 if (money <= 0){ 87 System.out.println("您的消費金額應該 大于 0"); 88 return; 89 }else{ 90 System.out.println("消費不能透支余額!"); 91 return; 92 } 93 } 94 95 System.out.println("消費說明"); 96 note = scanner.next(); 97 balance -= money; 98 date = new Date();//獲取當前日期 99 details += "\n" + note + "\t-" + money + "\t" + sdf.format(date) + "\t" + balance; 100 } 101 //退出 102 public void exit(){ 103 System.out.println("4 退 出"); 104 105 while (true) { 106 System.out.println("你確定要退出嗎?y/n"); 107 choice = scanner.next(); 108 if ("y".equals(choice) || "n".equals(choice)) { 109 break; 110 } 111 112 } 113 //當用戶退出while后再判斷choice是y還是n,就可以決定是否退出 114 if ("y".equals(choice)) { 115 loop = false; 116 } 117 } 118 119 }
SmallChangeSysApp:
1 package project; 2 3 4 /** 5 * 直接呼叫SmallChangeSysOOP物件,顯示主選單 6 */ 7 public class SmallChangeSysApp { 8 public static void main(String[] args) { 9 new SmallChangeSysOOP().mainMenu(); 10 } 11 }
感謝韓老師精細的視頻講解,推薦新入行的小伙伴學習
鏈接:【零基礎 快速學Java】韓順平 零基礎30天學會Java_嗶哩嗶哩_bilibili
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/463444.html
標籤:Java
