当前位置:首页 > JavaScript

js实现简单的ATM机

2026-01-31 07:31:01JavaScript

实现ATM机的基本功能

使用JavaScript实现一个简单的ATM机模拟,需要包含以下核心功能:账户余额查询、存款、取款和退出系统。以下是一个基础实现方案。

账户初始化

定义一个账户对象,存储用户的基本信息和余额:

const account = {
  name: "张三",
  cardNumber: "1234567890",
  pin: "1234",
  balance: 5000
};

登录验证

创建登录验证函数,检查卡号和PIN码:

function login(cardNumber, pin) {
  return cardNumber === account.cardNumber && pin === account.pin;
}

余额查询

实现查看余额功能:

function checkBalance() {
  return account.balance;
}

存款操作

处理存款逻辑,更新账户余额:

function deposit(amount) {
  if (amount > 0) {
    account.balance += amount;
    return `存款成功,当前余额:${account.balance}`;
  }
  return "存款金额必须大于0";
}

取款操作

实现取款功能,包含余额检查:

function withdraw(amount) {
  if (amount <= 0) return "取款金额必须大于0";
  if (amount > account.balance) return "余额不足";

  account.balance -= amount;
  return `取款成功,当前余额:${account.balance}`;
}

主界面交互

创建控制台交互界面示例:

function atmInterface() {
  const cardNumber = prompt("请输入卡号:");
  const pin = prompt("请输入PIN码:");

  if (!login(cardNumber, pin)) {
    alert("卡号或密码错误");
    return;
  }

  while (true) {
    const choice = prompt(`请选择操作:
      1. 查询余额
      2. 存款
      3. 取款
      4. 退出`);

    switch(choice) {
      case "1":
        alert(`当前余额:${checkBalance()}`);
        break;
      case "2":
        const depositAmount = parseFloat(prompt("请输入存款金额:"));
        alert(deposit(depositAmount));
        break;
      case "3":
        const withdrawAmount = parseFloat(prompt("请输入取款金额:"));
        alert(withdraw(withdrawAmount));
        break;
      case "4":
        return;
      default:
        alert("无效选择");
    }
  }
}

安全增强

为提升安全性,可添加以下改进:

let attempts = 0;
const MAX_ATTEMPTS = 3;

function secureLogin(cardNumber, pin) {
  attempts++;
  if (attempts > MAX_ATTEMPTS) {
    alert("尝试次数过多,卡已被锁定");
    return false;
  }
  return login(cardNumber, pin);
}

交易记录

扩展账户对象以记录交易历史:

account.transactions = [];

function addTransaction(type, amount) {
  account.transactions.push({
    date: new Date().toLocaleString(),
    type,
    amount,
    balance: account.balance
  });
}

更新存款和取款函数以记录交易:

function recordedDeposit(amount) {
  const result = deposit(amount);
  if (result.includes("成功")) {
    addTransaction("存款", amount);
  }
  return result;
}

HTML界面版本

创建网页版ATM界面基础结构:

<div id="atm">
  <div id="login">
    <input type="text" id="cardNumber" placeholder="卡号">
    <input type="password" id="pin" placeholder="PIN码">
    <button onclick="handleLogin()">登录</button>
  </div>
  <div id="menu" style="display:none;">
    <button onclick="showBalance()">查询余额</button>
    <button onclick="showDeposit()">存款</button>
    <button onclick="showWithdraw()">取款</button>
    <button onclick="logout()">退出</button>
  </div>
</div>

对应JavaScript控制逻辑:

js实现简单的ATM机

function handleLogin() {
  const cardNumber = document.getElementById('cardNumber').value;
  const pin = document.getElementById('pin').value;

  if (secureLogin(cardNumber, pin)) {
    document.getElementById('login').style.display = 'none';
    document.getElementById('menu').style.display = 'block';
  }
}

这个实现提供了ATM机的基本功能框架,可根据需要进一步扩展功能如转账、交易记录查询、多账户支持等特性。网页版界面需要补充完整的CSS样式和更多交互细节。

标签: 简单js
分享给朋友:

相关文章

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

实现简单vue

实现简单vue

实现一个简单的 Vue 框架 数据响应式系统 通过 Object.defineProperty 实现数据劫持,监听数据变化: function defineReactive(obj, key, va…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码 funct…

vue实现简单表格

vue实现简单表格

使用 Vue 实现简单表格 Vue 提供了多种方式实现表格功能,以下是基于 Vue 3 的两种常见方法: 基础表格实现 通过 v-for 指令循环渲染表格数据: <template>…

js实现上传文件

js实现上传文件

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。 <input type="file"…

js实现下拉刷新

js实现下拉刷新

监听触摸事件 通过监听 touchstart、touchmove 和 touchend 事件来检测用户下拉手势。记录触摸起始位置和移动距离。 let startY = 0; let currentY…