高仿中国银行ATM系统

 

温馨提示由于代码太多只是上传了ATM客户端部分,管理员和超级管理员还有数据库部分上传了工程包,可以直接点击
https://i.cnblogs.com/Files.aspx去里面找。



package Atm; import java.awt.GridLayout; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.ButtonGroup; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; public class ChooseIdentity extends FatherFrame{ JRadioButton jrb1; JRadioButton jrb2; JRadioButton jrb3; public ChooseIdentity(){ setInterface(); } public void initJLabel(){ jb1 = new JLabel(); jb2 = new JLabel(); jb3 = new JLabel(); jb4 = new JLabel(new ImageIcon("image/确认2.png")); jb5 = new JLabel(); jb6 = new JLabel(); jb7 = new JLabel(); jb8 = new JLabel(); } public void setListener(){ jb4.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (jrb1.isSelected()) { dispose(); new MainFra(); }else if(jrb2.isSelected()){ dispose(); new MainFraManager(); }else{ dispose(); new MainFraAdministrator(); } } }); } public void setJLabelVisible(){ jb4.setVisible(true); } public void setInterface(){ JPanel p1=new JPanel(); JPanel p2=new JPanel(); JLabel j=new MyJLabel1("请选择您的登录身份"); // 设置三个单选框 jrb1 = new JRadioButton("普通用户", true);// 单选框默认选择普通用户 jrb2 = new JRadioButton("普通管理员"); jrb3 = new JRadioButton("超级管理员"); ButtonGroup btg = new ButtonGroup(); // 设置单选框 jrb1.setContentAreaFilled(false); jrb2.setContentAreaFilled(false); jrb3.setContentAreaFilled(false); btg.add(jrb1); btg.add(jrb2); btg.add(jrb3); p2.setLayout(new GridLayout(3, 1, 0, 40)); p2.add(jrb1); p2.add(jrb2); p2.add(jrb3); p1.add(j); p1.setOpaque(false); p2.setOpaque(false); setLayout(null); p1.setBounds(250, 150, 300, 60); p2.setBounds(355, 250, 120, 140); add(p1); add(p2); setVisible(true); } }

  

package Atm;
//客户端类
public class Client {
		public static void main(String[] args) {
			new ChooseIdentity();
		}
		
		
}

  

package Atm;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class DatabaseOperation {

	PreparedStatement ps;
	Connection dbConn;
	ResultSet rs;
	String driverName;
	String dbURL;
	String userName;
	String userPwd;

	public DatabaseOperation() {
		driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
		dbURL = "jdbc:sqlserver://localhost:1433;DatabaseName=ATM";
		userName = "sa";
		userPwd = "123456";
		try {
			Class.forName(driverName);
			dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
		} catch (Exception e1) {
			e1.printStackTrace();
			System.out.print("抛出异常");
		}
	}// 构造方法

	public void create(String sql) { // 增
		ExecuteUpdate(sql);
	}

	public void delete(String sql) { // 删
		ExecuteUpdate(sql);
	}

	public void update(String sql) { // 改
		ExecuteUpdate(sql);
	}

	public ResultSet search(String sql) { // 查
		try {
			ps = dbConn.prepareStatement(sql,
					ResultSet.TYPE_SCROLL_INSENSITIVE,
					ResultSet.CONCUR_READ_ONLY);
			rs = ps.executeQuery();
		} catch (Exception e1) {
			e1.printStackTrace();
			System.out.print("抛出异常");
		} finally {
			return rs;
		}
	}

	private void ExecuteUpdate(String sql) {
		try {
			ps = dbConn.prepareStatement(sql);
			ps.executeUpdate();
		} catch (Exception e1) {
			e1.printStackTrace();
			System.out.print("抛出异常");
		}
	}

	public void close() { // 关闭连接
		try {
			ps.close();
			dbConn.close();
		} catch (Exception e1) {
			e1.printStackTrace();
			System.out.print("抛出异常");
		}
	}
}// 类

  

package Atm;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;
//用于TransferSecond 类
class DecimalOnlyDocument extends PlainDocument { 
    public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {  
        StringBuffer tmp = new StringBuffer(super.getText(0, super.getLength()));  
        tmp.insert(offs, str);  
        Pattern p = Pattern.compile("^-?\\d*(\\.)?\\d*$");  
        Matcher m = p.matcher(tmp.toString());  
        if (m.find()) 
            super.insertString(offs, str, a);  
    }
}  

  

package Atm;

//查询交易明细






import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;

public class Detail extends FatherFrame {

	DatabaseOperation databaseOperation;
	ResultSet rs;
	JPanel p1, p2_1, p2_2, p2_3, p2_4, p3;
	JLabel j1, j3;
	JLabel[] jj1;
	JLabel[] jj2;
	JLabel[] jj3;
	JLabel[] jj4;
	JButton b3, b4;
	int tag_mount = 0;// 标识交易详情有多少条
	int tag_page = 1;// 标识第几页
	int tag_maxPage = 1;// 标识最多第几页

	public Detail() {
		super(60);
		databaseOperation = new DatabaseOperation();
		setInterface();
		showInformation();
		addButtonsListener();
	}
	private void addButtonsListener() {
		//上一页
		b3.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				b4.setVisible(true);
				tag_page--;
				try {
					p2_1.removeAll();
					p2_2.removeAll();
					p2_3.removeAll();
					p2_4.removeAll();

					p2_1.setLayout(new GridLayout(11, 0));
					p2_1.add(new MyJLabel4("序号"));
					p2_2.setLayout(new GridLayout(11, 0));
					p2_2.add(new MyJLabel4(" 交易日期"));
					p2_3.setLayout(new GridLayout(11, 0));
					p2_3.add(new MyJLabel4("交易类型"));
					p2_4.setLayout(new GridLayout(11, 0));
					p2_4.add(new MyJLabel4("     交易金额"));

					int i = 0;

					int begin = (tag_page - 1) * 10 + 1;
					System.out.println("begin=" + begin);
					rs.absolute(begin);
					do {
						if (tag_page == 1)
							jj1[i] = new MyJLabel5(" " + String.valueOf(i + 1));
						else
							jj1[i] = new MyJLabel5(" "
									+ String.valueOf(tag_page * 10 + i + 1));
						jj2[i] = new MyJLabel5(rs.getString("CRdate"));
						jj3[i] = new MyJLabel5("  " + rs.getString("CRtype"));
						if (rs.getString("CRtype").equals("支出"))
							jj4[i] = new MyJLabel5("-"
									+ rs.getString("CRmoney") + "CNY");
						else
							jj4[i] = new MyJLabel5(rs.getString("CRmoney")
									+ "CNY");
						jj4[i].setHorizontalAlignment(SwingConstants.RIGHT);// 使标签内的文字右对齐!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
						p2_1.add(jj1[i]);
						p2_2.add(jj2[i]);
						p2_3.add(jj3[i]);
						p2_4.add(jj4[i]);
						i++;
						if (i == 10) {// 一次最多只能输出10条信息
							b4.setVisible(true);
							break;
						}

					} while (rs.next());
					validate();// 要调用JFrame的validate()方法才会刷新控件,要调用JFrame的validate()方法才会刷新控件,要调用JFrame的validate()方法才会刷新控件

				} catch (Exception e1) {
					e1.printStackTrace();
					System.out.print("抛出异常");
				}

				if (tag_page == 1)
					b3.setVisible(false);
			}
		});
		//下一页
		b4.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				b3.setVisible(true);
				tag_page++;

				try {
					p2_1.removeAll();
					p2_2.removeAll();
					p2_3.removeAll();
					p2_4.removeAll();

					p2_1.setLayout(new GridLayout(11, 0));
					p2_1.add(new MyJLabel4("序号"));
					p2_2.setLayout(new GridLayout(11, 0));
					p2_2.add(new MyJLabel4(" 交易日期"));
					p2_3.setLayout(new GridLayout(11, 0));
					p2_3.add(new MyJLabel4("交易类型"));
					p2_4.setLayout(new GridLayout(11, 0));
					p2_4.add(new MyJLabel4("     交易金额"));

					int i = 0;
					int begin = (tag_page - 1) * 10 + 1;
					System.out.println("begin=" + begin);
					rs.absolute(begin);
					do {

						jj1[i] = new MyJLabel5(" "
								+ String.valueOf(tag_page * 10 + i + 1));
						jj2[i] = new MyJLabel5(rs.getString("CRdate"));
						jj3[i] = new MyJLabel5("  " + rs.getString("CRtype"));
						if (rs.getString("CRtype").equals("支出")) {
							jj4[i] = new MyJLabel5("-"
									+ rs.getString("CRmoney") + "CNY");
						} else
							jj4[i] = new MyJLabel5(rs.getString("CRmoney")
									+ "CNY");
						jj4[i].setHorizontalAlignment(SwingConstants.RIGHT);// 使标签内的文字右对齐!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
						p2_1.add(jj1[i]);
						p2_2.add(jj2[i]);
						p2_3.add(jj3[i]);
						p2_4.add(jj4[i]);
						i++;
						if (i == 10) {// 一次最多只能输出10条信息
							b4.setVisible(true);
							break;
						}
					} while (rs.next());
					validate();// 要调用JFrame的validate()方法才会刷新控件,要调用JFrame的validate()方法才会刷新控件,要调用JFrame的validate()方法才会刷新控件

				} catch (Exception e1) {
					e1.printStackTrace();
					System.out.print("抛出异常");
				}

				if (tag_page == tag_maxPage)
					b4.setVisible(false);
			}
		});
	}

	private void setInterface() {
		p1 = new JPanel();
		p2_1 = new JPanel();
		p2_2 = new JPanel();
		p2_3 = new JPanel();
		p2_4 = new JPanel();
		p3 = new JPanel();
		
		b3 = new JButton("上一页");
		b4 = new JButton("下一页");
		b3.setVisible(false);
		b4.setVisible(false);
		b3.setBounds(420, 500, 80, 25);
		b4.setBounds(500, 500, 80, 25);
		add(b3);
		add(b4);
		

		j1 = new MyJLabel1("历史交易明细");
		p1.add(j1);

		j3 = new MyJLabel5("本查询结果为账户历史交易,但不包含银行收费交易费用交易");
		p3.add(j3);


		setLayout(null);
		p1.setBounds(199, 90+50, 400, 40);
		p2_1.setBounds(175, 190, 144, 270);
		p2_2.setBounds(255, 190, 144, 270);
		p2_3.setBounds(398, 190, 144, 270);
		p2_4.setBounds(467, 190, 154, 270);
		p3.setBounds(100, 455, 600, 40);

		p1.setOpaque(false);// 设置背景透明
		p2_1.setOpaque(false);
		p2_2.setOpaque(false);
		p2_3.setOpaque(false);
		p2_4.setOpaque(false);
		p3.setOpaque(false);

		add(p1);
		add(p2_1);
		add(p2_2);
		add(p2_3);
		add(p2_4);
		add(p3);
		setVisible(true);
	}

	protected void initJLabel() {
		jb1 = new JLabel();
		jb2 = new JLabel();
		jb3 = new JLabel(new ImageIcon("image/按钮背景左.png"));
		jb4 = new JLabel(new ImageIcon("image/返回.png"));
		jb5 = new JLabel();
		jb6 = new JLabel();
		jb7 = new JLabel(new ImageIcon("image/按钮背景右.png"));
		jb8 = new JLabel(new ImageIcon("image/回主菜单右.png"));
	}

	protected void setJLabelVisible() {
		jb3.setVisible(false);
		jb4.setVisible(true);
		jb7.setVisible(false);
		jb8.setVisible(true);
	}

	protected void setListener() {
		jb4.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				databaseOperation.close();
				dispose();
				new Balance();
				timeThread.stop();
			}
		});
		jb8.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				databaseOperation.close();
				dispose();
				new AtmFrame();
				timeThread.stop();
			}
		});
	/*	//上一页
				jb3.addMouseListener(new MouseAdapter() {
					public void mouseClicked(MouseEvent e) {
						jb7.setVisible(true);
						tag_page--;
						try {
							p2_1.removeAll();
							p2_2.removeAll();
							p2_3.removeAll();
							p2_4.removeAll();

							p2_1.setLayout(new GridLayout(11, 0));
							p2_1.add(new MyJLabel4("序号"));
							p2_2.setLayout(new GridLayout(11, 0));
							p2_2.add(new MyJLabel4(" 交易日期"));
							p2_3.setLayout(new GridLayout(11, 0));
							p2_3.add(new MyJLabel4("交易类型"));
							p2_4.setLayout(new GridLayout(11, 0));
							p2_4.add(new MyJLabel4("     交易金额"));

							int i = 0;

							int begin = (tag_page - 1) * 10 + 1;
							System.out.println("begin=" + begin);
							rs.absolute(begin);
							do {
								if (tag_page == 1)
									jj1[i] = new MyJLabel5(" " + String.valueOf(i + 1));
								else
									jj1[i] = new MyJLabel5(" "
											+ String.valueOf(tag_page * 10 + i + 1));
								jj2[i] = new MyJLabel5(rs.getString("CRdate"));
								jj3[i] = new MyJLabel5("  " + rs.getString("CRtype"));
								if (rs.getString("CRtype").equals("支出"))
									jj4[i] = new MyJLabel5("-"
											+ rs.getString("CRmoney") + "CNY");
								else
									jj4[i] = new MyJLabel5(rs.getString("CRmoney")
											+ "CNY");
								jj4[i].setHorizontalAlignment(SwingConstants.RIGHT);// 使标签内的文字右对齐!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
								p2_1.add(jj1[i]);
								p2_2.add(jj2[i]);
								p2_3.add(jj3[i]);
								p2_4.add(jj4[i]);
								i++;
								if (i == 10) {// 一次最多只能输出10条信息
									jb7.setVisible(true);
									break;
								}

							} while (rs.next());
							validate();// 要调用JFrame的validate()方法才会刷新控件,要调用JFrame的validate()方法才会刷新控件,要调用JFrame的validate()方法才会刷新控件

						} catch (Exception e1) {
							e1.printStackTrace();
							System.out.print("抛出异常");
						}

						if (tag_page == 1)
							jb3.setVisible(false);
					}
				});
				//下一页
				jb7.addMouseListener(new MouseAdapter() {
					public void mouseClicked(MouseEvent e) {
						jb3.setVisible(true);
						tag_page++;

						try {
							p2_1.removeAll();
							p2_2.removeAll();
							p2_3.removeAll();
							p2_4.removeAll();

							p2_1.setLayout(new GridLayout(11, 0));
							p2_1.add(new MyJLabel4("序号"));
							p2_2.setLayout(new GridLayout(11, 0));
							p2_2.add(new MyJLabel4(" 交易日期"));
							p2_3.setLayout(new GridLayout(11, 0));
							p2_3.add(new MyJLabel4("交易类型"));
							p2_4.setLayout(new GridLayout(11, 0));
							p2_4.add(new MyJLabel4("     交易金额"));

							int i = 0;
							int begin = (tag_page - 1) * 10 + 1;
							System.out.println("begin=" + begin);
							rs.absolute(begin);
							do {

								jj1[i] = new MyJLabel5(" "
										+ String.valueOf(tag_page * 10 + i + 1));
								jj2[i] = new MyJLabel5(rs.getString("CRdate"));
								jj3[i] = new MyJLabel5("  " + rs.getString("CRtype"));
								if (rs.getString("CRtype").equals("支出")) {
									jj4[i] = new MyJLabel5("-"
											+ rs.getString("CRmoney") + "CNY");
								} else
									jj4[i] = new MyJLabel5(rs.getString("CRmoney")
											+ "CNY");
								jj4[i].setHorizontalAlignment(SwingConstants.RIGHT);// 使标签内的文字右对齐!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
								p2_1.add(jj1[i]);
								p2_2.add(jj2[i]);
								p2_3.add(jj3[i]);
								p2_4.add(jj4[i]);
								i++;
								if (i == 10) {// 一次最多只能输出10条信息
									jb7.setVisible(true);
									break;
								}
							} while (rs.next());
							validate();// 要调用JFrame的validate()方法才会刷新控件,要调用JFrame的validate()方法才会刷新控件,要调用JFrame的validate()方法才会刷新控件

						} catch (Exception e1) {
							e1.printStackTrace();
							System.out.print("抛出异常");
						}

						if (tag_page == tag_maxPage)
							jb7.setVisible(false);
					}
				});*/
	}

	private void showInformation() {
		try {
			rs = databaseOperation
					.search("SELECT  CustomerRecord.CRdate,CustomerRecord.CRtype,CustomerRecord.CRmoney FROM ATM.dbo.CustomerRecord WHERE CustomerRecord.CRcard="
							+ MainFra.getBcard()+"and CustomerRecord.CRtype  not like"+"'修改密码'");
			int num = 0;
			while (rs.next())
				num++;
			tag_mount = num;
			tag_maxPage = tag_mount / 10 + 1;

			jj1 = new MyJLabel5[num];
			jj2 = new MyJLabel5[num];
			jj3 = new MyJLabel5[num];
			jj4 = new MyJLabel5[num];

			p2_1.setLayout(new GridLayout(11, 0));
			p2_1.add(new MyJLabel4("序号"));
			p2_2.setLayout(new GridLayout(11, 0));
			p2_2.add(new MyJLabel4(" 交易日期"));
			p2_3.setLayout(new GridLayout(11, 0));
			p2_3.add(new MyJLabel4("交易类型"));
			p2_4.setLayout(new GridLayout(11, 0));
			p2_4.add(new MyJLabel4("     交易金额"));

			// 打开数据库,记录等于1时,将数据放到jj1[1],jj2[1],jj3[1],jj4[1]
			// ,再将label标签投射到屏幕上,等于2时也是如此,如此循环直至数据库next为空
			rs = databaseOperation
					.search("SELECT  CustomerRecord.CRdate,CustomerRecord.CRtype,CustomerRecord.CRmoney FROM ATM.dbo.CustomerRecord WHERE CustomerRecord.CRcard="
							+ MainFra.getBcard()+"and CustomerRecord.CRtype  not like"+"'修改密码'"
							+ " ORDER BY CustomerRecord.CRno DESC");
			int i = 0;
			rs.first();
			do {
				jj1[i] = new MyJLabel5(" " + String.valueOf(i + 1));
				jj2[i] = new MyJLabel5(rs.getString("CRdate"));
				jj3[i] = new MyJLabel5("  " + rs.getString("CRtype"));
				if (rs.getString("CRtype").equals("支出"))
					jj4[i] = new MyJLabel5("-" + rs.getString("CRmoney")
							+ "CNY");
				else
					jj4[i] = new MyJLabel5(rs.getString("CRmoney") + "CNY");
				jj4[i].setHorizontalAlignment(SwingConstants.RIGHT);// 使标签内的文字右对齐!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
				p2_1.add(jj1[i]);
				p2_2.add(jj2[i]);
				p2_3.add(jj3[i]);
				p2_4.add(jj4[i]);
				i++;
				if (i == 10) {// 一次最多只能输出10条信息
					b4.setVisible(true);
					tag_page = 1;
					break;
				}
			} while (rs.next());

		} catch (Exception e1) {
			e1.printStackTrace();
			System.out.print("抛出异常");
		}
	}
}

  

