基于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("确认按钮");