银行管理系统

一、需求分析

        本系统仿照银行app进行设计,主要采用javaGUI的页面搭建,以及javaJDBC链接MySQL数据库进行读写数据

二、简介

1.项目结构

        

2.页面的截取

3.声明

本项目不注重界面的搭建和布局,页面设计全部采用WindowBuider的插件来进行实现的。

为了方便使用,全部采用绝对布局来实现的。

照片采用的是绝对路径方式,所以照片可能显示不出来,这个上网搜搜添加就好

三、准备内容,搭建环境

1.下载一个windowBuider插件,并配置到Eclipse里面

将下载好的windowBuider插件添加进去

2.mysql的驱动jar包

mysql的驱动jar包的版本要和mysql的版本一致

可以写一个test类,尝试连接mysql数据库连接

package JavaJUI;
import java.sql.*;
public class test1 {
    public static void main(String[] args) throws SQLException, ClassNotFoundException {
//        1.加载驱动
//        Class.forName("com.mysql.cj.jdbc.Driver");
//        2.用户信息和url
//        bank为数据库名称
        String url = "jdbc:mysql://localhost:3306/bank?useUnicode=true&characterEncoding=utf8&useSSL=true";
        String username="root";
//       这个为下载mySql软件的时候设置的密码
        String password="root";
//        3.连接成功,数据库对象 Connection
        Connection connection = DriverManager.getConnection(url,username,password);
//        4.执行SQL对象Statement,执行SQL的对象
        java.sql.Statement statement = connection.createStatement();
//        5.执行SQL的对象去执行SQL,返回结果集
        String sql = "SELECT *FROM user;";
        ResultSet resultSet = statement.executeQuery(sql);
        while(resultSet.next()){
            System.out.println("SNo="+resultSet.getString("user_name"));
            System.out.println("SName="+resultSet.getString("user_password"));
        }
//        6.释放连接
        resultSet.close();
        statement.close();
        connection.close();
    }
}

四、建立数据库

 对于数据库里面的内容,基本没有什么要求

主键是银行卡号,余额默认为0.0

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `record`
-- ----------------------------
DROP TABLE IF EXISTS `record`;
CREATE TABLE `record` (
  `user_cardnumber` varchar(15) DEFAULT NULL,
  `target_account` varchar(18) DEFAULT NULL,
  `money` double(14,2) DEFAULT NULL,
  `type` varchar(2) DEFAULT NULL,
  `time` date DEFAULT NULL,
  `payment_account` varchar(15) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of record
-- ----------------------------

-- ----------------------------
-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `user_name` varchar(20) DEFAULT NULL,
  `user_password` varchar(20) DEFAULT NULL,
  `user_cardnumber` varchar(15) NOT NULL,
  `user_cardpassword` varchar(20) DEFAULT NULL,
  `user_idcard` varchar(18) DEFAULT NULL,
  `user_phonenumber` varchar(11) DEFAULT NULL,
  `user_balance` double(14,2) DEFAULT NULL,
  PRIMARY KEY (`user_cardnumber`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('大橙只', '123', '123', '123', '123', '123', '300.00');
INSERT INTO `user` VALUES ('钱海安', '123456', '123456', '123456', '123456', '123456', '0.00');

五、代码

1.APP->MainClass

package APP;

import View.LoginFrame;

public class MainClass {
	public static void main(String[] args) {
		//加载数据库,获取用户信息,以便登录
		try {
			//登录界面
			LoginFrame loginFrame = new LoginFrame();
			loginFrame.setVisible(true);
		} catch  (Exception e) {
			e.printStackTrace();
		}
		
	}
}

2.Connection

(1)JDBCutils.java

package Connection;

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

public class JDBCutils {
	/**连接数据库
	 * @param connection
	 * @return
	 * @throws SQLException
	 */
	public static Connection getConnection(Connection connection) throws SQLException {
		//1.加载驱动(省略)
		//2.用户信息和url
        String url = "jdbc:mysql://localhost:3306/bank?useUnicode=true&characterEncoding=utf8&useSSL=true";
        String username="root";
        String password="root";
//       3.连接成功,数据库对象 Connection
        connection = DriverManager.getConnection(url,username,password);
        return connection;
	}
	
	
	/**连接数据库方法重载
	 * @param statement
	 * @param connection
	 */
	public static void release(PreparedStatement statement,Connection connection)
	{
		if (statement!=null) {
			try {
				statement.close();
			} catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
			}
			statement=null;
		}
		if (connection!=null) {
			try {
				connection.close();
			} catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
			}
			connection=null;
		}
	} 
	
	
	/**释放资源
	 * @param resultSet
	 * @param statement
	 * @param connection
	 */
	public static void release(ResultSet resultSet,PreparedStatement statement,Connection connection)
	{
		if (resultSet!=null) {
			try {
				resultSet.close();
			} catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
			}
			resultSet=null;
		}
		if (statement!=null) {
			try {
				statement.close();
			} catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
			}
			statement=null;
		}
		if (connection!=null) {
			try {
				connection.close();
			} catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
			}
			connection=null;
		}
	}
}

(2)RecordLinkBank.java

package Connection;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import Tables.Record;
import Tables.UserMessage;

public class RecordLinkBank {

	/**向数据库记录表里面添加记录
	 * @param record
	 */
	public static void addRecord(Record record) {
		Connection connection=null;
		PreparedStatement preparedStatement =null;
		
		try {
			//连接数据库
			connection=JDBCutils.getConnection(connection);
	        //定义sql
	        String sqlString="INSERT  INTO record VALUES("+record.getNumber()+",'"+record.getTarget_accountString()+"','"+record.getMoney()
	        		+"','"+record.getTypeString()+"','"+record.getTimeString()+"','"+record.getPayment_accountString()+"')";
	        
			//获取preparestatement对象  prepareStatement 防止注入问题即防止sql语句的字符串拼接造成的错误	例如string password=" ' or''1'='1";
	        preparedStatement= connection.prepareStatement(sqlString);
	        //设置?的值	 ?从1开始
	       
	        //执行sql
	        int number= preparedStatement.executeUpdate();
	        if (number>0) {
				System.out.println("添加 record 成功!");
	        }
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			//释放资源
			JDBCutils.release(preparedStatement, connection);
		}
	}
	/**
	 * 查询记录表
	 */
	public static ArrayList<Record> RecordArrayList (UserMessage userMessage) throws SQLException {
		
		Connection connection=null;
		PreparedStatement preparedStatement =null;
		ResultSet resultSet=null;
		ArrayList<Record > list=new ArrayList<Record>();
		try {
			//连接数据库
			connection=JDBCutils.getConnection(connection);
	        //定义sql
	        String sqlString="select * from record where user_cardnumber=?";
	        
			//获取preparestatement对象  prepareStatement 防止注入问题即防止sql语句的字符串拼接造成的错误	例如string password=" ' or''1'='1";
	        preparedStatement= connection.prepareStatement(sqlString);
	        //设置?的值	 ?从1开始
	        preparedStatement.setString(1, userMessage.getUser_cardnumberString());
	        //执行sql
	        resultSet = preparedStatement.executeQuery();
	        
	        //处理结果
	        while (resultSet.next()) {
	        	Record record =new Record();
				//获取数据
	        	String user_cardnumberString=resultSet.getString("user_cardnumber");
	        	String taget_accountString=resultSet.getString("target_account");
	        	Double moneyDouble=resultSet.getDouble("money");
	        	String typeString=resultSet.getString("type");
	        	Date timeDate=resultSet.getDate("time");
	        	String payment_accountString=resultSet.getString("payment_account");
	     
	        	//封装record对象
	        	record.setNumber(user_cardnumberString);;
	        	record.setTarget_accountString(taget_accountString);
	        	record.setMoney(moneyDouble);
	        	record.setTypeString(typeString);
	        	record.setTimeString(timeDate);
	        	record.setPayment_accountString(payment_accountString);
	        	//装载集合
	        	list.add(record);
	        	
			}
//	        测试打印()
//	        System.out.println(list);
	        return list;
		} catch (Exception e) {
			// TODO: handle exception
			
		}finally {
			//释放资源
			JDBCutils.release(resultSet,preparedStatement, connection);
		}
		return list;
	}
	/**注销账户-删除记录信息
	 * @param deteleidcardString
	 * @throws SQLException
	 */
	public static void deleteRecord (String deteleusercardnumberString) throws SQLException {
		
		Connection connection=null;
		PreparedStatement preparedStatement =null;
		
		try {
			//连接数据库
			connection=JDBCutils.getConnection(connection);
	        //定义sql
	        String sqlString="DELETE FROM record WHERE user_cardnumber=?";
	        
			//获取preparestatement对象  prepareStatement 防止注入问题即防止sql语句的字符串拼接造成的错误	例如string password=" ' or''1'='1";
	       preparedStatement= connection.prepareStatement(sqlString);
	        //设置?的值	 ?从1开始
	       preparedStatement.setString(1, deteleusercardnumberString);
	       
	        //执行sql
	        int number= preparedStatement.executeUpdate();
	        if (number>0) {
				System.out.println("注销账号删除用户记录成功");
	        }
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			//释放资源
			JDBCutils.release(preparedStatement, connection);
		}
	}
}

(3)UserLinkBank.java

package Connection;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import Tables.UserMessage;



public class UserLinkBank {
		
/**用户登录
 * @return
 * @throws SQLException
 */
public static ArrayList<UserMessage> userMessagelArrayList () throws SQLException {
		
		Connection connection=null;
		PreparedStatement preparedStatement =null;
		ResultSet resultSet=null;
		ArrayList<UserMessage> list=new ArrayList<UserMessage>();
		try {
			//连接数据库
			connection=JDBCutils.getConnection(connection);
	        //定义sql
	        String sqlString="select *from user";
	        
			//获取preparestatement对象  prepareStatement 防止注入问题即防止sql语句的字符串拼接造成的错误	例如string password=" ' or''1'='1";
	        preparedStatement= connection.prepareStatement(sqlString);
	        //设置?的值	 ?从1开始
	       
	        //执行sql
	        resultSet = preparedStatement.executeQuery();
	        
	        //处理结果
	        while (resultSet.next()) {
	        	UserMessage userMessage=new UserMessage();
				//获取数据
	        	String user_nameString=resultSet.getString("user_name");
	        	String user_passwordString=resultSet.getString("user_password");
	        	String user_cardnameString=resultSet.getString("user_cardnumber");
	        	String user_cardpasswordString=resultSet.getString("user_cardpassword");
	        	String user_idcardString=resultSet.getString("user_idcard");
	        	String user_phonenumberString=resultSet.getString("user_phonenumber");
	        	double user_balance=resultSet.getDouble("user_balance");
	        	//封装user对象
	        	userMessage.setUser_nameString(user_nameString);
	        	userMessage.setUser_passwordString(user_passwordString);
	        	userMessage.setUser_cardnumberString(user_cardnameString);
	        	userMessage.setUser_cardpasswordString(user_cardpasswordString);
	        	userMessage.setUser_idcard(user_idcardString);
	        	userMessage.setUser_phonenumberString(user_phonenumberString);
	        	userMessage.setUser_balance(user_balance);
	        	//装载集合
	        	list.add(userMessage);
	        	
			}
//	        测试打印()
//	        System.out.println(list);
	        return list;
		} catch (Exception e) {
			// TODO: handle exception
			
		}finally {
			//释放资源
			JDBCutils.release(resultSet,preparedStatement, connection);
		}
		return list;
	}	
	/**用户登录获取所有数据
	 * @return
	 * @throws SQLException
	 */
	public static ArrayList<UserMessage> userMessagelArrayList (String usernameString,String passwordString) throws SQLException {
		
		Connection connection=null;
		PreparedStatement preparedStatement =null;
		ResultSet resultSet=null;
		ArrayList<UserMessage> list=new ArrayList<UserMessage>();
		try {
			//连接数据库
			connection=JDBCutils.getConnection(connection);
	        //定义sql
	        String sqlString="select *from user where user_name=? and user_password=?";
	        
			//获取preparestatement对象  prepareStatement 防止注入问题即防止sql语句的字符串拼接造成的错误	例如string password=" ' or''1'='1";
	        preparedStatement= connection.prepareStatement(sqlString);
	        //设置?的值	 ?从1开始
	        preparedStatement.setString(1, usernameString);
	        preparedStatement.setString(2, passwordString);
	        //执行sql
	        resultSet = preparedStatement.executeQuery();
	        
	        //处理结果
	        while (resultSet.next()) {
	        	UserMessage userMessage=new UserMessage();
				//获取数据
	        	String user_nameString=resultSet.getString("user_name");
	        	String user_passwordString=resultSet.getString("user_password");
	        	String user_cardnameString=resultSet.getString("user_cardnumber");
	        	String user_cardpasswordString=resultSet.getString("user_cardpassword");
	        	String user_idcardString=resultSet.getString("user_idcard");
	        	String user_phonenumberString=resultSet.getString("user_phonenumber");
	        	double user_balance=resultSet.getDouble("user_balance");
	        	//封装user对象
	        	userMessage.setUser_nameString(user_nameString);
	        	userMessage.setUser_passwordString(user_passwordString);
	        	userMessage.setUser_cardnumberString(user_cardnameString);
	        	userMessage.setUser_cardpasswordString(user_cardpasswordString);
	        	userMessage.setUser_idcard(user_idcardString);
	        	userMessage.setUser_phonenumberString(user_phonenumberString);
	        	userMessage.setUser_balance(user_balance);
	        	//装载集合
	        	list.add(userMessage);
	        	
			}
//	        测试打印()
//	        System.out.println(list);
	        return list;
		} catch (Exception e) {
			// TODO: handle exception
			
		}finally {
			//释放资源
			JDBCutils.release(resultSet,preparedStatement, connection);
		}
		return list;
	}
	
	
	/**查询单条记录
	 * @param userMessage
	 * @throws SQLException
	 */
	@SuppressWarnings("finally")
	public static boolean userMessagelQuery(String usernameString,String passwordString) throws SQLException {
		boolean flag=false;
		Connection connection=null;
		PreparedStatement preparedStatement =null;
		
		try {
			//连接数据库
			connection=JDBCutils.getConnection(connection);
	        //定义sql
			String sqlString="select *from user where user_name = ? and user_password=? ";
	        
			//获取preparestatement对象  prepareStatement 防止注入问题即防止sql语句的字符串拼接造成的错误	例如string password=" ' or''1'='1";
	        preparedStatement= connection.prepareStatement(sqlString);
	        //设置?的值	 ?从1开始
	       preparedStatement.setString(1, usernameString);
	       preparedStatement.setString(2,passwordString);
	        //执行sql
	        ResultSet resultSet= preparedStatement.executeQuery();
	        if (resultSet.next()) {
				System.out.println("用户登录成功");
				flag=true;
	        }
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			//释放资源
			JDBCutils.release(preparedStatement, connection);
			return flag;
		}
	}
	/**对验证登录的信息进行查询,是登录查询的重载
	 * @param usercardnameString
	 * @param cardpasswordString
	 * @param phonenumberString
	 * @return
	 */
	@SuppressWarnings("finally")
	public static boolean userMessagelQuery(String usercardnameString, String cardpasswordString,
			String phonenumberString) {
		// TODO Auto-generated method stub
		boolean flag=false;
		Connection connection=null;
		PreparedStatement preparedStatement =null;
		
		try {
			//连接数据库
			connection=JDBCutils.getConnection(connection);
	        //定义sql
			String sqlString="select *from user where user_cardnumber = ? and user_cardpassword=? and user_phonenumber=?";
	        
			//获取preparestatement对象  prepareStatement 防止注入问题即防止sql语句的字符串拼接造成的错误	例如string password=" ' or''1'='1";
	        preparedStatement= connection.prepareStatement(sqlString);
	        //设置?的值	 ?从1开始
	       preparedStatement.setString(1,usercardnameString);
	       preparedStatement.setString(2,cardpasswordString);
	       preparedStatement.setString(3,phonenumberString);
	        //执行sql
	        ResultSet resultSet= preparedStatement.executeQuery();
	        if (resultSet.next()) {
				System.out.println("验证登陆成功");
				flag=true;
	        }
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			//释放资源
			JDBCutils.release(preparedStatement, connection);
			return flag;
		}
	}
	
	
	/**注册-添加用户信息
	 * @throws SQLException
	 */
	public static void adduserMessagel (UserMessage userMessage) throws SQLException {
		
		Connection connection=null;
		PreparedStatement preparedStatement =null;
		
		try {
			//连接数据库
			connection=JDBCutils.getConnection(connection);
	        //定义sql
	        String sqlString="INSERT INTO user VALUES(?,?,?,?,?,?,?)";
	        	
	        
			//获取preparestatement对象  prepareStatement 防止注入问题即防止sql语句的字符串拼接造成的错误	例如string password=" ' or''1'='1";
	        preparedStatement= connection.prepareStatement(sqlString);
	        //设置?的值	 ?从1开始
	       preparedStatement.setString(1, userMessage.getUser_nameString());
	       preparedStatement.setString(2, userMessage.getUser_passwordString());
	       preparedStatement.setString(3, userMessage.getUser_cardnumberString());
	       preparedStatement.setString(4, userMessage.getUser_cardpasswordString());
	       preparedStatement.setString(5,userMessage.getUser_idcard());
	       preparedStatement.setString(6, userMessage.getUser_phonenumberString());
	       preparedStatement.setDouble(7, userMessage.getUser_balance());
	        //执行sql
	        int number= preparedStatement.executeUpdate();
	        if (number>0) {
				System.out.println("注册成功");
	        }
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			//释放资源
			JDBCutils.release(preparedStatement, connection);
		}
	}
	
	/**注销账户-删除用户信息
	 * @param deteleidcardString
	 * @throws SQLException
	 */
	public static void deleteuserMessagel (String deteleusercardnumberString) throws SQLException {
		
		Connection connection=null;
		PreparedStatement preparedStatement =null;
		
		try {
			//连接数据库
			connection=JDBCutils.getConnection(connection);
	        //定义sql
	        String sqlString="DELETE FROM user WHERE user_cardnumber=?";
	        
			//获取preparestatement对象  prepareStatement 防止注入问题即防止sql语句的字符串拼接造成的错误	例如string password=" ' or''1'='1";
	       preparedStatement= connection.prepareStatement(sqlString);
	        //设置?的值	 ?从1开始
	       preparedStatement.setString(1, deteleusercardnumberString);
	       
	        //执行sql
	        int number= preparedStatement.executeUpdate();
	        if (number>0) {
				System.out.println("注销账号成功");
	        }
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			//释放资源
			JDBCutils.release(preparedStatement, connection);
		}
	}
	
	
	/**
	 * 更新用户表里面的用户余额,涉及存款,取款。。。
	 * @param userMessage
	 */
	public static void UpdateUsermessageBalance(UserMessage userMessage) {
		Connection connection=null;
		PreparedStatement preparedStatement =null;
		
		try {
			//连接数据库
			connection=JDBCutils.getConnection(connection);
	        //定义sql
	        String sqlString="update user set user_balance= "+userMessage.getUser_balance()+" WHERE user_cardnumber=?";
	        
			//获取preparestatement对象  prepareStatement 防止注入问题即防止sql语句的字符串拼接造成的错误	例如string password=" ' or''1'='1";
	        preparedStatement= connection.prepareStatement(sqlString);
	        //设置?的值	 ?从1开始
	       preparedStatement.setString(1, userMessage.getUser_cardnumberString());
	       
	        //执行sql
	        int number= preparedStatement.executeUpdate();
	        if (number>0) {
				System.out.println("存款成功");
	        }
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			//释放资源
			JDBCutils.release(preparedStatement, connection);
		}
	}
}

3.Tables

(1)Record

package Tables;

import java.sql.Date;

public class Record {
	//凭证号
	private String number;
	
	private String target_accountString;
	//金额
	private double money;
	//类型 such as receiving payment and transfer..
	private String typeString;
	//时间
	private Date timeString;
	//本机账号
	private String payment_accountString;
	public Record() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Record(String number, String payment_accountString, String target_accountString, double money,
			String typeString, Date timeString) {
		super();
		this.number = number;
		this.payment_accountString = payment_accountString;
		this.target_accountString = target_accountString;
		this.money = money;
		this.typeString = typeString;
		this.timeString = timeString;
	}
	
	public String getNumber() {
		return number;
	}
	@Override
	public String toString() {
		return "Record [number=" + number + ", target_accountString=" + target_accountString + ", money=" + money
				+ ", typeString=" + typeString + ", timeString=" + timeString + ", payment_accountString="
				+ payment_accountString + "]";
	}
	public void setNumber(String number) {
		this.number = number;
	}
	public String getPayment_accountString() {
		return payment_accountString;
	}
	public void setPayment_accountString(String payment_accountString) {
		this.payment_accountString = payment_accountString;
	}
	public String getTarget_accountString() {
		return target_accountString;
	}
	public void setTarget_accountString(String target_accountString) {
		this.target_accountString = target_accountString;
	}
	public double getMoney() {
		return money;
	}
	public void setMoney(double money) {
		this.money = money;
	}
	public String getTypeString() {
		return typeString;
	}
	public void setTypeString(String typeString) {
		this.typeString = typeString;
	}
	public Date getTimeString() {
		return timeString;
	}
	public void setTimeString(Date timeString) {
		this.timeString = timeString;
	}
	
}

(2)UserMessage

package Tables;


//用户信息表
public class UserMessage {
	
	//用户名
	private String user_nameString;
	//用户密码
	private String user_passwordString;
	//用户的银行卡号
	private String user_cardnumberString;
	private String user_cardpasswordString;
	private String user_idcard;
	private String user_phonenumberString;
	//账户余额
	private double user_balance;
	public UserMessage() {
		super();
		// TODO Auto-generated constructor stub
	}
	public UserMessage(String user_nameString, String user_passwordString, String user_cardnumberString,
			String user_cardpasswordString, String user_idcard, String user_phonenumberString) {
		super();
		this.user_nameString = user_nameString;
		this.user_passwordString = user_passwordString;
		this.user_cardnumberString = user_cardnumberString;
		this.user_cardpasswordString = user_cardpasswordString;
		this.user_idcard = user_idcard;
		this.user_phonenumberString = user_phonenumberString;
	}
	@Override
	public String toString() {
		return "UserMessage [user_nameString=" + user_nameString + ", user_passwordString=" + user_passwordString
				+ ", user_cardnumberString=" + user_cardnumberString + ", user_cardpasswordString="
				+ user_cardpasswordString + ", user_idcard=" + user_idcard + ", user_phonenumberString="
				+ user_phonenumberString + "]";
	}
	public String getUser_nameString() { 
		return user_nameString;
	}
	public void setUser_nameString(String user_nameString) {
		this.user_nameString = user_nameString;
	}
	public String getUser_passwordString() {
		return user_passwordString;
	}
	public void setUser_passwordString(String user_passwordString) {
		this.user_passwordString = user_passwordString;
	}
	public String getUser_cardnumberString() {
		return user_cardnumberString;
	}
	public void setUser_cardnumberString(String user_cardnumberString) {
		this.user_cardnumberString = user_cardnumberString;
	}
	public String getUser_cardpasswordString() {
		return user_cardpasswordString;
	}
	public void setUser_cardpasswordString(String user_cardpasswordString) {
		this.user_cardpasswordString = user_cardpasswordString;
	}
	public String getUser_idcard() {
		return user_idcard;
	}
	public void setUser_idcard(String user_idcard) {
		this.user_idcard = user_idcard;
	}
	public String getUser_phonenumberString() {
		return user_phonenumberString;
	}
	public void setUser_phonenumberString(String user_phonenumberString) {
		this.user_phonenumberString = user_phonenumberString;
	}
	public double getUser_balance() {
		return user_balance;
	}
	public void setUser_balance(double user_balance) {
		this.user_balance = user_balance;
	}
	               
}

4.View

(1BalanceJFrame.java

package View;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import Tables.UserMessage;

import java.awt.Toolkit;
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import java.awt.Font;
import javax.swing.JTextField;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class BalanceJFrame extends JFrame {

	/**
	 * 余额界面
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JTextField textField;


	/**
	 * Create the frame.
	 * @param userMessage 
	 */
	public BalanceJFrame(final UserMessage userMessage) {
		setTitle("余额");
		setIconImage(Toolkit.getDefaultToolkit().getImage("E:\\Java\\MessageSystem\\src\\image\\background.jpg"));
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 586, 365);
		contentPane = new JPanel();
		contentPane.setBackground(new Color(240, 240, 240));
		contentPane.setForeground(new Color(0, 128, 128));
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JButton btnNewButton = new JButton("确定");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//关闭当前界面的方法
				DiseposePresentFrame(userMessage);
			}
		});
		btnNewButton.setBounds(232, 246, 93, 42);
		contentPane.add(btnNewButton);
		
		JLabel lblNewLabel = new JLabel("您的账户余额为:");
		lblNewLabel.setFont(new Font("宋体", Font.BOLD | Font.ITALIC, 22));
		lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel.setForeground(new Color(0, 128, 255));
		lblNewLabel.setBounds(43, 90, 212, 69);
		contentPane.add(lblNewLabel);
		
		textField = new JTextField();
		//为当前文本框添加内容
		String tempBlaneceString=Double.toString(userMessage.getUser_balance());
		textField.setText(tempBlaneceString);
		textField.setEnabled(false);
		textField.setHorizontalAlignment(SwingConstants.CENTER);
		textField.setForeground(new Color(0, 128, 255));
		textField.setBounds(293, 103, 223, 47);
		contentPane.add(textField);
		textField.setColumns(10);
		
		//窗体居中类
		 // 获取屏幕的宽度和高度
	     int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;
	     int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;

	     // 计算窗口的坐标位置
	     int x = (screenWidth - this.getWidth()) / 2;
	     int y = (screenHeight - this.getHeight()) / 2;

	     // 设置窗口的坐标位置
	     this.setLocation(x, y);
	}

	protected void DiseposePresentFrame(UserMessage userMessage) {
		// TODO Auto-generated method stub
		this.dispose();
		new MainFrame(userMessage).setVisible(true);
	}
}

(2)BillFrame.java

package View;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.border.EmptyBorder;

import Connection.RecordLinkBank;
import Tables.Record;
import Tables.UserMessage;

import java.awt.Toolkit;
import java.sql.SQLException;
import java.util.ArrayList;
import java.awt.BorderLayout;

public class BillFrame extends JFrame {

	/**
	 * 账单
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;


	/**
	 * Create the frame.
	 * @param userMessage 
	 * @throws SQLException 
	 */
	public BillFrame(UserMessage userMessage) throws SQLException {
		setTitle("账单"); 
		setIconImage(Toolkit.getDefaultToolkit().getImage("E:\\Java\\MessageSystem\\src\\image\\background.jpg"));
		setBounds(100, 100, 674, 457);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

		setContentPane(contentPane);
		
		//获取当前用户的记录
		// 添加 record 对象到 list 中
		ArrayList<Record> list=RecordLinkBank.RecordArrayList(userMessage);
		int rows = list.size(); // 获取列表的长度
		Object[][] data = new Object[rows][6]; // 创建二维数组

		// 遍历列表,将每个元素转换为一维数组,并添加到二维数组中
		for (int i = 0; i < rows; i++) {
		    Record item = list.get(i);
		    Object[] row = { item.getNumber(), item.getTarget_accountString(), item.getMoney(),
		    item.getTypeString(),item.getTimeString(),item.getPayment_accountString()};
		    data[i] = row;
		}
		
		
		
		//列标题
		Object[] columnTitleStrings = {"银行卡号" ,"目标账户","交易金额","交易类型","交易日期","付款账户"};
		//行数据
		Object[][] tableDateObjects=data;
		contentPane.setLayout(new BorderLayout(0, 0));
		JTable table1 = new JTable(tableDateObjects, columnTitleStrings);
	    JScrollPane scrollPane = new JScrollPane(table1);
	    contentPane.add(scrollPane, BorderLayout.CENTER);
	    this.setVisible(true);
		
	    //窗体居中类
		 // 获取屏幕的宽度和高度
	     int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;
	     int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;

	     // 计算窗口的坐标位置
	     int x = (screenWidth - this.getWidth()) / 2;
	     int y = (screenHeight - this.getHeight()) / 2;

	     // 设置窗口的坐标位置
	     this.setLocation(x, y);
	}
}

(3)DepositFrame.java

package View;

import javax.swing.JFrame;
import javax.swing.JPanel;
import Connection.RecordLinkBank;
import Connection.UserLinkBank;
import Tables.Record;
import Tables.UserMessage;

import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.SwingConstants;
import java.awt.Color;
import java.awt.Font;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import javax.swing.JButton;
import java.awt.Toolkit;
import java.awt.event.ActionListener;
import java.sql.Date;
import java.awt.event.ActionEvent;

public class DepositFrame extends JFrame {

	/**
	 * 存款界面
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JTextField textField;
	private JPasswordField passwordField;

	/**
	 * Create the frame.
	 * @param userMessage 
	 */
	public DepositFrame(final UserMessage userMessage) {
		setIconImage(Toolkit.getDefaultToolkit().getImage("E:\\Java\\MessageSystem\\src\\image\\bank.jpg"));
		setTitle("存款");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 692, 532);
		contentPane = new JPanel();
		contentPane.setBorder(null);

		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblNewLabel = new JLabel("存款");
		lblNewLabel.setFont(new Font("宋体", Font.PLAIN, 20));
		lblNewLabel.setForeground(new Color(0, 128, 255));
		lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel.setBounds(257, 29, 135, 79);
		contentPane.add(lblNewLabel);
		
		JLabel lblNewLabel_1 = new JLabel("存款金额");
		lblNewLabel_1.setFont(new Font("宋体", Font.BOLD | Font.ITALIC, 16));
		lblNewLabel_1.setForeground(new Color(0, 128, 255));
		lblNewLabel_1.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_1.setBounds(179, 130, 135, 51);
		contentPane.add(lblNewLabel_1);
		
		JLabel lblNewLabel_1_1 = new JLabel("支付密码");
		lblNewLabel_1_1.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_1_1.setForeground(new Color(0, 128, 255));
		lblNewLabel_1_1.setFont(new Font("宋体", Font.BOLD | Font.ITALIC, 16));
		lblNewLabel_1_1.setBounds(179, 220, 135, 51);
		contentPane.add(lblNewLabel_1_1);
		
		textField = new JTextField();
		textField.setBounds(325, 146, 111, 21);
		contentPane.add(textField);
		textField.setColumns(10);
		
		passwordField = new JPasswordField();
		passwordField.setBounds(325, 236, 111, 21);
		contentPane.add(passwordField);
		
		JButton btnNewButton = new JButton("取消");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//cancel事件监听方法
				CancelMethod(userMessage);
			}
		});
		btnNewButton.setBackground(new Color(255, 255, 255));
		btnNewButton.setForeground(new Color(0, 128, 255));
		btnNewButton.setBounds(147, 332, 111, 40);
		contentPane.add(btnNewButton);
		
		JButton btnNewButton_1 = new JButton("确定");
		//为确定按钮添加事件监听
		btnNewButton_1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String money=textField.getText().trim();
				String cardpasswordString=new String(passwordField.getPassword());
				//判断存款成功的方法
				JudgeDepositMethod(money,cardpasswordString,userMessage);
			}
		});
		btnNewButton_1.setBackground(new Color(255, 255, 255));
		btnNewButton_1.setForeground(new Color(0, 128, 255));
		btnNewButton_1.setBounds(415, 332, 111, 40);
		contentPane.add(btnNewButton_1);
		
		//窗体居中类
		 // 获取屏幕的宽度和高度
	     int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;
	     int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;

	     // 计算窗口的坐标位置
	     int x = (screenWidth - this.getWidth()) / 2;
	     int y = (screenHeight - this.getHeight()) / 2;

	     // 设置窗口的坐标位置
	     this.setLocation(x, y);
	}

	protected void CancelMethod(UserMessage userMessage) {
		// TODO Auto-generated method stub
		this.dispose();
		new MainFrame(userMessage).setVisible(true);;
	}

	/*判断存款是否成功
	 * @param money
	 * @param cardpasswordString
	 * @param userMessage2
	 */
	protected void JudgeDepositMethod(String money, String cardpasswordString, UserMessage userMessage2) {
		// TODO Auto-generated method stub
		//如果存款成功
		if(userMessage2.getUser_cardpasswordString().equals(cardpasswordString)&&"".equals(money)!=true) {
			//用于修改存款后,余额的值
			Double moneyDouble=Double.parseDouble(money);
			//这个用于表示存款金额多少
			Double moneyDouble1=Double.parseDouble(money);
			moneyDouble=userMessage2.getUser_balance()+moneyDouble;
			userMessage2.setUser_balance(moneyDouble);
			//修改用户余额
			UserLinkBank.UpdateUsermessageBalance(userMessage2);
			//添加存款记录
			//获取当前的时间戳
            Date date = new Date(System.currentTimeMillis());
            //新建一条存款记录
           Record record =new Record(userMessage2.getUser_cardnumberString(),userMessage2.getUser_cardnumberString(),
           	"无",moneyDouble1,"存款",date);
            //将此条存款记录添加到record表中
            RecordLinkBank.addRecord(record);
            JOptionPane.showMessageDialog(null,"存款成功");
            //关闭当前窗口

			try {
				this.dispose();
				new MainFrame(userMessage2).setVisible(true);;
			} catch (Exception e1) {
				e1.printStackTrace();
			}
		}else if ("".equals(money)||"".equals(cardpasswordString)) {
			System.out.println("存款金额或者密码不能为空");
			JOptionPane.showMessageDialog(null,"存款金额或者密码不能为空!");
		}
		else {
			 JOptionPane.showMessageDialog(null,"存款金额或者密码输入有误!");
		}
	}
}

 (4)DetailsOfAccount.java

package View;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import Tables.UserMessage;

import javax.swing.JLabel;
import javax.swing.SwingConstants;
import java.awt.Color;
import java.awt.Font;
import javax.swing.JTextField;
import java.awt.Toolkit;

public class DetailsOfAccount extends JFrame {

	/**
	 * 账户信息
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JTextField textField;
	private JTextField textField_1;
	private JTextField textField_2;
	private JTextField textField_3;


	/**
	 * Create the frame.
	 * @param userMessage 
	 */
	public DetailsOfAccount(final UserMessage userMessage) {
		setIconImage(Toolkit.getDefaultToolkit().getImage("E:\\Java\\MessageSystem\\src\\image\\background.jpg"));
		setTitle("账户信息");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 737, 601);
		contentPane = new JPanel();
		contentPane.setForeground(new Color(255, 128, 0));
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblNewLabel = new JLabel("用户名");
		lblNewLabel.setFont(new Font("宋体", Font.BOLD | Font.ITALIC, 20));
		lblNewLabel.setForeground(new Color(0, 128, 255));
		lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel.setBounds(185, 135, 142, 28);
		contentPane.add(lblNewLabel);
		
		JLabel lblNewLabel_1 = new JLabel("账户信息");
		lblNewLabel_1.setFont(new Font("新宋体", Font.BOLD | Font.ITALIC, 26));
		lblNewLabel_1.setForeground(new Color(0, 0, 0));
		lblNewLabel_1.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_1.setBounds(242, 39, 201, 54);
		contentPane.add(lblNewLabel_1);
		//回显用户名
		textField = new JTextField();
		textField.setText(userMessage.getUser_nameString());
		//设置不能更改
		textField.setEnabled(false);
				
		textField.setBounds(350, 135, 167, 28);
		contentPane.add(textField);
		textField.setColumns(10);
		
		JLabel lblNewLabel_2 = new JLabel("银行卡号");
		lblNewLabel_2.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_2.setForeground(new Color(0, 128, 255));
		lblNewLabel_2.setFont(new Font("宋体", Font.BOLD | Font.ITALIC, 20));
		lblNewLabel_2.setBounds(185, 209, 142, 28);
		contentPane.add(lblNewLabel_2);
		
		JLabel lblNewLabel_3 = new JLabel("手机号");
		lblNewLabel_3.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_3.setForeground(new Color(0, 128, 255));
		lblNewLabel_3.setFont(new Font("宋体", Font.BOLD | Font.ITALIC, 20));
		lblNewLabel_3.setBounds(185, 284, 142, 28);
		contentPane.add(lblNewLabel_3);
		
		textField_1 = new JTextField();
		textField_1.setColumns(10);
		textField_1.setBounds(350, 209, 167, 28);
		contentPane.add(textField_1);
		//回显银行卡号
		textField_1.setText(userMessage.getUser_cardnumberString());
		//设置不能更改
		textField_1.setEnabled(false);
		
		textField_2 = new JTextField();
		textField_2.setColumns(10);
		textField_2.setBounds(350, 284, 167, 28);
		contentPane.add(textField_2);
		//回显手机号
		textField_2.setText(userMessage.getUser_phonenumberString());
		//设置不能更改
		textField_2.setEnabled(false);
				
		JLabel lblNewLabel_3_1 = new JLabel("身份证号");
		lblNewLabel_3_1.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_3_1.setForeground(new Color(0, 128, 255));
		lblNewLabel_3_1.setFont(new Font("宋体", Font.BOLD | Font.ITALIC, 20));
		lblNewLabel_3_1.setBounds(185, 355, 142, 28);
		contentPane.add(lblNewLabel_3_1);
		
		textField_3 = new JTextField();
		textField_3.setColumns(10); 
		textField_3.setBounds(350, 355, 167, 28);
		contentPane.add(textField_3);
		//回显身份证号
		textField_3.setText(userMessage.getUser_idcard());
		//设置不能更改
		textField_3.setEnabled(false);
				
		
		//窗体居中类
		 // 获取屏幕的宽度和高度
	     int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;
	     int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;

	     // 计算窗口的坐标位置
	     int x = (screenWidth - this.getWidth()) / 2;
	     int y = (screenHeight - this.getHeight()) / 2;

	     // 设置窗口的坐标位置
	     this.setLocation(x, y);
	     System.out.println(userMessage.getUser_nameString());
	}


	
}

(5)ForgetPasswordFrame.java

package View;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

public class ForgetPasswordFrame extends JFrame {

	/**
	 * 忘记密码
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;

	

	/**
	 * Create the frame.
	 */
	public ForgetPasswordFrame() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

		setContentPane(contentPane);
	}

}

(6)GraphicCaptchaPanel.java

package View;

import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.LayoutManager;
import java.awt.Panel;
import java.util.Random;

public class GraphicCaptchaPanel extends Panel{
	/**
	 * 
	 */
	
	private static final long serialVersionUID = 1L;
	private  String graphicCaptchaString;
	
	/**
	 * 无参构造方法
	 */
	public GraphicCaptchaPanel() {
		super();
		// TODO Auto-generated constructor stub
		//产生随机验证码
		Random random=new Random();
		char[] chars=("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ").toCharArray();
		StringBuilder stringBuilder=new StringBuilder();
		for (int i = 0; i <4; i++) {
			int pos=random.nextInt(chars.length);
			char c=chars[pos];
			stringBuilder.append(c+" ");
		}
		graphicCaptchaString=stringBuilder.toString();
	}
	
	/**
	 *图形验证码,防止重复提交表单
	 * @return 
	 * @return 
	 */
	public void paint(Graphics graphics) {
		int width=160;
		int height=40;
		graphics.setColor(Color.lightGray);
		graphics.fillRect(0,0, width, height);
		graphics.setColor(Color.black);
		graphics.drawRect(0, 0, width-1, height-1);
		//绘制干扰点
		Random random=new Random();
		for (int i = 0; i < 100; i++) {
			int x=random.nextInt(width)-2;
			int y=random.nextInt(height)-2;
			graphics.drawOval(x, y, 2, 2);
		}
		graphics.setFont(new Font("黑体",Font.BOLD,30));
		graphics.setColor(Color.BLUE);
		graphics.drawString(graphicCaptchaString, 20,30);
	}
	
	
	public String getgraphicCaptchaString() {
		return graphicCaptchaString;
	}
	
	public GraphicCaptchaPanel(LayoutManager layout) {
		super(layout);
		// TODO Auto-generated constructor stub
	}
}

(7)LoginFrame.java

package View;

import javax.swing.JFrame;
import javax.swing.JPanel;
import Connection.UserLinkBank;
import Tables.UserMessage;

import java.awt.Color;
import java.awt.Toolkit;
import javax.swing.UIManager;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.SwingConstants;
import java.awt.Rectangle;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.util.ArrayList;
import java.awt.event.ActionEvent;
import javax.swing.JPasswordField;
import javax.swing.border.BevelBorder;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class LoginFrame extends JFrame {

	/**
	 * 登陆界面
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JTextField textField;
	private JButton btnNewButton_1;
	private JPasswordField passwordField;


	/**
	 * Create the frame.
	 * 登陆界面构造方法
	 */
	public LoginFrame() {
		setIconImage(Toolkit.getDefaultToolkit().getImage("E:\\Java\\MessageSystem\\src\\image\\background.jpg"));
		setForeground(new Color(0, 128, 255));
		setTitle("银行");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 493, 358);
		contentPane = new JPanel();
		contentPane.setBounds(new Rectangle(600, 1000, 800, 700));
		contentPane.setBackground(UIManager.getColor("RadioButtonMenuItem.selectionBackground"));
		contentPane.setForeground(new Color(0, 128, 255));
		contentPane.setBorder(new BevelBorder(BevelBorder.LOWERED, new Color(128, 64, 64), null, null, null));
		
		//窗体居中类
		 // 获取屏幕的宽度和高度
	     int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;
	     int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;

	     // 计算窗口的坐标位置
	     int x = (screenWidth - this.getWidth()) / 2;
	     int y = (screenHeight - this.getHeight()) / 2;

	     // 设置窗口的坐标位置
	     this.setLocation(x, y);
	     
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		final JLabel lblNewLabel = new JLabel("用户名");
		lblNewLabel.setBounds(new Rectangle(141, 83, 62, 31));
		lblNewLabel.setForeground(UIManager.getColor("Menu.foreground"));
		lblNewLabel.setHorizontalAlignment(SwingConstants.LEFT);
		contentPane.add(lblNewLabel);
		
		
		
		final JLabel lblNewLabel_1 = new JLabel("密码");
		lblNewLabel_1.setBounds(154, 143, 49, 25);
		contentPane.add(lblNewLabel_1);
		
		final JButton btnNewButton = new JButton("登录");
		
		btnNewButton.setBackground(UIManager.getColor("RadioButton.highlight"));
		btnNewButton.setForeground(UIManager.getColor("RadioButtonMenuItem.acceleratorForeground"));
		btnNewButton.setBounds(110, 219, 93, 23);
		contentPane.add(btnNewButton);
		
		btnNewButton_1 = new JButton("注册");
		btnNewButton_1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				RegisterMethod();
			}
		});
		btnNewButton_1.setBounds(285, 219, 93, 23);
		contentPane.add(btnNewButton_1);
		
		passwordField = new JPasswordField();
		passwordField.addKeyListener(new KeyAdapter() {
			@Override
			public void keyPressed(KeyEvent e) {
				 if (e.getKeyCode() == KeyEvent.VK_ENTER) {
			            btnNewButton.doClick();
			      }
			}
		});
		passwordField.setBounds(211, 145, 110, 21);
		contentPane.add(passwordField);
		
		JButton btnNewButton_2 = new JButton("忘记密码");
		btnNewButton_2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				ForgetPassword();
			}
		});
		btnNewButton_2.setForeground(new Color(0, 0, 0));
		btnNewButton_2.setBackground(new Color(240, 240, 240));
		btnNewButton_2.setBounds(326, 169, 87, 21);
		contentPane.add(btnNewButton_2);
		//文本框
		textField = new JTextField();
		textField.addKeyListener(new KeyAdapter() {
			@Override
			public void keyPressed(KeyEvent e) {
				if (e.getKeyCode() == KeyEvent.VK_ENTER) {
		            btnNewButton.doClick();
		        }
			}
		});
		
		textField.setBounds(new Rectangle(211, 88, 110, 21));
		contentPane.add(textField);
		textField.setColumns(10);
		
		//登录按钮绑定事件
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				try {
					//获取用户名
					String usernameString=textField.getText().trim();
					//获取用户登录密码
					String userpasswordString=new String(passwordField.getPassword());
					
					//判断用户名密码是否输入正确的方法
					JudgeLogicinMethod(usernameString,userpasswordString);
					
				} catch (Exception e1) {
					e1.printStackTrace();
				}	
			}
		});
	}
		protected void ForgetPassword() {
		// TODO Auto-generated method stub
			JOptionPane.showMessageDialog(null,"请到办卡银行携带证件找回密码,哈哈哈!");
			JOptionPane.showMessageDialog(null,"Don't support!Thank you for your understanding!hhhhh");
	}
		protected void RegisterMethod() {
		// TODO Auto-generated method stub
			this.dispose();
			new RegisterFrame().setVisible(true);;
	}
		/**判断登录是否成功,为登录加装监听内容
		 * @param usernameString
		 * @param userpasswordString
		 * @throws SQLException
		 */
		private void JudgeLogicinMethod(String usernameString, String userpasswordString) throws SQLException {
			// TODO Auto-generated method stub
			
			boolean result=UserLinkBank.userMessagelQuery(usernameString, userpasswordString);
			if(result==true) {
				JOptionPane.showMessageDialog(null,"登录成功");
			 	ArrayList<UserMessage> list = UserLinkBank.userMessagelArrayList(usernameString, userpasswordString);
				this.dispose();
				new VerifyLogin(list).setVisible(true);
			}else if ("".equals(usernameString)||"".equals(userpasswordString)) {
				System.out.println("账号或者密码不能为空");
				JOptionPane.showMessageDialog(null,"用户名或密码不能为空!");
			}
			else {
				 JOptionPane.showMessageDialog(null,"用户名或者密码错误!");
			}
		}
}

(8)LogoutFrame.java

package View;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import Connection.RecordLinkBank;
import Connection.UserLinkBank;
import Tables.UserMessage;

import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.SwingConstants;
import java.awt.Color;
import java.awt.Font;
import javax.swing.JTextField;
import java.awt.Toolkit;
import javax.swing.border.BevelBorder;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.awt.event.ActionEvent;

public class LogoutFrame extends JFrame {

	/**
	 * 注销界面
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JTextField textField;
	private JTextField textField_1;
	private JTextField textField_2;
	private JTextField textField_3;


	/**
	 * Create the frame.
	 * @param userMessage 
	 */
	public LogoutFrame(final UserMessage userMessage) {
		setIconImage(Toolkit.getDefaultToolkit().getImage("E:\\Java\\MessageSystem\\src\\image\\background.jpg"));
		setTitle("注销");
		setBounds(100, 100, 737, 601);
		contentPane = new JPanel();
		contentPane.setForeground(new Color(255, 128, 0));
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblNewLabel = new JLabel("用户名");
		lblNewLabel.setFont(new Font("宋体", Font.BOLD | Font.ITALIC, 20));
		lblNewLabel.setForeground(new Color(0, 128, 255));
		lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel.setBounds(185, 135, 142, 28);
		contentPane.add(lblNewLabel);
		
		JLabel lblNewLabel_1 = new JLabel("注销");
		lblNewLabel_1.setFont(new Font("新宋体", Font.BOLD | Font.ITALIC, 26));
		lblNewLabel_1.setForeground(new Color(0, 0, 0));
		lblNewLabel_1.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_1.setBounds(242, 39, 201, 54);
		contentPane.add(lblNewLabel_1);
		//回显用户名
		textField = new JTextField();
		textField.setText(userMessage.getUser_nameString());
		//设置不能更改
		textField.setEnabled(false);
				
		textField.setBounds(350, 135, 167, 28);
		contentPane.add(textField);
		textField.setColumns(10);
		
		JLabel lblNewLabel_2 = new JLabel("银行卡号");
		lblNewLabel_2.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_2.setForeground(new Color(0, 128, 255));
		lblNewLabel_2.setFont(new Font("宋体", Font.BOLD | Font.ITALIC, 20));
		lblNewLabel_2.setBounds(185, 209, 142, 28);
		contentPane.add(lblNewLabel_2);
		
		JLabel lblNewLabel_3 = new JLabel("手机号");
		lblNewLabel_3.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_3.setForeground(new Color(0, 128, 255));
		lblNewLabel_3.setFont(new Font("宋体", Font.BOLD | Font.ITALIC, 20));
		lblNewLabel_3.setBounds(185, 284, 142, 28);
		contentPane.add(lblNewLabel_3);
		
		textField_1 = new JTextField();
		textField_1.setColumns(10);
		textField_1.setBounds(350, 209, 167, 28);
		contentPane.add(textField_1);
		//回显银行卡号
		textField_1.setText(userMessage.getUser_cardnumberString());
		//设置不能更改
		textField_1.setEnabled(false);
		
		textField_2 = new JTextField();
		textField_2.setColumns(10);
		textField_2.setBounds(350, 284, 167, 28);
		contentPane.add(textField_2);
		//回显手机号
		textField_2.setText(userMessage.getUser_phonenumberString());
		//设置不能更改
		textField_2.setEnabled(false);
				
		JLabel lblNewLabel_3_1 = new JLabel("身份证号");
		lblNewLabel_3_1.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_3_1.setForeground(new Color(0, 128, 255));
		lblNewLabel_3_1.setFont(new Font("宋体", Font.BOLD | Font.ITALIC, 20));
		lblNewLabel_3_1.setBounds(185, 355, 142, 28);
		contentPane.add(lblNewLabel_3_1);
		
		textField_3 = new JTextField();
		textField_3.setColumns(10); 
		textField_3.setBounds(350, 355, 167, 28);
		contentPane.add(textField_3);
		//回显身份证号
		textField_3.setText(userMessage.getUser_idcard());
		//设置不能更改
		textField_3.setEnabled(false);
		
		JButton btnNewButton = new JButton("取消");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//取消按钮方法
				CancelMethod(userMessage);
			}
		});
		btnNewButton.setBackground(new Color(74, 173, 181));
		btnNewButton.setForeground(new Color(0, 128, 255));
		btnNewButton.setFont(new Font("宋体", Font.ITALIC, 18));
		btnNewButton.setBounds(185, 433, 105, 54);
		contentPane.add(btnNewButton);
		
		JButton btnNewButton_1 = new JButton("注销");
		//为注销按钮加装监听器
		btnNewButton_1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//注销方法
				try {
					LogoutMethod(userMessage);
				} catch (SQLException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			}
		});
		btnNewButton_1.setForeground(new Color(0, 128, 255));
		btnNewButton_1.setFont(new Font("宋体", Font.ITALIC, 18));
		btnNewButton_1.setBackground(new Color(74, 173, 181));
		btnNewButton_1.setBounds(454, 433, 105, 54);
		contentPane.add(btnNewButton_1);
				
		
		//窗体居中类
		 // 获取屏幕的宽度和高度
	     int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;
	     int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;

	     // 计算窗口的坐标位置
	     int x = (screenWidth - this.getWidth()) / 2;
	     int y = (screenHeight - this.getHeight()) / 2;

	     // 设置窗口的坐标位置
	     this.setLocation(x, y);
	     System.out.println(userMessage.getUser_nameString());
	}


	/**
	 * 取消按钮监听器方法
	 */
	protected void CancelMethod(UserMessage userMessage) {
		// TODO Auto-generated method stub
		this.dispose();
		new MainFrame(userMessage).setVisible(true);
	}


	/**注销方法
	 * @param userMessage
	 * @throws SQLException 
	 */
	protected void LogoutMethod(UserMessage userMessage) throws SQLException {
		// TODO Auto-generated method stub
		int choice = JOptionPane.showConfirmDialog(this, "确定要注销吗?", "注销确认", JOptionPane.OK_CANCEL_OPTION);
	        if (choice == JOptionPane.OK_OPTION) {
	            // 用户点击了"确定"按钮
	            System.out.println("用户选择了注销");
	            UserLinkBank.deleteuserMessagel(userMessage.getUser_cardnumberString());
	            RecordLinkBank.deleteRecord(userMessage.getUser_cardnumberString());
	            System.out.println("注销成功");
	            this.dispose();
	            new LoginFrame().setVisible(true);
	            // 在这里处理注销的逻辑
	        } else {
	            // 用户点击了"取消"按钮或者关闭了对话框
	            System.out.println("用户取消了注销");
	            // 在这里处理取消注销的逻辑
	        }
	}
}


(9)MainFrame.java

package View;

import javax.swing.JFrame;
import javax.swing.JPanel;
import Tables.UserMessage;

import java.awt.Color;
import java.awt.Toolkit;
import java.awt.BorderLayout;
import javax.swing.JLabel;
import java.awt.Font;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.UIManager;
import javax.swing.SwingConstants;
import java.awt.Rectangle;
import java.awt.Panel;
import javax.swing.border.CompoundBorder;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.awt.event.ActionEvent;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.border.BevelBorder;
import javax.swing.JMenuItem;
import java.awt.Dimension;

public class MainFrame extends JFrame {
	/**
	 * 主界面
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * Create the frame.
	 * @param userMessage 
	 */
	public MainFrame(final UserMessage userMessage) {
		setIconImage(Toolkit.getDefaultToolkit().getImage("E:\\Java\\MessageSystem\\src\\image\\background.jpg"));
		setTitle("BANK");
		setForeground(UIManager.getColor("ProgressBar.foreground"));
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBackground(new Color(192, 192, 192));
		setBounds(new Rectangle(450, 160, 900, 800));
		getContentPane().setBackground(new Color(0, 128, 255));
		getContentPane().setLayout(new BorderLayout(0, 0));
		
		JPanel panel = new JPanel();
		getContentPane().add(panel);
		panel.setLayout(new BorderLayout(0, 0));
		
		JPanel panel_2 = new JPanel();
		panel_2.setBackground(UIManager.getColor("ProgressBar.background"));
		panel.add(panel_2, BorderLayout.CENTER);
		panel_2.setLayout(null);
		
		//为余额加装监听器
		JButton btnNewButton_2 = new JButton("余额");
		btnNewButton_2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				BalanceMethod(userMessage);
			
			}
		});
		btnNewButton_2.setForeground(UIManager.getColor("CheckBoxMenuItem.selectionBackground"));
		btnNewButton_2.setFont(new Font("宋体", Font.PLAIN, 20));
		btnNewButton_2.setBackground(UIManager.getColor("CheckBoxMenuItem.selectionBackground"));
		btnNewButton_2.setBounds(522, 440, 151, 51);
		panel_2.add(btnNewButton_2);
		
		//为转账添加监听事件
		JButton btnNewButton_3 = new JButton("转账");
		btnNewButton_3.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				try {
					TransferMethod(userMessage);
				} catch (Exception e1) {
					e1.printStackTrace();
				}
			}
		});
		btnNewButton_3.setForeground(UIManager.getColor("CheckBoxMenuItem.selectionBackground"));
		btnNewButton_3.setFont(new Font("宋体", Font.PLAIN, 20));
		btnNewButton_3.setBackground(UIManager.getColor("CheckBoxMenuItem.selectionBackground"));
		btnNewButton_3.setBounds(522, 537, 151, 51);
		panel_2.add(btnNewButton_3);
		
		JPanel panel_1 = new JPanel();
		panel_1.setBounds(10, 33, 940, 371);
		panel_2.add(panel_1);
		panel_1.setLayout(null);
		
		Panel panel_3 = new Panel();
		panel_3.setForeground(UIManager.getColor("ProgressBar.selectionBackground"));
		panel_3.setBounds(new Rectangle(10, 10, 920, 356));
		panel_1.add(panel_3);
		panel_3.setLayout(null);
		
		JLabel lblNewLabel = new JLabel("");
		lblNewLabel.setForeground(UIManager.getColor("ProgressBar.foreground"));
		lblNewLabel.setBorder(new CompoundBorder());
		lblNewLabel.setBackground(UIManager.getColor("ProgressBar.foreground"));
		lblNewLabel.setToolTipText("欢迎使用\r\n");
		lblNewLabel.setIgnoreRepaint(true);
		lblNewLabel.setHorizontalTextPosition(SwingConstants.CENTER);
		lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel.setIconTextGap(0);
		lblNewLabel.setIcon(new ImageIcon("E:\\Java\\MessageSystem\\src\\image\\bank.jpg"));
		lblNewLabel.setBounds(-23, 35, 915, 311);
		panel_3.add(lblNewLabel);
		
		JLabel lblNewLabel_1 = new JLabel("欢迎光临");
		lblNewLabel_1.setFont(new Font("宋体", Font.PLAIN, 25));
		lblNewLabel_1.setBounds(new Rectangle(0, 0, 200, 300));
		lblNewLabel_1.setForeground(new Color(0, 128, 255));
		lblNewLabel_1.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_1.setBounds(345, 10, 159, 38);
		panel_3.add(lblNewLabel_1);
		
		//为取款添加监听事件
		JButton btnNewButton_3_1 = new JButton("取款");
		btnNewButton_3_1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				try {
					WithdrawalMethod(userMessage);
					
				} catch (Exception e1) {
					e1.printStackTrace();
				}
			}
		});
		btnNewButton_3_1.setForeground(UIManager.getColor("CheckBoxMenuItem.selectionBackground"));
		btnNewButton_3_1.setFont(new Font("宋体", Font.PLAIN, 20));
		btnNewButton_3_1.setBackground(UIManager.getColor("CheckBoxMenuItem.selectionBackground"));
		btnNewButton_3_1.setBounds(202, 537, 151, 51);
		panel_2.add(btnNewButton_3_1);
		
		//为存款加装监听器
		JButton btnNewButton_3_1_1 = new JButton("存款");
		btnNewButton_3_1_1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				try {
					DepositMethod(userMessage);
				} catch (Exception e1) {
					e1.printStackTrace();
				}
			}
		});
		btnNewButton_3_1_1.setForeground(UIManager.getColor("CheckBoxMenuItem.selectionBackground"));
		btnNewButton_3_1_1.setFont(new Font("宋体", Font.PLAIN, 20));
		btnNewButton_3_1_1.setBackground(UIManager.getColor("CheckBoxMenuItem.selectionBackground"));
		btnNewButton_3_1_1.setBounds(202, 440, 151, 51);
		panel_2.add(btnNewButton_3_1_1);
		
		JMenuBar menuBar = new JMenuBar();
		menuBar.setBounds(0, 0, 1015, 23);
		panel_2.add(menuBar);
		
		JMenu mnNewMenu = new JMenu("About Bank");
		mnNewMenu.setBorder(new BevelBorder(BevelBorder.RAISED, new Color(240, 240, 240), new Color(240, 240, 240), null, null));
		mnNewMenu.setForeground(new Color(0, 128, 255));
		menuBar.add(mnNewMenu);
		
		//为账户信息添加监听
		JMenuItem mntmNewMenuItem_1 = new JMenuItem("账户信息");
		mntmNewMenuItem_1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				try {
					
					DetailsOfAccount frame = new DetailsOfAccount(userMessage);
					frame.setVisible(true);
					
				} catch (Exception e1) {
					e1.printStackTrace();
				}
			}
		});
		mntmNewMenuItem_1.setPreferredSize(new Dimension(75, 27));
		mnNewMenu.add(mntmNewMenuItem_1);
		
		JMenuItem mntmNewMenuItem_2 = new JMenuItem("诈骗别信");
		mntmNewMenuItem_2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				SwindowMethod();
			}
		});
		mntmNewMenuItem_2.setPreferredSize(new Dimension(76, 27));
		mnNewMenu.add(mntmNewMenuItem_2);
		
		JMenu mnNewMenu_1 = new JMenu("关于我们");
		mnNewMenu_1.setBorder(new BevelBorder(BevelBorder.RAISED, new Color(240, 240, 240), new Color(240, 240, 240), null, null));
		mnNewMenu_1.setBackground(new Color(240, 240, 240));
		mnNewMenu_1.setForeground(new Color(0, 128, 255));
		menuBar.add(mnNewMenu_1);
		
		JMenuItem mntmNewMenuItem = new JMenuItem("公众号");
		mntmNewMenuItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.out.println("公众号");
				
				//创建一个弹框对象
				JDialog jDialog=new JDialog();
				jDialog.setIconImage(Toolkit.getDefaultToolkit().getImage("E:\\Java\\MessageSystem\\src\\image\\background.jpg"));
				jDialog.setTitle("公众宿舍号");
				//创建一个管理图片的容器对象JLabel
				JLabel jLabeltemp=new JLabel(new ImageIcon("E:\\Java\\MessageSystem\\bin\\image\\publicnumber.jpg"));
				//设置位置的宽高
				jLabeltemp.setBounds(0, 0, 500, 600);
				//把图片添加到弹框当中去
				jDialog.getContentPane().add(jLabeltemp);
				jDialog.setSize(600,600);
				//让弹框置顶并居中
				jDialog.setAlwaysOnTop(true);
				jDialog.setLocationRelativeTo(null);
				//弹框不关闭则不能操作下面的界面
				jDialog.setModal(true);
				//让弹框显示出来
				jDialog.setVisible(true);
			}
		});
		mnNewMenu_1.add(mntmNewMenuItem);
		
		JButton btnNewButton_3_1_2 = new JButton("账单");
		btnNewButton_3_1_2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				try {
					//账单按钮监听方法
					BillMethod(userMessage);
				} catch (SQLException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			}
		});
		btnNewButton_3_1_2.setForeground(UIManager.getColor("CheckBoxMenuItem.selectionBackground"));
		btnNewButton_3_1_2.setFont(new Font("宋体", Font.PLAIN, 20));
		btnNewButton_3_1_2.setBackground(UIManager.getColor("CheckBoxMenuItem.selectionBackground"));
		btnNewButton_3_1_2.setBounds(202, 638, 151, 51);
		panel_2.add(btnNewButton_3_1_2);
		
		JButton btnNewButton_3_1_3 = new JButton("注销");
		//为注销加装监听器
		btnNewButton_3_1_3.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//注销方法
				LogoutMethod(userMessage);
			}
		});
		btnNewButton_3_1_3.setForeground(UIManager.getColor("CheckBoxMenuItem.selectionBackground"));
		btnNewButton_3_1_3.setFont(new Font("宋体", Font.PLAIN, 20));
		btnNewButton_3_1_3.setBackground(UIManager.getColor("CheckBoxMenuItem.selectionBackground"));
		btnNewButton_3_1_3.setBounds(522, 638, 151, 51);
		panel_2.add(btnNewButton_3_1_3);
		
		//窗体居中类
		 // 获取屏幕的宽度和高度
	     int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;
	     int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;

	     // 计算窗口的坐标位置
	     int x = (screenWidth - this.getWidth()) / 2;
	     int y = (screenHeight - this.getHeight()) / 2;

	     // 设置窗口的坐标位置
	     this.setLocation(x, y);
		
		
	}

	/**
	 * 诈骗别信监听按钮
	 */
	protected void SwindowMethod() {
		// TODO Auto-generated method stub
		new SwindleFrame().setVisible(true);
	}

	/**取款的监听器方法
	 * @param userMessage
	 */
	protected void WithdrawalMethod(UserMessage userMessage) {
		// TODO Auto-generated method stub
		this.dispose();
		WithdrawalFrame frame = new WithdrawalFrame(userMessage);
		frame.setVisible(true);
	}

	/**转账的监听器方法
	 * @param userMessage
	 */
	protected void TransferMethod(UserMessage userMessage) {
		// TODO Auto-generated method stub
		this.dispose();
		TransferFrame frame = new TransferFrame(userMessage);
		frame.setVisible(true);
	}

	/**余额查询的监听器方法
	 * @param userMessage
	 */
	protected void BalanceMethod(UserMessage userMessage) {
		// TODO Auto-generated method stub
		this.dispose();
		new BalanceJFrame(userMessage).setVisible(true);
	}

	/**存储的监听器方法
	 * @param userMessage
	 */
	protected void DepositMethod(UserMessage userMessage) {
		// TODO Auto-generated method stub
		this.dispose();
		DepositFrame frame = new DepositFrame(userMessage);
		frame.setVisible(true);
	}

	/**账单的监听器方法
	 * @param userMessage
	 * @throws SQLException
	 */
	protected void BillMethod(UserMessage userMessage) throws SQLException {
		// TODO Auto-generated method stub
		new BillFrame(userMessage).setVisible(true);
		
	}

	/**注销的监听器方法
	 * @param userMessage
	 */
	protected void LogoutMethod(UserMessage userMessage) {
		// TODO Auto-generated method stub
		this.dispose();
		new LogoutFrame(userMessage).setVisible(true);
	}
}

 (10)RegisterFrame.java

package View;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import Connection.UserLinkBank;
import Tables.UserMessage;

import javax.swing.JLabel;
import javax.swing.JOptionPane;

import java.awt.Font;
import java.awt.Graphics;

import javax.swing.SwingConstants;
import java.awt.Toolkit;
import java.awt.Color;
import javax.swing.JCheckBox;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.util.ArrayList;
import java.awt.event.ActionEvent;
import javax.swing.JTextField;
import javax.swing.border.BevelBorder;
import javax.swing.JPasswordField;

/**
 * 
 */
/**
 * 
 */
public class RegisterFrame extends JFrame {

	/**
	 * 注册界面
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JTextField textField;
	private JTextField textField_1;
	private JTextField textField_2;
	private JTextField textField_5;
	private JTextField textField_6;
	private JTextField textField_7;
	private JPasswordField passwordField;
	private JPasswordField passwordField1;

	

	/**
	 * Create the frame.
	 */
	public RegisterFrame() {
		setIconImage(Toolkit.getDefaultToolkit().getImage("E:\\Java\\MessageSystem\\src\\image\\background.jpg"));
		setTitle("注册");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 844, 861);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JPanel panel = new JPanel();
		panel.setBackground(new Color(255, 128, 192));
		panel.setBounds(0, 10, 852, 67);
		contentPane.add(panel);
		panel.setLayout(null);
		
		JLabel lblNewLabel = new JLabel("注册");
		lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel.setFont(new Font("微软雅黑", Font.BOLD | Font.ITALIC, 26));
		lblNewLabel.setBounds(299, 10, 206, 47);
		panel.add(lblNewLabel);
		
		JPanel panel_1 = new JPanel();
		panel_1.setBackground(new Color(128, 255, 128));
		panel_1.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null));
		panel_1.setBounds(0, 87, 852, 303);
		panel_1.setForeground(new Color(0, 128, 255));
		contentPane.add(panel_1);
		panel_1.setLayout(null);
		
		JLabel lblNewLabel_1 = new JLabel("用户名");
		lblNewLabel_1.setBackground(new Color(255, 128, 0));
		lblNewLabel_1.setForeground(new Color(0, 128, 255));
		lblNewLabel_1.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_1.setBounds(41, 10, 113, 33);
		panel_1.add(lblNewLabel_1);
		
		JLabel lblNewLabel_1_1 = new JLabel("用户密码");
		lblNewLabel_1_1.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_1_1.setForeground(new Color(0, 128, 255));
		lblNewLabel_1_1.setBackground(new Color(255, 128, 0));
		lblNewLabel_1_1.setBounds(41, 69, 113, 33);
		panel_1.add(lblNewLabel_1_1);
		
		JLabel lblNewLabel_1_2 = new JLabel("银行卡号");
		lblNewLabel_1_2.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_1_2.setForeground(new Color(0, 128, 255));
		lblNewLabel_1_2.setBackground(new Color(255, 128, 0));
		lblNewLabel_1_2.setBounds(41, 136, 113, 33);
		panel_1.add(lblNewLabel_1_2);
		
		JLabel lblNewLabel_1_3 = new JLabel("密码");
		lblNewLabel_1_3.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_1_3.setForeground(new Color(0, 128, 255));
		lblNewLabel_1_3.setBackground(new Color(255, 128, 0));
		lblNewLabel_1_3.setBounds(41, 211, 113, 33);
		panel_1.add(lblNewLabel_1_3);
		
		JLabel lblNewLabel_1_5 = new JLabel("身份证号");
		lblNewLabel_1_5.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_1_5.setForeground(new Color(0, 128, 255));
		lblNewLabel_1_5.setBackground(new Color(255, 128, 0));
		lblNewLabel_1_5.setBounds(388, 69, 113, 33);
		panel_1.add(lblNewLabel_1_5);
		
		JLabel lblNewLabel_1_6 = new JLabel("手机号");
		lblNewLabel_1_6.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_1_6.setForeground(new Color(0, 128, 255));
		lblNewLabel_1_6.setBackground(new Color(255, 128, 0));
		lblNewLabel_1_6.setBounds(388, 136, 113, 33);
		panel_1.add(lblNewLabel_1_6);
		
		textField = new JTextField();
		textField.setBounds(146, 13, 158, 27);
		panel_1.add(textField);
		textField.setColumns(10);
		
		textField_1 = new JTextField();
		textField_1.setColumns(10);
		textField_1.setBounds(146, 75, 158, 27);
		panel_1.add(textField_1);
		
		textField_2 = new JTextField();
		textField_2.setColumns(10);
		textField_2.setBounds(146, 139, 158, 27);
		panel_1.add(textField_2);
		
		textField_5 = new JTextField();
		textField_5.setColumns(10);
		textField_5.setBounds(511, 72, 158, 27);
		panel_1.add(textField_5);
		
		textField_6 = new JTextField();
		textField_6.setColumns(10);
		textField_6.setBounds(511, 139, 158, 27);
		panel_1.add(textField_6);
		
		textField_7 = new JTextField();
		textField_7.setColumns(10);
		textField_7.setBounds(511, 214, 158, 27);
		panel_1.add(textField_7);
		
		
		//图形验证码面板
		GraphicCaptchaPanel panel_3 = new GraphicCaptchaPanel();
		// 获取生成的图形验证码字符串
		final String graphicCaptchaString1= panel_3.getgraphicCaptchaString().trim();
		final String graphicCaptchaString=graphicCaptchaString1.replace(" ", "");
		// 打印图形验证码字符串
		System.out.println("生成的图形验证码: " + graphicCaptchaString);
		
		
		panel_3.setBounds(675, 211, 139, 33);
		panel_1.add(panel_3);
		
		JLabel lblNewLabel_1_3_1 = new JLabel("请输入图形验证码:");
		lblNewLabel_1_3_1.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_1_3_1.setForeground(new Color(0, 128, 255));
		lblNewLabel_1_3_1.setBackground(new Color(255, 128, 0));
		lblNewLabel_1_3_1.setBounds(377, 211, 113, 33);
		panel_1.add(lblNewLabel_1_3_1);
		
		JLabel lblNewLabel_1_3_2 = new JLabel("请确认密码");
		lblNewLabel_1_3_2.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_1_3_2.setForeground(new Color(0, 128, 255));
		lblNewLabel_1_3_2.setBackground(new Color(255, 128, 0));
		lblNewLabel_1_3_2.setBounds(377, 10, 113, 33);
		panel_1.add(lblNewLabel_1_3_2);
		
		passwordField = new JPasswordField();
		passwordField.setBounds(146, 211, 158, 27);
		panel_1.add(passwordField);
		
		passwordField1 = new JPasswordField();
		passwordField1.setBounds(511, 13, 158, 27);
		panel_1.add(passwordField1);
		
		JLabel lblNewLabel_1_1_1 = new JLabel("字母加数字");
		lblNewLabel_1_1_1.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_1_1_1.setForeground(new Color(255, 128, 192));
		lblNewLabel_1_1_1.setBackground(new Color(255, 128, 0));
		lblNewLabel_1_1_1.setBounds(301, 72, 85, 27);
		panel_1.add(lblNewLabel_1_1_1);
		
		JLabel lblNewLabel_1_1_1_1 = new JLabel("15位数字");
		lblNewLabel_1_1_1_1.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_1_1_1_1.setForeground(new Color(255, 128, 192));
		lblNewLabel_1_1_1_1.setBackground(new Color(255, 128, 0));
		lblNewLabel_1_1_1_1.setBounds(301, 139, 85, 27);
		panel_1.add(lblNewLabel_1_1_1_1);
		
		JLabel lblNewLabel_1_1_1_1_1 = new JLabel("6位数字");
		lblNewLabel_1_1_1_1_1.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_1_1_1_1_1.setForeground(new Color(255, 128, 192));
		lblNewLabel_1_1_1_1_1.setBackground(new Color(255, 128, 0));
		lblNewLabel_1_1_1_1_1.setBounds(301, 211, 85, 27);
		panel_1.add(lblNewLabel_1_1_1_1_1);
		
		JLabel lblNewLabel_2 = new JLabel("用户条例");
		lblNewLabel_2.setBounds(223, 400, 358, 35);
		lblNewLabel_2.setFont(new Font("宋体", Font.BOLD | Font.ITALIC, 22));
		lblNewLabel_2.setForeground(new Color(0, 0, 0));
		lblNewLabel_2.setHorizontalAlignment(SwingConstants.CENTER);
		contentPane.add(lblNewLabel_2);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(10, 434, 830, 253);
		contentPane.add(scrollPane);
		
		JTextArea textArea = new JTextArea();
		textArea.setBackground(new Color(255, 255, 255));
		textArea.setWrapStyleWord(true);
		textArea.setLineWrap(true);
		textArea.setText("\r\n第一条 为了规范非银行支付机构行为,保护当事人合法权益,防范化解风险,促进非银行支付行业健康发展,根据《中华人民共和国中国人民银行法》、《中华人民共和国电子商务法》等法律,制定本条例。\r\n\r\n第二条 本条例所称非银行支付机构,是指在中华人民共和国境内(以下简称境内)依法设立,除银行业金融机构外,取得支付业务许可,从事根据收款人或者付款人(以下统称用户)提交的电子支付指令转移货币资金等支付业务的有限责任公司或者股份有限公司。\r\n\r\n中华人民共和国境外(以下简称境外)的非银行机构拟为境内用户提供跨境支付服务的,应当依照本条例规定在境内设立非银行支付机构,国家另有规定的除外。\r\n\r\n第三条 非银行支付机构开展业务,应当遵守法律、行政法规的规定,遵循安全、高效、诚信和公平竞争的原则,以提供小额、便民支付服务为宗旨,维护国家金融安全,不得损害国家利益、社会公共利益和他人合法权益。\r\n\r\n第四条 非银行支付机构的监督管理,应当贯彻落实党和国家路线方针政策、决策部署,围绕服务实体经济,统筹发展和安全,维护公平竞争秩序。\r\n\r\n中国人民银行依法对非银行支付机构实施监督管理。中国人民银行的分支机构根据中国人民银行的授权,履行监督管理职责。\r\n\r\n第五条 非银行支付机构应当遵守反洗钱和反恐怖主义融资、反电信网络诈骗、防范和处置非法集资、打击赌博等规定,采取必要措施防范违法犯罪活动。\r\n\r\n第二章 设立、变更与终止\r\n\r\n第六条 设立非银行支付机构,应当经中国人民银行批准,取得支付业务许可。非银行支付机构的名称中应当标明“支付”字样。\r\n\r\n未经依法批准,任何单位和个人不得从事或者变相从事支付业务,不得在单位名称和经营范围中使用“支付”字样,法律、行政法规和国家另有规定的除外。支付业务许可被依法注销后,该机构名称和经营范围中不得继续使用“支付”字样。\r\n\r\n第七条 设立非银行支付机构,应当符合《中华人民共和国公司法》的规定,并具备以下条件:\r\n\r\n(一)有符合本条例规定的注册资本;\r\n\r\n(二)主要股东、实际控制人财务状况和诚信记录良好,最近3年无重大违法违规记录;主要股东、实际控制人为公司的,其股权结构应当清晰透明,不存在权属纠纷;\r\n\r\n(三)拟任董事、监事和高级管理人员熟悉相关法律法规,具有履行职责所需的经营管理能力,最近3年无重大违法违规记录;\r\n\r\n(四)有符合规定的经营场所、安全保障措施以及业务系统、设施和技术;\r\n\r\n(五)有健全的公司治理结构、内部控制和风险管理制度、退出预案以及用户权益保障机制;\r\n\r\n(六)法律、行政法规以及中国人民银行规章规定的其他审慎性条件。\r\n\r\n第八条 设立非银行支付机构的注册资本最低限额为人民币1亿元,且应当为实缴货币资本。\r\n\r\n中国人民银行根据非银行支付机构的业务类型、经营地域范围和业务规模等因素,可以提高前款规定的注册资本最低限额。\r\n\r\n非银行支付机构的股东应当以自有资金出资,不得以委托资金、债务资金等非自有资金出资。\r\n\r\n第九条 申请设立非银行支付机构,应当向中国人民银行提交申请书和证明其符合本条例第七条、第八条规定条件的材料。\r\n\r\n第十条 中国人民银行应当自受理申请之日起6个月内作出批准或者不予批准的决定。决定批准的,颁发支付业务许可证并予以公告;决定不予批准的,应当书面通知申请人并说明理由。\r\n\r\n支付业务许可证应当载明非银行支付机构可以从事的业务类型和经营地域范围。\r\n\r\n\r\n\r\n\r\n\r\n第六十条 本条例自2024年5月1日起施行。");
		textArea.setEditable(false);
		scrollPane.setViewportView(textArea);
		
		JPanel panel_2 = new JPanel();
		panel_2.setBackground(new Color(255, 128, 192));
		panel_2.setBounds(10, 697, 830, 117);
		contentPane.add(panel_2);
		panel_2.setLayout(null);
		
		
		
		
		final JButton btnNewButton = new JButton("注册");
		
		
		btnNewButton.setBounds(504, 40, 93, 51);
		panel_2.add(btnNewButton);
		
		final JButton btnNewButton_2 = new JButton("取消");
		btnNewButton_2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				CancelMethod();
			}
		});
		btnNewButton_2.setBounds(184, 40, 93, 51);
		panel_2.add(btnNewButton_2);
		
		final JCheckBox chckbxNewCheckBox = new JCheckBox("我同意此条款");
		chckbxNewCheckBox.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (chckbxNewCheckBox.isSelected()) {
					btnNewButton.setEnabled(true);
		         } else {
		        	btnNewButton.setEnabled(false);
		        	JOptionPane.showMessageDialog(null,"您还未同意用户条款嘞!");
		         }
			}
		});
		
		chckbxNewCheckBox.setBounds(334, 6, 103, 36);
		panel_2.add(chckbxNewCheckBox);
		//新建注册对象
		final UserMessage userMessage=new UserMessage();
		//为注册按钮加装监听器
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//获取输入内容		
				String usernameString=textField.getText().trim();
				String user_passwordString=textField_1.getText().trim();
				String user_cardnumberString=textField_2.getText().trim();
				char[] user_cardpassword=passwordField.getPassword();
				String user_cardpasswordString=new String(user_cardpassword);
				
				String user_idcardString=textField_5.getText().trim();
				String user_phonenumberString=textField_6.getText().trim();
				Double user_balanceDouble=(double) 0;
				//封装成usermessage对象
				
				userMessage.setUser_nameString(usernameString);
				userMessage.setUser_passwordString(user_passwordString);
				userMessage.setUser_cardnumberString(user_cardnumberString);
				userMessage.setUser_cardpasswordString(user_cardpasswordString);
				userMessage.setUser_idcard(user_idcardString);
				userMessage.setUser_balance(user_balanceDouble);
				userMessage.setUser_phonenumberString(user_phonenumberString);
				
				//确认密码文本框内容
				char[] confirmpassword=passwordField1.getPassword();
				String confirmpasswordString=new String(confirmpassword);
				
				//图形验证码的文本框内容
				String graphiccaptchaString=textField_7.getText().trim();
				
				//判断注册成功的方法
				try {
					System.out.println(graphiccaptchaString+" "+graphicCaptchaString);
					RegisterMethod(chckbxNewCheckBox,btnNewButton,userMessage,
							confirmpasswordString,graphicCaptchaString,graphiccaptchaString);
				} catch (SQLException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			}
		});
		
		//图形验证码面板位置设置
		GraphicCaptchaPanel graphicCaptchaPanel=new GraphicCaptchaPanel();
		getContentPane().add(graphicCaptchaPanel);
		
		
		
				
		//窗体居中类
		 // 获取屏幕的宽度和高度
	     int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;
	     int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;

	     // 计算窗口的坐标位置
	     int x = (screenWidth - this.getWidth()) / 2;
	     int y = (screenHeight - this.getHeight()) / 2;

	     // 设置窗口的坐标位置
	     this.setLocation(x, y);
		
	}
	
	/**
	 * 取消按钮监听器方法
	 */
	protected void CancelMethod() {
		// TODO Auto-generated method stub
		this.dispose();
		new LoginFrame().setVisible(true);;
	}

	/**
	 * 注册按钮监听器里面的方法
	 * @param chckbxNewCheckBox 
	 * @param btnNewButton 
	 * @param userMessage 
	 * @param confirmpasswordString 
	 * @param graphicCaptchaString 
	 * @param graphiccaptchaString2 
	 * @throws SQLException 
	 */
	protected void RegisterMethod(JCheckBox chckbxNewCheckBox, JButton btnNewButton, 
			UserMessage userMessage, String confirmpasswordString, String graphicCaptchaString, String graphiccaptchaString2 ) throws SQLException {
		// TODO Auto-generated method stub
		//比较两次输入的密码是否一致
		boolean epwdresult=userMessage.getUser_cardpasswordString().equals(confirmpasswordString);
		//比较随机生成的验证码和输入的是否一致
		boolean ecaptcharesult=graphicCaptchaString.equalsIgnoreCase(graphiccaptchaString2);
		
		System.out.println(epwdresult);
        if ("".equals(userMessage.getUser_nameString())) {
			System.out.println("用户名为空!");
			JOptionPane.showMessageDialog(null,"用户名不能为空啊!");
		}else if ("".equals(userMessage.getUser_passwordString())) {
			System.out.println("用户密码为空!");
			JOptionPane.showMessageDialog(null,"用户密码不能为空啊!");
		}else if ("".equals(userMessage.getUser_cardnumberString())) {
			System.out.println("银行卡号为空!");
			JOptionPane.showMessageDialog(null,"还没填银行卡号嘞!");
		}else if ("".equals(userMessage.getUser_cardpasswordString())) {
			System.out.println("银行卡密码为空!");
			JOptionPane.showMessageDialog(null,"还没填银行卡密码嘞!");
		}else if ("".equals(userMessage.getUser_idcard())) {
			System.out.println("身份证号为空!");
			JOptionPane.showMessageDialog(null,"还没填身份证号嘞!");
		}else if ("".equals(userMessage.getUser_phonenumberString())) {
			System.out.println("手机号为空!");
			JOptionPane.showMessageDialog(null,"还没填手机号嘞!");
		}else if ("".equals(graphiccaptchaString2)) {
			System.out.println("图形验证码为空!");
			JOptionPane.showMessageDialog(null,"还没填图形验证码嘞!");
		}
		
		//正则表达式
        //用户密码必须是数字加字母
		else if (!userMessage.getUser_passwordString().matches("^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$")) {
			System.out.println("用户密码密码必须是字母加数字的组合!");
            JOptionPane.showMessageDialog(null, "用户密码密码必须是字母加数字的组合!请重新输入!");
        }
        //用户银行卡号必须是15位数字
		else  if (userMessage.getUser_cardnumberString().length() != 15 || !userMessage.getUser_cardnumberString().matches("\\d+")) {
			System.out.println("银行卡号为15位数字!请重新输入!");
			JOptionPane.showMessageDialog(null, "银行卡号为15位数字!请重新输入!");
        }
		//银行卡密码必须是6位数字
	    else if (userMessage.getUser_cardpasswordString().length() != 6 || !userMessage.getUser_cardpasswordString().matches("\\d+")) {
	    	System.out.println("银行卡密码必须是6位数字!请重新输入!");
	    	JOptionPane.showMessageDialog(null, "银行卡密码必须是6位数字!请重新输入!");
	    }
        // 验证身份账号是否为18位
	    else if (userMessage.getUser_idcard().length() != 18) {
        	System.out.println("身份账号必须是18位!请重新输入!");
            JOptionPane.showMessageDialog(null, "身份账号必须是11位!请重新输入!");
        }
        // 验证手机号是否为11位数字
	    else if (userMessage.getUser_phonenumberString().length() != 11 || !userMessage.getUser_phonenumberString().matches("\\d+")) {
	    	System.out.println("手机号格式有误!请重新输入!");
	    	JOptionPane.showMessageDialog(null, "手机号格式有误!请重新输入!");
        }
        //两次输入的密码是否一致
	    else if (epwdresult==false) {
			System.out.println("两次输入的密码不一致!");
			JOptionPane.showMessageDialog(null,"两次输入的密码不一致!");
		}
	    //图形验证码判断
	    else if (ecaptcharesult==false) {
			System.out.println("图形验证码输入有误!");
			JOptionPane.showMessageDialog(null,"行不行啊细勾,不区分大小写的验证码都输入不对?!");
		}
        //是否同意条款
		else if (chckbxNewCheckBox.isSelected()) {
			btnNewButton.setEnabled(true);
			Boolean tempBoolean=false;
			//判断银行卡账号是否重复
			ArrayList<UserMessage> list = UserLinkBank.userMessagelArrayList();
			for (int i = 0; i < list.size(); i++) {
				if (list.get(i).getUser_cardnumberString().equals(userMessage.getUser_cardnumberString())) {
					tempBoolean=true;
				}
			}
			if (tempBoolean) {
				System.out.println("银行卡号已被申请,请重新申请");
				JOptionPane.showMessageDialog(null,"银行卡号已被申请嘞,请更改后重新申请,Thank you for your understanding!");
			} else {
				System.out.println("注册成功!");
				//用户表里面添加usermessage的一条记录
				UserLinkBank.adduserMessagel(userMessage);
				JOptionPane.showMessageDialog(null,"注册成功!");
				this.dispose();
				new LoginFrame().setVisible(true);
			}
			
        }
		else {
			btnNewButton.setEnabled(false);
        	JOptionPane.showMessageDialog(null,"您还未同意用户条款嘞!");
		}
	}
}

 (11)SwindleFrame.java

package View;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.SwingConstants;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.Color;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JButton;
import javax.swing.ImageIcon;

public class SwindleFrame extends JFrame {

	/**
	 * 诈骗别信界面
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;


	/**
	 * Create the frame.
	 */
	public SwindleFrame() {
		setIconImage(Toolkit.getDefaultToolkit().getImage("E:\\Java\\MessageSystem\\src\\image\\Swindle.jpg"));
		setTitle("诈骗别信");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 685, 888);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblNewLabel = new JLabel("诈骗别信");
		lblNewLabel.setFont(new Font("宋体", Font.BOLD | Font.ITALIC, 26));
		lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel.setBounds(232, 10, 191, 59);
		contentPane.add(lblNewLabel);
		
		JPanel panel = new JPanel();
		panel.setBounds(-17, 61, 725, 275);
		contentPane.add(panel);
		panel.setLayout(null);
		
		JLabel lblNewLabel_1 = new JLabel("请听题:");
		lblNewLabel_1.setFont(new Font("宋体", Font.BOLD, 16));
		lblNewLabel_1.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_1.setBounds(81, 23, 111, 29);
		panel.add(lblNewLabel_1);
		
		JLabel lblNewLabel_2 = new JLabel("银行卡凭空多出几十个w,你会怎么办嘞?\r\n");
		lblNewLabel_2.setForeground(new Color(0, 128, 255));
		lblNewLabel_2.setFont(new Font("宋体", Font.PLAIN, 16));
		lblNewLabel_2.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_2.setBounds(105, 41, 502, 59);
		panel.add(lblNewLabel_2);
		
		final JRadioButton rdbtnNewRadioButton = new JRadioButton("A:给人家转回去,并收取一定的好处费");
		rdbtnNewRadioButton.setBounds(211, 105, 265, 23);
		panel.add(rdbtnNewRadioButton);
		
		final JRadioButton rdbtnB = new JRadioButton("B:报警,查明这笔资金的真实来源");
		rdbtnB.setBounds(211, 164, 265, 23);
		panel.add(rdbtnB);
		
		
		
		
		
		final JPanel panel_1 = new JPanel();
		//先把答案面板设置为不可见
		panel_1.setVisible(false);
		panel_1.setBounds(10, 346, 651, 219);
		contentPane.add(panel_1);
		panel_1.setLayout(null);
		
		JLabel lblNewLabel_2_1 = new JLabel("一是:这个钱雀氏转错了,也是最好的情况。\r\n");
		lblNewLabel_2_1.setBounds(125, 10, 387, 36);
		lblNewLabel_2_1.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_2_1.setForeground(new Color(0, 128, 255));
		lblNewLabel_2_1.setFont(new Font("宋体", Font.PLAIN, 16));
		panel_1.add(lblNewLabel_2_1);
		
		JLabel lblNewLabel_2_1_1 = new JLabel("二是:这个钱非法所得,利用你的账户洗白,涉及洗钱罪,判刑并处以金额5%到10%的罚金。\r\n");
		lblNewLabel_2_1_1.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_2_1_1.setForeground(new Color(0, 128, 255));
		lblNewLabel_2_1_1.setFont(new Font("宋体", Font.PLAIN, 16));
		lblNewLabel_2_1_1.setBounds(0, 56, 661, 45);
		panel_1.add(lblNewLabel_2_1_1);
		
		JLabel lblNewLabel_2_1_2 = new JLabel("三是:这个钱是不法分子通过你的个人信息贷款所得,转多少未来就要还多少。\r\n");
		lblNewLabel_2_1_2.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_2_1_2.setForeground(new Color(0, 128, 255));
		lblNewLabel_2_1_2.setFont(new Font("宋体", Font.PLAIN, 16));
		lblNewLabel_2_1_2.setBounds(10, 99, 641, 36);
		panel_1.add(lblNewLabel_2_1_2);
		
		JLabel lblNewLabel_2_1_3 = new JLabel("so 最好的方法就是通过警官证到银行为这笔钱验明真身!");
		lblNewLabel_2_1_3.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_2_1_3.setForeground(new Color(0, 128, 255));
		lblNewLabel_2_1_3.setFont(new Font("宋体", Font.PLAIN, 16));
		lblNewLabel_2_1_3.setBounds(85, 145, 480, 36);
		panel_1.add(lblNewLabel_2_1_3);
		
		JButton btnNewButton = new JButton("提交");
		btnNewButton.addActionListener(new ActionListener() {
			//提交按钮加装监听器
			public void actionPerformed(ActionEvent e) {
				SubmitMethod(rdbtnNewRadioButton,rdbtnB,panel_1);
			}
		});
		btnNewButton.setBackground(Color.LIGHT_GRAY);
		btnNewButton.setForeground(Color.BLUE);
		btnNewButton.setBounds(366, 210, 122, 29);
		panel.add(btnNewButton);
		
		JButton btnNewButton_1 = new JButton("查看答案");
		btnNewButton_1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				panel_1.setVisible(true);
			}
		});
		btnNewButton_1.setForeground(Color.BLUE);
		btnNewButton_1.setBackground(Color.LIGHT_GRAY);
		btnNewButton_1.setBounds(181, 210, 122, 29);
		panel.add(btnNewButton_1);
		
		JLabel lblNewLabel_3 = new JLabel("New label");
		lblNewLabel_3.setIcon(new ImageIcon("E:\\Java\\MessageSystem\\src\\image\\Swindle.jpg"));
		lblNewLabel_3.setBounds(134, 566, 369, 275);
		contentPane.add(lblNewLabel_3);
		
		//窗体居中类
		 // 获取屏幕的宽度和高度
	     int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;
	     int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;

	     // 计算窗口的坐标位置
	     int x = (screenWidth - this.getWidth()) / 2;
	     int y = (screenHeight - this.getHeight()) / 2;

	     // 设置窗口的坐标位置
	     this.setLocation(x, y);
	     
	}
	protected void SubmitMethod(JRadioButton rdbtnNewRadioButton, JRadioButton rdbtnB, JPanel panel_1) {
		// TODO Auto-generated method stub
		if (rdbtnB.isSelected()&&rdbtnNewRadioButton.isSelected()) {
			System.out.println("不能同时选两个哦!");
			JOptionPane.showMessageDialog(null,"不是多选哦!");
		}else if (rdbtnNewRadioButton.isSelected()) {
			JOptionPane.showMessageDialog(null,"恭喜您答错了,送您888888红包!");
			JOptionPane.showMessageDialog(null,"哎呀,不好意思转错了!哈哈哈");
			panel_1.setVisible(true);
		}else if (rdbtnB.isSelected()) {
			JOptionPane.showMessageDialog(null,"Yes,you are right!");
			panel_1.setVisible(true);
		}else {
			System.out.println("请选择选项!");
			JOptionPane.showMessageDialog(null,"请选择选项!");
		}
	}
}

 (12)TransferFrame.java

package View;

import javax.swing.JFrame;
import javax.swing.JPanel;
import Connection.RecordLinkBank;
import Connection.UserLinkBank;
import Tables.Record;
import Tables.UserMessage;

import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.SwingConstants;
import java.awt.Color;
import java.awt.Font;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import javax.swing.JButton;
import java.awt.Toolkit;
import java.awt.event.ActionListener;
import java.sql.Date;
import java.sql.SQLException;
import java.util.ArrayList;
import java.awt.event.ActionEvent;

public class TransferFrame extends JFrame {

	/**
	 * 转账界面
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JTextField textField;
	private JPasswordField passwordField;
	private JTextField textField_1;

	/**
	 * Create the frame.
	 * @param userMessage 
	 */
	public TransferFrame(final UserMessage userMessage) {
		setIconImage(Toolkit.getDefaultToolkit().getImage("E:\\Java\\MessageSystem\\src\\image\\bank.jpg"));
		setTitle("转账");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 692, 532);
		contentPane = new JPanel();
		contentPane.setBorder(null);

		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblNewLabel = new JLabel("转账");
		lblNewLabel.setFont(new Font("宋体", Font.PLAIN, 20));
		lblNewLabel.setForeground(new Color(0, 128, 255));
		lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel.setBounds(257, 29, 135, 79);
		contentPane.add(lblNewLabel);
		
		JLabel lblNewLabel_1 = new JLabel("转账金额");
		lblNewLabel_1.setFont(new Font("宋体", Font.BOLD | Font.ITALIC, 16));
		lblNewLabel_1.setForeground(new Color(0, 128, 255));
		lblNewLabel_1.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_1.setBounds(179, 130, 135, 51);
		contentPane.add(lblNewLabel_1);
		
		JLabel lblNewLabel_1_1 = new JLabel("支付密码");
		lblNewLabel_1_1.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_1_1.setForeground(new Color(0, 128, 255));
		lblNewLabel_1_1.setFont(new Font("宋体", Font.BOLD | Font.ITALIC, 16));
		lblNewLabel_1_1.setBounds(179, 193, 135, 51);
		contentPane.add(lblNewLabel_1_1);
		
		textField = new JTextField();
		textField.setBounds(325, 146, 111, 21);
		contentPane.add(textField);
		textField.setColumns(10);
		
		passwordField = new JPasswordField();
		passwordField.setBounds(325, 209, 111, 21);
		contentPane.add(passwordField);
		
		JButton btnNewButton = new JButton("取消");
		//为取消按钮加装监听
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				CancelMethod(userMessage);
			}
		});
		btnNewButton.setBackground(new Color(255, 255, 255));
		btnNewButton.setForeground(new Color(0, 128, 255));
		btnNewButton.setBounds(169, 351, 111, 40);
		contentPane.add(btnNewButton);
		
		
		
		JLabel lblNewLabel_1_1_1 = new JLabel("目标账户");
		lblNewLabel_1_1_1.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_1_1_1.setForeground(new Color(0, 128, 255));
		lblNewLabel_1_1_1.setFont(new Font("宋体", Font.BOLD | Font.ITALIC, 16));
		lblNewLabel_1_1_1.setBounds(179, 254, 135, 51);
		contentPane.add(lblNewLabel_1_1_1);
		
		textField_1 = new JTextField();
		textField_1.setColumns(10);
		textField_1.setBounds(325, 270, 111, 21);
		contentPane.add(textField_1);
		
		
		JButton btnNewButton_1 = new JButton("确定");
		btnNewButton_1.addActionListener(new ActionListener() {
			//为转账确定按钮添加事件
			public void actionPerformed(ActionEvent e) {
				String money=textField.getText().trim();
				String cardpasswordString=new String(passwordField.getPassword());
				String target_accountString=textField_1.getText().trim();
				//判断是否成功转账
				try {
					JudgeTransferMethod(money,cardpasswordString,target_accountString,userMessage);
				} catch (SQLException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			}
		});
		btnNewButton_1.setBackground(new Color(255, 255, 255));
		btnNewButton_1.setForeground(new Color(0, 128, 255));
		btnNewButton_1.setBounds(389, 351, 111, 40);
		contentPane.add(btnNewButton_1);
		
		
		//窗体居中类
		 // 获取屏幕的宽度和高度
	     int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;
	     int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;

	     // 计算窗口的坐标位置
	     int x = (screenWidth - this.getWidth()) / 2;
	     int y = (screenHeight - this.getHeight()) / 2;

	     // 设置窗口的坐标位置
	     this.setLocation(x, y);
	}

	/**取消按钮监听方法
	 * @param userMessage
	 */
	protected void CancelMethod(UserMessage userMessage) {
		// TODO Auto-generated method stub
		this.dispose();
		new MainFrame(userMessage).setVisible(true);
	}

	/**为转账确定按钮加装监听里  确定转账是否成功的方法
	 * @param money
	 * @param cardpasswordString
	 * @param target_accountString
	 * @param userMessage2
	 * @throws SQLException 
	 */
	protected void JudgeTransferMethod(String money, String cardpasswordString, String target_accountString,
			UserMessage userMessage2) throws SQLException {
		// TODO Auto-generated method stub
		//查找目标账户
		ArrayList<UserMessage> list= UserLinkBank.userMessagelArrayList();
		UserMessage userMessage3=new UserMessage();
		int i=0;
		boolean equals=false;
		for (i = 0; i < list.size(); i++) {
			 equals= list.get(i).getUser_cardnumberString().equals(target_accountString);
			if (equals==true) {
				//目标账户UserMessage3
				userMessage3=list.get(i);
				break;
			}
		}
		
		if(userMessage2.getUser_cardpasswordString().equals(cardpasswordString)&&"".equals(money)!=true&&
				"".equals(target_accountString)!=true) {
			//当前账户
			
			//用于转账后,余额的值
			Double moneyDouble=Double.parseDouble(money);
			//取款金额
			Double moneyDouble1=Double.parseDouble(money);
			//转账后的余额
			moneyDouble=userMessage2.getUser_balance()-moneyDouble;
			
			//目标账户
			
			//用于转账后,余额的值
			Double targetmoneyDouble=Double.parseDouble(money);
			//取款金额
			Double targetmoneyDouble1=Double.parseDouble(money);
			//转账后的余额
			targetmoneyDouble=userMessage3.getUser_balance()+targetmoneyDouble;
			
			
			if (moneyDouble<0) {
				 JOptionPane.showMessageDialog(null,"您的余额不足!");
			}
			else if (equals==false) {
				JOptionPane.showMessageDialog(null,"转账的目标账户不存在!");
			}else if (userMessage2.getUser_cardnumberString().equals(userMessage3.getUser_cardnumberString())) {
				JOptionPane.showMessageDialog(null,"不是流水更诱人,而是余额更有性价比!哈哈!");
				JOptionPane.showMessageDialog(null,"转账账户is me,Don't support!嘿嘿");
			}
			else {
				System.out.println("转账成功");
				//当前账户修改
				
				userMessage2.setUser_balance(moneyDouble);
				//修改用户余额
				UserLinkBank.UpdateUsermessageBalance(userMessage2);
				//添加转账记录
				//获取当前的时间戳
	            Date date = new Date(System.currentTimeMillis());
	            //新建一条转账记录
	           Record record =new Record(userMessage2.getUser_cardnumberString(),userMessage2.getUser_cardnumberString(),
	           	"无",moneyDouble1,"转账",date);
	            //将此条取款记录添加到record表中
	            RecordLinkBank.addRecord(record);
	            
	            
	            
	            //目标账户的修改
	            
	            userMessage3.setUser_balance(targetmoneyDouble);
				//修改用户余额
				UserLinkBank.UpdateUsermessageBalance(userMessage3);
				//添加转账记录
				//获取当前的时间戳
	            Date date1 = new Date(System.currentTimeMillis());
	            //新建一条转账记录
	           Record record1 =new Record(userMessage3.getUser_cardnumberString(),userMessage3.getUser_cardnumberString(),
	           	"无",targetmoneyDouble1,"收款",date1);
	            //将此条取款记录添加到record表中
	            RecordLinkBank.addRecord(record1);
	            
	            
	            
	            JOptionPane.showMessageDialog(null,"转账成功");
	            //关闭当前窗口
				try {
					this.dispose();
					new MainFrame(userMessage2).setVisible(true);
				} catch (Exception e1) {
					e1.printStackTrace();
				}
			}
		}else if ("".equals(money)||"".equals(cardpasswordString)||"".equals(target_accountString)) {
			System.out.println("转账金额或者密码或者目标账户不能为空");
			JOptionPane.showMessageDialog(null,"转账金额或者密码或者目标账户不能为空!");
		}
		else {
			 JOptionPane.showMessageDialog(null,"转账金额或者密码输入有误!");
		}
	}
}

 (13)VerifyLogin.java

package View;

import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Color;
import javax.swing.border.LineBorder;

import Connection.UserLinkBank;
import Tables.UserMessage;

import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.SwingConstants;
import java.awt.Font;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.Toolkit;
import javax.swing.JPasswordField;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.awt.event.ActionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class VerifyLogin extends JFrame {
	/**
	 * 验证登录界面
	 */
	private static final long serialVersionUID = 1L;
	private JTextField textField;
	private JTextField textField_2;
	private JTextField textField_3;
	private JPasswordField passwordField;


	/**
	 * Create the frame.
	 * @param list 
	 */
	public VerifyLogin(final ArrayList<UserMessage> list) {
		setFont(new Font("Dialog", Font.PLAIN, 16));
		setIconImage(Toolkit.getDefaultToolkit().getImage("E:\\Java\\MessageSystem\\src\\image\\background.jpg"));
		setTitle("验证登录");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 615, 543);
		JPanel contentPane = new JPanel();
		contentPane.setBackground(new Color(128, 255, 255));
		contentPane.setBorder(new LineBorder(new Color(0, 0, 0)));
		contentPane.setForeground(new Color(0, 255, 255));

		setContentPane(contentPane);
		contentPane.setLayout(null);
		//登录按钮
		final JButton btnNewButton = new JButton("登录");
		
		btnNewButton.setBounds(153, 398, 93, 35);
		contentPane.add(btnNewButton);
		
		JLabel lblNewLabel_1 = new JLabel("银行卡号");
		lblNewLabel_1.setHorizontalAlignment(SwingConstants.LEFT);
		lblNewLabel_1.setBounds(139, 115, 90, 35);
		contentPane.add(lblNewLabel_1);
		
		JLabel lblNewLabel_1_1 = new JLabel("支付密码");
		lblNewLabel_1_1.setHorizontalAlignment(SwingConstants.LEFT);
		lblNewLabel_1_1.setBounds(139, 179, 90, 35);
		contentPane.add(lblNewLabel_1_1);
		
		JLabel lblNewLabel_1_2 = new JLabel("手机号");
		lblNewLabel_1_2.setBackground(new Color(240, 240, 240));
		lblNewLabel_1_2.setHorizontalAlignment(SwingConstants.LEFT);
		lblNewLabel_1_2.setBounds(139, 254, 90, 35);
		contentPane.add(lblNewLabel_1_2);
		
		JLabel lblNewLabel_1_3 = new JLabel("验证登录");
		lblNewLabel_1_3.setFont(new Font("华文细黑", Font.PLAIN, 21));
		lblNewLabel_1_3.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_1_3.setBounds(197, 10, 176, 102);
		contentPane.add(lblNewLabel_1_3);
		
		JLabel lblNewLabel_1_4 = new JLabel("验证码");
		lblNewLabel_1_4.setHorizontalAlignment(SwingConstants.LEFT);
		lblNewLabel_1_4.setBounds(139, 324, 90, 35);
		contentPane.add(lblNewLabel_1_4);
		
		textField = new JTextField();
		textField.addKeyListener(new KeyAdapter() {
			@Override
			public void keyPressed(KeyEvent e) {
				 if (e.getKeyCode() == KeyEvent.VK_ENTER) {
			            btnNewButton.doClick();
			      }
			}
		});
		textField.setForeground(new Color(0, 0, 0));
		textField.setBounds(234, 122, 156, 21);
		contentPane.add(textField);
		textField.setColumns(10);
		
		textField_2 = new JTextField();
		textField_2.addKeyListener(new KeyAdapter() {
			@Override
			public void keyPressed(KeyEvent e) {
				 if (e.getKeyCode() == KeyEvent.VK_ENTER) {
			            btnNewButton.doClick();
			        }
			}
		});
		textField_2.setColumns(10);
		textField_2.setBounds(234, 254, 156, 21);
		contentPane.add(textField_2);
		
		textField_3 = new JTextField();
		textField_3.addKeyListener(new KeyAdapter() {
			@Override
			public void keyPressed(KeyEvent e) {
				 if (e.getKeyCode() == KeyEvent.VK_ENTER) {
			            btnNewButton.doClick();
			      }
			}
		});
		textField_3.setColumns(10);
		textField_3.setBounds(234, 331, 156, 21);
		contentPane.add(textField_3);
		
		
		
		JButton btnNewButton_1 = new JButton("help");
		btnNewButton_1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				HelpMethod();
			}
		});
		btnNewButton_1.setBounds(352, 398, 93, 33);
		contentPane.add(btnNewButton_1);
		
		passwordField = new JPasswordField();
		passwordField.addKeyListener(new KeyAdapter() {
			@Override
			public void keyPressed(KeyEvent e) {
				 if (e.getKeyCode() == KeyEvent.VK_ENTER) {
			            btnNewButton.doClick();
			     }
			}
		});
		passwordField.setBounds(234, 186, 156, 21);
		contentPane.add(passwordField);
		//图形验证码面板1
		JPanel panel = new JPanel();
		panel.setBounds(421, 322, 144, 35);
		contentPane.add(panel);
		
		//图形验证码面板2 2在上面
		GraphicCaptchaPanel panel_3 = new GraphicCaptchaPanel();
		panel_3.setBounds(0, 0, 144, 46);
		// 获取生成的图形验证码字符串
		final String graphicCaptchaString1= panel_3.getgraphicCaptchaString().trim();
		final String graphicCaptchaString=graphicCaptchaString1.replace(" ", "");
		// 打印图形验证码字符串
		System.out.println("生成的图形验证码: " + graphicCaptchaString);
		panel.setLayout(null);
		
		panel.add(panel_3);
		
		
		//窗体居中类
		 // 获取屏幕的宽度和高度
	     int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;
	     int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;

	     // 计算窗口的坐标位置
	     int x = (screenWidth - this.getWidth()) / 2;
	     int y = (screenHeight - this.getHeight()) / 2;

	     // 设置窗口的坐标位置
	     this.setLocation(x, y);
	   //登陆绑定监听器
			btnNewButton.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					try {
						//获取银行卡号
						String usercardnameString=textField.getText().trim();
						//获取银行卡密码
						String cardpasswordString=new String(passwordField.getPassword());
						//获取手机号
						String phonenumberString=textField_2.getText().trim();
//						//获取验证码
						String captchaString=textField_3.getText().trim();
						
						//判断用户名密码是否输入正确的方法
						JudgeVarifyLogicinMethod(usercardnameString,cardpasswordString,phonenumberString,list,captchaString,graphicCaptchaString);
						
					} catch (Exception e1) {
						e1.printStackTrace();
					}	
					
				} 
			});
	}


	/**
	 * help的监听器方法
	 */
	protected void HelpMethod() {
		// TODO Auto-generated method stub
		System.out.println("请携带相关证件到银行办理!哈哈哈");
		JOptionPane.showMessageDialog(null,"请携带相关证件到银行办理!哈哈哈!");
		JOptionPane.showMessageDialog(null,"程序还在完善中,Thank you for your understanding!哈哈哈!");
	}


	protected void JudgeVarifyLogicinMethod(String usercardnameString, String cardpasswordString,
			String phonenumberString, ArrayList<UserMessage> list, String captchaString, String graphicCaptchaString) {
		// TODO Auto-generated method stub
		boolean result=UserLinkBank.userMessagelQuery(usercardnameString,cardpasswordString,
				phonenumberString);
		if ("".equals(usercardnameString)||"".equals(cardpasswordString)||"".equals(phonenumberString)) {
			System.out.println("银行卡号或者银行卡密码或者手机号不能为空");
			JOptionPane.showMessageDialog(null,"银行卡号或者银行卡密码或者手机号不能为空!");
		}else if (captchaString.equals("")) {
			System.out.println("图形验证码为空");
			JOptionPane.showMessageDialog(null,"图形验证码不能为空!");
		}else if (graphicCaptchaString.equalsIgnoreCase(captchaString)==false) {
			System.out.println("图形验证码输入有误");
			JOptionPane.showMessageDialog(null,"图形验证码输入有误!");
		}
		else if (result==false){
			System.out.println("银行卡号或者银行卡密码或者手机号输入有误!");
			JOptionPane.showMessageDialog(null,"银行卡号或者银行卡密码或者手机号输入有误!");
		}else if(result==true) {
			JOptionPane.showMessageDialog(null,"验证登录成功");
			UserMessage userMessage=new UserMessage();
			for (int i = 0; i < list.size(); i++) {
				if (list.get(i).getUser_cardnumberString().equals(usercardnameString)&&
					list.get(i).getUser_cardpasswordString().equals(cardpasswordString)&&
					list.get(i).getUser_phonenumberString().equals(phonenumberString)) {
					userMessage=list.get(i);
				}
			}
			try {
				this.dispose();
				MainFrame frame = new MainFrame(userMessage);
				frame.setVisible(true);
			} catch (Exception e1) {
				e1.printStackTrace();
			}
		}
	}
}

 (14)WithdrawalFrame.java

package View;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import Connection.RecordLinkBank;
import Connection.UserLinkBank;
import Tables.Record;
import Tables.UserMessage;

import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.SwingConstants;
import java.awt.Color;
import java.awt.Font;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import javax.swing.JButton;
import java.awt.Toolkit;
import java.awt.Rectangle;
import java.awt.event.ActionListener;
import java.sql.Date;
import java.awt.event.ActionEvent;

/**
 * 
 */
/**
 * 
 */
public class WithdrawalFrame extends JFrame {

	/**
	 * 取款界面
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JTextField textField;
	private JPasswordField passwordField;


	/**
	 * Create the frame.
	 * @param userMessage 
	 */
	public WithdrawalFrame(final UserMessage userMessage) {
		setIconImage(Toolkit.getDefaultToolkit().getImage("E:\\Java\\MessageSystem\\src\\image\\bank.jpg"));
		setTitle("取款");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 692, 532);
		contentPane = new JPanel();
		contentPane.setBorder(null);

		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblNewLabel = new JLabel("取款");
		lblNewLabel.setFont(new Font("宋体", Font.PLAIN, 20));
		lblNewLabel.setForeground(new Color(0, 128, 255));
		lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel.setBounds(257, 29, 135, 79);
		contentPane.add(lblNewLabel);
		
		JLabel lblNewLabel_1 = new JLabel("取款金额");
		lblNewLabel_1.setFont(new Font("宋体", Font.BOLD | Font.ITALIC, 16));
		lblNewLabel_1.setForeground(new Color(0, 128, 255));
		lblNewLabel_1.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_1.setBounds(179, 130, 135, 51);
		contentPane.add(lblNewLabel_1);
		
		JLabel lblNewLabel_1_1 = new JLabel("支付密码");
		lblNewLabel_1_1.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_1_1.setForeground(new Color(0, 128, 255));
		lblNewLabel_1_1.setFont(new Font("宋体", Font.BOLD | Font.ITALIC, 16));
		lblNewLabel_1_1.setBounds(179, 220, 135, 51);
		contentPane.add(lblNewLabel_1_1);
		
		textField = new JTextField();
		textField.setBounds(325, 146, 111, 21);
		contentPane.add(textField);
		textField.setColumns(10);
		
		passwordField = new JPasswordField();
		passwordField.setBounds(325, 236, 111, 21);
		contentPane.add(passwordField);
		
		JButton btnNewButton = new JButton("取消");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				CancelMethod(userMessage);
			}
		});
		btnNewButton.setBackground(new Color(255, 255, 255));
		btnNewButton.setForeground(new Color(0, 128, 255));
		btnNewButton.setBounds(147, 332, 111, 40);
		contentPane.add(btnNewButton);
		
		JButton btnNewButton_1 = new JButton("确定");
		//为取款“确定”按钮加装监听事件
		btnNewButton_1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String money=textField.getText().trim();
				String cardpasswordString=new String(passwordField.getPassword());
				//判断是否成功取款
				JudgeWithdrawMethod(money,cardpasswordString,userMessage);
			}
		});
		btnNewButton_1.setBackground(new Color(255, 255, 255));
		btnNewButton_1.setForeground(new Color(0, 128, 255));
		btnNewButton_1.setBounds(415, 332, 111, 40);
		contentPane.add(btnNewButton_1);
		
		//窗体居中类
		 // 获取屏幕的宽度和高度
	     int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;
	     int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;

	     // 计算窗口的坐标位置
	     int x = (screenWidth - this.getWidth()) / 2;
	     int y = (screenHeight - this.getHeight()) / 2;

	     // 设置窗口的坐标位置
	     this.setLocation(x, y);
	}


	/**
	 * 取消按钮绑定的监听里面的方法
	 * @param userMessage 
	 */
	protected void CancelMethod(UserMessage userMessage) {
		// TODO Auto-generated method stub
		this.dispose();
		new MainFrame(userMessage).setVisible(true);
	}


	protected void JudgeWithdrawMethod(String money, String cardpasswordString, UserMessage userMessage2) {
		// TODO Auto-generated method stub
		if(userMessage2.getUser_cardpasswordString().equals(cardpasswordString)&&"".equals(money)!=true) {
			//用于取款后,余额的值
			Double moneyDouble=Double.parseDouble(money);
			//取款金额
			Double moneyDouble1=Double.parseDouble(money);
			//取款后的余额
			moneyDouble=userMessage2.getUser_balance()-moneyDouble;
			if (moneyDouble<0) {
				 JOptionPane.showMessageDialog(null,"您的余额不足!");
			}
			else {
				System.out.println("取款成功");
				userMessage2.setUser_balance(moneyDouble);
				//修改用户余额
				UserLinkBank.UpdateUsermessageBalance(userMessage2);
				//添加存款记录
				//获取当前的时间戳
	            Date date = new Date(System.currentTimeMillis());
	            //新建一条取款记录
	           Record record =new Record(userMessage2.getUser_cardnumberString(),userMessage2.getUser_cardnumberString(),
	           	"无",moneyDouble1,"取款",date);
	            //将此条取款记录添加到record表中
	            RecordLinkBank.addRecord(record);
	            JOptionPane.showMessageDialog(null,"取款成功");
	            //关闭当前窗口
				try {
					new MainFrame(userMessage2).setVisible(true);;
					this.dispose();
				} catch (Exception e1) {
					e1.printStackTrace();
				}
			}
		}else if ("".equals(money)||"".equals(cardpasswordString)) {
			System.out.println("取款金额或者密码不能为空");
			JOptionPane.showMessageDialog(null,"取款金额或者密码不能为空!");
		}
		else {
			 JOptionPane.showMessageDialog(null,"取款金额或者密码输入有误!");
		}
	}
}

 

 六、总结

1.总体

总体来说,小窗口的界面看上去还可以,较为美观。但是由于采用绝对布局,放大窗口,文字不会放大。

同时,功能还不够完善,如在显示用户信息的界面加入修改按钮,可能会更好,缺少挂失功能等。

基本不会出现什么bug,但是作为银行来说缺少数据的加密和解密。

数据库存入的数据是通过界面来进行控制的,并没有对数据库进行限制。

2.问题及解决方案

Bank System Summary

  1. 总体设计

总体合计非常重要,分析清楚用户的需求,建立模型,否则中途添加,费时费力,容易混乱。比如用户表除了一般的账号密码信息以外,还要有余额信息

  1. 边写边进行调试,及时发现问题
  2. 前后端要关联起来
  3. java char[]转换成string方法

使用toString()方法将会得到字符数组对象的哈希码的字符串表示,而不是数组中的内容

正确的做法是使用String.valueOf(chars1)或者new String(chars1)来将字符数组转换为字符串

char[] chars1 = new char[]{'a', 'b', 'c', '1'};

char[] chars2 = new char[]{'a', 'b', 'c', '1'};

String string1 = new String(chars1); // 或者 new String(chars1)

String string2 = String.valueOf(chars2); // 或者 new String(chars2)

boolean result = string1.equals(string2);

System.out.println(result);

在比较前后两次输入密码是否一致的过程中非常重要

  1. 获取继承的重写方法

如果要获取重写方法中的某个数据,要将数据定义为成员变量,并将某些与成员相关的操作放在构造方法中,确保调用的时候没有问题。

如图形验证码 随机生成的验证码要放在图形验证码面板的构造方法中,确保调用的时候不是空值

  1. 登录

登陆的时候,用户登门名可以重复,验证登录的密码是不可重复的,如何实现登录账户唯一不出现错误的登陆到马云账户呢?

在用户登录界面建立一个查询,根据用户名和密码查询出所有的用户,返回list

在验证账户登录时候在list当中进行查找,匹配成功进入主界面

  1. 用户信息回显

在验证登录成功后进入主界面,并且将当前用户信息userMessage作为一个对象传递下去,以便后续的增删改查

  1. 图形验证码比较

(1).生成的验证码会有空格,而输入的不可能有,因而要去掉首位空格,以及验证码的所有空格

Java中去除字符串中所有空格的常用的几种方法:

1、String.trim()

      trim()是去掉首尾空格

2、str.replace(" ", ""); 去掉所有空格,包括首尾、中间

      复制代码 代码如下:

      String str = " hell o ";

      String str2 = str.replaceAll(" ", "");

      System.out.println(str2);

3、str.replaceAll(" +",""); 去掉所有空格

4、str = str.replaceAll("\\s*", "");可以替换大部分空白字符, 不限于空格

      \s 可以匹配空格、制表符、换页符等空白字符的其中任意一个

(2).验证码忽略大小写

在比较输入框获取的字符串和生成的验证码字符串,可以使用ignorecase的String比较方法

  • 21
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QHAY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值