当前位置:首页 > 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;
}

存款操作

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

js实现简单的ATM机

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("无效选择");
    }
  }
}

安全增强

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

js实现简单的ATM机

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控制逻辑:

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实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div c…

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="sli…