成都网站建设设计

将想法与焦点和您一起共享

java代码模拟atm机 用java编写atm机程序

如何用Java编写模拟ATM取款机的程序

import java.io.IOException;

成都创新互联长期为上1000+客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为宝山企业提供专业的网站制作、网站设计,宝山网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制开发。

/**

* 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 = 0; i count; i++) {

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 = 0; i count2 - 1; i++) {

System.out.print("" + (char) buffer[i]);

}

System.out.println();

// 字符0 ~ 9对应ASCII值48 ~ 57

boolean flag = false;

for (int i = 0; i count2 - 1; i++) {

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 = 0; i count2 - 1; i++) {

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 = 0; i count2 - 1; i++) {

System.out.print("" + (char) buffer[i]);

}

System.out.println();

// 字符0 ~ 9对应ASCII值48 ~ 57

boolean flag = false;

for (int i = 0; i count2 - 1; i++) {

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 = 0; i count2 - 1; i++) {

System.out.print("" + (char) buffer[i]);

num += (char) buffer[i];

}

yue += Double.valueOf(num);

System.out.print(",现在余额¥:" + yue);

}

}

}

求Java代码 模拟简易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();

}

}

JAVA 模拟ATM柜员机模拟程序

/**

要求:使用字符用户界面。当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行:

1、查询余额:初始余额为10000元

2、ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。

3、ATM存款:不能出现负存款。

4、修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。

(卡号密码余额放到文件中)

*/

public class Test {

private static int account;

private static int password;

private static int money;

private static boolean isLogin;

static{

account = 123456;

password = 123456;

money = 10000;

isLogin = false;

}

//存款

public void cun(int cunKuan){

if(cunKuan=0){

this.money += cunKuan;

}else{

System.out.println("存款不能为负!");

}

}

//取款

public void qu(int quKuan){

if(this.money - quKuan  0){

System.out.println("余额不足!");

return;

}

if(isValid(quKuan)){

this.money -= quKuan;

}else{

System.out.println("取款不能为负,且应为100的倍数!");

}

}

//判断是否为有效的金额

private boolean isValid(int money){

if(money = 0  money % 100 == 0){

return true;

}

return false;

}

//登陆

public void login(){

System.out.println("请输入账号和密码【格式为:账号/密码】");

String login = new Scanner(System.in).next();

if(login.equalsIgnoreCase("123456/123456")){

this.isLogin = true;

}else{

System.out.println("账号或者密码错误,请重新输入!");

login();

}

}

//主菜单

public void show(){

System.out.println("[1]存款");

System.out.println("[2]取款");

System.out.println("[3]退出");

System.out.println("请输入:");

int key = new Scanner(System.in).nextInt();

switch (key) {

case 1:

cun(new Scanner(System.in).nextInt());

break;

case 2:

qu(new Scanner(System.in).nextInt());

break;

case 3:

System.exit(0);

default:

break;

}

}

public static void main(String[] args) {

Test t = new Test();

t.login();

if(t.isLogin){

for(;;){

t.show();

System.out.println("您当前的余额为:" + t.money);

}

}

}

}


网站栏目:java代码模拟atm机 用java编写atm机程序
本文地址:http://chengdu.cdxwcx.cn/article/ddocoso.html