本文介紹了Java經典案例題供小白編程愛好者借鑒,因為我也是學習者,這是我的一點編程經驗和心得,如有錯誤,請指出,廢話不多說,開始步入正題,(ps:創作不易,有喜歡的小伙伴請點贊支持,謝謝啦!)
這里寫目錄標題
- 一、所需知識
- 二、需求及技術
- 三、代碼
- 1. 物體類:Account
- 2. 服務層:AccountService
- 3. 視圖層:AccountService
- 4. 測驗類:Test
- 5. 結果截圖
一、所需知識
此系統要求掌握知識點大致如下:
1、掌握控制臺專案的開發流程
2、了解專案所需的技術
3、熟悉專案需實作的功能
3、掌握專案登陸注冊的功能實作
4、掌握專案余額的功能實作
5、掌握專案存款轉賬的功能實作
6、掌握專案分層實作
二、需求及技術
需求: ATM系統是一個基于JAVA SE的控制臺版本的綜合專案,具有登錄、注冊、余額、存款、退出以及轉賬功能,
技術:- JAVA基礎 - 面向物件 - 分層
三、代碼
分析:分層:物體類層-Jopo -----服務層-service------視圖層-view-------測驗-test
通俗點說,就是創建三個包對應上面三個層,以下就是下面三個包的具體代碼
1. 物體類:Account
/*
賬戶物體類
*/
public class Account {
private String uname; //用戶名
private String pwd; //密碼
private int idcard; //卡號
private double blance; //余額
public Account() {
}
public Account(String uname, String pwd, int idcard, double blance) {
this.uname = uname;
this.pwd = pwd;
this.idcard = idcard;
this.blance = blance;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public int getIdcard() {
return idcard;
}
public void setIdcard(int idcard) {
this.idcard = idcard;
}
public double getBlance() {
return blance;
}
public void setBlance(double blance) {
this.blance = blance;
}
@Override
public String toString() {
return "Account{" +
"uname='" + uname + '\'' +
", pwd='" + pwd + '\'' +
", idcard=" + idcard +
", blance=" + blance +
'}';
}
@Override
public boolean equals(Object o) {
if (o instanceof Account){
if (((Account) o).getUname().equals(uname)){
return true;
}
return false;
}
return false;
}
@Override
public int hashCode() {
return 0;
}
}
2. 服務層:AccountService
import com.yb.item.jopo.Account;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Random;
/*
賬戶服務層、邏輯判斷
*/
public class AccountService {
private static Account account = new Account();
private static double b = 0;
//資料存盤
private static HashSet<Account> al = new HashSet<Account>();
//注冊
public static void register(Account accounts){
boolean rs = al.add(accounts);
if (rs){
System.out.println("注冊成功");
//生成一個隨機卡號
int card = createCard();
accounts.setIdcard(card);
account = accounts;
System.out.println(account);
}else{
System.out.println("注冊失敗");
}
}
//登錄
public static boolean login(Account account){
Iterator<Account> iterator = al.iterator();
while (iterator.hasNext()){
Account next = iterator.next();
if (account.getIdcard()==next.getIdcard()){
if (account.getPwd().equals(next.getPwd())){
System.out.println("登錄成功");
account=next;
b = next.getBlance();
System.out.println(next);
return true;
}else{
System.out.println("密碼錯誤...");
return false;
}
}
if (account.getIdcard()==next.getIdcard()){
System.out.println("卡號錯誤...");
return false;
}
}
return false;
}
//存款
public static void deposit(double money){
if (money>0){
b = account.getBlance()+money;
account.setBlance(b);
}else {
System.out.println("你這給我卡Bug呢!!");
}
}
//查詢余額
public static void CheckBalance(){
System.out.println("您的余額為:"+b);
}
//轉賬
public static void carryOver(int id,double money){
Iterator<Account> iterator = al.iterator();
while (iterator.hasNext()){
Account next = iterator.next();
if (next.getIdcard()==id){
if (money>account.getBlance()){
System.out.println("轉賬失敗...");
}else{
//自己的錢減少
b=account.getBlance()-money;
account.setBlance(b);
//他的錢變多
b = next.getBlance()+money;
next.setBlance(b);
}
System.out.println("您轉入的賬戶:"+next.getUname()+",余額為:"+next.getBlance());
//將賬戶重新賦值
b = next.getBlance();
}
}
System.out.println("您的賬戶余額為:"+account.getBlance());
}
//取款
public static void getMoney(double money){
if (account.getBlance()>=money&&money>0&&account.getBlance()>=0){
account.setBlance(account.getBlance()-money);
System.out.println("取款成功,當前余額為:"+account.getBlance());
}else {
System.out.println("取款失敗");
}
}
//自動生成銀行卡號
public static int createCard(){
Random random = new Random();
//可以追加判斷,如果重復生成,則重新生成一個隨機卡號
int num = random.nextInt(100000000)+999999999;
return num;
}
}
3. 視圖層:AccountService
import com.yb.item.jopo.Account;
import com.yb.item.service.AccountService;
import java.util.Scanner;
public class AccountView {
private static Scanner scanner = new Scanner(System.in);
private static AccountService as = new AccountService();
private static AccountView av = new AccountView();
//選單
public static void menu(String[] a){
System.out.println("--------------------------------------------------------------");
for (int i = 0; i <= a.length-1; i++) {
System.out.print((i+1)+","+a[i]+" ");
}
System.out.println();
System.out.println("--------------------------------------------------------------");
}
//獲取物件
public static void getUser(){
}
//首頁
public static void index(){
//new String[]{"注冊","登錄","存款","余額","轉賬","取款","退出"}
while (true) {
menu(new String[]{"注冊","登錄","退出"});
System.out.println("請輸入您的操作:");
int num = scanner.nextInt();
switch (num){
case 1:
//注冊
System.out.println("請輸入您的姓名:");
String username = scanner.next();
System.out.println("請輸入您的密碼:");
String password = scanner.next();
as.register(new Account(username,password,0,0));
break;
case 2:
//登錄
System.out.println("請輸入您的卡號:");
int id = scanner.nextInt();
System.out.println("請輸入您的密碼:");
String pwd = scanner.next();
boolean login = as.login(new Account("", pwd, id, 0));
while (login) {
menu(new String[]{"存款","余額","轉賬","取款","退出"});
System.out.println("請輸入您的操作:");
int i = scanner.nextInt();
switch (i) {
case 1:
//存款
System.out.println("請輸入要存的金額:");
double mon = scanner.nextDouble();
as.deposit(mon);
break;
case 2:
//查詢余額
as.CheckBalance();
break;
case 3:
//轉賬
System.out.println("請輸入要轉入賬戶:");
int id1 = scanner.nextInt();
System.out.println("請輸入要轉入的金額:");
double mon1 = scanner.nextDouble();
as.carryOver(id1,mon1);
break;
case 4:
//取款
System.out.println("請輸入您要取出的金額:");
double mon2 = scanner.nextDouble();
as.getMoney(mon2);
break;
case 5:
//退出
login=false;
}
}
continue;
case 3:
System.exit(0);
}
}
}
}
4. 測驗類:Test
public static void main(String[] args) {
av.index();
}
5. 結果截圖

以上就是這個ATM取款系統的的整體流程,有喜歡的朋友可以幫忙點個贊,謝謝!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/278828.html
標籤:其他
上一篇:docker鏡像制作(一)
