【java】信用卡账户的设计与实现

【案例介绍】

  1. 任务描述
    设计实现一个统一透支限额的信用卡账户类(CreditCard)和一个用于测试的演示类 (CreditCardDemo)。在演示类中创建信用卡对象进行测试。
    信用卡与普通银行账户的最大区别是允许透支。如果用户取款时,如果 (取款金额
    ⩽账户余额+透支限额),则可以正常取款,否则取款失败。
    在这里为了避免把问题弄的复杂,我们要求实现一个简单的信用卡账户类,账户有
    姓名、余额(可正可负,负数如-1000 表示已经透支了 1000 元)和最大透支限额(⩾0)
    信息。
    要求这两个类都放在 cn.edu.gpnu.bank 包中。

【案例目标】
 学会分析“信用卡账户的设计与实现”任务实现的逻辑思路。
 能够独立完成“信用卡账户的设计与实现”程序的源代码编写、编译以及运行。
 掌握静态属性、静态方法的编写与使用。  掌握 Java 中的构造方法、setter 方法、getter 方法的知识点。
【案例思路】
根据任务描述和运行图,我们可以确定信用卡账户类的属性和方法。
在这里插入图片描述
【运行代码】

1. CreditCard 类

package practice.bank;

public class CreditCard {
    public String name;
    public double balance;
    public double amount;
    static double maxOverdraft;

    public CreditCard(String name, double balance, double amount) {
        this.name = name;
        this.balance = balance;
        this.amount = amount;
    }

    public CreditCard() {

    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        this.balance = balance;
    }

    public double getAmount() {
        return amount;
    }

    public void setAmount(double amount) {
        this.amount = amount;
    }

    static {
        maxOverdraft=3000;
    }

    public void deposit(double amount) {
        balance = amount;
    }

    public boolean withdraw(double amount) {
        if (amount <= balance + maxOverdraft) {
            System.out.println("取出" + amount + "元" + "成功!");
            System.out.println("账户信息" + "姓名:" + this.name+
                    ",余额:" + this.balance+ ",最大透支额:" + maxOverdraft);
            return true;
        }
            else{
                System.out.println("余额不足,取款"+amount+"元"+"失败!");
                return  false;
            }
    }

    public String info() {
        return"账户信息"+"姓名" + this.name +
                ", 余额" + this.balance+
                ", 最大透支额" + maxOverdraft;
    }
}

2.CreditCardDemo类

package practice.bank;

public class CreditCardDemo {
    public static void main(String[] args){

        CreditCard creditCard = new CreditCard();
        creditCard.setName("张三");
        System.out.println(creditCard.info());

        System.out.println("**测试1:从信用卡取出5000元。");
        creditCard.withdraw(5000);

        System.out.println("**测试2:往信用卡存2000元。");
        creditCard.deposit(2000);
        System.out.println(creditCard.info());

        System.out.println("**测试3:再从信用卡取出5000元。");
        creditCard.withdraw(5000);

    }
}

【运行结果】
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
抱歉,作为AI语言模型,我无法提供完整的Java程序,但是我可以提供一些思路和可能会用到的Java代码片段。 1. 设计一个CreditCard类,包含以下属性:卡号、过期日期、持卡人姓名、信用额度、剩余额度等。可以使用以下代码片段创建CreditCard类: public class CreditCard { private String cardNumber; private String expirationDate; private String cardHolderName; private double creditLimit; private double remainingCredit; // 构造方法 public CreditCard(String cardNumber, String expirationDate, String cardHolderName, double creditLimit) { this.cardNumber = cardNumber; this.expirationDate = expirationDate; this.cardHolderName = cardHolderName; this.creditLimit = creditLimit; this.remainingCredit = creditLimit; } // getter 和 setter 方法 // ... } 2. 创建一个CreditCardDAO类,用于从数据库中获取信用卡信息。可以使用以下代码片段作为参考: public class CreditCardDAO { // 数据库连接信息 private static final String DB_URL = "jdbc:mysql://localhost:3306/credit_cards"; private static final String DB_USER = "root"; private static final String DB_PASSWORD = "password"; // 获取信用卡信息 public CreditCard getCreditCard(String cardNumber) { Connection connection = null; PreparedStatement statement = null; ResultSet rs = null; CreditCard creditCard = null; try { // 创建数据库连接 connection = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD); // 执行查询语句 String sql = "SELECT * FROM credit_cards WHERE card_number = ?"; statement = connection.prepareStatement(sql); statement.setString(1, cardNumber); rs = statement.executeQuery(); // 处理结果集 if (rs.next()) { String expirationDate = rs.getString("expiration_date"); String cardHolderName = rs.getString("card_holder_name"); double creditLimit = rs.getDouble("credit_limit"); double remainingCredit = rs.getDouble("remaining_credit"); creditCard = new CreditCard(cardNumber, expirationDate, cardHolderName, creditLimit); creditCard.setRemainingCredit(remainingCredit); } } catch (SQLException e) { e.printStackTrace(); } finally { // 关闭数据库连接 try { if (rs != null) rs.close(); if (statement != null) statement.close(); if (connection != null) connection.close(); } catch (SQLException e) { e.printStackTrace(); } } return creditCard; } } 3. 在程序中使用CreditCardDAO类获取信用卡信息,并进行查询操作。可以使用以下代码片段作为参考: public class CreditCardQuery { public static void main(String[] args) { CreditCardDAO dao = new CreditCardDAO(); CreditCard creditCard = dao.getCreditCard("1234567890123456"); if (creditCard != null) { System.out.println("Card Number: " + creditCard.getCardNumber()); System.out.println("Expiration Date: " + creditCard.getExpirationDate()); System.out.println("Card Holder Name: " + creditCard.getCardHolderName()); System.out.println("Credit Limit: " + creditCard.getCreditLimit()); System.out.println("Remaining Credit: " + creditCard.getRemainingCredit()); } else { System.out.println("Credit card not found."); } } } 上述代码片段中,CreditCardQuery类调用CreditCardDAO类的getCreditCard方法获取信用卡信息,并将结果输出到控制台。如果查询不到信用卡信息,程序会输出"Credit card not found."。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值