js写一个atm取款机

JavaScript020

js写一个atm取款机,第1张

'use strict'

const readline = require("readline-sync")

let money = 1000

let ATM = function () {

console.log("输入账号")

let accout = readline.question("")

console.log("输入密码")

let passwordatm = parseInt(readline.question(""))

if (login(accout, passwordatm) == true) {

console.log("1查看余额2取钱3存钱")

let cho = readline.question("") - 0

switch (cho) {

case 1:

console.log("还有" + money)

break

case 2:

console.log("输入金额")

let getmoney = readline.question("") - 0

getmo(getmoney)

break

case 3:

console.log("输入金额")

let savemoney = readline.question("") - 0

save(savemoney)

break

}

} else {

console.log("输入错误")

}

}

function login(username, pasw) {

if ((username == "zhangsan") &&(pasw == 123)) {

return true

} else {

return false

}

}

let getmo = function (getmoney) {

if (money >= getmoney) {

money -= getmoney

console.log("取款" + getmoney, "还剩" + money)

return true

}

return false

}

let save = function (savemoney) {

money += savemoney

console.log("存款成功,余额:" + money)

}

ATM()

参考了别人的代码。略作修改,已经很简单了:

InfoATM.java:

public class InfoATM {

    double money = 0

    public InfoATM(double cash) {

        super()

        this.money = cash

    }

    // 存款的方法

    public void save(double count) {

        money += count

    }

    // 取款的方法

    public void draw(double count) {

        money -= count

    }

    public double getMoney() {

        return money

    }

    public void setMoney(double money) {

        this.money = money

    }

    

}

TestATM.java:

import java.awt.BorderLayout

import java.awt.GridLayout

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import javax.swing.JButton

import javax.swing.JFrame

import javax.swing.JLabel

import javax.swing.JPanel

import javax.swing.JTextField

public class TestATM extends JFrame {

    private static final long serialVersionUID = 2531222181184935595L

    // 主面板pnBasic是用来装pnDate和标签文字的。

    private JPanel pnBasic

    // 添加到主面板中的中间 pnDate面板是为了装表单的。

    private JPanel pnDate

    // 添加到主面板中的北边 pnLabel面板是为了装欢迎词的

    private JPanel pnLabel

    InfoATM atm = new InfoATM(0)

    public TestATM() {

        pnBasic = new JPanel()

        // 主面板pnBasic是用来装pnDate和标签文字的。

        pnDate = new JPanel(new GridLayout(2, 2))

        // pnDate面板是为了装表单的。

        pnLabel = new JPanel()

        JLabel top = new JLabel("欢迎来到中国银行!")

        pnLabel.add(top)

        // 先将数值添加在一个容器中并设置其在容器的右边,在将容器添加在网格的第一格

        JPanel jp1 = new JPanel()

        JLabel number = new JLabel("数值:")

        final JTextField box = new JTextField(5)

        jp1.add(number)

        jp1.add(box)

        JPanel jp2 = new JPanel()

        JButton create = new JButton("新建银行账户")

        jp2.add(create)

        JButton take = new JButton("取款")

        JButton in = new JButton("存款")

        pnDate.add(jp1)

        pnDate.add(jp2)

        pnDate.add(take)

        pnDate.add(in)

        // 加一句下面的就好了

        JPanel jpS = new JPanel()

        final JLabel total = new JLabel("您现在的账户余额是:0 元")

        jpS.add(total)

        pnBasic.setLayout(new BorderLayout())

        pnBasic.add(pnLabel, BorderLayout.NORTH)

        pnBasic.add(pnDate, BorderLayout.CENTER)

        pnBasic.add(jpS, BorderLayout.SOUTH)

        setContentPane(pnBasic)

        setBounds(400, 250, 500, 500)

        pack()

        setDefaultCloseOperation(DISPOSE_ON_CLOSE)

        setVisible(true)

        pack()

        in.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                if (box.getText() != null && box.getText() != "") {

                    try {

                        double count = Double.parseDouble(box.getText())

                        if (count > 0) {

                            atm.save(count)

                            total.setText("您现在的账户余额是:" + atm.getMoney() + "元")

                            box.setText("")

                        }

                    } catch (Exception e1) {

                        System.out.println("您输入的数值必须是数字")

                    }

                }

            }

        })

        take.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                if (box.getText() != null && box.getText() != "") {

                    try {

                        double count = Double.parseDouble(box.getText())

                        if (count >= 0 && count <= atm.getMoney()) {

                            atm.draw(count)

                            total.setText("您现在的账户余额是:" + atm.getMoney() + "元")

                            box.setText("")

                        } else {

                            System.out.println("你的余额不足,取款失败")

                        }

                    } catch (Exception e1) {

                        System.out.println("您输入的数值必须是数字")

                    }

                }

            }

        })

        create.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                total.setText("您现在的账户余额是:0元")

                atm.setMoney(0)

                box.setText("")

            }

        })

    }

    public static void main(String[] args) {

        new TestATM()

    }

}

只要循环不是中途退出的就说明没找到,所以这个n是“脱裤子放屁”多余的。这样即可:

/*

ATM取款程序

*/

//自定义二维数组

var AtmArray = [

[991, 123456, "张1", false, 0, 100],

[992, 123456, "张2", false, 0, 200],

[993, 123456, "张3", false, 0, 500]]

//定义函数

function qukuan(card, passWord, price) {

//遍历数据信息

for (var i = 0i <AtmArray.lengthi++) {

//判断卡号是否正确

if (AtmArray[i][0] == card) return "卡号正确"//如果找到匹配卡号,这里就直接跳出函数了

}

//程序运行到这里就说明没找到匹配的卡号,可以直接return了,不需要用个n来判断

return "找不到卡"

}

/*

[991, 123456, "张1", false, 0, 100],

*/

console.log(qukuan(990, 123456, 50))