欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java自動(dòng)取款機(jī)ATM案例實(shí)現(xiàn)

 更新時(shí)間:2023年08月30日 09:03:24   作者:626960  
本文主要介紹了Java自動(dòng)取款機(jī)ATM案例實(shí)現(xiàn),整個(gè)過程可以分為三部分:登錄賬戶和執(zhí)行取款操作,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

用戶輸入密碼,如果密碼校驗(yàn)通過,就會(huì)進(jìn)入ATM機(jī)的主操作界面:有查詢、取款、存款、轉(zhuǎn)賬等業(yè)務(wù)功能。

1. 封裝數(shù)據(jù)

首先可以設(shè)計(jì)一個(gè)Account類,來描述賬戶對(duì)象需要封裝哪些數(shù)據(jù)。

public class Account {
    private String cardId; //卡號(hào)
    private String userName; //用戶名
    private char sex; //性別
    private String passWord;//密碼
    private double money; //余額
    private double limit; // 限額
    public String getCardId() {
        return cardId;
    }
    public void setCardId(String cardId) {
        this.cardId = cardId;
    }
    public String getUserName() {
        return userName + ( sex  == '男' ? "先生" : "女士");
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public char getSex() {
        return sex;
    }
    public void setSex(char sex) {
        this.sex = sex;
    }
    public String getPassWord() {
        return passWord;
    }
    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }
    public double getMoney() {
        return money;
    }
    public void setMoney(double money) {
        this.money = money;
    }
    public double getLimit() {
        return limit;
    }
    public void setLimit(double limit) {
        this.limit = limit;
    }
}

2. 歡迎界面

編寫一個(gè)ATM類,負(fù)責(zé)對(duì)每一個(gè)賬戶對(duì)象進(jìn)行管理,并編寫歡迎界面

public class ATM {
    //創(chuàng)建一個(gè)存儲(chǔ)賬戶對(duì)象的集合;后面每開一個(gè)賬戶,就往集合中添加一個(gè)賬戶對(duì)象
    private ArrayList<Account> accounts = new ArrayList<>(); 
    private Scanner sc = new Scanner(System.in);
    /**展示歡迎界面 */
    public void start(){
        while (true) {
            System.out.println("===歡迎您進(jìn)入到了ATM系統(tǒng)===");
            System.out.println("1、用戶登錄");
            System.out.println("2、用戶開戶");
            System.out.println("請(qǐng)選擇:");
            int command = sc.nextInt();
            switch (command){
                case 1:
                    // 用戶登錄
                    System.out.println("進(jìn)入登錄功能");
                    break;
                case 2:
                    // 用戶開戶
                   	System.out.println("進(jìn)入開戶功能");
                    break;
                default:
                    System.out.println("沒有該操作~~");
            }
        }
    }
}

3. 實(shí)現(xiàn)開戶功能

  • 創(chuàng)建一個(gè)賬戶對(duì)象,用于封裝用戶的開戶信息
  • 需要用戶輸入自己的開戶信息,賦值給賬戶對(duì)象
    • 輸入賬戶名,設(shè)置給賬戶對(duì)象
    • 輸入性別,如果性別是’男’或者’女’,將性別設(shè)置給賬戶對(duì)象;否則重新錄入性別知道錄入正確為止。
    • 輸入賬戶、并且輸入兩次密碼,只有兩次密碼相同,才將賬戶和密碼設(shè)置給賬戶對(duì)象。
    • 輸入提現(xiàn)限額,并且設(shè)置給賬戶對(duì)象
  • 輸出開戶成功,的提示語句。
