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基础之练习打印三角形的完整攻略。 1.题目简介 题目要求在控制台上打印指定行数的三角形,具体形状如下: * ** *** **** ***** 2.解题思路 题目要求打印三角形,很容易想到使用循环结构,可以使用嵌套循环打印出指定行数的三角形。外层循环控制行数,内层循环利用嵌套控制打印“*”的数量。 3.代码实现 Java代码实现如下: publ…

    Java 2023年5月26日
    00
  • Hibernate save() saveorupdate()的用法第1/2页

    Hibernate save() 和 saveOrUpdate() 方法 save() 和 saveOrUpdate() 方法是 Hibernate 中常用的操作数据的方法之一,两种方法都可以用来保存一个对象到数据库中。它们的不同之处在于在不同的情况下它们的行为表现不同。 save() 方法 当给定一个新的对象时,使用 save() 方法将该对象保存到数据库…

    Java 2023年6月15日
    00
  • Spring入门基础之依赖注入

    Spring入门基础之依赖注入 本文将详细讲解Spring框架入门基础之依赖注入。我们将探讨什么是依赖注入,为什么需要它,以及如何在Spring中实现依赖注入。本文也会提供一些示例来说明如何在Spring应用程序中使用依赖注入。 什么是依赖注入 依赖注入(Dependency Injection,简称DI)是一种设计模式,它可以使对象之间的依赖关系更加松散,…

    Java 2023年5月19日
    00
  • maven如何使用slf4j输出日志到文件

    使用 Maven 来构建项目时,常常需要对项目的运行状态进行日志记录,方便项目的调试和交付。SLF4J 是一个 Java 日志框架,具有轻量级、可扩展的特点,同时提供了多种日志实现的接口,便于灵活选择。本文将介绍如何使用 SLF4J 日志框架,在项目中输出日志到文件。 1. 引入依赖 首先,需要在项目中引入 SLF4J 的依赖。在工程的 pom.xml 文件…

    Java 2023年5月19日
    00
  • 解决spring-data-jpa mysql建表编码问题

    下面是“解决spring-data-jpa mysql建表编码问题”的完整攻略。 问题描述 在使用Spring Data JPA操作MySQL时,如果不设置编码,那么该表的默认编码会是latin1,导致在插入中文字符时出现乱码。 解决方案 为了解决该问题,我们需要在建表的时候指定编码,可采用如下两种方案: 方案一:在@Entity注解中指定表的编码 在实体类…

    Java 2023年5月20日
    00
  • 如何进行Java压力测试?

    作为网站的作者,您想进行Java应用程序的压力测试以确保应用程序的性能能够满足用户期望和要求。在这里,我们将提供一个完整的Java应用程序压力测试攻略,它将使您了解压力测试的概念,不同类型的测试以及如何开始执行压力测试。下面是一个详细的步骤: 1.准备测试环境和工具 要执行Java应用程序的压力测试,您需要准备一个测试环境。这意味着您需要一个测试计划,例如一…

    Java 2023年5月11日
    00
  • 深入理解java1.8之supplier

    下面是“深入理解java1.8之supplier”的完整攻略。 什么是Supplier Java 8中引入的Supplier表示一个供应商,代表一个函数,这个函数不需要任何输入参数,只返回一个我们定义好的数据类型的输出结果。 该接口定义了一个函数式方法,即get()方法,用于获取输出结果,如下所示: @FunctionalInterface public i…

    Java 2023年5月26日
    00
  • Java中动态规则的实现方式示例详解

    这篇文章将详细讲解Java中动态规则的实现方式,并且提供两个示例来帮助读者更好地理解此概念。在开始之前,我们来了解一下动态规则的概念。 什么是动态规则 动态规则是指在程序运行时可以动态地修改规则,而无需重新编译代码。这种实现方式增加了程序的灵活性和可维护性,而且不会影响程序的可靠性和性能。 Java中动态规则的实现方式有很多种,下面我们就来看两个示例。 示例…

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