java实现简单的ATM项目

Java实现简单的ATM项目攻略

1. 确定项目需求

在开发ATM项目之前,我们需要明确项目的需求以及功能,以便为项目建立蓝图。

1.1 项目需求

  • 用户登录,包括账户名和密码验证
  • 存款和取款
  • 查询余额
  • 修改密码
  • 银行卡挂失/解挂
  • 退出系统

1.2 功能

  1. 用户登录:用户需要输入账号和密码进行登录。
  2. 存款和取款:用户可以选择存款或取款操作并输入具体金额。
  3. 查询余额:用户可以查询当前账户余额。
  4. 修改密码:用户需要输入当前密码以及新密码进行修改。
  5. 挂失/解挂银行卡:用户可以选择进行挂失和解挂银行卡操作。

2. 设计代码架构

在完成项目需求的确定之后,接下来需要设计代码架构。根据ATM的需求,我们可以设计以下的代码架构:

2.1 文件结构

ATMProject
├─bin
├─doc
└─src
    ├─login
    │      login.java
    │      LoginTest.java
    │      
    ├─balance
    │      Balance.java
    │      BalanceTest.java
    │      
    ├─modifypwd
    │      ModifyPwd.java
    │      ModifyPwdTest.java
    │      
    ├─deposit
    │      Deposit.java
    │      DepositTest.java
    │      
    ├─withdraw
    │      Withdraw.java
    │      WithdrawTest.java
    │      
    ├─lossreport
        │      LossReport.java
        │      TestLossReport.java

2.2 类、方法定义

  • Login.java: 提供用户登录功能;
  • 方法definitions: boolean login(String account, String passwd); // 返回功能是否执行成功
  • 文件结构: login\login.java

  • Deposit.java: 提供用户存款功能;

  • 方法definitions: boolean deposit(String account, double amount); // 返回功能是否执行成功
  • 文件结构: deposit\Deposit.java

  • Withdraw.java: 提供用户取款功能;

  • 方法definitions: boolean withdraw(String account, double amount); // 返回功能是否执行成功
  • 文件结构: withdraw\Withdraw.java

  • Balance.java: 查询余额;

  • 方法definitions: double checkBalance(String account); // 返回当前余额
  • 文件结构: balance\Balance.java

  • ModifyPwd.java: 提供用户修改密码功能;

  • 方法definitions: boolean modifyPassword(String account, String passwd, String newPasswd); // 返回功能是否执行成功
  • 文件结构: modifypwd\ModifyPwd.java

  • LossReport.java: 提供银行卡挂失/解挂功能;

  • 方法definitions: boolean LossReport(String account, boolean loss); // 返回功能是否执行成功
  • 文件结构: lossreport\LossReport.java

3. 功能开发

在明确了代码架构之后,下一步就是具体实现对应的功能。

3.1 实现用户登录功能

用户输入账号和密码,系统验证后允许用户进入到ATM系统。

public boolean login(String account, String passwd) {
    if (account.equals("admin") && passwd.equals("admin")) {
        return true;
    }
    return false;
}

3.2 实现存款和取款功能

用户输入存款或者取款金额,系统完成操作并更新余额。

public boolean deposit(String account, double amount) {
    double balance = checkBalance(account);
    double addAmount = balance + amount;
    // 更新账户余额
    updateBalance(account, addAmount);
    return true;
}

public boolean withdraw(String account, double amount) {
    double balance = checkBalance(account);
    // 确保取款金额不超过余额
    if (balance >= amount) {
        double minusAmount = balance - amount;
        // 更新账户余额
        updateBalance(account, minusAmount);
        return true;
    } else {
        return false;
    }
}

private boolean updateBalance(String account, double balance) {
    // 更新账户余额
    return true;
}

3.3 实现查询余额功能

提供一个查询账户余额的功能。

public double checkBalance(String account) {
    double balance = 0.0;
    // 查询账户余额
    return balance;
}

3.4 实现修改密码功能

提供一个修改账户密码的功能。

public boolean modifyPassword(String account, String passwd, String newPasswd) {
    // 修改账户密码
    return true;
}

3.5 实现挂失/解挂银行卡功能

提供一个挂失/解挂银行卡的功能。

public boolean LossReport(String account, boolean loss) {
    // 挂失/解挂银行卡功能实现
    return true;
}

4. 编写测试用例

在实现对应功能之后,需要进行测试以验证功能的正确性。

// 在LoginTest.java中测试
@Test
public void testLogin() {
    LoginService loginService = new LoginService();
    assertTrue(loginService.login("admin", "admin"));
    assertFalse(loginService.login("admin", "123"));
}

// 在DepositTest.java中测试
@Test
public void testDeposit() {
    DepositService depositService = new DepositService();
    assertTrue(depositService.deposit("admin", 100.0));
    assertFalse(depositService.deposit("admin", -100.0));
}

// 在WithdrawTest.java中测试
@Test
public void testWithdraw() {
    WithdrawService withdrawService = new WithdrawService();
    assertTrue(withdrawService.withdraw("admin", 50.0));
    assertFalse(withdrawService.withdraw("admin", 500.0));
}