private void createAccount(){
    System.out.println("==系統(tǒng)開戶操作==");
    // 1、創(chuàng)建一個(gè)賬戶對(duì)象,用于封裝用戶的開戶信息
    Account acc = new Account();
    // 2、需要用戶輸入自己的開戶信息,賦值給賬戶對(duì)象
    System.out.println("請(qǐng)您輸入您的賬戶名稱:");
    String name = sc.next();
    acc.setUserName(name);
    while (true) {
        System.out.println("請(qǐng)您輸入您的性別:");
        char sex = sc.next().charAt(0);
        if(sex == '男' || sex == '女'){
            acc.setSex(sex);
            break;
        }else {
            System.out.println("您輸入的性別有誤~只能是男或者女~");
        }
    }
    while (true) {
        System.out.println("請(qǐng)您輸入您的賬戶密碼:");
        String passWord  = sc.next();
        System.out.println("請(qǐng)您輸入您的確認(rèn)密碼:");
        String okPassWord  = sc.next();
        // 判斷2次密碼是否一樣。
        if(okPassWord.equals(passWord)){
            acc.setPassWord(okPassWord);
            break;
        }else {
            System.out.println("您輸入的2次密碼不一致,請(qǐng)您確認(rèn)~~");
        }
    }
    System.out.println("請(qǐng)您輸入您的取現(xiàn)額度:");
    double limit = sc.nextDouble();
    acc.setLimit(limit);
    // 3、把這個(gè)賬戶對(duì)象,存入到賬戶集合中去
    accounts.add(acc);
    System.out.println("恭喜您," + acc.getUserName() + "開戶成功,您的卡號(hào)是:" + acc.getCardId());
}

4. 生成卡號(hào)

  • 遍歷存儲(chǔ)Account對(duì)象的集合,得到每一個(gè)Account對(duì)象,獲取對(duì)象的卡號(hào)
  • 如果卡號(hào)存在,返回該卡號(hào)對(duì)應(yīng)的Account對(duì)象
  • 如果卡號(hào)不存在,返回null
private Account getAccountByCardId(String cardId){
    // 遍歷全部的賬戶對(duì)象
    for (int i = 0; i < accounts.size(); i++) {
        Account acc = accounts.get(i);
        // 判斷這個(gè)賬戶對(duì)象acc中的卡號(hào)是否是我們要找的卡號(hào)
        if(acc.getCardId().equals(cardId)){
            return acc;
        }
    }
    return null; // 查無此賬戶,這個(gè)卡號(hào)不存在的
}
  • 生成卡號(hào),先隨機(jī)產(chǎn)生8個(gè)[0,9]范圍內(nèi)的隨機(jī)數(shù),拼接成一個(gè)字符串
  • 然后再調(diào)用getAccountByCardId方法,判斷這個(gè)卡號(hào)字符串是否存在
  • 判斷生成的卡號(hào)是否存在
    • 如果生成的卡號(hào)不存在,說明生成的卡號(hào)是有效的,把卡號(hào)返回,
    • 如果生成的卡號(hào)存在,說明生成的卡號(hào)無效,循環(huán)繼續(xù)生產(chǎn)卡號(hào)。
private String createCardId(){
    while (true) {
        // 1、定義一個(gè)String類型的變量記住8位數(shù)字作為一個(gè)卡號(hào)
        String cardId = "";
        // 2、使用循環(huán),循環(huán)8次,每次產(chǎn)生一個(gè)隨機(jī)數(shù)給cardId連接起來
        Random r = new Random();
        for (int i = 0; i < 8; i++) {
            int data = r.nextInt(10); // 0 - 9
            cardId += data;
        }
        // 3、判斷cardId中記住的卡號(hào),是否與其他賬戶的卡號(hào)重復(fù)了,沒有重復(fù),才可以做為一個(gè)新卡號(hào)返回。
        Account acc = getAccountByCardId(cardId);
        if(acc == null){
            // 說明cardId沒有找到賬戶對(duì)象,因此cardId沒有與其他賬戶的卡號(hào)重復(fù),可以返回它做為一個(gè)新卡號(hào)
            return cardId;
        }
    }
}

5. 登錄功能

  • 判斷系統(tǒng)中是否存在賬戶對(duì)象,存在才能登錄,如果不存在,我們直接結(jié)束登錄操作
  • 輸入登錄的卡號(hào),并判斷卡號(hào)是否存在
  • 如果卡號(hào)不存在,直接給出提示
  • 如果卡號(hào)存在,接著輸入用戶密碼,并判斷密碼是否正確
  • 如果密碼也正確,則登錄成功,并且記錄當(dāng)前的登錄賬戶
