js写一个atm取款机

JavaScript013

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()

    }

}

#include <iostream>

#include <string>

using namespace std

class consumer

class ATM

// ATM取款机

{

public:

ATM(consumer&cn):cnsm(cn)

{

}

void welcome()// 登录界面

bool check_passwd(char n[],char pwd[])// 核对密码

void change_passwd() // 修改密码

void fetchmoney() // 取款

void information()// 查询信息

void exitATM()// 退出系统

void functionshow() // 功能界面

void lock() // 锁机

private:

int times // 记录密码输入次数

consumer & cnsm

}

class consumer // 用户

{

public:

friend class ATM

consumer(char Name[],char Num[],float Money,char Password[])

protected:

char* get_name()// 取得姓名

char* get_num()// 取得卡号

char* get_passwd() // 取得密码

float get_money() // 取得余额

void set_passwd(char pwd[])// 设置密码

void set_money(float m)// 取钱

private:

char passwd[8] // 用户密码

char name[20] // 用户姓名

char num[20]

float money

}

//

// ************************************

// * *

// * consumer类的成员函数 *

// * *

// ************************************

consumer::consumer(char Name[],

char Num[],float Money,char Password[])

{

strcpy(name,Name)

strcpy(num,Num)

money=Money

strcpy(passwd,Password)

}

float consumer::get_money()

{

return money

}

char* consumer::get_name()

{

return name

}

char* consumer::get_num()

{

return num

}

char* consumer::get_passwd()

{

return passwd

}

void consumer::set_money(float m)

{

money-=m

}

void consumer::set_passwd(char pwd[])

{

strcpy(passwd,pwd)

}

//

// ************************************

// * *

// * ATM类的成员函数 *

// * *

// ************************************

void ATM::welcome()

{

times=0

cout<<"$ 欢迎使用若雪银行ATM自动取款机!~! "<<endl

char pwd[8],num[20],ch

int i=0

do

{

i=0

cout<<endl<<"请输入卡号:"

do

{

cin.get(ch)

num[i++]=ch

}while(ch!='\n')

num[i-1]='\0'

i=0

cout<<"请输入密码:"

do

{

cin.get(ch)

pwd[i++]=ch

}while(ch!='\n')

pwd[i-1]='\0'

if(!check_passwd(num,pwd))

{

cout<<"你输入的卡号或密码有误,请重新输入"<<endl

times++

}

else

{

functionshow()

}

}while(times<3)

lock()

}

bool ATM::check_passwd(char num[],

char pwd[])

{

if(strcmp(num,cnsm.get_num())==0&&strcmp

(pwd,cnsm.get_passwd())==0)

return true

else

return false

}

void ATM::functionshow()

{

int n

do

{

cout<<endl<<"请你输入相应的操作序号进行操作:"<<endl

cout<<"1) 修改密码 "<<endl

<<"2) 取款 "<<endl

<<"3) 查询余额 "<<endl

<<"4) 退出系统 "<<endl

cout<<"$ >\\"

cin>>n

while(n<1||n>4)

{

cout<<"请输入正确的操作序号!"<<endl

cout<<"$ >\\"

cin>>n

}

switch(n)

{

case 1: change_passwd()

break

case 2: fetchmoney()

break

case 3: information()

break

case 4: exitATM()

break

}

}while(true)

}

void ATM::change_passwd()

{

char pwd[8],repwd[8]

times=0

do

{

cout<<endl<<"请输入旧密码:"

cin>>pwd

if(!check_passwd(cnsm.get_num(),pwd))

times++

else

break

}while(times<3)

if(times==3)

lock()

int t=0

do

{

cout<<"请输入新密码:"

cin>>pwd

cout<<"请再输入一次新密码:"

cin>>repwd

if((t=strcmp(pwd,repwd))!=0)

cout<<"你输入的两次密码不一样,请重新输入!"<<endl

}while(t!=0)

cnsm.set_passwd(pwd)

cout<<"密码修改成功,请牢记!"<<endl

}

void ATM::fetchmoney()

{

float m

char ch

do

{

cout<<endl<<"你要取多少钱:"

<<"\n$>\\"<<endl

cin>>m

while(m<=0)

{

cout<<"请输入正确的数字!"<<endl

cout<<"$ >\\ "

cin>>m

}

if(cnsm.get_money()-m<0)

{

cout<<"对不起,你的余额不足!" <<endl

}

else

{

cout<<endl<<"操作成功,请收好钱!" <<endl

cnsm.set_money(m)

}

cout<<"是否要继续该项操作:(Y/N) "<<endl

cout<<"$ >\\ "

cin>>ch

while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')

{

cout<<"$ >\\"

cin>>ch

}

}while(ch=='y'||ch=='Y')

}

void ATM::information()

{

cout<<"**********************************"<<endl

cout<<"*"<<endl

cout<<"* 用户姓名:"<<cnsm.get_name()<<endl

cout<<"* 卡号:"<<cnsm.get_num()<<endl

cout<<"* 余额: "<<cnsm.get_money()<<endl

cout<<"**********************************"<<endl

}

void ATM::lock()

{

cout<<endl<<"对不起,由于你的操作有误, 你的卡已经被没收! "<<endl

exit(1)

}

void ATM::exitATM()

{

cout<<endl<<"感谢你对本银行的支持, 欢迎下次光临!"<<endl

cout<<"请取卡……"<<endl

exit(0)

}

// ************************************

// * *

// * ATM.cpp *

// * *

// ************************************

int main()

{

consumer c1("jim","12345",5200.3f,"123")

// 先构造一个用户

ATM atm(c1)

atm.welcome()

return 0

}