package Atm;
//退出窗口exitFrame.java

import javax.swing.*;

import java.awt.*;

public class ExitFrame extends FatherFrame{
	public ExitFrame(){
		show2();
		try {
		       Thread.sleep (2000 ) ; 
		       dispose();
				new MainFra();
		 } catch (InterruptedException ie){
		 }
		
	}
	
	
	 public void show2(){            //这里很不解,写成show运行不显示任何东西,连Frame都没有,但不报错,同时我只是写了这个方法但是没有调用。而且父类FatherFrame中也没有这个方法。然后把方法改成show2就没问题了,这是为什么???
		Font font1 = new Font("宋体", Font.BOLD, 30);
		JLabel j1 = new JLabel("谢谢使用");
		JPanel p1 = new JPanel();
		p1.setOpaque(false);
		j1.setFont(font1);
		p1.add(j1);
		setLayout(null);
		p1.setBounds(300, 240, 200, 60);
		add(p1);
	 }

	protected void initJLabel(){
		jb1 = new JLabel();
		jb2 = new JLabel();
		jb3 = new JLabel();
		jb4 = new JLabel();
		jb5 = new JLabel();
		jb6 = new JLabel();
		jb7 = new JLabel();
		jb8 = new JLabel();
	}
	protected void setListener(){
		
	}
	protected void setJLabelVisible(){
		
	}
}

  

package Atm;
//界面父类
import javax.swing.*;
import java.awt.*;
import java.util.Timer;
import java.util.TimerTask;

public abstract class FatherFrame extends JFrame{
	public ImageIcon img1 = new ImageIcon("image/背景图.png");
    public JLabel imgLabel = new JLabel(img1);
    public JLabel texTime = new JLabel();
    public JLabel time = new JLabel(); 
    JLabel jb1;
    JLabel jb2;
    JLabel jb3;
    JLabel jb4;
    JLabel jb5;
    JLabel jb6;
    JLabel jb7;
    JLabel jb8;
    JPanel fp1 = new JPanel();
    JPanel fp2 = new JPanel();
    
    private LedNumber led;  
    private int timepassed;  
    protected TimeThread timeThread; 
    Font font = new Font("Calibri", Font.BOLD, 16);
    
    abstract protected void initJLabel();
    abstract protected void setJLabelVisible();
	abstract protected void setListener();
	
    public void createFrame(){
    	setInterfaceAndSetListener();
    	imgLabel.setBounds(0, 0, img1.getIconWidth(), img1.getIconHeight());
		// 将图片添加到第二层
		getLayeredPane().add(imgLabel, new Integer(Integer.MIN_VALUE));
		// 将最上层设置为透明
		JPanel jp = (JPanel) this.getContentPane();
		jp.setOpaque(false);// 设置为透明

		
		setTitle("中行ATM系统");
		setSize(815, 625); // 设置窗口大小
		setResizable(false); // 锁定窗口大小
		setLocationRelativeTo(null); // 为了使窗口显示在屏幕中央
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
    }
    
    	
    
    protected void setInterfaceAndSetListener(){
        setLayout(null);
        fp1.setLayout(new GridLayout(4,1,0,0));
        fp2.setLayout(new GridLayout(4,1,0,0));
        fp1.setOpaque(false);
        fp2.setOpaque(false);
        fp1.setBounds(0,165,180,400);
        fp2.setBounds(635,165,180,400);
        add(fp1);
        add(fp2);
        setVisible(true);
        
        initJLabel();   			//抽象方法		//这一个方法必须放在下面八个方法前面,否则会因为JLabel没有实例化而直接将它放进面板而出错
        fp1.add(jb1);
        fp1.add(jb2);
        fp1.add(jb3);
        fp1.add(jb4);
        fp2.add(jb5);
        fp2.add(jb6);
        fp2.add(jb7);
        fp2.add(jb8);
        setJLabelVisible(); 			//抽象方法
        setListener(); 			//抽象方法
    }
    
    
    public FatherFrame(){
    	createFrame();
    	
		setLayout(null);
		time.setBounds(650, 95, 150, 40);
		time.setFont(font);
        add(time);  
        NowTime nt = new NowTime();
        nt.setTimer(time);   
    }
    