private void login(){
    System.out.println("==系統(tǒng)登錄==");
    // 1、判斷系統(tǒng)中是否存在賬戶對(duì)象,存在才能登錄,如果不存在,我們直接結(jié)束登錄操作
    if(accounts.size() == 0){
        System.out.println("當(dāng)前系統(tǒng)中無任何賬戶,請(qǐng)先開戶再來登錄~~");
        return; 
    }
    // 2、系統(tǒng)中存在賬戶對(duì)象,可以開始進(jìn)行登錄操作了
    while (true) {
        System.out.println("請(qǐng)您輸入您的登錄卡號(hào):");
        String cardId = sc.next();
        // 3、判斷這個(gè)卡號(hào)是否存在???
        Account acc = getAccountByCardId(cardId);
        if(acc == null){
            System.out.println("您輸入的登錄卡號(hào)不存在,請(qǐng)確認(rèn)~~");
        }else {
            while (true) {
                System.out.println("請(qǐng)您輸入登錄密碼:");
                String passWord = sc.next();
                // 4、判斷密碼是否正確
                if(acc.getPassWord().equals(passWord)){
                    loginAcc = acc;
                    System.out.println("恭喜您," + acc.getUserName() + "成功登錄了系統(tǒng),您的卡號(hào)是:" + acc.getCardId());                
                    return;
                }else {
                    System.out.println("您輸入的密碼不正確,請(qǐng)確認(rèn)~~");
                }
            }
        }
    }
}

6. 展示用戶操作界面

private void showUserCommand(){
    while (true) {
        System.out.println(loginAcc.getUserName() + "您可以選擇如下功能進(jìn)行賬戶的處理====");
        System.out.println("1、查詢賬戶");
        System.out.println("2、存款");
        System.out.println("3、取款");
        System.out.println("4、轉(zhuǎn)賬");
        System.out.println("5、密碼修改");
        System.out.println("6、退出");
        System.out.println("7、注銷當(dāng)前賬戶");
        System.out.println("請(qǐng)選擇:");
        int command = sc.nextInt();
        switch (command){
            case 1:
                //TODO 查詢當(dāng)前賬戶
                break;
            case 2:
                //TODO 存款
                break;
            case 3:
                //TODO取款
                break;
            case 4:
                //TOD 轉(zhuǎn)賬
                break;
            case 5:
                //TODO 密碼修改
                return;// 跳出并結(jié)束當(dāng)前方法
            case 6:
                //TODO 退出
                System.out.println(loginAcc.getUserName() + "您退出系統(tǒng)成功!");
                return; // 跳出并結(jié)束當(dāng)前方法
            case 7:
                // 注銷當(dāng)前登錄的賬戶
                if(deleteAccount()){
                    // 銷戶成功了,回到歡迎界面
                    return;
                }
                break;
            default:
                System.out.println("您當(dāng)前選擇的操作是不存在的,請(qǐng)確認(rèn)~~");
        }
    }
}

7. 查詢賬戶

private void showLoginAccount(){
    System.out.println("==當(dāng)前您的賬戶信息如下:==");
    System.out.println("卡號(hào):" + loginAcc.getCardId());
    System.out.println("戶主:" + loginAcc.getUserName());
    System.out.println("性別:" + loginAcc.getSex());
    System.out.println("余額:" + loginAcc.getMoney());
    System.out.println("每次取現(xiàn)額度:" + loginAcc.getLimit());
}

8. 存款

  • 鍵盤錄入要存入的金額
  • 在原有余額的基礎(chǔ)上,加上存入金額,得到新的余額
  • 再將新的余額設(shè)置給當(dāng)前賬戶對(duì)象
