利用函数进行代码实现,要点:将每一项操作单独写成一个函数,在需要时进行调用,弄清参数的传递。

  1. 创建模拟账户

    使用数组创建账户

let
user
= ["xiaohei",
1234,
500,
"xiaobai",
4321,
1000];

  1. 登录

//登录

function
login(userIndex)
{

while (n
>
0
&&
state) {

console.log(`>>>>请输入您的用户名:<<<<`);

let
inputName
=
rs.question();

if (user.includes(inputName)) {
//查找输入的用户名是否存在(正确)

//用户名正确,输入密码

console.log(`>>>>请输入密码:<<<<`);

let
inputPWD
=
rs.question() -
0;

if (inputPWD
==
user[user.indexOf(inputName) +
1]) {
//判断密码是否正确

//密码正确,调用主题函数(执行操作)

main(user.indexOf(inputName));

}
else
{

//密码不正确

//密码错误

n--;

if (n
!=
0) {

console.log(`密码错误,你还有${n}次机会!`);

}
else
{

console.log(`密码错误,您的账户被冻结!`);

state
=
false;

break;

}

}

}
else
{

//用户名不正确

n--;

if (n
!=
0) {

console.log(`用户名错误,你还有${n}次机会!`);

}
else
{

console.log(`用户名错误,您的账户被冻结!`);

state
=
false;

break;

 

}

}

 

}

}

函数需要调用才会实现,在代码的最后进行调用,避免出现先使用后声明的问题。

login()

登录成功后,调用主函数

//密码正确,调用主题函数(执行操作)

main(user.indexOf(inputName));

  1. 选择要进行的操作

在主函数中,选择要进行的操作,在每一项操作中调用对应的函数体

//主体

