要求:使用字符用户界面。当输入给定的卡号和密码(初始卡号和密码为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)
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)