private void depositMoney() {
    System.out.println("==存錢操作==");
    System.out.println("請(qǐng)您輸入存款金額:");
    double money = sc.nextDouble();
    // 更新當(dāng)前登錄的賬戶的余額。
    loginAcc.setMoney(loginAcc.getMoney() + money);
    System.out.println("恭喜您,您存錢:" + money + "成功,存錢后余額是:" + loginAcc.getMoney());
}

9. 取款

  • 判斷賬戶余額是否達(dá)到了100元,如果不夠100元,就不讓用戶取錢了

  • 讓用戶輸入取款金額

  • 判斷賬戶余額是否足夠

    • 如果余額足夠, 繼續(xù)判斷當(dāng)前取款金額是否超過了每次限額

      • 如果超過限額,提示“每次只能取xxx限額的錢”

      • 如果不超過限額,則在當(dāng)前余額上減去取錢的金額,得到新的余額

      • 并將新的余額設(shè)置給賬戶對(duì)象。

    • 如果余額不足,提示“你的余額不足,你的賬戶余額是xxx元”

private void drawMoney() {
    System.out.println("==取錢操作==");
    // 1、判斷賬戶余額是否達(dá)到了100元,如果不夠100元,就不讓用戶取錢了
    if(loginAcc.getMoney() < 100){
        System.out.println("您的賬戶余額不足100元,不允許取錢~~");
        return;
    }
    // 2、讓用戶輸入取款金額
    while (true) {
        System.out.println("請(qǐng)您輸入取款金額:");
        double money = sc.nextDouble();
        // 3、判斷賬戶余額是否足夠
        if(loginAcc.getMoney() >= money){
            // 賬戶中的余額是足夠的
            // 4、判斷當(dāng)前取款金額是否超過了每次限額
            if(money > loginAcc.getLimit()){
                System.out.println("您當(dāng)前取款金額超過了每次限額,您每次最多可?。? + loginAcc.getLimit());
            }else {
                // 代表可以開始取錢了。更新當(dāng)前賬戶的余額即可
                loginAcc.setMoney(loginAcc.getMoney() - money);
                System.out.println("您取款:" + money + "成功,取款后您剩余:" + loginAcc.getMoney());
                break;
            }
        }else {
            System.out.println("余額不足,您的賬戶中的余額是:" + loginAcc.getMoney());
        }
    }
}

10. 轉(zhuǎn)賬

  • 判斷系統(tǒng)中是否存在其他賬戶
  • 判斷自己的賬戶中是否有錢
  • 真正開始轉(zhuǎn)賬了,輸入對(duì)方卡號(hào)
  • 判斷對(duì)方卡號(hào)是否正確???
  • 如果卡號(hào)正確,就繼續(xù)讓用戶輸入姓氏, 并判斷這個(gè)姓氏是否正確?
  • 如果姓氏正確,繼續(xù)判斷這個(gè)轉(zhuǎn)賬金額是否超過自己的余額。
  • 果對(duì)方卡號(hào)存在、姓氏匹配、余額足夠,就完成真正的轉(zhuǎn)賬操作
private void transferMoney() {
    System.out.println("==用戶轉(zhuǎn)賬==");
    // 1、判斷系統(tǒng)中是否存在其他賬戶。
    if(accounts.size() < 2){
        System.out.println("當(dāng)前系統(tǒng)中只有你一個(gè)賬戶,無法為其他賬戶轉(zhuǎn)賬~~");
        return;
    }
    // 2、判斷自己的賬戶中是否有錢
    if(loginAcc.getMoney() == 0){
        System.out.println("您自己都沒錢,就別轉(zhuǎn)了~~");
        return;
    }
    while (true) {
        // 3、真正開始轉(zhuǎn)賬了
        System.out.println("請(qǐng)您輸入對(duì)方的卡號(hào):");
        String cardId = sc.next();
        // 4、判斷這個(gè)卡號(hào)是否正確?。??
        Account acc = getAccountByCardId(cardId);
        if(acc == null){
            System.out.println("您輸入的對(duì)方的卡號(hào)不存在~~");
        }else {
            // 對(duì)方的賬戶存在,繼續(xù)讓用戶認(rèn)證姓氏。
            String name = "*" + acc.getUserName().substring(1); // * + 馬劉德華
            System.out.println("請(qǐng)您輸入【" + name + "】的姓氏:");
            String preName = sc.next();
            // 5、判斷這個(gè)姓氏是否正確啊
            if(acc.getUserName().startsWith(preName)) {
                while (true) {
                    // 認(rèn)證通過了:真正轉(zhuǎn)賬了
                    System.out.println("請(qǐng)您輸入轉(zhuǎn)賬給對(duì)方的金額:");
                    double money = sc.nextDouble();
                    // 6、判斷這個(gè)金額是否沒有超過自己的余額。
                    if(loginAcc.getMoney() >= money){
                        // 7、轉(zhuǎn)給對(duì)方了
                        // 更新自己的賬戶余額
                        loginAcc.setMoney(loginAcc.getMoney() - money);
                        // 更新對(duì)方的賬戶余額
                        acc.setMoney(acc.getMoney() + money);
                        System.out.println("您轉(zhuǎn)賬成功了~~~");
                        return; // 跳出轉(zhuǎn)賬方法。。
                    }else {
                        System.out.println("您余額不足,無法給對(duì)方轉(zhuǎn)這么多錢,最多可轉(zhuǎn):" + loginAcc.getMoney());
                    }
                }
            }else {
                System.out.println("對(duì)不起,您認(rèn)證的姓氏有問題~~");
            }
        }
    }
}

11. 修改密碼

  • 提醒用戶輸入當(dāng)前密碼
  • 認(rèn)證當(dāng)前密碼是否正確
  • 如果認(rèn)證密碼正確,開始修改密碼,修改密碼時(shí)需要用戶輸入2次新密碼
  • 判斷2次 密碼是否一致
private void updatePassWord() {
    System.out.println("==賬戶密碼修改操作==");
    while (true) {
        // 1、提醒用戶認(rèn)證當(dāng)前密碼
        System.out.println("請(qǐng)您輸入當(dāng)前賬戶的密碼:");
        String passWord = sc.next();
        // 2、認(rèn)證當(dāng)前密碼是否正確啊
        if(loginAcc.getPassWord().equals(passWord)){
            while (true) {
                // 3、真正開始修改密碼了
                System.out.println("請(qǐng)您輸入新密碼:");
                String newPassWord = sc.next();
                System.out.println("請(qǐng)您再次輸入密碼:");
                String okPassWord = sc.next();
                // 4、判斷2次 密碼是否一致
                if(okPassWord.equals(newPassWord)){
                    // 可以真正開始修改密碼了
                    loginAcc.setPassWord(okPassWord);
                    System.out.println("恭喜您,您的密碼修改成功~~~");
                    return;
                }else {
                    System.out.println("您輸入的2次密碼不一致~~");
                }
            }
        }else {
            System.out.println("您當(dāng)前輸入的密碼不正確~~");
        }
    }
}

12. 注銷

  • 先確認(rèn)是否需要注銷賬戶,讓用戶輸入y或者n
  • 輸入y后,繼續(xù)判斷當(dāng)前用戶的賬戶是否有錢
private boolean deleteAccount() {
    System.out.println("==進(jìn)行銷戶操作==");
    // 1、問問用戶是否確定要銷戶
    System.out.println("請(qǐng)問您確認(rèn)銷戶嗎?y/n");
    String command = sc.next();
    switch (command) {
        case "y":
            // 確實(shí)要銷戶
            // 2、判斷用戶的賬戶中是否有錢:loginAcc
            if(loginAcc.getMoney() == 0) {
                // 銷戶
                accounts.remove(loginAcc);
                System.out.println("您好,您的賬戶已經(jīng)成功銷戶~~");
                return true;
            }else {
                System.out.println("對(duì)不起,您的賬戶中存錢金額,不允許銷戶~~");
                return false;
            }
        default:
            System.out.println("好的,您的賬戶保留??!");
            return false;
    }
}

到此這篇關(guān)于Java自動(dòng)取款機(jī)ATM案例實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Java自動(dòng)取款機(jī)ATM內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java解決同時(shí)出庫(kù)入庫(kù)訂單號(hào)自動(dòng)獲取問題解決

    Java解決同時(shí)出庫(kù)入庫(kù)訂單號(hào)自動(dòng)獲取問題解決

    在Java中,處理多線程環(huán)境下的訂單號(hào)生成問題可以采用多種策略,如使用AtomicLong保證線程安全,通過定義訂單號(hào)生成器并利用線程模擬出庫(kù)和入庫(kù)操作,每個(gè)線程從訂單號(hào)生成器中獲取唯一訂單號(hào),感興趣的朋友一起看看吧
    2024-09-09
  • 理解zookeeper選舉機(jī)制

    理解zookeeper選舉機(jī)制

    本文主要介紹了zookeeper選舉機(jī)制的相關(guān)知識(shí),具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • Java Web項(xiàng)目中使用Socket通信多線程、長(zhǎng)連接的方法

    Java Web項(xiàng)目中使用Socket通信多線程、長(zhǎng)連接的方法

    很多時(shí)候在javaweb項(xiàng)目中我們需要用到Socket通信來實(shí)現(xiàn)功能,在web中使用Socket我們需要建立一個(gè)監(jiān)聽程序,在程序啟動(dòng)時(shí),啟動(dòng)socket監(jiān)聽。接下來通過本文給大家介紹Java Web項(xiàng)目中使用Socket通信多線程、長(zhǎng)連接的方法,感興趣的朋友一起學(xué)習(xí)
    2016-04-04
  • 簡(jiǎn)單學(xué)習(xí)Java抽象類要點(diǎn)及實(shí)例

    簡(jiǎn)單學(xué)習(xí)Java抽象類要點(diǎn)及實(shí)例

    這篇文章主要介紹了Java抽象類要點(diǎn)及實(shí)例,有需要的朋友可以參考一下
    2014-01-01
  • MyBatis-Plus 查詢指定字段的實(shí)現(xiàn)

    MyBatis-Plus 查詢指定字段的實(shí)現(xiàn)

    這篇文章主要介紹了MyBatis-Plus 查詢指定字段的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • spring boot使用RabbitMQ實(shí)現(xiàn)topic 主題

    spring boot使用RabbitMQ實(shí)現(xiàn)topic 主題

    本篇文章主要介紹了spring boot使用RabbitMQ實(shí)現(xiàn)topic 主題,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • 一段代碼搞懂關(guān)于Java中List、Set集合及Map的使用

    一段代碼搞懂關(guān)于Java中List、Set集合及Map的使用

    這篇文章主要介紹了關(guān)于Java中List、Set集合及Map的使用及l(fā)ist,set和map三者的區(qū)別介紹,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-08-08
  • SpringBoot整合Tomcat連接池的使用

    SpringBoot整合Tomcat連接池的使用

    這篇文章主要介紹了SpringBoot整合Tomcat連接池的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 關(guān)于stream().sorted()以及java中常用的比較器排序

    關(guān)于stream().sorted()以及java中常用的比較器排序

    這篇文章主要介紹了關(guān)于stream().sorted()以及java中常用的比較器排序,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java 集合實(shí)現(xiàn)分頁的方法(業(yè)務(wù)代碼實(shí)現(xiàn)分頁)

    Java 集合實(shí)現(xiàn)分頁的方法(業(yè)務(wù)代碼實(shí)現(xiàn)分頁)

    在Java開發(fā)中,有些場(chǎng)景比較復(fù)雜,受限制,不好在sql查詢層面實(shí)現(xiàn)分頁,需要在查詢的list結(jié)果后,將list分頁返回,如何實(shí)現(xiàn)呢,帶著這個(gè)問題一起通過本文學(xué)習(xí)吧
    2025-02-02

最新評(píng)論