    //带参数的构造方法用来实现倒计时
	public FatherFrame(int rtime){
		createFrame();
		
		timepassed = rtime;
		timeThread = new TimeThread();  
        led = new LedNumber(); 
		
		texTime.setBorder(BorderFactory.createLoweredBevelBorder());
		texTime.setIcon(new ImageIcon(led.getLedImage(timepassed, 2)));
		
		JPanel p = new JPanel();
		p.setOpaque(false);
		p.add(texTime);
		
		setLayout(null);
		time.setFont(font);
		time.setBounds(650, 95, 150, 40);
        add(time);  
        NowTime nt = new NowTime();
        nt.setTimer(time);  
        
		p.setBounds((815 - 80)/2, 35, 80, 80);
		
		add(p);
		
		timeThread.start();
		Timer timer = new Timer();
		timer.schedule(new TimerTask() {//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!这个方法不知道有什么用!!!它里面有个run方法,注意他跟倒计时那里的run方法是没有关系的。之前倒计时的stop方法无法运行就是因为我们把start的方法写到了这个run方法中,正确的做法是写到倒计时TimeThread类中的run方法中
			// 启动其他程序
			public void run() {

			}
		},rtime * 1000);
	}
	
	class TimeThread extends Thread {
		 
        public TimeThread() {}  
    
        public void run() {  
            while (timepassed > 0 && timepassed < 1000 && Thread.currentThread() == timeThread) {  
                SwingUtilities.invokeLater(new Runnable() {  
                    public void run() {  
                        texTime.setIcon(new ImageIcon(led  
                                .getLedImage(timepassed, 2)));  
                        
                    }  
                });
                try {  
                    Thread.sleep(1000);  
                } catch (InterruptedException e) {  
                    System.out.println("interupped");  
                    e.printStackTrace();  
                }  
                timepassed--;  
            }  
            dispose();//销毁当前frame 
			new MainFra();
        }  
    }  

}

  

package Atm;
//此类是显示倒计时中数字字体的工具类

import java.awt.Color;  
import java.awt.Component;  
import java.awt.Graphics;  
import java.awt.Image;  
import java.awt.Polygon;  
import java.awt.image.BufferedImage;  

public class LedNumber extends Component{
	private Polygon segmentPolygon[];  
    private int numberSegment[][] = { { 0, 1, 2, 3, 4, 5 }, // 0  
            { 1, 2 }, // 1  
            { 0, 1, 3, 4, 6 }, // 2  
            { 0, 1, 2, 3, 6 }, // 3  
            { 1, 2, 5, 6 }, // 4  
            { 0, 2, 3, 5, 6 }, // 5  
            { 0, 2, 3, 4, 5, 6 }, // 6  
            { 0, 1, 2 }, // 7  
            { 0, 1, 2, 3, 4, 5, 6 }, // 8  
            { 0, 1, 2, 3, 5, 6 } // 9  
    };  
  
        private int div[] = {1,10,100,1000,10000,100000};  
        private Image numberImage[];  
        private Color fontColor = Color.green;   //the color of number  
        private Color bgColor = Color.black;   //背景颜色为黑色
        private Color maskColor = Color.darkGray;  
        private int dWidth = 20;  
        private int dHeight = 38;  
          
        public LedNumber(){  
            init();  
        }  
          
        public LedNumber(Color fc){  
            fontColor=fc;  
            init();  
        }  
          
        public LedNumber(Color fc,Color bgc){  
            fontColor=fc;  
            bgColor=bgc;  
            init();  
        }  
          
        public LedNumber(Color fc,Color bgc,Color mc){  
            fontColor=fc;  
            bgColor=bgc;  
            maskColor=mc;  
            init();  
        }  
          
          
         
  
        public void setBackGround(Color bgc){  
            this.bgColor=bgc;  
        }  
          
        public void setFontColor(Color fc){  
            this.fontColor=fc;  
        }  
          
        public void setMaskColor(Color mc){  
            this.maskColor=mc;  
        }  
          
        public void setDigitalWidth(int dWidth){  
            this.dWidth=dWidth;  
        }  
          
        public void setDigitalHeight(int dHeight){  
            this.dHeight=dHeight;  
        }  
          
         
        public Image getLedImage(int dg,int bound){  
            dg%=div[bound];  
            Image image=new BufferedImage(dWidth*bound,dHeight,BufferedImage.TYPE_INT_RGB);  
            Graphics g=image.getGraphics();  
            bound--;  
            for (int i = bound; i >= 0; i--) {  
                g.drawImage(numberImage[dg / div[i]], (bound - i) * dWidth, 0, this);  
                dg %= div[i];  
            }  
            return image;  
        }  
          
        public void init(){  
            segmentPolygon=new Polygon[7];  
            numberImage=new Image[10];  
            setNumberPolygon();  
            setNumberImage();  
              
        }  
          
         
        public void setNumberImage(){  
            int i=0;  
            int j=0;  
            int k;  
            Graphics g;  
            while(i<10){  
                numberImage[i]=new BufferedImage(35,40,BufferedImage.TYPE_INT_RGB);  
                g=numberImage[i].getGraphics();  
                g.setColor(bgColor);  
                g.fillRect(0, 0, 35, 40);  
                g.setColor(Color.DARK_GRAY);  
                j=0;  
                while(j<numberSegment[8].length){  
                    k=numberSegment[8][j];  
                    g.fillPolygon(segmentPolygon[k]);  
                    j++;  
                }  
                g.setColor(fontColor);  
                j=0;  
                while(j<numberSegment[i].length){  
                    k=numberSegment[i][j];  
                    g.fillPolygon(segmentPolygon[k]);  
                    j++;  
                }  
                i++;  
            }  
        }  
          
        public void setNumberPolygon(){  
            int mid=dHeight/2+1;  
            segmentPolygon[0]=new Polygon();  
            segmentPolygon[0].addPoint(2, 1);  
            segmentPolygon[0].addPoint(dWidth-2, 1);  
            segmentPolygon[0].addPoint(dWidth-5, 4);  
            segmentPolygon[0].addPoint(4, 4);  
            segmentPolygon[1]=new Polygon();  
            segmentPolygon[1].addPoint(dWidth-1, 1);  
            segmentPolygon[1].addPoint(dWidth-1, mid-1);  
            segmentPolygon[1].addPoint(dWidth-2, mid-1);  
            segmentPolygon[1].addPoint(dWidth-4, mid-3);  
            segmentPolygon[1].addPoint(dWidth-4, 4);  
            segmentPolygon[2] = new Polygon();  
            segmentPolygon[2].addPoint(dWidth-1, mid);  
            segmentPolygon[2].addPoint(dWidth-1, dHeight-2);  
            segmentPolygon[2].addPoint(dWidth-4, dHeight-5);  
            segmentPolygon[2].addPoint(dWidth-4, mid+1);  
            segmentPolygon[2].addPoint(dWidth-3, mid);  
            segmentPolygon[3] = new Polygon();  
            segmentPolygon[3].addPoint(dWidth-2, dHeight-1);  
            segmentPolygon[3].addPoint(1, dHeight-1);  
            segmentPolygon[3].addPoint(4, dHeight-4);  
            segmentPolygon[3].addPoint(dWidth-4, dHeight-4);  
            segmentPolygon[4] = new Polygon();  
            segmentPolygon[4].addPoint(1, dHeight-2);  
            segmentPolygon[4].addPoint(1, mid);  
            segmentPolygon[4].addPoint(3, mid);  
            segmentPolygon[4].addPoint(4, mid+1);  
            segmentPolygon[4].addPoint(4, dHeight-5);  
            segmentPolygon[5] = new Polygon();  
            segmentPolygon[5].addPoint(1, mid-1);  
            segmentPolygon[5].addPoint(1, 1);  
            segmentPolygon[5].addPoint(4, 4);  
            segmentPolygon[5].addPoint(4, mid-3);  
            segmentPolygon[5].addPoint(2, mid-1);  
            segmentPolygon[6] = new Polygon();  
            segmentPolygon[6].addPoint(3, mid-1);  
            segmentPolygon[6].addPoint(4, mid-2);  
            segmentPolygon[6].addPoint(dWidth-4, mid-2);  
            segmentPolygon[6].addPoint(dWidth-3, mid-1);  
            segmentPolygon[6].addPoint(dWidth-5, mid+1);  
            segmentPolygon[6].addPoint(4, mid+1);             
        }        

}

  

package Atm;
//工具类,限制文本框的长度和格式

import javax.swing.text.AttributeSet;  
import javax.swing.text.BadLocationException;  
import javax.swing.text.PlainDocument; 

public class LimitedDocument extends PlainDocument{
	private int _maxLength  = -1;  
    private String _allowCharAsString = null;  
  
    public LimitedDocument(){  
        super();  
    }  
  
    public LimitedDocument( int maxLength ){  
        super();  
        this._maxLength = maxLength;  
    }  
  
    public void insertString( int offset, String str, AttributeSet attrSet) throws BadLocationException{  
        if(str == null) {  
            return;  
        }  
        if(_allowCharAsString != null && str.length() == 1) {  
            if(_allowCharAsString.indexOf(str) == -1){  
                return;  
            }  
        }  
        char[] charVal = str.toCharArray();  
        String strOldValue = getText(0, getLength());  
        byte[] tmp = strOldValue.getBytes();  
        if(_maxLength != -1 && (tmp.length + charVal.length > _maxLength)){  
            return;  
        }  
        super.insertString(offset, str, attrSet);  
    }  
  
    public void setAllowChar(String str) {  
        _allowCharAsString = str;  
    }  

}

  

package Atm;

//ATM机前端窗口,也就是登录界面

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class MainFra extends FatherFrame {
	PreparedStatement ps = null;
	Connection dbConn = null;
	ResultSet rs = null;

	// 文本框
	private JTextField jtf1 = new JTextField(18);
	private JPasswordField password = new JPasswordField(18);
	// 限制文本框输入长度
	LimitedDocument ld = new LimitedDocument(16);
	LimitedDocument ld1 = new LimitedDocument(6);

	// 调节字体
	Font font1 = new Font("宋体", Font.BOLD, 30);
	Font font2 = new Font("宋体", Font.BOLD, 25);
	String text = "欢迎您使用中国银行ATM";

	// 面板
	JPanel p1 = new JPanel();
	JPanel p2 = new JPanel();
	JPanel p3 = new JPanel();
	JPanel p4 = new JPanel();

	private static String bcard = null;

	public static String getBcard() {
		return bcard;
	}

	public MainFra() {
		// 将p1,p2,p3,p4面板都设置为透明的
		p1.setOpaque(false);
		p2.setOpaque(false);
		p3.setOpaque(false);
		p4.setOpaque(false);



		// 下面对账号的文本框进行格式化
		ld.setAllowChar("0123456789");// 只能输入的字符
		jtf1.setDocument(ld);// 运用到文本框中

		// 下面对密码框进行格式化
		ld1.setAllowChar("0123456789");// 只能输入数字字符
		password.setDocument(ld1);// 运用到密码框中

		jtf1.setFont(font2);// 设置账号文本框内的字体
		password.setFont(font2);// 设置密码框内的字体

		JLabel j1 = new JLabel(text);
		j1.setFont(font1);
		JLabel j2 = new JLabel("账号:");
		JLabel j3 = new JLabel("密码:");
		j2.setFont(font2);
		j3.setFont(font2);

		p1.add(j1, BorderLayout.CENTER);
		p2.setLayout(new GridLayout(2, 1, 0, 10));
		p2.add(j2);
		p2.add(j3);
		p3.add(jtf1);
		p4.add(password);


		setLayout(null);
		p1.setBounds((825 - 400) / 2, 150, 400, 40);// 欢迎语
		p2.setBounds(240, 240, 90, 80);
		p3.setBounds(310, 240, 260, 70);
		p4.setBounds(310, 280, 260, 70);

		add(p1);
		add(p2);
		add(p3);
		add(p4);

		
		setVisible(true);

		// 给按钮添加监听器

	}

	protected void initJLabel() {
		jb1 = new JLabel();
		jb2 = new JLabel();
		jb3 = new JLabel();
		jb4 = new JLabel(new ImageIcon("image/登录.png"));
		jb5 = new JLabel();
		jb6 = new JLabel();
		jb7 = new JLabel();
		jb8 = new JLabel(new ImageIcon("image/退出.png"));

	}

	protected void setJLabelVisible() {
		jb4.setVisible(true);
		jb8.setVisible(true);
	}

	protected void setListener() {
		jb4.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				if(jtf1.getText().length()==0||password.getText().length()==0){
					JOptionPane.showMessageDialog(null, "请输入账号和密码"," ", JOptionPane.WARNING_MESSAGE);
				}
				else{
					DatabaseOperation da = new DatabaseOperation();
					String sql = "SELECT BankCard.Bcard,BankCard.Bpassword,BankCard.Buse,BankCard.Bdongjie,BankCard.Bguashi,BankCard.Bxiaohu FROM ATM.dbo.BankCard WHERE BankCard.Bcard="
							+ jtf1.getText();
					rs = da.search(sql);
					try {
						if (rs.next()) {
							int bUse = rs.getInt("Buse");
							if(rs.getBoolean("Bxiaohu")||rs.getBoolean("Bguashi")){
					    		JOptionPane.showMessageDialog(null, "该账号处于异常状态,无法登录","提示", JOptionPane.ERROR_MESSAGE); 
					    		jtf1.setText("");
						    	password.setText("");
					    	}
							else if (bUse < 3
									&& rs.getString("Bcard").equals(
											jtf1.getText())
									&& rs.getString("Bpassword").equals(
											new String(password.getPassword()))) {
								bcard = jtf1.getText();
								//da.close();
								jtf1.setText("");
								password.setText("");
						
								dispose();
								new AtmFrame();
							} else if (bUse == 3) {
								// 弹出对话框,提示该账号输入密码错误3次,当天无法再登录
								JOptionPane.showMessageDialog(null, "该账号输入密码错误3次,无法再登录。若要解除锁定,请移步中国银行","提示", JOptionPane.ERROR_MESSAGE); 
							} else {
								// 弹出对话框,提示密码输入错误,请重新输入密码
								JOptionPane.showMessageDialog(null, "账号/密码输入错误,请重新输入","提示", JOptionPane.ERROR_MESSAGE); 
								password.setText("");
								// 将新的Buse写入数据库
								bUse++;
								System.out.println(bUse);
								String sql1 = "UPDATE ATM.dbo.BankCard SET BankCard.Buse="
										+ bUse
										+ "WHERE BankCard.Bcard="
										+ jtf1.getText();
								da.update(sql1);
							}

						} else {
							JOptionPane.showMessageDialog(null, "账号/密码输入错误,请重新输入","提示", JOptionPane.ERROR_MESSAGE); 
							// 弹出dialog,提示该账号不存在,请重新输入。
							jtf1.setText("");
							password.setText("");
						}
					} catch (Exception e1) {
						e1.printStackTrace();
						System.out.print("抛出异常");
					}
				}
			}
		});

		// 退出按钮的监听事件
		jb8.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				dispose();
				new ChooseIdentity();
			}
		});
	}
	

	
}

  