// 在BalanceTest.java中测试
@Test
public void testCheckBalance() {
    BalanceService balanceService = new BalanceService();
    assertEquals(100.0, balanceService.checkBalance("admin"), 0.0001);
}

// 在ModifyPwdTest.java中测试
@Test
public void testModifyPwd() {
    ModifyPwdService modifyPwdService = new ModifyPwdService();
    assertTrue(modifyPwdService.modifyPassword("admin", "admin", "newpasswd"));
    assertFalse(modifyPwdService.modifyPassword("admin", "passwd", "newpasswd"));
}

// 在TestLossReport.java中测试
@Test
public void testLossReport() {
    LossReportService lossReportService = new LossReportService();
    assertTrue(lossReportService.LossReport("admin", true));
    assertTrue(lossReportService.LossReport("admi", false));
}

5. 总结

通过上述步骤,我们已经成功地实现了一个简单的ATM机项目。其中,我们明确了项目需求和功能,设计了具体的代码架构,并实现了对应的具体功能,并对每个功能进行了测试。这一过程有助于自我学习和实践,提高代码能力。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现简单的ATM项目 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • java实现文件编码转换的方法

    首先我们需要明确一下,文件编码转换的方法主要包括文件读取、编码转换以及文件写入三个过程,接下来我将一步一步地讲解如何在Java中实现文件编码转换。 第一步:确定源文件编码 在进行文件编码转换之前,我们需要先了解清楚源文件的编码格式,因为不同的编码格式需要采用不同的解码方式。具体的获取编码格式的方法可以使用Java自带的CharsetDetector类来实现,…

    Java 2023年5月20日
    00
  • java数据库唯一id生成工具类

    Java数据库唯一ID生成工具类是用于在关系型数据库中生成唯一ID的工具类。在开发中,经常需要使用唯一ID作为数据库表的主键,而使用数据库自增长的整数或GUID字符串作为主键,会存在一些问题,如分布式环境下高并发的ID生成、算法不唯一等问题。因此,使用Java数据库唯一ID生成工具类,可以解决这些问题。 下面给出一个完整的攻略,介绍如何使用Java数据库唯一…

    Java 2023年5月20日
    00
  • 如何自定义Jackson序列化 @JsonSerialize

    下面是我对于如何自定义Jackson序列化 @JsonSerialize的完整攻略,包括两条示例说明: 什么是Jackson序列化? Jackson是一个常用的Java数据序列化库,可以将Java对象转换为JSON格式的数据并输出。在序列化的过程中,Jackson将Java对象属性映射为JSON键值对,同时支持自定义序列化逻辑。 @JsonSerialize…

    Java 2023年5月26日
    00
  • Idea中tomcat启动源码调试进入到tomcat内部进行调试的方法

    Idea中tomcat启动源码调试进入到tomcat内部进行调试的方法可以通过以下步骤实现: 在Idea中配置tomcat启动参数 首先需要在 Ieda 中配置 tomcat 的启动参数,具体方法为: 在Idea侧边栏中找到「Run/Debug Configuration」,点击「+」按钮,选择「Tomcat Server」,然后在「Server」选项中选择…

    Java 2023年5月19日
    00
  • spring mvc 使用kaptcha配置生成验证码实例

    下面我会详细给您讲解“spring mvc 使用kaptcha配置生成验证码实例”的完整攻略,过程中会包含两条示例说明。 首先,您需要了解一下什么是Kaptcha。Kaptcha是Google的Java类库,用于生成验证码。它可以快速轻松地生成验证码,比如数字,字母和数字的组合,中文汉字等等。 接下来,我们来介绍一下在Spring MVC中如何使用Kaptc…

    Java 2023年6月15日
    00
  • java迭代器移除元素出现并发修改异常的原因及解决

    Java迭代器是用于遍历集合类元素的重要工具,然而有时可能会在使用过程中遇到“并发修改异常”(ConcurrentModificationException),指的是在使用迭代器访问集合过程中,通过集合自身的某些方法(如add、remove、clear等)修改了集合元素而导致的异常。本文将讲解这个异常的原因及解决方法,同时会提供两个示例来解释如何在实际操作中…

    Java 2023年5月27日
    00
  • Spring Security实现自定义访问策略

    下面是关于Spring Security实现自定义访问策略的完整攻略,主要分为以下几个步骤: 定义自定义访问策略类 首先需要定义一个实现了AccessDecisionVoter接口的自定义访问策略类。该类主要实现AccessDecisionVoter接口中的vote()方法,根据自己的逻辑决定是否允许当前用户访问对应的资源。下面是一个简单的示例代码: pub…

    Java 2023年5月20日
    00
  • 让Java后台MySQL数据库能够支持emoji表情的方法

    当我们在Java后台使用MySQL数据库时,有时需要支持emoji表情。但是MySQL默认情况下是不支持emoji的,所以我们需要进行一些配置和操作来使其支持。 以下是支持emoji表情的完整攻略: 步骤一:修改MySQL的字符集 MySQL数据库默认使用的是utf8字符集,而utf8字符集只支持一部分的Emoji表情。当我们想要支持完整的Emoji表情时,…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部