'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()
import java.io.IOException
/**
* ATM机类
*
* 查看余额
*
* 取款
*
* 存款
*
* 退出系统
*
*
*
*/
public class ATM {
static double yue = 1200.00
public static void main(String[] arg) {
ATM localTest1 = new ATM()
localTest1.ATM_Operate()
}
/**
* ATM机的操作
*/
private void ATM_Operate() {
System.out.println("欢迎使用中国工商银行ATM取款机")
System.out.println("1、查看余额 2、取款")
System.out.println("3、存款0、退出")
System.out.print("请输入您需要的服务:")
byte[] buffer = new byte[512]
try {
int count = System.in.read(buffer)// 返回实际读取的字节数
System.out.print("您输入的是:")
for (int i = 0i <counti++) {
System.out.print("" + (char) buffer[i])
}
if ((char) buffer[0] == '1') {
// 查看余额
System.out.println("您的余额是:¥" + yue + "元")
System.out.println()
ATM_Operate()
} else if ((char) buffer[0] == '2') {
// 取款
withdrawal()
System.out.println()
ATM_Operate()
} else if ((char) buffer[0] == '3') {
// 存款
deposit()
System.out.println()
ATM_Operate()
} else if ((char) buffer[0] == '0') {
// 退出
System.out.println("您已经成功退出系统,谢谢你的使用")
System.exit(0)
} else {
System.out.println("输入不合法,请重新输入")
System.out.println()
ATM_Operate()
}
} catch (IOException e) {
e.printStackTrace()
}
}
/**
* 取款
*
* @throws IOException
*/
private void withdrawal() throws IOException {
byte[] buffer = new byte[512]
System.out.print("请输入您要取出的金额:¥")
int count2 = System.in.read(buffer)// 返回实际读取的字节数
System.out.print("您输入的金额是:")
for (int i = 0i <count2 - 1i++) {
System.out.print("" + (char) buffer[i])
}
System.out.println()
// 字符0 ~ 9对应ASCII值48 ~ 57
boolean flag = false
for (int i = 0i <count2 - 1i++) {
if ((char) buffer[i] >47 &&(char) buffer[i] <58) {
if (i == count2 - 2) {
flag = true
}
} else {
// 输入的字符不是数值
System.out.println("输入不合法,请重新输入")
withdrawal()
break
}
}
System.out.println()
if (flag) {
System.out.print("您已成功取出¥:")
String num = ""
for (int i = 0i <count2 - 1i++) {
System.out.print("" + (char) buffer[i])
num += (char) buffer[i]
}
yue -= Double.valueOf(num)
System.out.print(",现在余额¥:" + yue)
}
}
/**
* 存款
*
* @throws IOException
*/
private void deposit() throws IOException {
byte[] buffer = new byte[512]
System.out.print("请输入您要存入的金额:¥")
int count2 = System.in.read(buffer)// 返回实际读取的字节数
System.out.print("您输入的金额是:")
for (int i = 0i <count2 - 1i++) {
System.out.print("" + (char) buffer[i])
}
System.out.println()
// 字符0 ~ 9对应ASCII值48 ~ 57
boolean flag = false
for (int i = 0i <count2 - 1i++) {
if ((char) buffer[i] >47 &&(char) buffer[i] <58) {
if (i == count2 - 2) {
flag = true
}
} else {
// 输入的字符不是数值
System.out.println("输入不合法,请重新输入")
withdrawal()
break
}
}
System.out.println()
if (flag) {
System.out.print("您已成功存入¥:")
String num = ""
for (int i = 0i <count2 - 1i++) {
System.out.print("" + (char) buffer[i])
num += (char) buffer[i]
}
yue += Double.valueOf(num)
System.out.print(",现在余额¥:" + yue)
}
}
}
参考了别人的代码。略作修改,已经很简单了:
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.BorderLayoutimport 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()
}
}