package Atm;

//ATM机前端窗口,也就是登录界面

import SupManager.*;
import javax.swing.*;

import java.awt.*;
import java.awt.event.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class MainFraAdministrator extends FatherFrame {
	PreparedStatement ps = null;
	Connection dbConn = null;
	ResultSet rs = null;

	// 文本框
	private JTextField jtf1 = new JTextField(18);
	private JPasswordField password = new JPasswordField(18);
	// 限制文本框输入长度
	LimitedDocument ld = new LimitedDocument(12);
	LimitedDocument ld1 = new LimitedDocument(8);

	 JButton jbtExit = new JButton("退出");

	// 调节字体
	Font font1 = new Font("宋体", Font.BOLD, 30);
	Font font2 = new Font("宋体", Font.BOLD, 25);
	String text = "欢迎您使用超级管理员端";

	// 面板
	JPanel p1 = new JPanel();
	JPanel p2 = new JPanel();
	JPanel p3 = new JPanel();
	JPanel p4 = new JPanel();


	private static String bcard = null;

	public static String getBcard() {
		return bcard;
	}

	public MainFraAdministrator() {
		// 将p1,p2,p3,p4面板都设置为透明的
		p1.setOpaque(false);
		p2.setOpaque(false);
		p3.setOpaque(false);
		p4.setOpaque(false);

		// 下面对账号的文本框进行格式化
		ld.setAllowChar("0123456789");// 只能输入的字符
		jtf1.setDocument(ld);// 运用到文本框中

		// 下面对密码框进行格式化
		ld1.setAllowChar("0123456789");// 只能输入数字字符
		password.setDocument(ld1);// 运用到密码框中

		jtf1.setFont(font2);// 设置账号文本框内的字体
		password.setFont(font2);// 设置密码框内的字体

		JLabel j1 = new JLabel(text);
		j1.setFont(font1);
		JLabel j2 = new JLabel("账号:");
		JLabel j3 = new JLabel("密码:");
		j2.setFont(font2);
		j3.setFont(font2);

		p1.add(j1, BorderLayout.CENTER);
		p2.setLayout(new GridLayout(2, 1, 0, 10));
		p2.add(j2);
		p2.add(j3);
		// p3.setLayout(new GridLayout(2, 1, 0, 4));
		p3.add(jtf1);
		p4.add(password);

		setLayout(null);
		p1.setBounds((825 - 400) / 2, 150, 400, 40);// 欢迎语
		p2.setBounds(240, 240, 90, 80);
		p3.setBounds(310, 240, 260, 70);
		p4.setBounds(310, 280, 260, 70);

		add(p1);
		add(p2);
		add(p3);
		add(p4);

		setVisible(true);

		// 给按钮添加监听器

	}

	protected void initJLabel() {
		jb1 = new JLabel();
		jb2 = new JLabel();
		jb3 = new JLabel();
		jb4 = new JLabel(new ImageIcon("image/登录.png"));
		jb5 = new JLabel();
		jb6 = new JLabel();
		jb7 = new JLabel();
		jb8 = new JLabel(new ImageIcon("image/退出.png"));

	}

	protected void setJLabelVisible() {
		jb4.setVisible(true);
		jb8.setVisible(true);
	}

	protected void setListener() {
		jb4.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {

				if(jtf1.getText().length()==0||password.getText().length()==0){
					JOptionPane.showMessageDialog(null, "请输入账号和密码"," ", JOptionPane.WARNING_MESSAGE);
				}
				else{
					DatabaseOperation da = new DatabaseOperation();
					String sql = "SELECT Administrator.Ano,Administrator.Apassword1,Administrator.Apassword2 FROM ATM.dbo.Administrator WHERE Administrator.Ano="
							+ jtf1.getText();
					rs = da.search(sql);
					System.out.println("连接成功");
					try {
						if (rs.next()) {
							if (rs.getString("Ano").equals(jtf1.getText())
									&& rs.getString("Apassword1").equals(
											new String(password.getPassword()))) {
								da.close();
								setVisible(false);
								new SuperMannager();
							} else {
								// 弹出对话框,提示密码输入错误,请重新输入密码
								password.setText("");
								System.out.println("密码输入错误,请重新输入");
							}

						} else {
							// 弹出dialog,提示该账号不存在,请重新输入。
							System.out.println("该账号不存在,请重新输入");
							jtf1.setText("");
							password.setText("");
						}
					} catch (Exception e1) {
						e1.printStackTrace();
						System.out.print("抛出异常");
					}
				}
			}
		});

		// 退出按钮的监听事件
		jb8.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				dispose();
				new ChooseIdentity();
			}
		});
	}
	

	
}

  

package Atm;

//ATM机前端窗口,也就是登录界面

import Manager.*;
import javax.swing.*;

import java.awt.*;
import java.awt.event.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class MainFraManager extends FatherFrame {
	PreparedStatement ps = null;
	Connection dbConn = null;
	ResultSet rs = null;

	// 文本框
	private JTextField jtf1 = new JTextField(18);
	private JPasswordField password = new JPasswordField(18);
	// 限制文本框输入长度
	LimitedDocument ld = new LimitedDocument(12);
	LimitedDocument ld1 = new LimitedDocument(8);

	 JButton jbtExit = new JButton("退出");

	// 调节字体
	Font font1 = new Font("宋体", Font.BOLD, 30);
	Font font2 = new Font("宋体", Font.BOLD, 25);
	String text = "欢迎您使用普通管理员端";

	// 面板
	JPanel p1 = new JPanel();
	JPanel p2 = new JPanel();
	JPanel p3 = new JPanel();
	JPanel p4 = new JPanel();


	private static String bcard = null;

	public static String getBcard() {
		return bcard;
	}

	public MainFraManager() {
		// 将p1,p2,p3,p4面板都设置为透明的
		p1.setOpaque(false);
		p2.setOpaque(false);
		p3.setOpaque(false);
		p4.setOpaque(false);

		// 下面对账号的文本框进行格式化
		ld.setAllowChar("0123456789");// 只能输入的字符
		jtf1.setDocument(ld);// 运用到文本框中

		// 下面对密码框进行格式化
		ld1.setAllowChar("0123456789");// 只能输入数字字符
		password.setDocument(ld1);// 运用到密码框中

		jtf1.setFont(font2);// 设置账号文本框内的字体
		password.setFont(font2);// 设置密码框内的字体

		JLabel j1 = new JLabel(text);
		j1.setFont(font1);
		JLabel j2 = new JLabel("账号:");
		JLabel j3 = new JLabel("密码:");
		j2.setFont(font2);
		j3.setFont(font2);

		p1.add(j1, BorderLayout.CENTER);
		p2.setLayout(new GridLayout(2, 1, 0, 10));
		p2.add(j2);
		p2.add(j3);
		// p3.setLayout(new GridLayout(2, 1, 0, 4));
		p3.add(jtf1);
		p4.add(password);

		setLayout(null);
		p1.setBounds((825 - 400) / 2, 150, 400, 40);// 欢迎语
		p2.setBounds(240, 240, 90, 80);
		p3.setBounds(310, 240, 260, 70);
		p4.setBounds(310, 280, 260, 70);

		add(p1);
		add(p2);
		add(p3);
		add(p4);

		setVisible(true);

		// 给按钮添加监听器

	}

	protected void initJLabel() {
		jb1 = new JLabel();
		jb2 = new JLabel();
		jb3 = new JLabel();
		jb4 = new JLabel(new ImageIcon("image/登录.png"));
		jb5 = new JLabel();
		jb6 = new JLabel();
		jb7 = new JLabel();
		jb8 = new JLabel(new ImageIcon("image/退出.png"));

	}

	protected void setJLabelVisible() {
		jb4.setVisible(true);
		jb8.setVisible(true);
	}

	protected void setListener() {
		jb4.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				if(jtf1.getText().length()==0||password.getText().length()==0){
					JOptionPane.showMessageDialog(null, "请输入账号和密码"," ", JOptionPane.WARNING_MESSAGE);
				}
				else{
					DatabaseOperation da = new DatabaseOperation();
					String sql = "SELECT Manager.Mno,Manager.Mpassword,Manager.Muse,Manager.Mdongjie FROM ATM.dbo.Manager WHERE Manager.Mno="
							+ jtf1.getText();
					rs = da.search(sql);
					try {
						if (rs.next()) {
							int mUse = rs.getInt("Muse");
							if (mUse < 3
									&& rs.getString("Mno").equals(
											jtf1.getText())
									&& rs.getString("Mpassword").equals(
											new String(password.getPassword()))) {
								// bcard = jtf1.getText();
								da.close();
								// System.out.println("验证通过");
								setVisible(false);
								new NormalMannager();
							} else if (mUse == 3) {
								// 弹出对话框,提示该账号输入密码错误3次,当天无法再登录
								System.out.println("该账号输入密码错误3次,已冻结");
							} else {
								// 弹出对话框,提示密码输入错误,请重新输入密码
								password.setText("");
								System.out.println("密码输入错误,你还有x次机会");
								// 将新的Muse写入数据库
								mUse++;
								System.out.println(mUse);
								String sql1 = "UPDATE ATM.dbo.Manager SET Manager.Muse="
										+ mUse
										+ "WHERE Manager.Mno="
										+ jtf1.getText();
								da.update(sql1);
							}

						} else {
							// 弹出dialog,提示该账号不存在,请重新输入。
							System.out.println("该账号不存在,请重新输入");
							jtf1.setText("");
							password.setText("");
						}
					} catch (Exception e1) {
						e1.printStackTrace();
						System.out.print("抛出异常");
					}
				}
			}
		});

		// 退出按钮的监听事件
		jb8.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				dispose();
				new ChooseIdentity();
			}
		});
	}
	

	
}

  