function
main(userIndex)
{

console.log(`登录成功!`);

state1
=
true;

while (state1) {

//开始选择需要的操作

、查询 2、存钱 3、
取钱 4、转账 5、切换账户 0、退出`);

let
choice
=
rs.question() -
0;

 

switch (choice) {

case
0:

console.log(`Thankyou fou your welcom!`);

state
=
false;

state1
=
false;

break;

 

case
1:

console.log(`您当前账户余额为${user[userIndex+2]}`);

break;

 

case
2:

saveMoney(userIndex);

break;

 

case
3:

dropMoney(userIndex);

break;

 

case
4:

console.log(">>>>请输入您要转账的账户:<<<<");

let
targetName
=
rs.question();

let
transIndex
=
searchName(targetName);
//获取转账账号的下标

 

if ((transIndex
||
transIndex
==
0) &&
transIndex
!=
userIndex) {

transMoney(userIndex,
transIndex);

}

break;

 

case
5:

let
temp=changename(userIndex);

userIndex=temp;

break;

default:

console.log(`您操作有误,请重新选择`);

state
=
false;

break;

}

}

}

  1. 0、退出

退出整个程序,结束所有循环,我的方法是在循环外let一个状态值

case
0:

console.log(`Thankyou For Your Welcome!`);

state1
=
false;

state
=
false;

break;

  1. 1、查询余额

不用单独 写成函数,只需输出余额即可

case
1:

console.log(`您查询的账户余额为${balance_1}`);

break;

输出时使用字符串模板,方便语句中变量的输出

  1. 2、存钱

//存钱

function
saveMoney(savename)
{

console.log(`>>>>请输入您要存入的金额:<<<<`);

let
saveMoney
=
rs.question() -
0;

user[savename
+
2] +=
saveMoney;

}

  1. 3、取钱

要点是要判断取出的金额是否小于余额

//取钱

function
dropMoney(dropname)
{

console.log(`>>>>请输入您要取出的金额:<<<<`);

let
dropMoney
=
rs.question() -
0;

if (dropMoney
<=
user[dropname
+
2
&&
dropMoney
>=
0]) {

user[dropname
+
2] -=
dropMoney;

}
else
{

console.log(`您当前账户余额不足!`);

}

}

  1. 4、转账

首先判断要转账的账户是否存在,

case
4:

console.log(">>>>请输入您要转账的账户:<<<<");

let
targetName
=
rs.question();

let
transIndex
=
searchName(targetName);
//获取转账账号的下标

 

if ((transIndex
||
transIndex
==
0) &&
transIndex
!=
userIndex) {

transMoney(userIndex,
transIndex);

}

break;

 

//查找账户是否存在

function
searchName(name)
{

if (user.includes(name)) {

return
user.indexOf(name);
//如果存在,返回下标,这样才可以进行后期的操作(余额)

}
else
{

console.log("您输入的账号不存在!!!");

return
false;

// break;

state1=false;

}

}

其次判断转账的金额是否小于余额

//转账

function
transMoney(currentName,
transName)
{
//currentName当前账户的下标,transName账户的下标

console.log("请输入您要转账的金额:");

let
targetMoney
=
rs.question() -
0;

 

if (targetMoney
<=
user[currentName
+
2]) {
//判断当前账户的余额是否大于转账的金额

user[currentName
+
2] -=
targetMoney;
//currentName + 2当前账户的余额

user[transName
+
2] +=
targetMoney;
//transName + 2当前账户的余额

}
else
{

console.log(`您的余额不足!!!`);

}

}

  1. 5、切换账户

//切换账户

function
changename(currentName,
changeName)
{
//currentName当前账户的下标,changeName切换账户的下标

console.log(`>>>>请输入切换的账户:<<<<`);

let
inputchangeName
=
rs.question();

let
changeIndex
=
searchName(inputchangeName);
//获取切换账号的下标

if ((changeIndex
||
changeIndex
==
0) &&
changeIndex
!=
userIndex) {

console.log(`>>>>请输入密码:<<<<`);

let
changePWD
=
rs.question() -
0;

if (changePWD
==
user[changeIndex
+
1]) {
//判断密码是否正确

return
changeIndex;

}
else
{

console.log(`密码错误`);

}

}
else
{

console.log(`账号错误`);

}

}

将获得的切换的下标与原账户下标交换

case
5:

let
temp=changename(userIndex);

userIndex=temp;

break;

切换后会重新登录。

 

以上为使用函数编写ATM系统的方法。重点在于将函数单独写出,调用时注意参数的传递。

 

JS基础——ATM机终端程序编写(3.0)的更多相关文章

  1. (初学JS)JS基础——ATM机终端程序编写<1.0>

    初步学习了JS基础,为了更好地将所学知识熟练运用,我进行了银行ATM存取款机的模拟程序编写,主要通过VScode终端实现系列操作. 我的ATM程序包括6个主要功能:1.查询余额 2.存钱 3. 取钱 ...

  2. JS基础——ATM机终端程序编写(2.0)

    在1.0版本上,利用数组进行用户的创建,通过调用数组下标,进行密码.余额的使用.新增了切换账户.修改密码的功能 以下为数组版代码. 创建模拟账户 个账户: let user = ["xiao ...

  3. 01、模拟ATM机界面程序

    一.概述 设计一个简单的模拟自动取款机ATM界面的程序,实现用户登录及取款等功能. 二.需求分析 (1)模拟自动取款机ATM界面,有常用功能. (2)主要功能包括;用户输入密码登录主界面.取款功能.取 ...

  4. ATM机小程序

    用规范化项目录的格式模拟一个ATM系统. 项目功能: 登录(可支持多个账户(非同时)登录) 注册 查看余额 存钱 转账(给其他用户转钱) 查看账户流水 退出 提供的思路:ATM直译就是取款机,但是咱们 ...

  5. 第一次尝试使用JAVA编写的ATM机程序

    package study; import java.util.Scanner; public class ATM { private static int[] users = { 111111, 2 ...

  6. JAVA - ATM机程序

    ATM机程序 UnionPayTest.java package oo.day06.work; public class UnionPayTest { } interface UnionPay{ // ...

  7. 简单的小程序实现ATM机操作

    简单的小程序实现ATM机操作 代码如下: package Day06; import java.util.Scanner; public class TestAccount { public stat ...

  8. 模拟ATM机银行系统

    淄博汉企Java基础考核项目 模拟银行自助终端系统 一. 本系统模拟银行用户使用ATM机开户.查询.存款.取款功能,要求使用java语言编程实现. 说明: 1. 对于数据输入异常,可使用java异常处 ...

  9. Web3D编程入门总结——WebGL与Three.js基础介绍

    /*在这里对这段时间学习的3D编程知识做个总结,以备再次出发.计划分成“webgl与three.js基础介绍”.“面向对象的基础3D场景框架编写”.“模型导入与简单3D游戏编写”三个部分,其他零散知识 ...

随机推荐

  1. CAS5.3 单点登录/登出/springboot/springmvc

    环境: jdk:1.8 cas server:5.3.14 + tomcat 8.5 cas client:3.5.1 客户端1:springmvc 传统web项目(使用web.xml) 客户端2:s ...

  2. 【Linux】awk笔记

    awk是一种处理文本文件的语言,是一个强大的文本分析工具. 实例 ①显示文件行中匹配项 # 每行按空格或TAB分割,输出文本中的1.4项 yunduo@yunduo-ThinkCentre-XXXX: ...

  3. Android多媒体框架

    Android系统的多媒体架构图 OpenMax做编解码作用(codec),从上到下依次是AL(应用层,在多媒体中间件和应用程序之间提供一个标准化接口).IL(集成层,解码编码器).DL(开发层,供应 ...

  4. 再见,Python2。你好,Python3

     文章首发自我的公众号,转载请注明出处~ ​ Python2的退场,意味着一个时代的结束 ​ 我们这一代程序员基本都接触过python2,很多人也是从python2时代一路走来的.但是,是时候说再见了 ...

  5. IE框架表单遍历

    // HtmlWeb.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <atlbase.h> #include ...

  6. c++简单实现循环队列

    栈的数据结构是先进后出,而队列的数据结构就是 一个出口一个入口入口只能入队,出口只能出队 实现的代码如下: /* 循环静态队列实现 2017年8月5日07:50:58 */ #ifndef __QUE ...

  7. Java 迭代器须知 | “for each”与迭代器的关系

    Iterator接口包含4个方法: 通过反复调用next方法就可以逐个访问集合中的每个元素.需要注意,如果到达了集合的末尾,再次调用next方法将会抛出一个NoSuchElementException ...

  8. 更换EMC VNX系列存储故障硬盘的检查步骤

    更换EMC VNX系列存储故障硬盘的检查步骤 VNX1代(VNX5300,VNX5500,VNX5700,VNX7500和VNX2代(VNX5400,5600,5800和VNX7600,8000)有区 ...

  9. javascript-void keyword

    javascript-void keyword 写在前面 ECMA-262定义了ECMAScript所支持的关键字(keyword),关键字不能用作ECMAScript程序的标识符(Indetifie ...

  10. (二)Django模板的应用

    一.配置项目的基础模板,分三部分 base.html 基础部分,需要包括基本的HTML标签 header部分 body部分 html闭合标签 {% load staticfiles %} <!D ...