当前位置:首页 > JavaScript

js实现简单的ATM机

2026-03-01 22:41:48JavaScript

实现简单ATM机的核心功能

使用JavaScript实现ATM机需要模拟存款、取款、查询余额和转账等基本功能。以下是一个基于控制台的简单实现方案。

初始化账户数据

创建账户对象存储用户信息和余额:

const accounts = [
  { id: '123456', pin: '1234', balance: 1000 },
  { id: '654321', pin: '4321', balance: 2000 }
];
let currentAccount = null;

登录验证功能

实现PIN码验证逻辑:

function login(accountId, pin) {
  const account = accounts.find(acc => acc.id === accountId && acc.pin === pin);
  if (account) {
    currentAccount = account;
    return true;
  }
  return false;
}

存款功能

增加账户余额的实现:

function deposit(amount) {
  if (amount > 0) {
    currentAccount.balance += amount;
    return currentAccount.balance;
  }
  throw new Error('存款金额必须大于零');
}

取款功能

处理余额检查的取款逻辑:

function withdraw(amount) {
  if (amount <= 0) throw new Error('取款金额必须大于零');
  if (amount > currentAccount.balance) throw new Error('余额不足');

  currentAccount.balance -= amount;
  return currentAccount.balance;
}

查询余额

直接返回当前余额:

function checkBalance() {
  return currentAccount.balance;
}

转账功能

实现账户间资金转移:

function transfer(targetAccountId, amount) {
  if (amount <= 0) throw new Error('转账金额必须大于零');
  if (amount > currentAccount.balance) throw new Error('余额不足');

  const targetAccount = accounts.find(acc => acc.id === targetAccountId);
  if (!targetAccount) throw new Error('目标账户不存在');

  currentAccount.balance -= amount;
  targetAccount.balance += amount;
  return currentAccount.balance;
}

用户界面交互

简单的控制台交互示例:

function startATM() {
  const readline = require('readline-sync');

  const accountId = readline.question('请输入账户ID: ');
  const pin = readline.question('请输入PIN码: ');

  if (!login(accountId, pin)) {
    console.log('登录失败');
    return;
  }

  while (true) {
    console.log('\n1. 查询余额\n2. 存款\n3. 取款\n4. 转账\n5. 退出');
    const choice = readline.question('请选择操作: ');

    switch (choice) {
      case '1':
        console.log(`当前余额: ${checkBalance()}`);
        break;
      case '2':
        const depositAmount = parseFloat(readline.question('输入存款金额: '));
        console.log(`新余额: ${deposit(depositAmount)}`);
        break;
      case '3':
        const withdrawAmount = parseFloat(readline.question('输入取款金额: '));
        console.log(`新余额: ${withdraw(withdrawAmount)}`);
        break;
      case '4':
        const targetId = readline.question('输入目标账户ID: ');
        const transferAmount = parseFloat(readline.question('输入转账金额: '));
        console.log(`新余额: ${transfer(targetId, transferAmount)}`);
        break;
      case '5':
        currentAccount = null;
        return;
      default:
        console.log('无效选择');
    }
  }
}

安全注意事项

实际应用中需要加强安全措施:

js实现简单的ATM机

  • 使用HTTPS加密通信
  • 实现会话超时机制
  • 记录交易日志
  • 添加每日取款限额
  • 使用更安全的认证方式如双因素认证

这个实现展示了ATM机的基本功能框架,可以根据需要扩展更多功能如交易历史记录、多币种支持或与真实数据库集成。

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

相关文章

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callback) {…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获取 jQ…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js图片轮播的实现

js图片轮播的实现

基础图片轮播实现 使用HTML、CSS和JavaScript实现一个简单的图片轮播效果。HTML部分定义轮播容器和图片,CSS负责样式和过渡效果,JavaScript处理逻辑。 <div cl…

js 实现全屏

js 实现全屏

使用 requestFullscreen 方法 通过调用元素的 requestFullscreen 方法可以实现全屏。该方法兼容现代浏览器,但不同浏览器可能需要前缀。 const element =…