package Atm;
//获取当前时间

import java.text.SimpleDateFormat;
import java.util.Date;


public class MyDate {
	
	public static String getDate(){
		Date date=new Date();
		SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
		return df.format(date);
	}
}

  

package Atm;
//标签字体大小

import java.awt.Color;
import java.awt.Font;

import javax.swing.JLabel;


class MyJLabel1 extends JLabel{
	public MyJLabel1(String arg){
		super(arg);//这句不能少,少了就出问题了。子类构造方法若有参数,则一定要先在构造方法里调用父类的构造方法
		setFont(new Font("宋体", Font.BOLD, 30));
		setForeground(Color.black);
	}
}
class MyJLabel2 extends JLabel{
	public MyJLabel2(String arg){
		super(arg);//这句不能少,少了就出问题了。子类构造方法若有参数,则一定要先在构造方法里调用父类的构造方法
		setFont(new Font("宋体", Font.BOLD, 28));
		setForeground(Color.red);
	}
}
class MyJLabel3 extends JLabel{
	public MyJLabel3(String arg){
		super(arg);//这句不能少,少了就出问题了。子类构造方法若有参数,则一定要先在构造方法里调用父类的构造方法
		setFont(new Font("宋体", Font.BOLD, 28));
		setForeground(Color.black);
	}
}
class MyJLabel4 extends JLabel{
	public MyJLabel4(String arg){
		super(arg);//这句不能少,少了就出问题了。子类构造方法若有参数,则一定要先在构造方法里调用父类的构造方法
		setFont(new Font("宋体", Font.BOLD, 17));
		setForeground(Color.red);
	}
}
class MyJLabel5 extends JLabel{
	public MyJLabel5(String arg){
		super(arg);//这句不能少,少了就出问题了。子类构造方法若有参数,则一定要先在构造方法里调用父类的构造方法
		setFont(new Font("宋体", Font.BOLD, 17));
		setForeground(Color.black);
	}
}
/*原本是这样写的,但是这样写不对,这样写的话j只是作为一个对象
public class MyJLabel1 extends JLabel{
	JLabel j;
	Font font;
	public MyJLabel1(String arg){
		super(arg);//这句不能少,少了就出问题了。子类构造方法若有参数,则一定要先在构造方法里调用父类的构造方法
		j=new JLabel(arg);
		font = new Font("宋体", Font.BOLD, 30);
		j.setFont(font);
		j.setForeground(Color.red);
	}
}
*/

  

package Atm;
import java.awt.Font;
//获取当前时间的类
import java.awt.Toolkit;
import java.awt.event.ActionEvent;   
import java.awt.event.ActionListener;   
import java.text.SimpleDateFormat;   
import java.util.Date;   
  
import javax.swing.JLabel;
import javax.swing.Timer;   
import javax.swing.JFrame;   


public class NowTime
{
    public  NowTime(){   
    }   
  
    //设置Timer 1000ms实现一次动作 实际是一个线程   
    public void setTimer(JLabel time){   
        final JLabel varTime = time;   
        Timer timeAction = new Timer(1000, new ActionListener() {          
  
            public void actionPerformed(ActionEvent e) {       
                long timemillis = System.currentTimeMillis();   
                //转换日期显示格式   
                String n = "yyyy/MM/dd  HH:mm:ss";
                SimpleDateFormat df = new SimpleDateFormat(n);   
                varTime.setText(df.format(new Date(timemillis)));   
            }      
        });            
        timeAction.start();        
    }   
}

  

package Atm;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.swing.JOptionPane;

public class SaveAction {

	public SaveAction(String savemoney) {
		PreparedStatement ps=null;
		Connection dbConn=null;
		ResultSet rs=null;
		  String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
		  String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=ATM";
		  String userName="sa";
		  String userPwd="123456";
		  
		  try
		  {
		   Class.forName(driverName);
		   dbConn=DriverManager.getConnection(dbURL,userName,userPwd);  
		   System.out.println("MainFra类-连接数据库成功");
		    ps=dbConn.prepareStatement("SELECT BankCard.Bmoney,BankCard.Bcked FROM ATM.dbo.BankCard WHERE BankCard.Bcard=?");
		    ps.setString(1,MainFra.getBcard());//这行代码跟上面的问号相关联
		    rs=ps.executeQuery();//如果结果集rs开始的位置是0 那么刚查出来的结果集的指针应该指向在-1的位置 
		    rs.next();																			//前
		    double bMoneysave = rs.getDouble("Bmoney");
		    double bCunkuanedu=rs.getDouble("Bcked");
		    if(savemoney.length()==0){
		    	JOptionPane.showMessageDialog(null, "请输入模拟的存款金额"," ", JOptionPane.WARNING_MESSAGE);
			    SaveFrame.setJudgeFlag1(false);
		    }
		    else if(Integer.parseInt(savemoney) < 100 || Integer.parseInt(savemoney) % 100 != 0){
	    		//弹出对话框,提示输入不合法,存款失败,请重新输入存款金额
		    	JOptionPane.showMessageDialog(null, "本机仅接收100或100的正整数倍的存款操作,请重新输入模拟的存款金额"," ", JOptionPane.WARNING_MESSAGE);
	    		System.out.println("本机仅接收100或100的正整数倍的存款操作,请重新输入模拟的存款金额");
	    		SaveFrame.setJudgeFlag1(false);
	    	}	
		    else if(bCunkuanedu<Integer.parseInt(savemoney)){
		    	JOptionPane.showMessageDialog(null, "单笔存款金额上限为"+(int)bCunkuanedu+"元,请重新输入模拟的存款金额"," ", JOptionPane.WARNING_MESSAGE);
	    		SaveFrame.setJudgeFlag1(false);
		    }
		    else{
			    bMoneysave = bMoneysave + Double.parseDouble(savemoney);
			    //修改数据,存入的账号金额增加
			    ps=dbConn.prepareStatement("UPDATE ATM.dbo.BankCard SET BankCard.Bmoney=? WHERE BankCard.Bcard=?");//
	    		ps.setDouble(1,bMoneysave);
			    ps.setString(2,MainFra.getBcard());//这行代码跟上面的问号相关联
			    ps.executeUpdate();
			    
			    //将这次操作的记录保存起来

			    ps=dbConn.prepareStatement("INSERT INTO ATM.dbo.CustomerRecord (CustomerRecord.CRcard,CustomerRecord.CRdate,CustomerRecord.CRtype,CustomerRecord.CRmoney,CustomerRecord.CRfee) VALUES (?,?,?,?,?)");
			    ps.setString(1,MainFra.getBcard());//这行代码跟上面的问号相关联
			    ps.setString(2,MyDate.getDate());
			    ps.setString(3,"存款");
			    ps.setString(4,savemoney);
			    ps.setString(5,         String.valueOf(           Double.parseDouble(       savemoney           ) *0          )                    );
			    ps.executeUpdate();
			    
			    
			    ps.close();
			    dbConn.close();
			    //setVisible(false);
			    JOptionPane.showMessageDialog(null, "存款成功.", " ",
						JOptionPane.PLAIN_MESSAGE);
			    System.out.println("存款成功!");
			    SaveFrame.setJudgeFlag1(true);
		    }
		    
		    

		    
		  }
		  catch(Exception e1)
		  {
		   e1.printStackTrace();
		   System.out.print("抛出异常");
		  }    
	}

}

  

package Atm;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.swing.JOptionPane;

public class SaveDatabaseAction {

	public SaveDatabaseAction(String savemoney) {
		PreparedStatement ps=null;
		Connection dbConn=null;
		ResultSet rs=null;
		  String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
		  String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=ATM";
		  String userName="sa";
		  String userPwd="123456";
		  
		  try
		  {
		   Class.forName(driverName);
		   dbConn=DriverManager.getConnection(dbURL,userName,userPwd);  
		   System.out.println("MainFra类-连接数据库成功");
		    ps=dbConn.prepareStatement("SELECT BankCard.Bmoney,BankCard.Bcked FROM ATM.dbo.BankCard WHERE BankCard.Bcard=?");
		    ps.setString(1,MainFra.getBcard());//这行代码跟上面的问号相关联
		    rs=ps.executeQuery();//如果结果集rs开始的位置是0 那么刚查出来的结果集的指针应该指向在-1的位置 
		    rs.next();																			//前
		    double bMoneysave = rs.getDouble("Bmoney");
		    double bCunkuanedu=rs.getDouble("Bcked");
		    if(savemoney.length()==0){
		    	JOptionPane.showMessageDialog(null, "请输入模拟的存款金额"," ", JOptionPane.WARNING_MESSAGE);
			    SaveFrame.setJudgeFlag1(false);
		    }
		    else if(Integer.parseInt(savemoney) < 100 || Integer.parseInt(savemoney) % 100 != 0){
	    		//弹出对话框,提示输入不合法,存款失败,请重新输入存款金额
		    	JOptionPane.showMessageDialog(null, "本机仅接收100或100的正整数倍的存款操作,请重新输入模拟的存款金额"," ", JOptionPane.WARNING_MESSAGE);
	    		System.out.println("本机仅接收100或100的正整数倍的存款操作,请重新输入模拟的存款金额");
	    		SaveFrame.setJudgeFlag1(false);
	    	}	
		    else if(bCunkuanedu<Integer.parseInt(savemoney)){
		    	JOptionPane.showMessageDialog(null, "单笔存款金额上限为"+(int)bCunkuanedu+"元,请重新输入模拟的存款金额"," ", JOptionPane.WARNING_MESSAGE);
	    		SaveFrame.setJudgeFlag1(false);
		    }
		    else{
			    bMoneysave = bMoneysave + Double.parseDouble(savemoney);
			    //修改数据,存入的账号金额增加
			    ps=dbConn.prepareStatement("UPDATE ATM.dbo.BankCard SET BankCard.Bmoney=? WHERE BankCard.Bcard=?");//
	    		ps.setDouble(1,bMoneysave);
			    ps.setString(2,MainFra.getBcard());//这行代码跟上面的问号相关联
			    ps.executeUpdate();
			    
			    //将这次操作的记录保存起来

			    ps=dbConn.prepareStatement("INSERT INTO ATM.dbo.CustomerRecord (CustomerRecord.CRcard,CustomerRecord.CRdate,CustomerRecord.CRtype,CustomerRecord.CRmoney,CustomerRecord.CRfee) VALUES (?,?,?,?,?)");
			    ps.setString(1,MainFra.getBcard());//这行代码跟上面的问号相关联
			    ps.setString(2,MyDate.getDate());
			    ps.setString(3,"存款");
			    ps.setString(4,savemoney);
			    ps.setString(5,         String.valueOf(           Double.parseDouble(       savemoney           ) *0          )                    );
			    ps.executeUpdate();
			    
			    
			    ps.close();
			    dbConn.close();
			    //setVisible(false);
			    JOptionPane.showMessageDialog(null, "存款成功.", " ",
						JOptionPane.PLAIN_MESSAGE);
			    System.out.println("存款成功!");
			    SaveFrame.setJudgeFlag1(true);
			    new AtmFrame();
		    }
		    
		    

		    
		  }
		  catch(Exception e1)
		  {
		   e1.printStackTrace();
		   System.out.print("抛出异常");
		  }    
	}

}

  

package Atm;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

public class SaveFrame extends FatherFrame {

	private static boolean judgeFlag1;

	JTextField jtf = new JTextField(18);
	LimitedDocument ld = new LimitedDocument(5);

