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利用JEXL实现动态表达式编译

    介绍 本文主要介绍了利用Java的JEXL库实现动态表达式编译的完整攻略。JEXL是一个Java表达式语言,由Apache Commons开发,可以用来解释执行动态生成的表达式。 步骤 引入依赖 首先需要在项目中引入JEXL依赖,可以使用Maven或手动导入jar包。 Maven依赖: <dependency> <groupId>or…

    Java 2023年5月27日
    00
  • Spring Boot实现简单的增删改查

    下面是SpringBoot实现简单的增删改查的完整攻略。 1. 环境准备 在开始之前,需要找到一台安装了JDK1.8以上版本的电脑,并确保你已经熟练掌握了Java语言以及Spring Boot框架的基础知识。 首先,需要安装开发工具IDEA和Maven。 在IDEA官网下载并安装IntelliJ IDEA Community版本:https://www.je…

    Java 2023年5月15日
    00
  • Java多线程之悲观锁与乐观锁

    Java多线程之悲观锁与乐观锁攻略 概述 在多线程编程中,为了保证数据的安全,我们需要使用锁机制来控制对共享资源的访问。其中,悲观锁是一种传统的锁模式,它认为在每次访问共享资源时都有可能发生冲突,所以对共享资源进行加锁以防止其他线程的访问。而乐观锁则是一种更为轻量级的锁模式,它的思想是假设多线程之间没有冲突,当发生冲突时再进行处理。 本文将详细介绍悲观锁和乐…

    Java 2023年5月18日
    00
  • Java实现SHA-256加密算法的完全解析

    Java实现SHA-256加密算法的完全解析 SHA-256加密算法是目前应用最广泛的加密算法之一,本篇文章介绍如何在Java中实现SHA-256加密算法。 什么是SHA-256加密算法 SHA-256是一种哈希算法,将任意长度的二进制值映射为一个较短的固定长度的二进制值(通常是256位)。SHA-256算法基于SHA-2家族的算法,其中”256″表示哈希值…

    Java 2023年5月19日
    00
  • Java ArrayList源码深入分析

    Java ArrayList源码深入分析 概述 Java中的ArrayList是最基础的动态数组实现,是Java集合框架中的重要组成部分。本文将分析ArrayList源码,通过详细的代码解析和实例说明,深入分析ArrayList的内部实现原理。 前置知识 在深入分析ArrayList源码之前,需要具备以下基础知识: Java集合框架的基本概念和应用场景 数组…

    Java 2023年5月26日
    00
  • Java split函数拆分后变成null问题解决方案

    Java中的split函数用于将字符串根据指定字符分割成多个子字符串。然而,有时候在使用split函数时,会出现拆分之后子字符串变成null的问题,本篇文档将提供解决方案。 问题分析 在使用split函数时,使用的分割符在字符串的开头或结尾时,会导致split函数将空字符串分割出来。此时,split函数会把空字符串转换为null,导致出现这个问题。 解决方案…

    Java 2023年5月26日
    00
  • Spring Boot 与 Kotlin 使用JdbcTemplate连接MySQL数据库的方法

    当我们需要在Spring Boot应用中使用Kotlin通过JdbcTemplate连接MySQL数据库时,可以参考以下步骤: 1. 添加依赖 我们需要在pom.xml文件中添加以下依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifa…

    Java 2023年6月16日
    00
  • 一篇超详细的Spring Boot对jdbc支持的文章

    下面是我对这个主题的完整攻略: 一、简介 在介绍 Spring Boot 对 JDBC 支持的同时,我们需要先了解 JDBC 是什么。JDBC (Java DataBase Connectivity) 是 Java 语言中操作关系型数据库的 API。Spring Boot 建立在 Spring 框架的基础之上,因此 Spring Boot 是通过 Sprin…

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