当前位置:首页 > 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
分享给朋友:

相关文章

vue 实现简单登陆

vue 实现简单登陆

以下是一个使用 Vue 3 实现的简单登录功能示例,包含表单验证和基础交互逻辑: 创建 Vue 组件 <template> <div class="login-contai…

js实现vr

js实现vr

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

js实现目录

js实现目录

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

vue实现简单表格

vue实现简单表格

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

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js实现显示隐藏

js实现显示隐藏

显示隐藏的实现方法 在JavaScript中,实现元素的显示和隐藏可以通过多种方式完成。以下是几种常见的方法: 修改CSS的display属性 通过改变元素的display属性可以在none(隐藏)…