	JPanel p1 = new JPanel();
	JPanel p2 = new JPanel();

	JLabel j1 = new JLabel("请您输入存款金额", SwingConstants.CENTER);// 文本是以居中的方式对齐

	Font font = new Font("宋体", Font.BOLD, 28);

	public SaveFrame() {
		super(60);
		j1.setFont(font);// 设置标签j1的字体

		ld.setAllowChar("0123456789");// 只能输入的字符
		jtf.setDocument(ld);// 运用到文本框中
		jtf.setFont(new Font("宋体", Font.BOLD, 25));

		// 将p1,p2,p3面板都设置为透明的
		p1.setOpaque(false);
		p2.setOpaque(false);

		p1.add(j1);
		p2.add(jtf);

		setLayout(null);
		p1.setBounds((678 - 200) / 2+20, 140, 280, 50);
		p2.setBounds((678 - 200) / 2+25, 200, 270, 40);


		add(p1);
		add(p2);


	}
	
	public static boolean getJudgeFlag1(){
		return judgeFlag1;
	}
	public static void setJudgeFlag1(boolean flag){
		judgeFlag1=flag;
	}
	
	protected void setListener() {
		// 按钮回主菜单的监听器
		jb4.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				new AtmFrame();
				dispose();
				timeThread.stop();
				// 此处加入事件的类的对象
			}
		});
		// 按钮确认的监听器
		jb8.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				
				new SaveAction(jtf.getText());			//先		
				if(getJudgeFlag1())		{									//后      为什么要用这样的先后顺序?你反过来试试。
					dispose();			//加入判断,如果存款成功就销毁SavaFrame,如果不成功,就不销毁啊
					timeThread.stop();
					new AtmFrame();
				}
				else
					jtf.setText("");
				
				
			}
		});
	}

	protected void initJLabel() {
		jb1 = new JLabel();
		jb2 = new JLabel();
		jb3 = new JLabel();
		jb4 = new JLabel(new ImageIcon("image/回主菜单.png"));
		jb5 = new JLabel();
		jb6 = new JLabel();
		jb7 = new JLabel();
		jb8 = new JLabel(new ImageIcon("image/确认.png"));
	}

	protected void setJLabelVisible() {
		jb4.setVisible(true);
		jb8.setVisible(true);
	}

}

  

package Atm;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class TransferFirst extends FatherFrame {
	JButton b1, b2, b3;
	JTextField jtf1;
	ResultSet rs;
	DatabaseOperation databaseOperation;
	private static String bcard2 = null;

	// 构造方法
	public TransferFirst() {
		super(60);
		databaseOperation = new DatabaseOperation();
		setInterface();
	}// 构造方法

	public static String getBcard2() {
		return bcard2;
	}

	private void setInterface() {
		JPanel p1, p2;
		LimitedDocument ld;

		p1 = new JPanel();
		p2 = new JPanel();

		p1.setOpaque(false);
		p2.setOpaque(false);


		jtf1 = new JTextField(18);
		ld = new LimitedDocument(16);
		ld.setAllowChar("0123456789");// 设置只能输入数字
		jtf1.setDocument(ld);
		jtf1.setFont(new Font("宋体", Font.BOLD, 25));// 设置文本框内的字体,同时文本框的大小也会改变

		p1.add(new MyJLabel3("请输入存款卡号"));
		p2.add(jtf1);

		setLayout(null);
		p1.setBounds(204, 140, 400, 40);
		p2.setBounds(274, 190, 260, 50);
		add(p1);
		add(p2);
		setVisible(true);
	}

	private void reaction() {
		if(jtf1.getText().length()==0){
	    	JOptionPane.showMessageDialog(null, "请输入转款转入的账号"," ", JOptionPane.WARNING_MESSAGE);
	    }
		else{
			rs = databaseOperation
					.search("SELECT BankCard.Bcard FROM ATM.dbo.BankCard WHERE BankCard.Bcard="
							+ jtf1.getText());
			getInformationFromResultSetAndThenReact();
		}
	}

	private void getInformationFromResultSetAndThenReact() {
		try {
			// 获取ResultSet结果
			if (rs.next()) { // 若返回的ResultSet不为空------------------------

				// ---不为空的话要做出反应----------------------------------
				if (rs.getString("Bcard").equals(MainFra.getBcard())) {
					JOptionPane.showMessageDialog(null, "不能转账给自己", " ",
							JOptionPane.WARNING_MESSAGE);
					// 弹出对话框,提示不能转账给自己
					System.out.println("自己转账给自己?傻逼吗?");
					jtf1.setText("");
				} else {
					bcard2 = jtf1.getText();
					databaseOperation.close();
					dispose();
					new TransferSecond();
					timeThread.stop();
				}
				// ------------------------------------------------

			} else { // 若返回的ResultSet为空-----------------------------
				// 弹出对话框,提示账号不存在,请重新输入
				JOptionPane.showMessageDialog(null, "输入的账户无效,请重新输入", " ",
						JOptionPane.WARNING_MESSAGE);
				System.out.println("输入账号不存在,请重新输入");
				jtf1.setText("");
			}
		} catch (Exception e1) {
			e1.printStackTrace();
			System.out.print("抛出异常");
		}
	}// getInformationFromResultSetAndThenReact()方法

	protected void setListener() {
		jb7.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				System.out.println("更正");
				jtf1.setText("");
			}
		});
		jb4.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				System.out.println("返回");
				//databaseOperation.close();若没有点击确认按钮,close方法是无法执行的。因为DatabaseOperation类中的ps属性都不存在,只有在调用了增删查找方法后ps对象才是存在的,存在才能调用该方法
				dispose();
				new AtmFrame();
				timeThread.stop();
			}
		});
		jb8.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				reaction();
			}
		});// b3.addActionListener注册监听方法
	}

	protected void initJLabel() {
		jb1 = new JLabel();
		jb2 = new JLabel();
		jb3 = new JLabel();
		jb4 = new JLabel(new ImageIcon("image/返回.png"));
		jb5 = new JLabel();
		jb6 = new JLabel();
		jb7 = new JLabel(new ImageIcon("image/更正.png"));
		jb8 = new JLabel(new ImageIcon("image/确认.png"));
	}

	protected void setJLabelVisible() {
		jb4.setVisible(true);
		jb7.setVisible(true);
		jb8.setVisible(true);
	}
}// class

  

package Atm;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class TransferSecond extends FatherFrame {
	JButton b1, b2, b3;
	JTextField jtf1;
	int tag = 0;// 用来标识小数点的个数
	DatabaseOperation databaseOperation = new DatabaseOperation();
	ResultSet rs;

	// 构造方法
	public TransferSecond() {
		super(60);
		setInterface();
	}

	private void setInterface() {
		JPanel p1, p2;
		DecimalOnlyDocument ld;

		jtf1 = new JTextField(16);
		ld = new DecimalOnlyDocument();
		// ld1.setAllowChar("0123456789.");//设置只能输入数字
		jtf1.setDocument(ld);
		jtf1.setFont(new Font("宋体", Font.BOLD, 25));// 设置文本框内的字体,同时文本框的大小也会改变

		p1 = new JPanel();
		p2 = new JPanel();

		p1.setOpaque(false);
		p2.setOpaque(false);

		p1.add(new MyJLabel3("请输入转账金额"));
		p2.add(jtf1);

		setLayout(null);
		p1.setBounds(204, 140, 400, 40);
		p2.setBounds(274, 190, 260, 50);
		add(p1);
		add(p2);
		setVisible(true);
	}

	private void reaction() {
		rs = databaseOperation
				.search("SELECT BankCard.Bmoney,BankCard.Bzzed FROM ATM.dbo.BankCard WHERE BankCard.Bcard="
						+ MainFra.getBcard());
		getInformationFromResultSetAndThenReact();

	}

	private void getInformationFromResultSetAndThenReact() {
		try {
			rs.next();
			double zhuanzhangedu=rs.getDouble("Bzzed"); 
			double money_zhuanzhangzhe = rs.getDouble("Bmoney"); // money_zhuanzhangzhe,
																	// 即转账者账户中的余额
			// 做出反应
			if(jtf1.getText().length()==0)
				JOptionPane.showMessageDialog(null, "请输入转账金额"," ", JOptionPane.WARNING_MESSAGE);
			else if(jtf1.getText().equals(".")||jtf1.getText().equals("-")){
				JOptionPane.showMessageDialog(null, "请输入有效的转账金额",
						" ", JOptionPane.WARNING_MESSAGE);
				jtf1.setText("");
			}
			else if(Double.parseDouble(jtf1.getText())<0){//这一个else if判断必须放在上一个else if判断的后面,//因为你转化成double型的前提是它为数值型变量
				JOptionPane.showMessageDialog(null, "请输入有效的转账金额",
						" ", JOptionPane.WARNING_MESSAGE);
				jtf1.setText("");
			}
			else if (money_zhuanzhangzhe < Double.parseDouble(jtf1.getText())) {
				JOptionPane.showMessageDialog(null, "账户余额不足,转账失败。请重新输入转账金额",
						" ", JOptionPane.WARNING_MESSAGE);
				// 弹出对话框,提示账户余额不足,转账失败,请重新输入转账金额
				System.out.println("账户余额不足,转账失败,请重新输入转账金额");
				jtf1.setText("");
			} else {
				if(Double.parseDouble(jtf1.getText())>zhuanzhangedu){
					JOptionPane.showMessageDialog(null, "转账失败,您当天最多还可转账"+(int)zhuanzhangedu+"元,请重新输入转账金额"," ", JOptionPane.WARNING_MESSAGE);
				}
				else{
					rs = databaseOperation
							.search("SELECT BankCard.Bmoney FROM ATM.dbo.BankCard WHERE BankCard.Bcard="
									+ TransferFirst.getBcard2());
					rs.next();
					double money_shoukuanzhe = rs.getDouble("Bmoney"); // money_shoukuanzhe即收款者账户中的余额
					money_zhuanzhangzhe = money_zhuanzhangzhe
							- Double.parseDouble(jtf1.getText());
					money_shoukuanzhe = money_shoukuanzhe
							+ Double.parseDouble(jtf1.getText());
					zhuanzhangedu=zhuanzhangedu-Double.parseDouble(jtf1.getText());
					// 修改数据,存入的账号金额增加
					databaseOperation
							.update("UPDATE ATM.dbo.BankCard SET BankCard.Bmoney="
									+ money_shoukuanzhe + " WHERE BankCard.Bcard="
									+ TransferFirst.getBcard2());
					// 修改数据,转账的账号金额减少,并且当天的转账剩余度也要改变
					databaseOperation
							.update("UPDATE ATM.dbo.BankCard SET BankCard.Bmoney="
									+ money_zhuanzhangzhe+",BankCard.Bzzed="+zhuanzhangedu
									+ " WHERE BankCard.Bcard=" + MainFra.getBcard());

					// 将这两个账号的这次的操作记录保存到交易明细表中
					recordTheseTwoOperationsIntoCustomerRecord();

					// ps.close();
					// dbConn.close();
					JOptionPane.showMessageDialog(null, "转账成功.", " ",
							JOptionPane.PLAIN_MESSAGE);
					databaseOperation.close();
					dispose();
					System.out.println("转账成功!");
					new AtmFrame();
					timeThread.stop();
				}
			}
		} catch (Exception e1) {
			e1.printStackTrace();
			System.out.print("抛出异常");
		}
	}

	private void recordTheseTwoOperationsIntoCustomerRecord() {
		double shouxufeibaifenbi = 0;
		databaseOperation
				.create("INSERT INTO ATM.dbo.CustomerRecord (CustomerRecord.CRcard,CustomerRecord.CRdate,CustomerRecord.CRtype,CustomerRecord.CRmoney,CustomerRecord.CRfee) VALUES ('"
						+ MainFra.getBcard()
						+ "','"
						+ MyDate.getDate()
						+ "','"
						+ "转出"
						+ "','"
						+ jtf1.getText()
						+ "','"
						+ String.valueOf(Double.parseDouble(jtf1.getText())
								* shouxufeibaifenbi) + "')");
		databaseOperation
				.create("INSERT INTO ATM.dbo.CustomerRecord (CustomerRecord.CRcard,CustomerRecord.CRdate,CustomerRecord.CRtype,CustomerRecord.CRmoney,CustomerRecord.CRfee) VALUES ('"
						+ TransferFirst.getBcard2()
						+ "','"
						+ MyDate.getDate()
						+ "','"
						+ "转入"
						+ "','"
						+ jtf1.getText()
						+ "','"
						+ "0"
						+ "')");
	}

	protected void setListener() {
		jb7.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				System.out.println("更正");
				jtf1.setText("");
			}
		});
		jb4.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				System.out.println("返回");
				//databaseOperation.close();
				dispose();
				new AtmFrame();
				timeThread.stop();
			}
		});
		jb8.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				reaction();
			}
		});// b3.addActionListener注册监听方法
	}

	protected void initJLabel() {
		jb1 = new JLabel();
		jb2 = new JLabel();
		jb3 = new JLabel();
		jb4 = new JLabel(new ImageIcon("image/返回.png"));
		jb5 = new JLabel();
		jb6 = new JLabel();
		jb7 = new JLabel(new ImageIcon("image/更正.png"));
		jb8 = new JLabel(new ImageIcon("image/确认.png"));
	}

	protected void setJLabelVisible() {
		jb4.setVisible(true);
		jb7.setVisible(true);
		jb8.setVisible(true);
	}
}

  

package Atm;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.swing.JOptionPane;

public class WithdrawAction {

	public WithdrawAction(String mon) {
		PreparedStatement ps = null;
		Connection dbConn = null;
		ResultSet rs = null;
		String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
		String dbURL = "jdbc:sqlserver://localhost:1433;DatabaseName=ATM";
		String userName = "sa";
		String userPwd = "123456";

		try {
			Class.forName(driverName);
			dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
			System.out.println("MainFra类-连接数据库成功");
			ps = dbConn.prepareStatement("SELECT BankCard.Bmoney,BankCard.Bqxed FROM ATM.dbo.BankCard WHERE BankCard.Bcard=?");
			ps.setString(1, MainFra.getBcard());// 这行代码跟上面的问号相关联
			rs = ps.executeQuery();// 如果结果集rs开始的位置是0 那么刚查出来的结果集的指针应该指向在-1的位置
			rs.next(); // 前
			double bMoneyOut = rs.getDouble("Bmoney"); // 后
			double bQuxianedu=rs.getDouble("Bqxed");
			if(mon.length()==0){
		    	JOptionPane.showMessageDialog(null, "请输入取款金额"," ", JOptionPane.WARNING_MESSAGE);
		    	WithdrawFrame.setJudgeFlag2(false);
		    }
			else if(Integer.parseInt(mon) < 100 || Integer.parseInt(mon) % 100 != 0){
	    		//弹出对话框,提示输入不合法,存款失败,请重新输入存款金额
		    	JOptionPane.showMessageDialog(null, "请输入100或100的正整数倍的取款操作,请重新输入取款金额"," ", JOptionPane.WARNING_MESSAGE);
		    	WithdrawFrame.setJudgeFlag2(false);
	    	}	
			else if (bMoneyOut < Double.parseDouble(mon)){
				JOptionPane.showMessageDialog(null, "账户余额不足,取款失败,请重新输入取款金额"," ", JOptionPane.WARNING_MESSAGE);
				WithdrawFrame.setJudgeFlag2(false);
			} 
			else {
				if(bQuxianedu<Double.parseDouble(mon)){
					JOptionPane.showMessageDialog(null, "取款失败,您当天最多还可取款"+(int)bQuxianedu+"元,请重新输入取款金额"," ", JOptionPane.WARNING_MESSAGE);
			    	WithdrawFrame.setJudgeFlag2(false);
				}
				else{
					ps = dbConn.prepareStatement("SELECT BankCard.Bmoney FROM ATM.dbo.BankCard WHERE BankCard.Bcard=?");
					ps.setString(1, TransferFirst.getBcard2());// 这行代码跟上面的问号相关联
					rs = ps.executeQuery();// 如果结果集rs开始的位置是0 那么刚查出来的结果集的指针应该指向在-1的位置
					rs.next();
					bMoneyOut = bMoneyOut - Integer.parseInt(mon);
					bQuxianedu=bQuxianedu- Integer.parseInt(mon);
					// 修改数据,取款的账号金额减少,同时更改取现额度(当天取现剩余金额值)
					ps = dbConn.prepareStatement("UPDATE ATM.dbo.BankCard SET BankCard.Bmoney=?,BankCard.Bqxed=? WHERE BankCard.Bcard=?");//
					ps.setDouble(1, bMoneyOut);
					ps.setDouble(2, bQuxianedu);
					ps.setString(3, MainFra.getBcard());// 这行代码跟上面的问号相关联
					ps.executeUpdate();

					// 将这次的取款记录保存起来
					ps = dbConn.prepareStatement(
							"INSERT INTO ATM.dbo.CustomerRecord (CustomerRecord.CRcard,CustomerRecord.CRdate,CustomerRecord.CRtype,CustomerRecord.CRmoney,CustomerRecord.CRfee) VALUES (?,?,?,?,?)");
					ps.setString(1, MainFra.getBcard());// 这行代码跟上面的问号相关联
					ps.setString(2, MyDate.getDate());
					ps.setString(3, "取款");
					ps.setString(4, mon);
					ps.setString(5, String.valueOf(Integer.parseInt(mon) * 0));
					ps.executeUpdate();

					ps.close();
					dbConn.close();
					System.out.println("取款成功!");
					JOptionPane.showMessageDialog(null, "取款成功.", " ",
							JOptionPane.PLAIN_MESSAGE);
					WithdrawFrame.setJudgeFlag2(true);
				}
				
				
			}

		} catch (Exception e1) {
			e1.printStackTrace();
			System.out.print("抛出异常");
		}
	}

}

  

package Atm;

//取款界面函数

import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

public class WithdrawFrame extends FatherFrame {
	private static boolean judgeFlag2;

	JTextField jtf = new JTextField(18);
	LimitedDocument ld = new LimitedDocument(5);

	JPanel p3 = new JPanel();
	JPanel p4 = new JPanel();

	JLabel j1 = new JLabel("请您选择或输入取款金额", SwingConstants.CENTER);// 标签内容为“您好”,并且文本是以居中的方式对齐

	Font font = new Font("宋体", Font.BOLD, 28);

	public WithdrawFrame() {
		super(60);
		j1.setFont(font);// 设置标签j1的字体

		ld.setAllowChar("0123456789");// 只能输入的字符
		jtf.setDocument(ld);// 运用到文本框中
		jtf.setFont(new Font("宋体", Font.BOLD, 25));


		p3.setOpaque(false);
		p4.setOpaque(false);

		// p3.setLayout(new GridLayout(2, 1, 0, 0));//面板p3放欢迎语
		p3.add(j1);
		p4.add(jtf);

		setLayout(null);
		p3.setBounds((678 - 200) / 2-10, 140, 350, 50);
		p4.setBounds((678 - 200) / 2+25, 200, 270, 40);

		add(p3);
		add(p4);

		
	}
	public static boolean getJudgeFlag2(){
		return judgeFlag2;
	}
	public static void setJudgeFlag2(boolean flag){
		judgeFlag2=flag;
	}
	
	protected void setListener() {

		// 取款100的监听器
				jb1.addMouseListener(new MouseAdapter() {
					public void mouseClicked(MouseEvent e) {
						jtf.setText("100");
					}
				});

				//取款500的监听器
				jb2.addMouseListener(new MouseAdapter() {
					public void mouseClicked(MouseEvent e) {
						jtf.setText("500");
					}
				});

				//取款1000的监听器
				jb3.addMouseListener(new MouseAdapter() {
					public void mouseClicked(MouseEvent e) {
						jtf.setText("1000");
					}
				});

				// 给回主菜单按钮添加监听器
				jb4.addMouseListener(new MouseAdapter() {
					public void mouseClicked(MouseEvent e) {
						new AtmFrame();
						dispose();
						timeThread.stop();
						// 此处加入事件的类的对象
					}
				});

				//取款2500的监听器
				jb5.addMouseListener(new MouseAdapter() {
					public void mouseClicked(MouseEvent e) {
						jtf.setText("2500");
					}
				});

				//取款5000的监听器
				jb6.addMouseListener(new MouseAdapter() {
					public void mouseClicked(MouseEvent e) {
						jtf.setText("5000");
					}
				});

				//取款1000的监听器
				jb7.addMouseListener(new MouseAdapter() {
					public void mouseClicked(MouseEvent e) {
						jtf.setText("10000");
					}
				});

				// 给确认按钮添加监听器
				jb8.addMouseListener(new MouseAdapter() {
					public void mouseClicked(MouseEvent e) {
						new WithdrawAction(jtf.getText());
						if(getJudgeFlag2()){
							dispose();
							new WithdrawFrame();
							timeThread.stop();
						}
						else
							jtf.setText("");
					}
				});
	}

	protected void initJLabel() {
		jb1 = new JLabel(new ImageIcon("image/100.png"));
		jb2 = new JLabel(new ImageIcon("image/500.png"));
		jb3 = new JLabel(new ImageIcon("image/1000.png"));
		jb4 = new JLabel(new ImageIcon("image/回主菜单.png"));
		jb5 = new JLabel(new ImageIcon("image/2500.png"));
		jb6 = new JLabel(new ImageIcon("image/5000.png"));
		jb7 = new JLabel(new ImageIcon("image/10000.png"));
		jb8 = new JLabel(new ImageIcon("image/确认.png"));
	}

	protected void setJLabelVisible() {
		jb1.setVisible(true);
		jb2.setVisible(true);
		jb3.setVisible(true);
		jb4.setVisible(true);
		jb5.setVisible(true);
		jb6.setVisible(true);
		jb7.setVisible(true);
		jb8.setVisible(true);
	}

}

  




package Atm; //ATM登录成功界面 import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class AtmFrame extends FatherFrame{ JPanel p3 = new JPanel(); JLabel j1 = new JLabel("您好", SwingConstants.CENTER);//标签内容为“您好”,并且文本是以居中的方式对齐 JLabel j2 = new JLabel("请您选择交易", SwingConstants.CENTER);//同样以居中的方式对齐 Font font = new Font("宋体", Font.BOLD, 30); public AtmFrame(){ super(60); j1.setFont(font);//设置标签j1的字体 j2.setFont(font);//设置标签j2的字体 // 将p1,p2,p3面板都设置为透明的 p3.setOpaque(false); p3.setLayout(new GridLayout(2, 1, 0, 0));//面板p3放欢迎语 p3.add(j1); p3.add(j2); setLayout(null); p3.setBounds(300, 140, 200, 60); add(p3); PreparedStatement ps=null; Connection dbConn=null; ResultSet rs=null; String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver"; String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=ATM"; String userName="sa"; String userPwd="123456"; try { Class.forName(driverName); dbConn=DriverManager.getConnection(dbURL,userName,userPwd); System.out.println("MainFra类-连接数据库成功"); ps=dbConn.prepareStatement("SELECT BankCard.Bdongjie FROM ATM.dbo.BankCard WHERE BankCard.Bcard=?");// ps.setString(1,MainFra.getBcard());//这行代码跟上面的问号相关联 rs=ps.executeQuery();//如果结果集rs开始的位置是0 那么刚查出来的结果集的指针应该指向在-1的位置 if(rs.next()){ if(rs.getBoolean("Bdongjie")){ jb4.setVisible(false); jb3.setVisible(false); jb7.setVisible(false); } } } catch(Exception e1) { e1.printStackTrace(); System.out.print("抛出异常"); } } protected void initJLabel(){ jb1=new JLabel(); jb2=new JLabel(new ImageIcon("image/查询.png")); jb3=new JLabel(new ImageIcon("image/改密.png")); jb4=new JLabel(new ImageIcon("image/取款.png")); jb5=new JLabel(); jb6=new JLabel(new ImageIcon("image/存款.png")); jb7=new JLabel(new ImageIcon("image/转账.png")); jb8=new JLabel(new ImageIcon("image/退出.png")); } protected void setJLabelVisible(){ jb2.setVisible(true); jb3.setVisible(true); jb4.setVisible(true); jb6.setVisible(true); jb7.setVisible(true); jb8.setVisible(true); } protected void setListener(){ // 给查询按钮添加监听器 jb2.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { dispose(); timeThread.stop(); new Balance(); //此处加入事件的类的对象 } }); // 给改密按钮添加监听器 jb3.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { dispose(); timeThread.stop(); new ChangePassword1(); //此处加入事件的类的对象 } }); // 给取款按钮添加监听器 jb4.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { dispose(); timeThread.stop(); new WithdrawFrame(); //此处加入事件的类的对象 } }); // 给存款按钮添加监听器 jb6.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { dispose(); timeThread.stop(); new SaveFrame(); //此处加入事件的类的对象 } }); // 给转账按钮添加监听器 jb7.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { dispose(); timeThread.stop(); new TransferFirst(); //此处加入事件的类的对象 } }); // 给退出按钮添加监听器 jb8.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { JOptionPane.showMessageDialog(null, "谢谢使用", " ", JOptionPane.PLAIN_MESSAGE); dispose(); timeThread.stop(); new MainFra(); //此处加入事件的类的对象 } }); } }

  

package Atm;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.DecimalFormat;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;

public class Balance extends FatherFrame {
	JLabel j, j1, j2, j3, j4;
	String arg1, arg2, arg3, arg4;
	ResultSet rs;
	DatabaseOperation databaseOperation;
	boolean dongjieyufou;

	public Balance() {
		super(60);
		databaseOperation = new DatabaseOperation();
		String sql = "SELECT BankCard.Bdongjie,BankCard.Bmoney FROM ATM.dbo.BankCard WHERE BankCard.Bcard="
				+ MainFra.getBcard();
		rs = databaseOperation.search(sql);
		getInformationFromResultSet();
		setDataFromInformation();
		putDataIntoInterfaceFirst();
		setInterfaceSecond();
	}// 构造方法

	private void getInformationFromResultSet() {
		try {
			rs.next();
			arg1 = new DecimalFormat("######0.00")
					.format(rs.getFloat("Bmoney"));
			dongjieyufou = rs.getBoolean("Bdongjie");
		} catch (Exception e1) {
			e1.printStackTrace();
			System.out.print("抛出异常");
		}
	}

	private void setDataFromInformation() {
		if (dongjieyufou)
			arg2 = arg3 = arg4 = "0.00";
		else {
			arg2 = arg3 = arg4 = arg1;
		}
	}

	private void putDataIntoInterfaceFirst() {
		j1 = new MyJLabel3(arg1);
		j2 = new MyJLabel3(arg2);
		j3 = new MyJLabel3(arg3);
		j4 = new MyJLabel3(arg4);
	}

	private void setInterfaceSecond() {

		JLabel j, jj1, jj2, jj3, jj4;
		JPanel p1, p2, p3, p4, p5;

		p1 = new JPanel();
		p2 = new JPanel();
		p3 = new JPanel();

		j = new MyJLabel1("您的账户余额信息");

		p1.setOpaque(false);// 将p1面板设置为透明的,p1用来放提示语:"您的账户余额信息"
		p2.setOpaque(false);// 将p2面板设置为透明的,p2用来放红色的那些字
		p3.setOpaque(false);// 将p3面板设置为透明的,p3用来放数字

		p1.add(j);
		p2.setLayout(new GridLayout(6, 1));
		p3.setLayout(new GridLayout(6, 1));

		jj1 = new MyJLabel2("账户余额:");
		jj2 = new MyJLabel2("可用余额:");
		jj3 = new MyJLabel2("可取现金额:");
		jj4 = new MyJLabel2("可转账金额:");

		jj1.setHorizontalAlignment(SwingConstants.RIGHT);
		jj2.setHorizontalAlignment(SwingConstants.RIGHT);
		jj3.setHorizontalAlignment(SwingConstants.RIGHT);
		jj4.setHorizontalAlignment(SwingConstants.RIGHT);

		p2.add(jj1);
		p2.add(jj2);
		p2.add(jj3);
		p2.add(jj4);
		p3.add(j1);
		p3.add(j2);
		p3.add(j3);
		p3.add(j4);

		setLayout(null);

		p1.setBounds(199, 140, 400, 40);
		p2.setBounds(208, 200, 200, 240);
		p3.setBounds(409, 200, 250, 240);

		add(p1);
		add(p2);
		add(p3);
		setVisible(true);
	}

	protected void setListener() {
		jb4.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				databaseOperation.close();
				timeThread.stop();
				dispose();
				new AtmFrame();
			}
		});

		jb8.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				databaseOperation.close();
				timeThread.stop();
				dispose();
				new Detail();
			}
		});
	}

	protected void initJLabel() {
		jb1 = new JLabel();
		jb2 = new JLabel();
		jb3 = new JLabel();
		jb4 = new JLabel(new ImageIcon("image/返回.png"));
		jb5 = new JLabel();
		jb6 = new JLabel();
		jb7 = new JLabel();
		jb8 = new JLabel(new ImageIcon("image/查询交易明细.png"));
	}

	protected void setJLabelVisible() {
		jb4.setVisible(true);
		jb8.setVisible(true);
	}

}

  

package Atm;

//重置密码

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;

public class ChangePassword1 extends FatherFrame {
	DatabaseOperation databaseOperation;
	ResultSet rs;
	JPasswordField password;

	public ChangePassword1() {
		super(60);
		databaseOperation = new DatabaseOperation();
		password = new JPasswordField(18);// 这里的4不是限制输入的长度,而是密码文本框的长度
		setInterface();

	}

	private void setInterface() {
		JPanel p1, p2, p3;
		LimitedDocument ld;

		ld = new LimitedDocument(6);// 这里的6才是限制输入的长度
		password.setDocument(ld);
		password.setFont(new Font("宋体", Font.BOLD, 25));// 设置文本框内的字体,同时文本框的大小也会改变

		p1 = new JPanel();
		p2 = new JPanel();
		p3 = new JPanel();

		p1.setOpaque(false);
		p2.setOpaque(false);
		p3.setOpaque(false);

		p1.add(new MyJLabel3("请输入你的密码"));
		p2.add(password);
		p3.add(new MyJLabel5("请输入6位密码"));

		setLayout(null);
		p1.setBounds(204, 140, 400, 40);
		p2.setBounds(275, 200, 260, 70);
		p3.setBounds(249, 390, 300, 40);

		add(p1);
		add(p2);
		add(p3);

		setVisible(true);
	}

	private void checkPassword() {
		try {
			rs.next();
			if (password.getText().equals(rs.getString("Bpassword"))) {
				databaseOperation.close();
				dispose();
				timeThread.stop();
				new ChangePassword2();
			} else {
				password.setText("");
				JOptionPane.showMessageDialog(null, "密码输入错误,请重新输入", " ",
						JOptionPane.WARNING_MESSAGE);
			}
		} catch (Exception e1) {
			e1.printStackTrace();
			System.out.print("抛出异常");
		}
	}

	protected void initJLabel() {
		jb1 = new JLabel();
		jb2 = new JLabel();
		jb3 = new JLabel();
		jb4 = new JLabel(new ImageIcon("image/退出登录.png"));
		jb5 = new JLabel();
		jb6 = new JLabel();
		jb7 = new JLabel();
		jb8 = new JLabel(new ImageIcon("image/确认.png"));
	}

	protected void setListener() {
		jb4.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				//databaseOperation.close();
				dispose();
				timeThread.stop();
				new MainFra();
			}
		});

		jb8.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				rs = databaseOperation
						.search("SELECT BankCard.Bpassword FROM ATM.dbo.BankCard WHERE BankCard.Bcard="
								+ MainFra.getBcard());
				checkPassword();
			}
		});
	}

	protected void setJLabelVisible() {
		jb4.setVisible(true);
		jb8.setVisible(true);
	}
}

  

package Atm;

import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;

public class ChangePassword2 extends FatherFrame {
	DatabaseOperation databaseOperation;
	private JPasswordField password;
	private LimitedDocument ld;
	JButton b1, b2;

	public ChangePassword2() {
		super(60);
		databaseOperation = new DatabaseOperation();
		password = new JPasswordField(18);// 这里的4不是限制输入的长度,而是密码文本框的长度
		ld = new LimitedDocument(6);// 这里的6才是限制输入的长度
		password.setFont(new Font("宋体", Font.BOLD, 25));// 设置文本框内的字体,同时文本框的大小也会改变
		password.setDocument(ld);

		setInterface();

	}

	private void setInterface() {
		JPanel p1, p2, p3;

		p1 = new JPanel();
		p2 = new JPanel();
		p3 = new JPanel();

		p1.setOpaque(false);
		p2.setOpaque(false);
		p3.setOpaque(false);

		p1.add(new MyJLabel3("请输入您的新个人密码"));
		p2.add(password);
		p3.setLayout(new GridLayout(3, 1));
		p3.add(new MyJLabel5("请输入6位密码"));
		p3.add(new MyJLabel5("温馨提示:为了加强保密性,提请您尽量避免使用身份证号、出生年月日"));
		p3.add(new MyJLabel5("号码作为您账户或者银行卡的密码"));

		setLayout(null);
		p1.setBounds(205, 140, 400, 40);
		p2.setBounds(275, 200, 260, 70);
		p3.setBounds(115, 390, 600, 60);

		add(p1);
		add(p2);
		add(p3);
		setVisible(true);
	}

	private void check() {
		if (password.getText().length() == 6) {
			databaseOperation
					.update("UPDATE ATM.dbo.BankCard SET BankCard.Bpassword="
							+ password.getText() + " WHERE BankCard.Bcard="
							+ MainFra.getBcard());
			JOptionPane.showMessageDialog(null, "更改密码成功.", " ",
					JOptionPane.PLAIN_MESSAGE);
			databaseOperation
			.create("INSERT INTO ATM.dbo.CustomerRecord (CustomerRecord.CRcard,CustomerRecord.CRdate,CustomerRecord.CRtype,CustomerRecord.CRmoney,CustomerRecord.CRfee) VALUES ('"
					+ MainFra.getBcard()
					+ "','"
					+ MyDate.getDate()
					+ "','"
					+ "修改密码"
					+ "','"
					+ "0"
					+ "','"
					+ "0" + "')");
			databaseOperation.close();
			dispose();
			timeThread.stop();
			new AtmFrame();
		} else {
			// 弹出对话框,提示密码设置错误,请重新输入
			JOptionPane.showMessageDialog(null, "密码设置错误,请重新输入", " ",
					JOptionPane.WARNING_MESSAGE);
			System.out.println("密码设置错误,请重新输入");
			password.setText("");
		}
	}

	protected void initJLabel() {
		jb1 = new JLabel();
		jb2 = new JLabel();
		jb3 = new JLabel();
		jb4 = new JLabel(new ImageIcon("image/退出登录.png"));
		jb5 = new JLabel();
		jb6 = new JLabel();
		jb7 = new JLabel();
		jb8 = new JLabel(new ImageIcon("image/确认.png"));
	}

	protected void setListener() {
		jb4.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				//databaseOperation.close();
				dispose();
				new MainFra();
				timeThread.stop();
			}
		});
		jb8.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				check();
			}
		});
	}

	protected void setJLabelVisible() {
		jb4.setVisible(true);
		jb8.setVisible(true);
	}
}

  

posted @ 2016-11-16 21:54  p微笑玲jx绝影  阅读(506)  评论(0编辑  收藏  举报