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

存款功能

增加账户余额的实现:

js实现简单的ATM机

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;
}

查询余额

直接返回当前余额:

js实现简单的ATM机

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

安全注意事项

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

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

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

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

相关文章

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含inpu…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…

js实现搜索

js实现搜索

实现搜索功能的方法 在JavaScript中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法。 使用数组的filter方法 通过数组的filter方法可以筛选出符合条件的数据项。假设有一个…