当前位置:首页 > 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('无效选择');
    }
  }
}

安全注意事项

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

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

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

js实现简单的ATM机

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

相关文章

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClip…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #34…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。…