Java----零錢通專案
專案要求:使用 Java 開發 零錢通專案 , 可以完成收益入賬,消費,查看明細,退出系統等功能,
1. 面向程序
1)首先是這樣一個選單界面

由于不管選擇什么,都需要至少執行一次,所以考慮do...while回圈結構,
boolean loop = true;
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.print("請選擇1-4:");
}while(loop);
System.out.println("=======退出零錢通=======");
使用switch選擇結構來實作選擇1-4的結果
int n = scanner1.nextInt();
//switch結構
switch (n) {
case 1:
System.out.println("1 零錢明細");
break;
case 2:
System.out.print("2 收益入賬");
break;
case 3:
System.out.print("3 消費");
break;
case 4:
System.out.println("4 退\t出");
loop = false;
break;
}
2)實作1 零錢明細功能

這里使用字串拼接,定義detail變數
String detail = "--------------零錢明細--------------";
//在上面case 1的情況下直接輸出detail
case 1:
System.out.println(detail);
System.out.println();
break;
3)實作2 收益入賬功能
這里需要定義兩個變數,一個是表示收益的money變數,另一個表示余額balance變數,
另外時間資訊需要呼叫包 import java.util.Date;
double money = 0.0;
double balance = 0.0;
Date date = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
//修改上面case 2的情況,得到detail
case 2:
System.out.print("收益入賬金額:");
money = scanner1.nextDouble();
//money需要校驗
if (money <= 0) {
System.out.println("收益入賬金額要大于0");
break;
}
balance += money;
date = new Date();
//System.out.println(sdf.format(date));
detail += "\n收益入賬\t" + money + "\t" + sdf.format(date) + "\t" + balance;
break;
4)實作3 消費功能
與收益入賬類似,
//修改上面case 3的情況,得到detail
case 3:
System.out.print("消費金額:");
money = scanner1.nextDouble();
System.out.print("消費說明:");
note = scanner1.next();
//需要校驗消費是否超出余額
if (money > balance) {
System.out.println("消費超出余額");
break;
}
balance -= money;
date = new Date();
detail += "\n" + note + "\t-" + money + "\t" + sdf.format(date) + "\t" + balance;
break;
5)實作4 退出功能

如果輸入結果不是y或n,將一直詢問,所以需要用一個回圈來實作,并且在回圈中判斷輸入字符,
//在case 4 中進行修改
case 4:
System.out.println("4 退\t出");
String choice = "";
while (true) {
System.out.println("你確定要退出嗎?y/n");
choice = scanner1.next();
if ("y".equals(choice) || "n".equals(choice)) {
break;
}
}
if ("y".equals(choice)) {
loop = false;
}
break;
此外如果輸入的數字不在1-4范圍內,需要提示錯誤資訊,故在switch中添加default情況,
default:
System.out.println("選擇有誤,請重新選擇");
2. 面向物件
將上述選單界面,4個功能都拆解成類的方法,相應的變數都定義為類的屬性,最后呼叫選單方法即可,把各個方法都封裝起來,極大地提高了代碼的復用性,便于維護,
package com.zixue.SmallChange.OOP;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
// 面向物件編程
public class SmallChangeSysOOP {
//1.顯示選單
boolean loop = true;
Scanner scanner1 = new Scanner(System.in);
//2.零錢通明細
String detail = "--------------零錢明細--------------";
//3.收益入賬
double money = 0;
double balance = 0.0;
Date date = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
//4. 消費
String note = null;
// 完成顯示選單
public void mainMenu() {
do {
System.out.println("==========請選擇零錢通(OOP)===========");
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.print("請選擇1-4:");
int n = scanner1.nextInt();
//switch結構
switch (n) {
case 1:
this.detail();
break;
case 2:
this.income();
break;
case 3:
this.consume();
break;
case 4:
this.exit();
break;
default:
System.out.println("選擇有誤,請重新選擇");
}
} while (loop);
}
// 完成零錢通明細
public void detail() {
System.out.println(detail);
System.out.println();
}
// 完成收益入賬
public void income(){
System.out.print("收益入賬金額:");
money = scanner1.nextDouble();
//money需要校驗
if (money <= 0) {
System.out.println("收益入賬金額要大于0");
return;
}
balance += money;
date = new Date();
//System.out.println(sdf.format(date));
detail += "\n收益入賬\t" + money + "\t" + sdf.format(date) + "\t" + balance;
}
// 完成消費
public void consume(){
System.out.print("消費金額:");
money = scanner1.nextDouble();
System.out.print("消費說明:");
note = scanner1.next();
if (money > balance) {
System.out.println("消費超出余額");
return;
}
balance -= money;
date = new Date();
detail += "\n" + note + "\t-" + money + "\t" + sdf.format(date) + "\t" + balance;
}
// 完成退出
public void exit(){
System.out.println("4 退\t出");
String choice = "";
while (true) {
System.out.println("你確定要退出嗎?y/n");
choice = scanner1.next();
if ("y".equals(choice) || "n".equals(choice)) {
break;
}
}
if ("y".equals(choice)) {
loop = false;
System.out.println("=======退出零錢通=======");
}
}
}
package com.zixue.SmallChange.OOP;
public class SmallChangeSysAPP {
public static void main(String[] args) {
new SmallChangeSysOOP().mainMenu();
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/491380.html
標籤:Java
