ATM模拟程序

ATM模拟程序,第1张

/*

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

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

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

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

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

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

*/

public class ATM {

private Account acc

private File dataFile

private FileWriter fw

private BufferedWriter bw

private String filePath = "./data.txt"

public ATM() {

this.acc = new Account()

try {

this.dataFile = new File(this.filePath)

if (!this.dataFile.exists()) {

this.dataFile.createNewFile()

}

this.fw = new FileWriter(this.filePath)

this.bw = new BufferedWriter(this.fw)

} catch (IOException io) {

System.err.println("Cannot open file")

io.printStackTrace()

} catch (Exception e) {

e.printStackTrace()

}

}

public static void main(String[] args) {

new ATM().interact()

}

public void interact() {

BufferedReader br = new BufferedReader(new InputStreamReader(System.in))

System.out.println("Account #: ")

String temp = br.readLine()

System.out.println("Password: ")

String temp2 = br.readLine()

if (!this.acc.isValid(Long.parseLong(temp.trim()), temp2.trim()) {

System.err.println("Wrong password")

return

}

System.out.println("1. Account Inquery.")

System.out.println("2. Withdraw")

System.out.println("3. Deposit.")

System.out.println("4. Change Password.")

System.out.println("5. Export to File.")

System.out.println("0. Exit.")

int c = 100

while (c != 0) {

String str = br.readLine()

try {

int c = Integer.parseInt(str.trim())

} catch (NumberFormatException nfe) {

System.err.println("Invalid choice")

continue

}

switch (c) {

case 0:

System.out.println("Thank you")

break

case 1:

System.out.println("Balance: " + this.acc.balanceInquery())

break

case 2:

System.out.println("How much? ")

String temp = br.readLine()

try {

long ammount = Long.parseLong(temp.trim())

this.acc.withdraw(ammount)

break

} catch (NumberFormatException nfe) {

System.err.println("Invalid amount")

continue

}

case 3:

System.out.println("How much? ")

String temp = br.readLine()

try {

long ammount = Long.parseLong(temp.trim())

this.acc.deposit(ammount)

break

} catch (NumberFormatException nfe) {

System.err.println("Invalid amount")

continue

}

case 4:

System.out.println("Old password: ")

String temp = br.readLine()

System.out.println("New password: ")

String temp2 = br.readLine()

this.acc.changePassword(temp, temp2)

break

case 5:

this.bw.write(this.acc.toString())

break

default:

break

}

}

}

}

class Account {

private long accNo = 123456

private String pass = "123456"

private long balance = 10000

public Account() {

}

public boolean isValid(long accNo, String pass) {

return (this.accNo == accNo) &&(pass.equals(this.pass))

}

public void changePassword(String oldPass, String password) {

if (!oldPass.equals(this.pass)) {

System.err.println("Wrong password.")

return

}

if (password.length <6) {

System.err.println("Password too short")

return

}

if (password.equals(this.pass)) {

System.err.println("Password cannot be the same.")

return

}

this.pass = password

}

public long balanceInquery() {

return this.balance

}

public void withdraw(long amount) {

if (amount >5000 || amount <0) {

System.err.println("Withdraw limit: $0-$5000")

return

}

if ((amount % 100) != 0) {

System.err.println("The amount has to be a product of 100")

return

}

long newBalance = this.balance - amount

if (newBalance <0) {

System.err.println("Not enough money in the account")

return

}

this.balance = newBalance

}

public void deposit(long amount) {

if (amount <0) {

System.err.println("Cannot deposit negative amount")

return

}

this.balance += amount

}

public String toString() {

return ("Account #: " + this.accNo + "\n" + "Password: " + this.pass + "\n" + "Balance: " + this.balance)

}

}

请采纳答案,支持我一下。

import java.awt.*

import java.awt.event.*

import javax.swing.*

public class AtmSystem extends JFrame implements ActionListener

{

private JPanel buttonPanel=new JPanel()

private JPanel area1Panel=new JPanel()

private JPanel area2Panel=new JPanel()

private JTextField note=new JTextField(33)

private JButton buttons[]

private JButton dot = new JButton(".")

private JButton doublezero = new JButton("00")

private JButton ok = new JButton("确定")

private JButton exit = new JButton("退出")

private JButton cancel = new JButton("取消")

private JButton change=new JButton("更正")

private JButton getmoney = new JButton("取款")

private JButton search = new JButton("查询余额")

private JButton changekey = new JButton("修改密码")

private JButton putmoney= new JButton("存款")

private boolean flag0, flag1, flag2,flag3,flag4

int status=0

int k,s,k1

String str1="\t欢迎使用ATM柜员机!"

String str2="\t请输入用户名:"

String str3="\t请输入密码:"

String str4="\t请输入取款金额:"

String str5="\t请输入存款金额:"

String str6="\t请输入新密码:"

String str7="\t您的余额为:"

String str8="\t用户名错误,请重新输入:"

String str9="\t密码错误,请重新输入:"

String str10="\t余额不足,请重新输入:"

String str11="\t密码修改成功!"

String store1="",store2=""

double moneysum=10000

double getMoney

String username="123456"

String password="123456"

public AtmSystem()

{

super("ATM柜员机")

Container container=getContentPane()

buttons=new JButton[10]

dot.addActionListener(this)

doublezero.addActionListener(this)

change.addActionListener(this)

cancel.addActionListener(this)

ok.addActionListener(this)

exit.addActionListener(this)

changekey.addActionListener(this)

putmoney.addActionListener(this)

getmoney.addActionListener(this)

search.addActionListener(this)

area2Panel.add(changekey)

area2Panel.add(putmoney)

area2Panel.add(getmoney)

area2Panel.add(search)

area2Panel.setLayout(new GridLayout(1,3))

container.add(area2Panel,BorderLayout.NORTH)

note.setText(str1)

note.setEditable(false)

area1Panel.add(note)

buttonPanel.setLayout(new GridLayout(4,4))

for(int count=0count<buttons.lengthcount++)

{

buttons[count]=new JButton(""+count)

buttons[count].addActionListener(this)

buttonPanel.add(buttons[count])

}

buttonPanel.add(doublezero)

buttonPanel.add(dot)

buttonPanel.add(change)

buttonPanel.add(cancel)

buttonPanel.add(ok)

buttonPanel.add(exit)

container.add(buttonPanel,BorderLayout.SOUTH)

container.add(area1Panel)

area1Panel.setVisible(true)

area2Panel.setVisible(false)

setSize(400,250)

setVisible(true)

}

public void actionPerformed(ActionEvent event)

{

JButton operation = (JButton) event.getSource()

if(operation==ok)

{

if(status==0)

{

note.setText(""+str2)

status=1

}

else if(flag4==true)

{

area2Panel.setVisible(true)

area1Panel.setVisible(false)

flag4=false

}

else if(status==1&&k==1)

{

note.setText(""+str3)

status=2

k=0

}

else if(status==1&&k==0)

{

note.setText(""+str8)

store1=""

}

else if(status==2&&k1==1)

{

k1=0

area1Panel.setVisible(false)

area2Panel.setVisible(true)

status=3

}

else if(status==2&&k1==0)

{

note.setText(""+str9)

store2=""

}

else if(status==3)

{

if(flag0==true)

{

getMoney=Double.valueOf(store1).doubleValue()

if(getMoney<moneysum)

{

area2Panel.setVisible(true)

area1Panel.setVisible(false)

flag0=false

moneysum=moneysum-getMoney

}

else

{

area2Panel.setVisible(false)

area1Panel.setVisible(true)

note.setText(""+str10)

store1=""

}

}

else if(flag1==true)

{

area2Panel.setVisible(true)

area1Panel.setVisible(false)

flag1=false

}

else if(flag2==true)

flag2=false

else if(flag3=true)

{

flag4=true

note.setText(""+str11)

password=store2

flag3=false

}

}

}

else if(operation==cancel)

{

if(status==1)

{

note.setText(""+str1)

status=0

store1=""

store2=""

}

else if(status==2)

{

note.setText(""+str2)

status=1

store1=""

store2=""

}

else if(status==3&&flag2)

{

area1Panel.setVisible(false)

area2Panel.setVisible(true)

flag2=false

store1=""

store2=""

}

else if(status==3&&flag0)

{

area1Panel.setVisible(false)

area2Panel.setVisible(true)

flag0=false

store1=""

store2=""

}

else if(status==3&&flag3)

{

area1Panel.setVisible(false)

area2Panel.setVisible(true)

flag3=false

store1=""

store2=""

}

}

else if(operation==change)

{

if(status==1)

{

note.setText(""+str2)

store1=""

store2=""

}

else if(status==2)

{

note.setText(""+str3)

store1=""

store2=""

}

else if(status==3&&flag2)

{

note.setText(""+str5)

store1=""

store2=""

}

else if(status==3&&flag0)

{

note.setText(""+str4)

store1=""

store2=""

}

else if(status==3&&flag3)

{

note.setText(""+str6)

store1=""

store2=""

}

}

else if(operation==doublezero&&status==3&&flag0==true)

{

note.setText(note.getText()+"00")

}

else if(operation==dot&&status==3&&flag0==true)

{

note.setText(note.getText()+".")

}

else if(operation==getmoney)

{

note.setText(""+str4)

area2Panel.setVisible(false)

area1Panel.setVisible(true)

store1=""

flag0=true

}

else if(operation==search)

{

note.setText(""+str7+moneysum)

area2Panel.setVisible(false)

area1Panel.setVisible(true)

flag1=true

}

else if(operation==putmoney)

{

note.setText(""+str5)

area2Panel.setVisible(false)

area1Panel.setVisible(true)

flag2=true

}

else if(operation==changekey)

{

note.setText(""+str6)

area2Panel.setVisible(false)

area1Panel.setVisible(true)

store2=""

flag3=true

}

else if(operation==exit)

{

note.setText(""+str1)

area2Panel.setVisible(false)

area1Panel.setVisible(true)

status=0

flag0=flag1=flag2=flag3=flag4=false

store1=""

store2=""

k=k1=s=0

}

else if(status==1||(status==3&&flag2==true)||(status==3&&flag0==true))

{

for(int count=0count<buttons.lengthcount++)

if (operation== buttons[count])

{

note.setText(note.getText() + count)

store1+=event.getActionCommand()

}

user(store1)

}

else if(status==2||(status==3&&flag3==true))

{

for(int count=0count<buttons.lengthcount++)

if (operation== buttons[count])

{

note.setText(note.getText()+ "*")

store2+=event.getActionCommand()

}

key(store2)

}

}

public void user(String load)

{

if(username.equals(load))

{

k=1

s=1

}

}

public void key(String load)

{

if(password.equals(store2))

{

k1=1

}

}

public static void main(String args[])

{

AtmSystem application=new AtmSystem()

application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7801453.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存