⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 atmscreen.java

📁 ATM自动取款机模拟 源代码和编译后的程序
💻 JAVA
字号:
/*-------------------- ATM取款模拟Java实现-----------------
 *----- atmScreen(ATM屏幕)类:主要创建各操作窗体和相应按钮事件
 */

import java.sql.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
public class atmScreen implements ActionListener
{
	Frame fram;
	Panel Pnlwel,Pnlinput,PnlMenu,PnlGetmoney,PnlQueryleft,PnlChgpwd,PnlMsg;
	Button btnwel,btnimp,a1,a2,a3,a4,quit,b1,b2,b3,b4,b5,b6,back,dok;
	Button x1,y1,b7,b8,c1,c2,y2,d1,d2;
	Label msgstr,msghint,msg3,lbleft,lblMsg;	
	TextField ta,oldpwd,newpwd1,newpwd2;
	CardLayout clt=new CardLayout();//系统界面布局方式
	float gmoney=0;
	int nstate=0;//判别多个状态 1、修改密码;2、数据输入;3、菜单
	String gid,pwd;
	
	Account act=new Account();
	moneyMachine mce=new moneyMachine();
	readCard rcd=new readCard();
	dataAccess dac=new dataAccess();
	
		
	public void mainFram()
	{
		fram=new Frame("Welcome to 223 Bank2");		
		quit=new Button("退出");
		back=new Button("返回");
		back.addActionListener(this);
		quit.addActionListener(this);		
		
		this.showChangePwd();
		this.showGetMoney();
		this.showHint();
		this.showMenu();
		this.showQueryLeft();
		this.showWelcome();
		this.showInput();


		fram.setLayout(clt);
		fram.add(Pnlwel,"wel");	
		fram.add(Pnlinput,"input");
		fram.add(PnlMenu,"Menu");				
		fram.add(PnlChgpwd,"Chgpwd");
		fram.add(PnlGetmoney,"Getmoney");
		fram.add(PnlQueryleft,"Queryleft");
		fram.add(PnlMsg,"Msg");
  	fram.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});
		fram.setSize(400,300);
		fram.setLocation(400,200);
		fram.setVisible(true);				
	}
	
	public void showWelcome()
	{
		Pnlwel=new Panel();
		GridLayout gdo1=new GridLayout(3,3,10,10);
		Label xlbl1=new Label("Welcome to 223 Bank");
		xlbl1.setAlignment(Label.CENTER);
		btnwel=new Button("进入");
		x1=new Button("退出");
		btnwel.addActionListener(this);
		x1.addActionListener(this);
		Panel xpnl=new Panel();
		xpnl.add(btnwel);xpnl.add(x1);
		Pnlwel.setLayout(gdo1);
		Pnlwel.add(xlbl1);
		Pnlwel.add(xpnl);		
	}
	
	public void showInput()
	{
		Pnlinput=new Panel();
		GridLayout gdo2=new GridLayout(4,3,10,10);
		msgstr=new Label("请输入您的卡号:");
		msghint=new Label("");
		ta=new TextField("",15);
		
		btnimp=new Button("确定");
		btnimp.addActionListener(this);
		y1=new Button("退出");
		y1.addActionListener(this);
		y2=new Button("返回");
		y2.addActionListener(this);	
		y2.setVisible(false);
		Panel spnl1=new Panel();
		spnl1.setLayout(new BorderLayout());
		spnl1.add(ta,BorderLayout.NORTH);
		spnl1.add(msghint,BorderLayout.SOUTH);
		Panel spnl2=new Panel();
		spnl2.add(btnimp); spnl2.add(y2);	spnl2.add(y1);
		Pnlinput.setLayout(gdo2);
		Pnlinput.add(msgstr);
		Pnlinput.add(spnl1);
		Pnlinput.add(spnl2);		
	}
	
	public void showMenu()
	{
		PnlMenu=new Panel();
		GridLayout gdo3=new GridLayout(5,1);
		Label albl=new Label("请选择业务");
		//albl.setBackground(Color.blue);
		albl.setAlignment(Label.CENTER);
		a1=new Button("1、取款");	a2=new Button("2、余额查询");
		a3=new Button("3、修改密码"); a4=new Button("4、退出");
		a1.addActionListener(this);	a3.addActionListener(this);
		a2.addActionListener(this);	a4.addActionListener(this);
		PnlMenu.setLayout(gdo3);
		PnlMenu.add(albl);	PnlMenu.add(a1);
		PnlMenu.add(a2);	PnlMenu.add(a3);
		PnlMenu.add(a4);		
	}
	
	public void showGetMoney()
	{
		PnlGetmoney=new Panel();
		GridLayout gdo4=new GridLayout(4,4);
		PnlGetmoney.setLayout(new BorderLayout());
		Label blbl=new Label("请选择取款金额");
		msg3=new Label("");
		b1=new Button("100");	b2=new Button("300");
		b3=new Button("500");b4=new Button("800");
		b5=new Button("1000");b6=new Button("其他");
		b1.addActionListener(this);	b5.addActionListener(this);
		b2.addActionListener(this);	b6.addActionListener(this);
		b3.addActionListener(this);	
		b4.addActionListener(this);	
		b7=new Button("返回");
		b7.addActionListener(this);
		b8=new Button("退出");
		b8.addActionListener(this);				
		Panel bpnl1=new Panel();
		bpnl1.add(blbl);
		Panel bpnl3=new Panel();
		bpnl3.add(b7);	bpnl3.add(b8);
		Panel bpnl2=new Panel();
		bpnl2.setLayout(gdo4);
		bpnl2.add(b1);	bpnl2.add(new Label());	bpnl2.add(b4);
		bpnl2.add(b2);	bpnl2.add(msg3);				bpnl2.add(b5);
		bpnl2.add(b3);	bpnl2.add(new Label());	bpnl2.add(b6);
		bpnl2.add(new Label()); bpnl2.add(bpnl3);	bpnl2.add(new Label());
		PnlGetmoney.add(bpnl1,BorderLayout.NORTH);
		PnlGetmoney.add(bpnl2,BorderLayout.CENTER);		
	}
	
	public void showQueryLeft()
	{
		PnlQueryleft=new Panel();
		PnlQueryleft.setLayout(new BorderLayout());	
		Label clbl=new Label("帐户余额");
		clbl.setAlignment(Label.CENTER);
		lbleft=new Label("");
		Panel cpnl1=new Panel();
		cpnl1.add(lbleft);
		Panel cpnl2=new Panel();		
		c1=new Button("返回");
		c1.addActionListener(this);
		c2=new Button("退出");
		c2.addActionListener(this);			
		//cpnl2.add(edok);Button edok=new Button("确定");	
		cpnl2.add(c1);	cpnl2.add(c2);
		PnlQueryleft.add(clbl,BorderLayout.NORTH);
		PnlQueryleft.add(cpnl1,BorderLayout.CENTER);
		PnlQueryleft.add(cpnl2,BorderLayout.SOUTH);		
	}
	
	public void showChangePwd()
	{
		PnlChgpwd=new Panel();
		GridLayout gdo6=new GridLayout(5,1);
		PnlChgpwd.setLayout(gdo6);			
		Label dlbl1=new Label("修改密码");
		dlbl1.setAlignment(Label.CENTER);
		Label dlbl2=new Label("请输入原密码:");
		Label dlbl3=new Label("请输入新密码:");
		Label dlbl4=new Label("请再输入新密码:");
		dok=new Button("确定");
		dok.addActionListener(this);	
		oldpwd=new TextField(15);	newpwd1=new TextField(15);	newpwd2=new TextField(15);
		oldpwd.setEchoChar('*');	newpwd1.setEchoChar('*');		newpwd2.setEchoChar('*');
		d1=new Button("返回");
		d1.addActionListener(this);
		d2=new Button("退出");
		d2.addActionListener(this);	
		Panel dpnl1=new Panel();
		Panel dpnl2=new Panel();
		Panel dpnl3=new Panel();
		Panel dpnl4=new Panel();
		Panel dpnl5=new Panel();
		dpnl1.add(dlbl1);
		dpnl2.add(dlbl2);	dpnl2.add(oldpwd);	
		dpnl3.add(dlbl3);	dpnl3.add(newpwd1);
		dpnl4.add(dlbl4);	dpnl4.add(newpwd2);
		dpnl5.add(dok);		dpnl5.add(d1);	dpnl5.add(d2);
				
		PnlChgpwd.add(dpnl1);	PnlChgpwd.add(dpnl2);
		PnlChgpwd.add(dpnl3);	PnlChgpwd.add(dpnl4);
		PnlChgpwd.add(dpnl5);		
	}
	
	public void showHint()
	{
		PnlMsg=new Panel();
		PnlMsg.setLayout(new BorderLayout());
		Label elbl=new Label("系统提示");
		elbl.setAlignment(Label.CENTER);
		lblMsg=new Label("");
		Panel epnl=new Panel();
		epnl.add(lblMsg);
		Panel epnl2=new Panel();		
		epnl2.add(back);	epnl2.add(quit);	
		PnlMsg.add(elbl,BorderLayout.NORTH);
		PnlMsg.add(epnl,BorderLayout.CENTER);
		PnlMsg.add(epnl2,BorderLayout.SOUTH);		
	}
	
	public void actionPerformed(ActionEvent e)
	{
		if(e.getSource()==btnwel)//进入输入界面
		{			
			clt.show(fram,"input");
			ta.setFocusable(true);
		}
		if(e.getSource()==btnimp)//包含用户ID、密码和取款金额的验证等操作
		{
			if((msgstr.getText().indexOf("卡号"))>0)//用户ID验证
			{
				if(!act.checkAccount(rcd.getCardID(ta.getText())))
				{
					msghint.setText("非法用户ID,请重新输入!!");
					ta.setText("");
					dac.sleep(2);
					msghint.setText("");					
				}	
				else
				{
					ta.setEchoChar('*');					
					msgstr.setText("请输入密码:");
					this.gid=ta.getText();
					ta.setText("");						
				}
				return;			
			}	
				
				
			if((msgstr.getText().indexOf("密码"))>0)//密码验证操作
			{							
				if(!act.checkPwd(gid,ta.getText()))
				{
					msghint.setText("密码错误,请重新输入!!");
					ta.setText("");
					dac.sleep(2);
					msghint.setText("");									
				}
				else
				{
					ta.setEchoChar('\0');
					clt.show(fram,"Menu");
					this.pwd=ta.getText();				  
				}
				return;
			}
			
			if((msgstr.getText().indexOf("金额"))>0)//手动输入金额操作
			{
				try
				{					
					gmoney=Float.parseFloat(ta.getText());			
					if(act.reduceMoney(gid,gmoney)) 
					{						
						lblMsg.setText(mce.printBill(gmoney,gid,act.queryBalance(gid)));	
						nstate=3;					
					}
					else
					{
						lblMsg.setText("余额不足!!");
						nstate=3;
					}
					
				}
				catch(NumberFormatException e2)//输入非法的金额
				{
					lblMsg.setText("您输入的金额错误!!!");
					nstate=2;
				}
				finally
				{					
					clt.show(fram,"Msg");
					return;					
				}
				
			}	
		}		
		
		if(e.getSource()==a4 || e.getSource()==b8 || e.getSource()==c2 || e.getSource()==d2 ||
		   e.getSource()==x1 || e.getSource()==y1 || e.getSource()==quit)//退出系统
		{
			this.gid="";
			this.pwd="";
			act.finalize();
			dac.finalize();
			rcd.exitCard();
		}
		
		if(e.getSource()==a1)//进入取款界面
		{
			clt.show(fram,"Getmoney");
			return;
		}

		if(e.getSource()==a2)//进入余额查看界面
		{
			float mleft=act.queryBalance(gid);
			lbleft.setText("帐号余额为:$ "+mleft);
			
			clt.show(fram,"Queryleft");
			return;
		}
		
		if(e.getSource()==a3)//进入密码修改界面
		{
			clt.show(fram,"Chgpwd");
			return;
		}	
		
		if(e.getSource()==b1)//执行取款100操作
		{
			if(!act.reduceMoney(gid,100)) 
				lblMsg.setText("余额不足!!");
			else
			{				
				lblMsg.setText(mce.printBill(100,gid,act.queryBalance(gid)));
							
			}
			nstate=3;	
			clt.show(fram,"Msg");	
			return;
			
		}
		
		if(e.getSource()==b2)//执行取款300操作
		{
			if(!act.reduceMoney(gid,300)) 
				lblMsg.setText("余额不足!!");
			else
			{				
				lblMsg.setText(mce.printBill(300,gid,act.queryBalance(gid)));
										
			}
			nstate=3;
			clt.show(fram,"Msg");		
			return;
		}	
		
		if(e.getSource()==b3)//执行取款500操作
		{
			if(!act.reduceMoney(gid,500)) 
				lblMsg.setText("余额不足!!");
			else
			{				
				lblMsg.setText(mce.printBill(500,gid,act.queryBalance(gid)));
							
			}
			nstate=3;	
			clt.show(fram,"Msg");				
			return;
		}	
		
		if(e.getSource()==b4)//执行取款800操作
		{
			if(!act.reduceMoney(gid,800)) 
				lblMsg.setText("余额不足!!");
			else
			{				
				lblMsg.setText(mce.printBill(800,gid,act.queryBalance(gid)));	
									
			}
			nstate=3;
			clt.show(fram,"Msg");		
			return;			
		}	
		
		if(e.getSource()==b5)//执行取款1000操作
		{
			if(!act.reduceMoney(gid,1000)) 
				lblMsg.setText("余额不足!!");
			else
			{				
				lblMsg.setText(mce.printBill(1000,gid,act.queryBalance(gid)));								
			}
			nstate=3;
			clt.show(fram,"Msg");				
			return;			
		}	
		
		if(e.getSource()==b6)//进入手动输入金额取款界面
		{
			y2.setVisible(true);
			msgstr.setText("请输入金额");
			ta.setText("");
			msghint.setText("");
			clt.show(fram,"input");
			return;
		}	
			
		if(e.getSource()==dok)//执行修改密码操作
		{
			int t=act.changePwd(gid,pwd,oldpwd.getText(),newpwd1.getText(),newpwd2.getText());
			if(t==-1)
				{lblMsg.setText("原密码输入错误!!"); nstate=1;}
			else if(t==-2)
				{lblMsg.setText("两次密码输入不同!!"); nstate=1;}
			else if(t==-3)
				{lblMsg.setText("新密码不能为空!!"); nstate=1;}				
			if(t==1)
				{
					lblMsg.setText("密码修改成功!!!"); 
					nstate=3;
					this.pwd=newpwd1.getText();
					oldpwd.setText("");	newpwd1.setText("");	newpwd2.setText("");
				}
			clt.show(fram,"Msg");	
			return;							
			
		}	
		
		if(e.getSource()==back)
		{
			if(nstate==1)
				{
					clt.show(fram,"Chgpwd");
				}				
			else if(nstate==2)
				{
					clt.show(fram,"input");
					ta.setText("");
				}	
			else if(nstate==3) clt.show(fram,"Menu");
		}														
		
		if(e.getSource()==b7 || e.getSource()==c1 || e.getSource()==d1)
		{
			clt.show(fram,"Menu");
		}		
		
		if(e.getSource()==y2)
		{
			clt.show(fram,"Getmoney");
		}
					
	}	
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -