基于java+mysql的swing+mysql银行管理系统+文档java基础gui(java+gui)

基于java+mysql的swing+mysql银行管理系统+文档java基础gui(java+gui)

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

基于java+mysql的Swing+MySQL银行管理系统+文档java基础gui(java+gui)

功能介绍:

登录、打印、取款、改密、转账、查询、挂失、存款、退卡


/*

 * 挂失业务
 */
public class ReportLost extends JFrame implements DocumentListener, ActionListener {
    private JLabel chineseNameLabel, cardNumberLabel, accountNameLabel; //定义中文名标签,卡号标签,账户标签
	private JTextField chineseNameTextField, cardNumberTextField, accountNameTextField; //定义中文名文本域,卡号文本域,账户文本域
	private JButton confirmButton, resetButton, returnButton; //定义确定按钮, 重置按钮,返回按钮
	private JTextArea displayTextArea; //显示信息的文本域区
	private JPanel chineseNamePanel, cardNumberPanel, accountNamePanel, buttonPanel;//中文名面板,卡号面板,账户面板,按钮面板
	private String chineseNameTemp, cardNumberTemp, accountNameTemp;//中文名缓存,卡号缓存,账户缓存
	private Calendar calendar; //用于获取当前的时间
	private SimpleDateFormat simpleDateFormat; //用于日期格式化 
	private Dao dao = new Dao();
	
	//有参构造
	public ReportLost(Account user) {
		        //设置窗口
				this.setTitle("挂失");
		    	this.setVisible(true);
		    	this.setSize(310, 400);
		    	this.setLocationRelativeTo(null);//在屏幕中间居中显示
		    	this.setLayout(null);//设置空布局
		        
		    	//设置更新后的Account对象
		    	dao.setTheAccount(user);//使得后面调用Account对象的setter方法和getter方法,都是最新的值
		    	
		    	//初始化标签
		    	chineseNameLabel = new JLabel("姓名:");
		    	cardNumberLabel = new JLabel("卡号:");
		    	accountNameLabel = new JLabel("账户:");
				
		    	//初始化文本域
		    	chineseNameTextField = new JTextField(20);
		    	cardNumberTextField = new JTextField(20);
		        accountNameTextField= new JTextField(20);
				displayTextArea = new JTextArea(8,20); //设置成6行20列
		}
		
		
		//文本框的监听事件,转账文本框监听回车键,则执行确定按钮的按钮事件
		 class MyFieldEvent extends KeyAdapter{ //KeyAdapter为KeyListener的适配器,作用是不需要实现接口里面的全部方法
			 public void keyPressed(KeyEvent e) {
				 if(e.getSource() == withdrawTextField) {
					 if(e.getKeyCode() == 10) {//10代表回车键
						 confirmButton.doClick(); //调用确定按钮的单击事件
					 }
				 }
			 }
		}
	
	//按钮事件处理的方法
			public void actionPerformed(ActionEvent e) {
				if( e.getSource() == returnButton ) {
					this.setVisible(false);
				}else if(e.getSource() == resetButton) {
					withdrawTextField.setText(null);//清空文本域
					dao.setTheAccount(Login.getUser());//使得后面调用Account对象的setter方法和getter方法,都是最新的值
					balanceTextField.setText(Login.getUser().getBalance());//显示更新数据后的余额
					System.out.println("文本域已清空");//测试代码
				}else{
//					balanceTextField.setText();//显示存款后的余额
//					depositTextField.setText(depositTemp);//设置文本
					System.out.println(withdrawTextField.getText());//测试代码
					this.executeModify(Login.getUser());//执行取款
					dao.setTheAccount(Login.getUser());//使得后面调用Account对象的setter方法和getter方法,都是最新的值
				    System.out.println("操作完成!");//测试代码
				    
				}
			}
	
	//在本类中定义私有方法——修改取款的方法
			private void executeModify(Account user) {
				//数据库纪录更新操作sql语句
				String sql = "update account set Balance = '" + (Float.parseFloat(user.getBalance()) - Float.parseFloat(withdrawTemp)) + "' where AccountName = '" + user.getAccountName() +"'";			  
			    if( (Float.parseFloat(user.getBalance()) <= Float.parseFloat(withdrawTemp) )
			    		|| (Float.parseFloat(withdrawTemp)%100 != 0)
			    		|| (Float.parseFloat(withdrawTemp) > 5000)) {//如果余额小于等于0,则取款失败
			    	JOptionPane.showMessageDialog(null, "余额不足或取款金额不为100的倍数或取款的金额大于5000,,取款失败!请重试!","提示", JOptionPane.INFORMATION_MESSAGE);
			    	System.out.println("余额不足,取款失败!请重试。");
				}else {
	                inquiryButton, depositMoneyButton, withdrawMoneyButton,
	                transferMoneyButton, reportTheLostCardButton, manageButton, exitButton;
	                //创建了7个业务按钮,改密,查询,存款,取款,
	                //转账,挂失,管理,退卡
	private JLabel titleLabel, founderLabel; //创建2个标签,题目,创始人
	
	
	
	
	public ManagerMainFrame() {
		//设置窗口
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setSize(450, 500);
		this.setTitle("银行管理系统");
		this.setLocation(400, 200);
		this.setLocationRelativeTo(null);//在屏幕中间居中显示
		this.setLayout(null);//不采用布局
		
		
		
		//初始化各个业务按钮
		printButton = new JButton("打印");
		modifyThePasswordButton = new JButton("改密");
		inquiryButton = new JButton("查询");
		depositMoneyButton = new JButton("存款");
		withdrawMoneyButton = new JButton("取款");
		transferMoneyButton = new JButton("转账");
		reportTheLostCardButton = new JButton("挂失");
		manageButton = new JButton("管理");
		exitButton = new JButton("退卡");
		
		//按钮事件
		printButton.addActionListener(this);
		modifyThePasswordButton.addActionListener(this);
		inquiryButton.addActionListener(this);
		depositMoneyButton.addActionListener(this);
		withdrawMoneyButton.addActionListener(this);
		transferMoneyButton.addActionListener(this);
		reportTheLostCardButton.addActionListener(this);
		manageButton.addActionListener(this);
		returnButton = new JButton("返回");
		
		//添加按钮事件
		confirmButton.addActionListener(this);
		resetButton.addActionListener(this);
		returnButton.addActionListener(this);
		
		//初始化面板
		balancePanel = new JPanel();
		withdrawPanel = new JPanel();
		buttonPanel = new JPanel();
		
		
		//向面板添加组件
		balancePanel.add(balanceLabel);
		balancePanel.add(balanceTextField);
		withdrawPanel.add(withdrawLabel);
		withdrawPanel.add(withdrawTextField);
		buttonPanel.add(confirmButton);
		buttonPanel.add(resetButton);
		buttonPanel.add(returnButton);
		
		//设置面板的边界
		balancePanel.setBounds(-10, 30, 300, 30);   
		withdrawPanel.setBounds(-10, 70, 300, 30);
		buttonPanel.setBounds(-10, 110, 300, 40);

		//向窗口添加面板
		this.add(balancePanel);
		this.add(withdrawPanel);
		this.add(buttonPanel);
		
	}
	
	  //文本域事件的处理方法
		public void changedUpdate(DocumentEvent e) {
			withdrawTemp = withdrawTextField.getText();
			System.out.println(withdrawTemp);//测试代码
		}
		public void insertUpdate(DocumentEvent e) {
			withdrawTemp = withdrawTextField.getText();

/*

 * 管理员界面的修改信息窗口
 */
public class AddInformation extends JFrame implements ActionListener, DocumentListener{
         private JLabel accountNameLabel, accountPasswordLabel, chineseNameLabel, cardNumberLabel, balanceLabel, managerLabel;//定义数据库中各表头的标签
         private JTextField accountNameTextField, accountPasswordTextField, chineseNameTextField, cardNumberTextField, balanceTextField, managerTextField;//定义数据库中各表头的文本域
         private JButton confirmButton, returnButton;//确认按钮, 返回按钮
         private JPanel accountNamePanel, accountPasswordPanel, chineseNamePanel, cardNumberPanel, balancePanel, managerPanel, buttonPanel;//定义数据库中各表头的面板
         private String accountNameTemp, accountPasswordTemp, chineseNameTemp, cardNumberTemp, balanceTemp, managerTemp;//缓存
         private int selectedRowTemp;//存起构造方法中的形参
         private JTable tableTemp;//存起构造方法中的形参
         private Dao dao = new Dao(); //实例化数据库操作类
         
         public AddInformation(Account user, JTable table) {
        	 tableTemp = table;
//        	 selectedRowTemp = selectedRow;
//        	 System.out.println("选中的行的用户为" + table.getValueAt(selectedRowTemp, 2));//测试代码
        	 
        	 //设置窗体
        	 this.setTitle("管理员添加信息");
         	 this.setVisible(true);
         	 this.setSize(400, 400);
         	 this.setLocationRelativeTo(null);//在屏幕中间居中显示
         	 this.setLayout(null);//设置空布局
         	 
         	//设置更新后的Account对象
         	dao.setTheAccount(user);//使得后面调用Account对象的setter方法和getter方法,都是最新的值
         	
         	//初始化标签
         	accountNameLabel = new JLabel("用       户:");
         	accountPasswordLabel = new JLabel("密       码:");
         	chineseNameLabel = new JLabel("中 文 名:");
         	cardNumberLabel = new JLabel("卡       号:");
         	balanceLabel = new JLabel("余       额:");
         	managerLabel = new JLabel("是否管理员(填yes或no):");
        	
         	//初始化文本域
         	accountNameTextField = new JTextField(16);
		
		
		//向面板添加组件
		balancePanel.add(balanceLabel);
		balancePanel.add(balanceTextField);
		transferedAccountNamePanel.add(transferedAccountNameLabel);
		transferedAccountNamePanel.add(transferedAccountNameTextField);
		transferPanel.add(transferLabel);
		transferPanel.add(transferTextField);
		buttonPanel.add(confirmButton);
		buttonPanel.add(resetButton);
		buttonPanel.add(returnButton);
		
		//设置面板的边界
		balancePanel.setBounds(-10, 30, 300, 30);   
		transferedAccountNamePanel.setBounds(2, 70, 300, 30);
		transferPanel.setBounds(-10, 110, 300, 40);
		buttonPanel.setBounds(-10, 160, 300, 40);

		//向窗口添加面板
		this.add(balancePanel);
		this.add(transferedAccountNamePanel);
		this.add(transferPanel);
		this.add(buttonPanel);
		
	}
	
	  //文本域事件的处理方法
		public void changedUpdate(DocumentEvent e) {
			transferedAccountNameTemp = transferedAccountNameTextField.getText();
			transferTemp = transferTextField.getText();
			System.out.println(transferedAccountNameTemp + transferTemp);//测试代码
		}
		public void insertUpdate(DocumentEvent e) {
			transferedAccountNameTemp = transferedAccountNameTextField.getText();
			transferTemp = transferTextField.getText();
			System.out.println(transferedAccountNameTemp + transferTemp);//测试代码
		}
		public void removeUpdate(DocumentEvent e) {
			transferedAccountNameTemp = transferedAccountNameTextField.getText();
			transferTemp = transferTextField.getText();
			System.out.println(transferedAccountNameTemp + transferTemp);//测试代码
		}
    	//初始化按钮
		confirmButton = new JButton("确定");
		resetButton = new JButton("重置");
		returnButton = new JButton("返回");
		
		//添加按钮事件
		confirmButton.addActionListener(this);
		resetButton.addActionListener(this);
		returnButton.addActionListener(this);
		
		//初始化面板
		balancePanel = new JPanel();
        transferedAccountNamePanel = new JPanel();
        transferPanel = new JPanel();
		buttonPanel = new JPanel();
		
		
		//向面板添加组件
		balancePanel.add(balanceLabel);
		balancePanel.add(balanceTextField);
		transferedAccountNamePanel.add(transferedAccountNameLabel);
		transferedAccountNamePanel.add(transferedAccountNameTextField);
		transferPanel.add(transferLabel);
		transferPanel.add(transferTextField);
		buttonPanel.add(confirmButton);
		buttonPanel.add(resetButton);
		buttonPanel.add(returnButton);
		
		//设置面板的边界
		balancePanel.setBounds(-10, 30, 300, 30);   
		transferedAccountNamePanel.setBounds(2, 70, 300, 30);
		transferPanel.setBounds(-10, 110, 300, 40);
		buttonPanel.setBounds(-10, 160, 300, 40);

		//向窗口添加面板
		this.add(balancePanel);
		this.add(transferedAccountNamePanel);
		this.add(transferPanel);
		this.add(buttonPanel);
		
	}
	
	  //文本域事件的处理方法
		public void changedUpdate(DocumentEvent e) {
			transferedAccountNameTemp = transferedAccountNameTextField.getText();
			transferTemp = transferTextField.getText();
          
          
          
          
          
          
          
          
          
          

}
package com.zw.View;

/*

 * 管理员级别的菜单类,继承主窗体,实现按钮事件
 */
public class ManagerMainFrame extends JFrame implements ActionListener{ 
	private JButton printButton, modifyThePasswordButton, 
	                inquiryButton, depositMoneyButton, withdrawMoneyButton,
	                transferMoneyButton, reportTheLostCardButton, manageButton, exitButton;
	                //创建了7个业务按钮,改密,查询,存款,取款,
	                //转账,挂失,管理,退卡
	private JLabel titleLabel, founderLabel; //创建2个标签,题目,创始人
	
	
	
	  }
	  
	  //仅通过账户读取用户(用于各种业务的调用,来获取Account类的对象
	  public Account getUser(String name) {
		  Account user = new Account();
		  ResultSet rs = findForResultSet(" select * from account where AccountName = '"+name+"'");//查询AccountName字段值为name的值的记录
	      try {
			if(rs.next()) {//如果查询到
				 user.setAccountName(name); //匹配的用户名
				 user.setAccountPassword(rs.getString("AccountPassword"));//对应的密码
				 user.setChineseName(rs.getString("ChineseName"));//设置中文名
				 user.setCardNumber(rs.getString("CardNumber"));//设置卡号
				 user.setBalance(rs.getString("Balance"));//设置余额
				 user.setManager(rs.getString("Manager"));//设置是否是管理员
			  }else {//如果查询不到
				  System.out.println("无此账户!");
				  user.setAccountName(null);
				  user.setAccountPassword(null);
				  user.setBalance(null);
				  user.setCardNumber(null);
				  user.setChineseName(null);
				  user.setManager(null);
			  }
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		  return user;
	  }
	
	//findForResultSet方法,获得一个结果集
	  public ResultSet findForResultSet(String sql) {
		  ResultSet rs = null;
		  try {
			  Statement stmt = ConnectDatabase.getStatement(); //获取statement对象
			  rs = stmt.executeQuery(sql);//执行查询
		  }catch(Exception e) {
			  e.printStackTrace();
		  }
		  return rs;//返回结果集
	  }
		userPanel.add(userLabel);
		userPanel.add(userTextField);
		passwordPanel.add(passwordLabel);
		passwordPanel.add(passwordField);
		buttonPanel.add(loginButton);
		buttonPanel.add(registerButton);
		buttonPanel.add(forgetPasswordButton);
		buttonPanel.add(exitButton);
		
		//设置布局方式
		container.setLayout(new GridLayout(4,1,0,0));
		
		//添加面板
		container.add(titlePanel);
		container.add(userPanel);
		container.add(passwordPanel);
		container.add(buttonPanel);
		
//		//测试代码(功能是获取正在登录的用户
//		String name = userTextField.getText().trim(); //获得填写的用户名
//		String password = new String(passwordField.getPassword());//获得填写的密码
//		user = dao.getUser(name, password); //获取登录窗口输进去的用户是否存在数据库
//	    System.out.println(user.getAccountName());
//	    System.out.println(user.getAccountPassword());
	
	}
      
      //按钮通用事件类
	 class MyButtonEvent implements ActionListener{
		 public void actionPerformed(ActionEvent e) {
			 if(e.getSource() == loginButton) { //如果事件源是登录按钮
				String name = userTextField.getText().trim(); //获得填写的用户名
				String password = new String(passwordField.getPassword());//获得填写的密码
				if( name.length() == 0 || password.length() == 0) { //如果用户名和密码都为空
					JOptionPane.showMessageDialog(Login.this, "用户名或密码不能为空,请你输入用户名和密码!");
					return;
				}
				user = dao.getUser(name, password); //获取登录窗口输进去的用户是否存在数据库
				System.out.println(user.getAccountName());
			    System.out.println(user.getAccountPassword());
				if( user.getAccountName() == null || user.getAccountPassword() == null ) {//输入的密码错误
					passwordField.setText(null); //将密码框清空
					JOptionPane.showMessageDialog(Login.this, "用户名或密码错误,请您重新输入!"); //显示错误信息的提示框
					return;
				}
				frame.setVisible(false); //将登录窗口设置为不显示
				if(user.getManager().equals("yes")) {
					new ManagerMainFrame(); //实例化管理员主界面窗口
        	//向按钮添加事件
        	returnButton.addActionListener(this);
        	
        	//初始化面板
        	resultNamePanel = new JPanel();
        	cardNumberPanel = new JPanel();
        	balancePanel = new JPanel();
        	returnButtonPanel = new JPanel();
        	
        	//向面板添加组件
        	resultNamePanel.add(resultNameLabel);
        	resultNamePanel.add(resultNameTextField);
        	cardNumberPanel.add(cardNumberLabel);
        	cardNumberPanel.add(cardNumberTextField);
        	balancePanel.add(balanceLabel);
        	balancePanel.add(balanceTextField);
        	returnButtonPanel.add(returnButton);
        	
        	//设置面板的边界
        	resultNamePanel.setBounds(-10, 30, 300, 50);   
        	cardNumberPanel.setBounds(-10, 100, 300, 50);
        	balancePanel.setBounds(-10, 170, 300, 50);
            returnButtonPanel.setBounds(-10, 240, 300, 50);
            
            //向窗口添加面板
        	this.add(resultNamePanel);
        	this.add(cardNumberPanel);
        	this.add(balancePanel);
        	this.add(returnButtonPanel);
        	
        	
        }
        
    //按钮事件的处理方法
	public void actionPerformed(ActionEvent e) {
		this.setVisible(false);//设置窗口为不可见
	}
	
}
package com.zw.DAO;

/*

 * 连接数据库类
 */
public class ConnectDatabase {
    private static Connection connection = null;
    private static Statement statement = null;
					balanceTextField.setText(Login.getUser().getBalance());//显示更新数据后的余额
					System.out.println("文本域已清空");//测试代码
				}else{
//					balanceTextField.setText();//显示存款后的余额
//					depositTextField.setText(depositTemp);//设置文本
					System.out.println(withdrawTextField.getText());//测试代码
					this.executeModify(Login.getUser());//执行取款
					dao.setTheAccount(Login.getUser());//使得后面调用Account对象的setter方法和getter方法,都是最新的值
				    System.out.println("操作完成!");//测试代码
				    
				}
			}
	
	//在本类中定义私有方法——修改取款的方法
			private void executeModify(Account user) {
				//数据库纪录更新操作sql语句
				String sql = "update account set Balance = '" + (Float.parseFloat(user.getBalance()) - Float.parseFloat(withdrawTemp)) + "' where AccountName = '" + user.getAccountName() +"'";			  
			    if( (Float.parseFloat(user.getBalance()) <= Float.parseFloat(withdrawTemp) )
			    		|| (Float.parseFloat(withdrawTemp)%100 != 0)
			    		|| (Float.parseFloat(withdrawTemp) > 5000)) {//如果余额小于等于0,则取款失败
			    	JOptionPane.showMessageDialog(null, "余额不足或取款金额不为100的倍数或取款的金额大于5000,,取款失败!请重试!","提示", JOptionPane.INFORMATION_MESSAGE);
			    	System.out.println("余额不足,取款失败!请重试。");
				}else {
					 int  result = dao.update(sql);//Dao类的update函数返回一个整形数,更新数据失败则返回0
					 if( result != 0) {//取款成功
					    	JOptionPane.showMessageDialog(null, "取款成功!已取" + withdrawTemp + "元,目前余额为:" + (Float.parseFloat(user.getBalance()) - Float.parseFloat(withdrawTemp)) + "元","提示", JOptionPane.INFORMATION_MESSAGE);
					    	System.out.println("取款成功!");
					    }else {//取款失败
					    	JOptionPane.showMessageDialog(null, "余额不足,存款失败!请重试。","提示", JOptionPane.INFORMATION_MESSAGE);
					    	System.out.println("余额不足,取款失败!请重试。");
					    }
				}
			   
			}
	
	
	
	
	
	
				this.add(displayTextArea);
	}
	
	  //文本域事件的处理方法
	public void changedUpdate(DocumentEvent e) {
		chineseNameTemp = chineseNameTextField.getText();
		cardNumberTemp = cardNumberTextField.getText();
		accountNameTemp = accountNameTextField.getText();
		System.out.println(chineseNameTemp + cardNumberTemp + accountNameTemp );//测试代码
	}
	public void insertUpdate(DocumentEvent e) {
		chineseNameTemp = chineseNameTextField.getText();
		cardNumberTemp = cardNumberTextField.getText();
		accountNameTemp = accountNameTextField.getText();
		System.out.println(chineseNameTemp + cardNumberTemp + accountNameTemp );//测试代码
	}
	public void removeUpdate(DocumentEvent e) {
		chineseNameTemp = chineseNameTextField.getText();
		cardNumberTemp = cardNumberTextField.getText();
		accountNameTemp = accountNameTextField.getText();
		System.out.println(chineseNameTemp + cardNumberTemp + accountNameTemp );//测试代码
	}
	
	 //文本框的监听事件
	 class MyFieldEvent extends KeyAdapter{
		 public void keyPressed(KeyEvent e) {
			 if(e.getSource() == accountNameTextField) {
				 if(e.getKeyCode() == 10) {//10代表回车键
					 confirmButton.doClick(); //调用确定按钮的单击事件
				 }
			 }
         }
	 }
	 
	//按钮事件处理的方法
		public void actionPerformed(ActionEvent e) {
			if( e.getSource() == returnButton ) {
				this.setVisible(false);
			}else if(e.getSource() == resetButton) {
				chineseNameTextField.setText(null);//清空文本域
				cardNumberTextField.setText(null);
				accountNameTextField.setText(null);
				displayTextArea.setText(null);
				System.out.println("文本域已清空");
			}else{
//				System.out.println( "姓名:" + chineseNameTextField.getText());//测试代码
//				System.out.println( "卡号;" + cardNumberTextField.getText());//测试代码
//				System.out.println( "账户:" + accountNameTextField.getText());//测试代码
				calendar = Calendar.getInstance();//Calendar类不能直接通过构造器获得实例化对象,但可以通过调用Calendar类的静态方法getInstance()来获取实例化对象
				simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd/E"); //实例化日期格式化对象
				//判断输入的信息是否与当前登录的账户信息是否一致
				if( Login.getUser().getChineseName().equals(chineseNameTextField.getText()) && Login.getUser().getCardNumber().equals(cardNumberTextField.getText()) && Login.getUser().getAccountName().equals(accountNameTextField.getText()) ) {
/*

 * 连接数据库类
 */
public class ConnectDatabase {
    private static Connection connection = null;
    private static Statement statement = null;

    //创建连接
    public static void createConnection() {
        // TODO Auto-generated constructor stub
        //初始化各个变量
        String driver = "com.mysql.jdbc.Driver"; //Mysql的驱动包
        String url = "jdbc:mysql://localhost:3306/project?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true&failOverReadOnly=false&allowPublicKeyRetrieval=true&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull"; //url路径
        String user = "root";
        String password = "123456";

        if (connection == null) { //如果connection为空
            try {
                Class.forName(driver); //加载jdbc驱动包
                try { //连接数据库
                    connection = DriverManager.getConnection(url, user, password);
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

    //获得数据库连接对象
    public static Connection getConnection() {
        if (connection == null) {
            createConnection();
        }
        return connection; //返回connection对象
    }

    //关闭数据库连接
    public void closeConnection() {
        if (connection != null) {
            try {

		//向窗口添加面板
		this.add(balancePanel);
		this.add(transferedAccountNamePanel);
		this.add(transferPanel);
		this.add(buttonPanel);
		
	}
	
	  //文本域事件的处理方法
		public void changedUpdate(DocumentEvent e) {
			transferedAccountNameTemp = transferedAccountNameTextField.getText();
			transferTemp = transferTextField.getText();
			System.out.println(transferedAccountNameTemp + transferTemp);//测试代码
		}
		public void insertUpdate(DocumentEvent e) {
			transferedAccountNameTemp = transferedAccountNameTextField.getText();
			transferTemp = transferTextField.getText();
			System.out.println(transferedAccountNameTemp + transferTemp);//测试代码
		}
		public void removeUpdate(DocumentEvent e) {
			transferedAccountNameTemp = transferedAccountNameTextField.getText();
			transferTemp = transferTextField.getText();
			System.out.println(transferedAccountNameTemp + transferTemp);//测试代码
		}
		
		
		//文本框的监听事件,转账文本框监听回车键,则执行确定按钮的按钮事件
		 class MyFieldEvent extends KeyAdapter{ //KeyAdapter为KeyListener的适配器,作用是不需要实现接口里面的全部方法
			 public void keyPressed(KeyEvent e) {
				 if(e.getSource() == transferTextField) {
					 if(e.getKeyCode() == 10) {//10代表回车键
						 confirmButton.doClick(); //调用确定按钮的单击事件
				     }
			     }
		     }
         } 
	
	//按钮事件处理的方法
			public void actionPerformed(ActionEvent e) {
				if( e.getSource() == returnButton ) {
					this.setVisible(false);
				}else if(e.getSource() == resetButton) {
					transferedAccountNameTextField.setText(null);//清空文本域
		modifyThePasswordButton = new JButton("改密");
		inquiryButton = new JButton("查询");
		depositMoneyButton = new JButton("存款");
		withdrawMoneyButton = new JButton("取款");
		transferMoneyButton = new JButton("转账");
		reportTheLostCardButton = new JButton("挂失");
		manageButton = new JButton("管理");
		exitButton = new JButton("退卡");
		
		//按钮事件
		printButton.addActionListener(this);
		modifyThePasswordButton.addActionListener(this);
		inquiryButton.addActionListener(this);
		depositMoneyButton.addActionListener(this);
		withdrawMoneyButton.addActionListener(this);
		transferMoneyButton.addActionListener(this);
		reportTheLostCardButton.addActionListener(this);
		manageButton.addActionListener(this);
		exitButton.addActionListener(this);
		
		//设置按钮的大小
		printButton.setBounds( 0,50,90,60);   
        modifyThePasswordButton.setBounds( 0,150,90,60);
        inquiryButton.setBounds( 0,250,90,60);
        depositMoneyButton.setBounds(0,350,90,60);
        withdrawMoneyButton.setBounds( 354,50,90,60);
        transferMoneyButton.setBounds( 354,150,90,60);
        reportTheLostCardButton.setBounds( 354,250,90,60);
        manageButton.setBounds( 177,50,90,60);
        exitButton.setBounds(354,350,90,60);

		
		//初始化标签
		titleLabel = new JLabel("欢迎使用本银行系统");
		founderLabel = new JLabel("welcome!!!");
		
		//设置标签的位置和大小
        titleLabel.setBounds(110,120,250,50);
        founderLabel.setBounds(150,250,150,50);
		
		//设置标签字体
		titleLabel.setFont(new Font("Dialog", Font.BOLD, 23));
		founderLabel.setFont(new Font("Dialog", Font.BOLD, 20));
		
		//将按钮加入窗体
        	 }
         }

       //在本类中定义私有方法——修改信息的方法
			private void executeModify(Account user, JTable table) {
				//数据库纪录更新操作sql语句
				String sql = "insert into account (AccountName, AccountPassword, ChineseName, CardNumber, Balance, Manager) values ( '" + accountNameTemp + "', '" + accountPasswordTemp + "', '" + chineseNameTemp + "', '" + cardNumberTemp + "', '" + balanceTemp + "', '" + managerTemp + "')";
			    int result = dao.update(sql);//Dao类的update函数返回一个整形数,更新数据失败则返回0
			    if( result != 0) {//添加成功
			    	JOptionPane.showMessageDialog(null, "添加成功!","提示", JOptionPane.INFORMATION_MESSAGE);		   
			    }else {//添加失败
			    	JOptionPane.showMessageDialog(null, "添加失败!请重试。","提示", JOptionPane.INFORMATION_MESSAGE);
			    }
			}

}
package com.zw.Controller;

/*
				//初始化面板
				chineseNamePanel = new JPanel();
				cardNumberPanel = new JPanel();
				accountNamePanel = new JPanel();
				buttonPanel = new JPanel();
				
				//向面板添加组件
				chineseNamePanel.add(chineseNameLabel);
				chineseNamePanel.add(chineseNameTextField);
				cardNumberPanel.add(cardNumberLabel);
				cardNumberPanel.add(cardNumberTextField);
				accountNamePanel.add(accountNameLabel);
				accountNamePanel.add(accountNameTextField);
				buttonPanel.add(confirmButton);
				buttonPanel.add(resetButton);
				buttonPanel.add(returnButton);
				
				//设置面板的边界
				chineseNamePanel.setBounds(-10, 30, 300, 30);   
				cardNumberPanel.setBounds(-10, 70, 300, 30);
				accountNamePanel.setBounds(-10, 110, 300, 30);
				buttonPanel.setBounds(-10, 150, 300, 40);
				displayTextArea.setBounds(0, 220, 300, 100);
				
				//向窗口添加面板
				this.add(chineseNamePanel);
				this.add(cardNumberPanel);
				this.add(accountNamePanel);
				this.add(buttonPanel);
				this.add(displayTextArea);
	}
	
	  //文本域事件的处理方法
	public void changedUpdate(DocumentEvent e) {
		chineseNameTemp = chineseNameTextField.getText();
		cardNumberTemp = cardNumberTextField.getText();
		accountNameTemp = accountNameTextField.getText();
		System.out.println(chineseNameTemp + cardNumberTemp + accountNameTemp );//测试代码
	}
	public void insertUpdate(DocumentEvent e) {
		chineseNameTemp = chineseNameTextField.getText();
		cardNumberTemp = cardNumberTextField.getText();
		accountNameTemp = accountNameTextField.getText();
		System.out.println(chineseNameTemp + cardNumberTemp + accountNameTemp );//测试代码
	}
	
	
	
	
	
	
	
}
package com.zw.Controller;

/*

 * 登录密码界面类
 */
public class Login extends JFrame {
	  private JFrame frame; //主窗体
	  private Container container; //容器
	  private JPanel titlePanel, userPanel, passwordPanel, buttonPanel; //标题面板,密码面板,按钮面板
	  
      private JLabel userLabel, passwordLabel, titleLabel; //密码标签,标题标签
      private JTextField userTextField; //用户文本域S
      private JPasswordField passwordField; //密码文本域
      private JButton loginButton, registerButton, forgetPasswordButton, exitButton; //确认按钮,注册按钮,忘记密码按钮,退出按钮
      private static Account user; //账户实例对象
      private Dao dao = new Dao(); //实例化数据库操作类
      
      public static Account getUser() { //user的get属性方法
    	  return user;
      }
     
      
      
		}else if( e.getActionCommand() == "取款" ) {
			new Withdraw(Login.getUser());
		}else if( e.getActionCommand() == "转账" ) {
			new Transfer(Login.getUser());
		}else if( e.getActionCommand() == "管理" ) {
			new DataTable();
		}else if( e.getActionCommand() == "退卡" ) {
			int isExit = JOptionPane.showConfirmDialog(null, "确定退出?", "提示", JOptionPane.YES_NO_OPTION);
			if( isExit == JOptionPane.YES_OPTION) {
				System.out.println("正在退卡···");
				System.out.println("退卡成功,请及时拔卡!");
				System.exit(0);//正常退出程序
			}
			
		}
	}
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
      
}
package com.zw.View;

    		//设置面板的边界
    		accountNamePanel.setBounds(2, 20, 300, 30);
    		accountPasswordPanel.setBounds(26, 60, 300, 30);
    		chineseNamePanel.setBounds(-30, 100, 300, 30);
    		cardNumberPanel.setBounds(26, 140, 300, 30);
    		balancePanel.setBounds(-29, 190, 300, 30);   
    		managerPanel.setBounds(13, 230, 300, 30);
    		buttonPanel.setBounds(25, 270, 300, 40);

        	
    		//向窗口添加面板
    		this.add(accountNamePanel);
    		this.add(accountPasswordPanel);
    		this.add(chineseNamePanel);
    		this.add(cardNumberPanel);
    		this.add(balancePanel);
    		this.add(managerPanel);
    		this.add(buttonPanel);
         }
         
       //文本框的监听事件,转账文本框监听回车键,则执行确定按钮的按钮事件
		 class MyFieldEvent extends KeyAdapter{ //KeyAdapter为KeyListener的适配器,作用是不需要实现接口里面的全部方法
			 public void keyPressed(KeyEvent e) {
				 if( (e.getSource() == accountNameTextField) || (e.getSource() == accountPasswordTextField) || (e.getSource() ==chineseNameTextField) || (e.getSource() == cardNumberTextField) || (e.getSource() == balanceTextField) || (e.getSource() == managerTextField) ) {
					 if(e.getKeyCode() == 10) {//10代表回车键
						 confirmButton.doClick(); //调用确定按钮的单击事件
					 }
				 }
			 }
		}

         //文本域事件的处理方法
 		public void changedUpdate(DocumentEvent e) {
 			accountNameTemp = accountNameTextField.getText();
 			accountPasswordTemp = accountPasswordTextField.getText();
 			chineseNameTemp = chineseNameTextField.getText();
 			cardNumberTemp = cardNumberTextField.getText();
 			balanceTemp = balanceTextField.getText();
 			managerTemp = managerTextField.getText();

 			System.out.println(accountNameTemp + accountPasswordTemp + chineseNameTemp + cardNumberTemp + balanceTemp + managerTemp);//测试代码
 		}
 		public void insertUpdate(DocumentEvent e) {
 			accountNameTemp = accountNameTextField.getText();
 			accountPasswordTemp = accountPasswordTextField.getText();
 			chineseNameTemp = chineseNameTextField.getText();
 			cardNumberTemp = cardNumberTextField.getText();
 			balanceTemp = balanceTextField.getText();
				resetButton.addActionListener(this);
				returnButton.addActionListener(this);
		
				//初始化面板
				chineseNamePanel = new JPanel();
				cardNumberPanel = new JPanel();
				accountNamePanel = new JPanel();
				buttonPanel = new JPanel();
				
				//向面板添加组件
				chineseNamePanel.add(chineseNameLabel);
				chineseNamePanel.add(chineseNameTextField);
				cardNumberPanel.add(cardNumberLabel);
				cardNumberPanel.add(cardNumberTextField);
				accountNamePanel.add(accountNameLabel);
				accountNamePanel.add(accountNameTextField);
				buttonPanel.add(confirmButton);
				buttonPanel.add(resetButton);
				buttonPanel.add(returnButton);
				
				//设置面板的边界
				chineseNamePanel.setBounds(-10, 30, 300, 30);   
				cardNumberPanel.setBounds(-10, 70, 300, 30);
				accountNamePanel.setBounds(-10, 110, 300, 30);
				buttonPanel.setBounds(-10, 150, 300, 40);
				displayTextArea.setBounds(0, 220, 300, 100);
				
				//向窗口添加面板
				this.add(chineseNamePanel);
				this.add(cardNumberPanel);
				this.add(accountNamePanel);
				this.add(buttonPanel);
				this.add(displayTextArea);
	}
	
	  //文本域事件的处理方法
	public void changedUpdate(DocumentEvent e) {
		chineseNameTemp = chineseNameTextField.getText();
		cardNumberTemp = cardNumberTextField.getText();
		accountNameTemp = accountNameTextField.getText();
		System.out.println(chineseNameTemp + cardNumberTemp + accountNameTemp );//测试代码
			System.out.println(transferedAccountNameTemp + transferTemp);//测试代码
		}
		public void insertUpdate(DocumentEvent e) {
			transferedAccountNameTemp = transferedAccountNameTextField.getText();
			transferTemp = transferTextField.getText();
			System.out.println(transferedAccountNameTemp + transferTemp);//测试代码
		}
		public void removeUpdate(DocumentEvent e) {
			transferedAccountNameTemp = transferedAccountNameTextField.getText();
			transferTemp = transferTextField.getText();
			System.out.println(transferedAccountNameTemp + transferTemp);//测试代码
		}
		
		
		//文本框的监听事件,转账文本框监听回车键,则执行确定按钮的按钮事件
		 class MyFieldEvent extends KeyAdapter{ //KeyAdapter为KeyListener的适配器,作用是不需要实现接口里面的全部方法
			 public void keyPressed(KeyEvent e) {
				 if(e.getSource() == transferTextField) {
					 if(e.getKeyCode() == 10) {//10代表回车键
						 confirmButton.doClick(); //调用确定按钮的单击事件
				     }
			     }
		     }
         } 
	
	//按钮事件处理的方法
			public void actionPerformed(ActionEvent e) {
				if( e.getSource() == returnButton ) {
					this.setVisible(false);
				}else if(e.getSource() == resetButton) {
					transferedAccountNameTextField.setText(null);//清空文本域
					transferTextField.setText(null);//清空文本域
					dao.setTheAccount(Login.getUser());//使得后面调用Account对象的setter方法和getter方法时,是最新的值
					balanceTextField.setText(Login.getUser().getBalance());
					System.out.println("文本域已清空");//测试代码
				}else{
					new ConfirmInformation(transferedAccountNameTextField.getText());//再显示一个确认信息的窗口,把被转账方的姓名作为形参
//					System.out.println(transferTextField.getText());//测试代码
				    System.out.println("操作完成!");//测试代码
				    
				}
			}
	

	//静态的getter方法
          
          
          
          
          
          
          
          
          
          
          

}
package com.zw.View;

/*

 * 管理员级别的菜单类,继承主窗体,实现按钮事件
 */
public class ManagerMainFrame extends JFrame implements ActionListener{ 
	private JButton printButton, modifyThePasswordButton, 
	                inquiryButton, depositMoneyButton, withdrawMoneyButton,
	                transferMoneyButton, reportTheLostCardButton, manageButton, exitButton;
	                //创建了7个业务按钮,改密,查询,存款,取款,
	                //转账,挂失,管理,退卡
	private JLabel titleLabel, founderLabel; //创建2个标签,题目,创始人
		transferedMoneyPanel.add(transferedMoneyTextField);
		buttonPanel.add(confirmButton);
		buttonPanel.add(returnButton);
		
		//设置面板的边界
		chineseNamePanel.setBounds(-10, 30, 300, 30);   
		accountNamePanel.setBounds(2, 70, 300, 30);
		transferedMoneyPanel.setBounds(-10, 110, 300, 40);
		buttonPanel.setBounds(-10, 160, 300, 40);

		//向窗口添加面板
		this.add(chineseNamePanel);
		this.add(accountNamePanel);
		this.add(transferedMoneyPanel);
		this.add(buttonPanel);
	}
	
	
	//文本框的监听事件,转账文本框监听回车键,则执行确定按钮的按钮事件
	 class MyFieldEvent extends KeyAdapter{ //KeyAdapter为KeyListener的适配器,作用是不需要实现接口里面的全部方法
		 public void keyPressed(KeyEvent e) {
			 if(e.getSource() == chineseNameTextField) {
				 if(e.getKeyCode() == 10) {//10代表回车键
					 confirmButton.doClick(); //调用确定按钮的单击事件
				 }
			 }
		 }
	}
	
	//按钮事件处理的方法
			public void actionPerformed(ActionEvent e) {
				if( e.getSource() == returnButton ) {
					this.setVisible(false);
				}else{
//					System.out.println(transferTextField.getText());//测试代码
					this.executeTransfer(transferedAccount, Login.getUser());//执行转账方法
					dao.setTheAccount(transferedAccount);//使得后面调用Account对象的setter方法和getter方法,都是最新的值
					dao.setTheAccount(Login.getUser());//使得后面调用Account对象的setter方法和getter方法,都是最新的值
				    System.out.println("操作完成!");//测试代码
				}
			}
    		managerPanel.add(managerTextField);
    		buttonPanel.add(confirmButton);
    		buttonPanel.add(returnButton);
        	
    		//设置面板的边界
    		accountNamePanel.setBounds(2, 20, 300, 30);
    		accountPasswordPanel.setBounds(26, 60, 300, 30);
    		chineseNamePanel.setBounds(-30, 100, 300, 30);
    		cardNumberPanel.setBounds(26, 140, 300, 30);
    		balancePanel.setBounds(-29, 190, 300, 30);   
    		managerPanel.setBounds(13, 230, 300, 30);
    		buttonPanel.setBounds(25, 270, 300, 40);

        	
    		//向窗口添加面板
    		this.add(accountNamePanel);
    		this.add(accountPasswordPanel);
    		this.add(chineseNamePanel);
    		this.add(cardNumberPanel);
    		this.add(balancePanel);
    		this.add(managerPanel);
    		this.add(buttonPanel);
         }
         
       //文本框的监听事件,转账文本框监听回车键,则执行确定按钮的按钮事件
		 class MyFieldEvent extends KeyAdapter{ //KeyAdapter为KeyListener的适配器,作用是不需要实现接口里面的全部方法
			 public void keyPressed(KeyEvent e) {
				 if( (e.getSource() == accountNameTextField) || (e.getSource() == accountPasswordTextField) || (e.getSource() ==chineseNameTextField) || (e.getSource() == cardNumberTextField) || (e.getSource() == balanceTextField) || (e.getSource() == managerTextField) ) {
					 if(e.getKeyCode() == 10) {//10代表回车键
						 confirmButton.doClick(); //调用确定按钮的单击事件
					 }
				 }
			 }
		}

         //文本域事件的处理方法
 		public void changedUpdate(DocumentEvent e) {
 			accountNameTemp = accountNameTextField.getText();
 			accountPasswordTemp = accountPasswordTextField.getText();
 			chineseNameTemp = chineseNameTextField.getText();
 			cardNumberTemp = cardNumberTextField.getText();
 			balanceTemp = balanceTextField.getText();
 			managerTemp = managerTextField.getText();

 			System.out.println(accountNameTemp + accountPasswordTemp + chineseNameTemp + cardNumberTemp + balanceTemp + managerTemp);//测试代码
 		}
 		public void insertUpdate(DocumentEvent e) {
 		public void changedUpdate(DocumentEvent e) {
 			accountNameTemp = accountNameTextField.getText();
 			accountPasswordTemp = accountPasswordTextField.getText();
 			chineseNameTemp = chineseNameTextField.getText();
 			cardNumberTemp = cardNumberTextField.getText();
 			balanceTemp = balanceTextField.getText();
 			managerTemp = managerTextField.getText();

 			System.out.println(accountNameTemp + accountPasswordTemp + chineseNameTemp + cardNumberTemp + balanceTemp + managerTemp);//测试代码
 		}
 		public void insertUpdate(DocumentEvent e) {
 			accountNameTemp = accountNameTextField.getText();
 			accountPasswordTemp = accountPasswordTextField.getText();
 			chineseNameTemp = chineseNameTextField.getText();
 			cardNumberTemp = cardNumberTextField.getText();
 			balanceTemp = balanceTextField.getText();
 			managerTemp = managerTextField.getText();

 			System.out.println(accountNameTemp + accountPasswordTemp + chineseNameTemp + cardNumberTemp + balanceTemp + managerTemp);//测试代码
 		
 		}
 		public void removeUpdate(DocumentEvent e) {
 			accountNameTemp = accountNameTextField.getText();
 			accountPasswordTemp = accountPasswordTextField.getText();
 			chineseNameTemp = chineseNameTextField.getText();
 			cardNumberTemp = cardNumberTextField.getText();
 			balanceTemp = balanceTextField.getText();
 			managerTemp = managerTextField.getText();

 			System.out.println(accountNameTemp + accountPasswordTemp + chineseNameTemp + cardNumberTemp + balanceTemp + managerTemp);//测试代码
 		
 		}
 		
        //按钮事件的处理
         public void actionPerformed(ActionEvent e) {
        	 if(e.getSource() == returnButton) {//返回按钮
        		 System.out.println("返回按钮");
        		 this.setVisible(false);
        	 }else {//确认按钮
        		 System.out.println("确认按钮");

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值