JAVA实训项目:银行网银系统管理平台(含源码)

JAVA实训项目:银行网银系统管理平台(含源码)


前言

   大一最后的实训项目,也是算大一的结束的标志。

一、项目功能需求描述以及相关技术的应用

本网银系统管理平台主要任务是对用户办理储蓄业务(如存款,取款等)和对个人账户下的银行卡进行管理。
对于用户,主要实现的功能有个人信息的管理基本的增改查(包括注册,登录,修改密码,个人信息查看)以及用户之间进行余额的转账。
1.登陆
2.注册
3.首页
4.个人信息显示
5.修改密码
6.充值
7.提现
8.转账
9.银行卡管理
(1)查看银行卡
(2)添加银行卡
对于银行管理员,主要实现的功能有:查看所有的用户信息。
1.登陆
2.管理用户
(1)查看用户信息
(2)增加()
3.管理银行卡

相关技术应用

实体类的创建:
继承,封装,多态 以及 构造方法(getter setter)的快捷生成键位

项目分层(MVC机制):
MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。
创建以下5个层

  1. com.pdsu.bankdemo.entity 实体类层 放置实体类
  2. com.pdsu.bankdemo.dao dao层 操作数据
  3. com.pdsu.bankdemo.service 服务层 处理业务
  4. com.pdsu.bankdemo.controller 控制层 控制操作
  5. com.pdsu.bankdemo.view 视图层 展示信息
  6. com.pdsu.bankdemo.test 测试

可视化界面的设计:
对于每一个功能的可视化界面设计,主要运用GUI和继承JAVA Swing中的JFrame,JPanel,JDialog,JTable以及JTextField,JButton,JLabel等组件来实现对文本框,按钮以及文本标签的可视化。

监听机制的实现:
对于窗体中各个组件如按钮,文本框,下拉列表的事件处理,使用了事件处理机制当中的鼠标事件处理(MouseListener)。

数据的存储和输入输出:
对于各个实体类的数据中,使用输入输出流(IO)中的List进行对各个实体类中数据变量的存储,输入输出,修改。

二、设计过程

系统流程图

在这里插入图片描述

1.登陆页面

登陆页面的实现
登陆失败界面(账号或密码不正确,账号为空,密码为空)

2.注册页面

注册页面
注册失败界面(各项为空,手机号已存在(手机号唯一)

3.首页

展示首页

4.个人信息展示

密码这部分不用展示
个人认为密码这部分不用展示

5.修改密码

修改密码界面
修改密码失败界面(原密码为空,新密码为空,判断为空,两次新密码不同,新密码与原密码一致)

6.添加银行卡

添加银行卡,卡号是唯一的,如果出现同样卡号注册会出现弹窗“卡号已注册”

7.银行卡显示

对自己账号下的银行卡进行遍历展示

8.充值

这里充值的意思是银行卡里的钱充值在账户余额中

9.提现

同充值

10.转账

实现各用户的余额之间转账

11.用户管理

这里主要展示User.data中的各用户信息,本用于管理员账户,但是便于答辩时对转账的展示,所以就放在用户功能中,有更多功能需求的可以自己编写。

三、源码展示

分包和类

1.实体类创建

User

package com.pdsu.bankdemo.entity;

import java.io.Serializable;

public class User implements Serializable {//Serializable序列化接口
    private String Tel;//手机号账户
    private String Pwd;//密码
    private String name;//用户名
    private String RelName;//真实姓名
    private String cardNum;//银行卡号
    private String email;//邮箱
    private double money;//余额

    public User(String tel, String pwd, String name, String relName, String cardNum, String email, double money) {
        Tel = tel;
        Pwd = pwd;
        this.name = name;
        RelName = relName;
        this.cardNum = cardNum;
        this.email = email;
        this.money = money;
    }

    public String getTel() {
        return Tel;
    }

    public void setTel(String tel) {
        Tel = tel;
    }

    public String getPwd() {
        return Pwd;
    }

    public void setPwd(String pwd) {
        Pwd = pwd;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getRelName() {
        return RelName;
    }

    public void setRelName(String relName) {
        RelName = relName;
    }

    public String getCardNum() {
        return cardNum;
    }

    public void setCardNum(String cardNum) {
        this.cardNum = cardNum;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public double getMoney() {
        return money;
    }

    public void setMoney(double money) {
        this.money = money;
    }

    @Override
    public String toString() {
        return "User{" +
                "Tel='" + Tel + '\'' +
                ", Pwd='" + Pwd + '\'' +
                ", name='" + name + '\'' +
                ", RelName='" + RelName + '\'' +
                ", cardNum='" + cardNum + '\'' +
                ", email='" + email + '\'' +
                ", money=" + money +
                '}';
    }
}

Banks

package com.pdsu.bankdemo.entity;

import java.io.Serializable;

public class Banks implements Serializable {
    private String bankNum;//银行卡号
    private double money;//余额
    private String BankName;//银行
    private String tel;//手机号

    public Banks(String bankNum, double money, String bankName, String tel) {
        this.bankNum = bankNum;
        this.money = money;
        BankName = bankName;
        this.tel = tel;
    }

    public String getBankNum() {
        return bankNum;
    }

    public void setBankNum(String bankNum) {
        this.bankNum = bankNum;
    }

    public double getMoney() {
        return money;
    }

    public void setMoney(double money) {
        this.money = money;
    }

    public String getBankName() {
        return BankName;
    }

    public void setBankName(String bankName) {
        BankName = bankName;
    }

    public String getTel() {
        return tel;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }

    @Override
    public String toString() {
        return "Banks{" +
                "bankNum='" + bankNum + '\'' +
                ", money=" + money +
                ", BankName='" + BankName + '\'' +
                ", tel='" + tel + '\'' +
                '}';
    }
}

Admin

package com.pdsu.bankdemo.entity;

import java.io.Serializable;

public class Admin implements Serializable {
    private String Account;//管理员账号
    private String Pwd;//管理员密码

    public Admin(String account, String pwd) {
        Account = account;
        Pwd = pwd;
    }

    public String getAccount() {
        return Account;
    }

    public void setAccount(String account) {
        Account = account;
    }

    public String getPwd() {
        return Pwd;
    }

    public void setPwd(String pwd) {
        Pwd = pwd;
    }

    @Override
    public String toString() {
        return "Admin{" +
                "Account='" + Account + '\'' +
                ", Pwd='" + Pwd + '\'' +
                '}';
    }
}

2.Dao层

UserDao

package com.pdsu.bankdemo.dao;

import com.pdsu.bankdemo.entity.User;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class UserDao<main> {
    /**
     * 读取数据
     */
    public List<User> read() {
        List<User> list = new ArrayList<>();
        try {
            FileInputStream file = new FileInputStream("User.data");
            ObjectInputStream in = new ObjectInputStream(file);
            list = (List<User>) in.readObject();
            in.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return list;

    }


    /**
     * 写入数据
     */
    public boolean write(List<User> list) {
        try {
            FileOutputStream file = new FileOutputStream("User.data");
            ObjectOutputStream out = new ObjectOutputStream(file);
            out.writeObject(list);
            out.close();
            return true;//写入成功
        } catch (Exception e) {
            e.printStackTrace();
            return false;//写入失败
        }

    }

}

BanksDao

package com.pdsu.bankdemo.dao;

import com.pdsu.bankdemo.entity.Banks;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class BanksDao {
    /**
     * 读取数据
     */
    public List<Banks> read() {
        List<Banks> list = new ArrayList<>();
        try {
            FileInputStream file = new FileInputStream("Banks.data");
            ObjectInputStream in = new ObjectInputStream(file);
            list = (List<Banks>) in.readObject();
            in.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return list;

    }


    /**
     * 写入数据
     */
    public boolean write(List<Banks> list) {
        try {
            FileOutputStream file = new FileOutputStream("Banks.data");
            ObjectOutputStream out = new ObjectOutputStream(file);
            out.writeObject(list);
            out.close();
            return true;//写入成功
        } catch (Exception e) {
            e.printStackTrace();
            return false;//写入失败
        }

    }
    

}

AdminDao

package com.pdsu.bankdemo.dao;

import com.pdsu.bankdemo.entity.Admin;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class AdminDao {
    /**
     * 读取数据
     */
    public List<Admin> read() {
        List<Admin> list = new ArrayList<>();
        try {
            FileInputStream file = new FileInputStream("Admin.data");
            ObjectInputStream in = new ObjectInputStream(file);
            list = (List<Admin>) in.readObject();
            in.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return list;

    }

    /**
     * 写入数据
     */
    public boolean write(List<Admin> list) {
        try {
            FileOutputStream file = new FileOutputStream("Admin.data");
            ObjectOutputStream out = new ObjectOutputStream(file);
            out.writeObject(list);
            out.close();
            return true;//写入成功
        } catch (Exception e) {
            e.printStackTrace();
            return false;//写入失败
        }

    }

    public static void main(String[] args) {
        List<Admin> list = new ArrayList<>();
        list.add(new Admin("admin", "admin"));
        AdminDao dao = new AdminDao();
        dao.write(list);
        System.out.println("写入成功");
        List<Admin> lists = dao.read();
        for (Admin ad : lists) {
            System.out.println(ad);
        }

    }
}

3.Controller

UserController

package com.pdsu.bankdemo.controller;

import com.pdsu.bankdemo.entity.User;
import com.pdsu.bankdemo.service.UserService;
import com.pdsu.bankdemo.service.impl.UserServiceImpl;

public class UserController {
    //controller -->service
    private UserService userService = new UserServiceImpl();

    /*** 登录*/
    public User userLogin(String tel, String Pwd) {
        return userService.findUserByTelandPwd(tel, Pwd);
    }

    /**
     * 注册
     */
    public boolean addUser(String tel, String pwd, String name, String relName, String cardNum, String email) {
        User u = new User(tel, pwd, name, relName, cardNum, email, 0);
        return userService.addUser(u);
    }

    /**
     * 验证手机号是否存在
     */
    public boolean isExistTel(String tel) {
        return userService.isExistTel(tel);
    }

    /**
     * 验证邮箱是否存在
     */
    public boolean isExistEmail(String email) {
        return userService.isExistEmail(email);
    }

    /**修改密码*/
    public boolean updatePwd(String tel,String olPwd,String pwd){
        User u = userService.findUserByTelandPwd(tel,olPwd);
        if(u==null){
            return false;
        }
        return  userService.updatePwd(tel, pwd);
    }

    /**
     * 账户加钱 -- 充值
     */
    public boolean AddUserMoney(String tel, double money) {
        return userService.AddUserMoney(tel, money);
    }

    /**
     * 账户扣钱 -- 提现
     */
    public boolean DeleteUserMoney(String tel, double money) {
        return userService.DeleteUserMoney(tel, money);
    }

}

BanksController

package com.pdsu.bankdemo.controller;

import com.pdsu.bankdemo.entity.Banks;
import com.pdsu.bankdemo.service.BanksService;
import com.pdsu.bankdemo.service.impl.BanksServiceImpl;

import java.util.List;

public class BanksController {
    private BanksService banksService = new BanksServiceImpl();

    /**
     * 添加
     */
    public boolean addBanks(Banks banks) {
        return banksService.addBanks(banks);
    }

    /**
     * 根据手机号查看所有的银行卡
     */
    public List<Banks> showBanksByTel(String tel) {
        return banksService.showBanksByTel(tel);
    }

    /**
     * 银行扣钱--充值
     */
    public boolean DeleteBankMoney(String banksNum, double money) {
        return banksService.DeleteBankMoney(banksNum, money);
    }

    /**
     * 银行加钱--提现
     */
    public boolean AddBankMoney(String banksNum, double money) {
        return banksService.AddBankMoney(banksNum, money);
    }
}

UserCloserUtil

package com.pdsu.bankdemo.controller;

import com.pdsu.bankdemo.entity.User;

import javax.swing.*;

public class UserCloserUtil {
    /**
     * //     * 传对象
     * //
     */
    private static User user1;

    public static void setChange(User user) {
        user1 = user;
    }

    public static User getChange() {
        return user1;
    }

    /**
     * 关闭主程序
     */
    private static JFrame frame1 = new JFrame();

    public static void setClose(JFrame frame) {
        frame1 = frame;
    }

    public static void Close() {
        frame1.dispose();
    }
}

4.Service

BanksService接口

package com.pdsu.bankdemo.service;

import com.pdsu.bankdemo.entity.Banks;

import java.util.List;

public interface BanksService {
    /**
     * 添加
     */
    public boolean addBanks(Banks banks);

    /**
     * 根据手机号查看所有的银行卡
     */
    public List<Banks> showBanksByTel(String tel);

    /**
     * 扣钱--充值
     */
    public boolean DeleteBankMoney(String banksNum, double money);

    /**
     * 加钱--提现
     */
    public boolean AddBankMoney(String banksNum, double money);
}

UserService接口

package com.pdsu.bankdemo.service;

import com.pdsu.bankdemo.entity.User;

/**
 * 用户服务层
 */
public interface UserService {
    /**
     * 根据手机号和密码密码查找用户
     */
    public User findUserByTelandPwd(String tel, String Pwd);

    /**
     * 添加用户
     */
    public boolean addUser(User user);

    /**
     * 验证手机号是否存在
     */
    public boolean isExistTel(String tel);

    /**
     * 验证邮箱是否存在
     */
    public boolean isExistEmail(String email);

    /**修改密码*/
    public  boolean updatePwd(String tel,String pwd);

    /**
     * 账户加钱 -- 存款
     */
    public boolean AddUserMoney(String tel, double money);

    /**
     * 账户扣钱 -- 提现
     */
    public boolean DeleteUserMoney(String tel, double money);

}

UserServiceImpl

package com.pdsu.bankdemo.service.impl;

import com.pdsu.bankdemo.controller.UserCloserUtil;
import com.pdsu.bankdemo.dao.UserDao;
import com.pdsu.bankdemo.entity.Banks;
import com.pdsu.bankdemo.entity.User;
import com.pdsu.bankdemo.service.UserService;

import java.util.List;

public class UserServiceImpl implements UserService {
    //service _>DAO
    private UserDao dao = new UserDao();

    @Override
    public User findUserByTelandPwd(String tel, String Pwd) {
        List<User> list = dao.read();//读取数据
        for (User u : list) {
            String tels = u.getTel();
            String Pwds = u.getPwd();
            if (tels.equals(tel) && Pwds.equals(Pwd)) {
                System.out.println("登陆成功");
                return u;
            }
        }
        return null;//失败
    }

    @Override
    public boolean addUser(User user) {
        List<User> list = dao.read();//读取数据
        list.add(user);
        return dao.write(list);
    }

    @Override
    public boolean isExistTel(String tel) {
        List<User> list = dao.read();//读取数据
        for (User u : list) {
            if (u.getTel().equals(tel)) {
                return true;//手机号相同
            }
        }
        return false;
    }

    @Override
    public boolean isExistEmail(String email) {
        List<User> list = dao.read();//读取数据
        for (User u : list) {
            if (u.getEmail().equals(email)) {
                return true;//邮箱号相同
            }
        }
        return false;
    }

    @Override
    public boolean updatePwd(String tel, String pwd) {
        List<User> list = dao.read();//读取数据
        for (User u:list){
            String uTel = u.getTel();
            if(uTel.equals(tel)){//比较手机号是否相同
                u.setPwd(pwd);//修改
                break;
            }
        }
        return dao.write(list);
    }

    /**
     * 充值 -- 用户加钱
     *
     * @param tel
     * @param money
     * @return
     */
    @Override
    public boolean AddUserMoney(String tel, double money) {
        List<User> list = dao.read();
        for (User u : list) {
            if (u.getTel().equals(tel)) {
                UserCloserUtil.setChange(u);
                u.setMoney(u.getMoney() + money);
            }
        }
        return dao.write(list);
    }

    /**
     * 提现--用户扣钱
     *
     * @param
     * @param money
     * @return
     */
    @Override
    public boolean DeleteUserMoney(String tel, double money) {
        List<User> list = dao.read();
        for (User u : list) {
            if (tel.equals(u.getTel())) {
                UserCloserUtil.setChange(u);
                double mo = u.getMoney();
                if (mo - money < 0)  //余额不足
                {
                    return false;
                } else {
                    u.setMoney(mo - money);
                }
            }
        }
        return dao.write(list);

    }

}



BanksServiceImpl

package com.pdsu.bankdemo.service.impl;

import com.pdsu.bankdemo.dao.BanksDao;
import com.pdsu.bankdemo.dao.UserDao;
import com.pdsu.bankdemo.entity.Banks;
import com.pdsu.bankdemo.service.BanksService;

import java.util.ArrayList;
import java.util.List;

public class BanksServiceImpl implements BanksService {
    private BanksDao dao = new BanksDao();
    private UserDao dao1 = new UserDao();

    @Override
    public boolean addBanks(Banks banks) {
        List<Banks> list = dao.read();
        list.add(banks);
        return dao.write(list);

    }

    @Override
    public List<Banks> showBanksByTel(String tel) {
        List<Banks> list = dao.read();
        List<Banks> ulist = new ArrayList<>();
        for (Banks b : list) {
            if (b.getTel().equals(tel)) {
                ulist.add(b);
            }
        }
        return ulist;
    }

    /**
     * 充值--银行扣钱
     *
     * @return
     */
    @Override
    public boolean DeleteBankMoney(String banksNum, double money) {
        List<Banks> list = dao.read();
        for (Banks b : list) {
            if (banksNum.equals(b.getBankNum())) {
                double mo = b.getMoney();
                if (mo - money < 0)  //余额不足
                {
                    return false;
                } else {
                    b.setMoney(mo - money);
                }
            }
        }
        return dao.write(list);
    }

    /**
     * 提现--银行加钱
     */
    @Override
    public boolean AddBankMoney(String banksNum, double money) {
        List<Banks> list = dao.read();
        for (Banks b : list) {
            if (b.getBankNum().equals(banksNum)) {
                b.setMoney(b.getMoney() + money);
            }
        }
        return dao.write(list);
    }
}


5.View

UserLoginView

package com.pdsu.bankdemo.view;

import com.pdsu.bankdemo.controller.UserController;
import com.pdsu.bankdemo.entity.User;

import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

/**
 * 用户登录界面
 */
public class UserLoginView extends JFrame implements MouseListener {
    private JPanel jp;//大的组件
    private JLabel top;//顶部
    private JPanel bom;//底部
    private JLabel nameJL, pwdJL;//
    private JTextField nameJF;//用户名框
    private JPasswordField pwdJF;//密码框
    private JButton login, reg;//按钮

    public UserLoginView() {
        //设置大组件
        jp = new JPanel();
        jp.setLayout(new BorderLayout());//边框布局
        //顶部
        top = new JLabel();
        ImageIcon icon = new ImageIcon("img/logo.png");
        icon.setImage(icon.getImage().getScaledInstance(300, 50, Image.SCALE_DEFAULT));
        top.setIcon(icon);
        top.setBorder(new EmptyBorder(20, 70, 30, 20));
        jp.add(top, BorderLayout.NORTH);
        //底部
        bom = new JPanel();
        bom.setLayout(new GridLayout(3, 2, 20, 20));//距离上下左右的距离 表格// 布局
        bom.setBorder(new EmptyBorder(0, 40, 30, 40));
        //输入框
        nameJL = new JLabel("手机号:", JLabel.RIGHT);
        nameJL.setIcon((new ImageIcon("img/username_icon.png")));
        nameJL.setBorder(new EmptyBorder(0, 0, 0, 20));
        nameJF = new JTextField(20);
        pwdJL = new JLabel("密    码:", JLabel.RIGHT);
        pwdJL.setBorder(new EmptyBorder(0, 0, 0, 20));
        pwdJL.setIcon((new ImageIcon("img/password_icon.png")));
        pwdJF = new JPasswordField(20);
        //登陆注册按钮设置
        login = new JButton("登录");
        login.setName("login");
        login.addMouseListener(this);//添加监听事件
        reg = new JButton("注册");
        reg.setName("reg");
        reg.addMouseListener(this);//添加监听事件
        bom.add(nameJL);
        bom.add(nameJF);
        bom.add(pwdJL);
        bom.add(pwdJF);
        bom.add(login);
        bom.add(reg);
        jp.add(bom, BorderLayout.CENTER);
        this.add(jp);
        this.setTitle("欢迎使用Richard转账管理系统!");//标题
        this.setSize(450, 300);//大小
        this.setLocationRelativeTo(null);//居中
        this.setResizable(false);//不允许改变窗口的大小
        this.setVisible(true);//显示
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//可关闭

    }

    @Override
    public void mouseClicked(MouseEvent e) {
        //发生事件的组件名称
        String str = e.getComponent().getName();
        if (str.equals("login")) {
            String tel = nameJF.getText();
            String pwd = new String(pwdJF.getPassword());
            if (tel.equals("")) {
                JOptionPane.showMessageDialog(null, "手机号不能为空");
            } else if (pwd.equals("")) {
                JOptionPane.showMessageDialog(null, "密码不能为空");
            } else {
                UserController usersController = new UserController();
                User user = usersController.userLogin(tel, pwd);
                if (user == null) {
                    JOptionPane.showMessageDialog(null, "登录失败");
                } else {
                    System.out.println("成功");
                    dispose(); //隐藏登录页面
                    MainView mainView = new MainView(user);

                }
            }
        } else {
            AddUserView ad = new AddUserView(this);
        }
    }

    @Override
    public void mousePressed(MouseEvent e) {
        // TODO 自动生成的方法存根

    }

    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO 自动生成的方法存根

    }

    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO 自动生成的方法存根

    }

    @Override
    public void mouseExited(MouseEvent e) {
        // TODO 自动生成的方法存根

    }


}

AddUserView

package com.pdsu.bankdemo.view;

import com.pdsu.bankdemo.controller.UserController;

import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

/**
 * 用户注册
 */
public class AddUserView extends JDialog implements MouseListener {
    private JPanel jp;//顶部组件
    private JLabel telJL, pwdJL, nameJL, relNameJL, carNumJL, emailJL;//左侧提示
    private JTextField telJF, nameJF, relNameJF, carNumJF, emailJF;//文本
    private JPasswordField pwdJF;//密码框
    private JButton sub, clo;//按钮

    public AddUserView(Frame owner) {
        super(owner);
        jp = new JPanel();
        jp.setBackground(Color.GRAY);
        jp.setLayout(new GridLayout(7, 2, 20, 20));
        jp.setBorder(new EmptyBorder(20, 20, 20, 20));
        EmptyBorder jbo = new EmptyBorder(0, 20, 0, 0);
        EmptyBorder fbo = new EmptyBorder(0, 0, 0, 20);
        //手机号
        telJL = new JLabel("手机号:", JLabel.LEFT);
        telJL.setIcon(new ImageIcon("img/phone_icon.png"));
        telJL.setBorder(jbo);
        telJF = new JTextField(20);
        telJF.setBorder(fbo);
        jp.add(telJL);
        jp.add(telJF);
        //密码
        pwdJL = new JLabel("密码:", JLabel.LEFT);
        pwdJL.setIcon(new ImageIcon("img/password_icon.png"));
        pwdJL.setBorder(jbo);
        pwdJF = new JPasswordField(20);
        pwdJF.setBorder(fbo);
        jp.add(pwdJL);
        jp.add(pwdJF);
        //用户名
        nameJL = new JLabel("昵称:", JLabel.LEFT);
        nameJL.setIcon(new ImageIcon("img/name_icon.png"));
        nameJL.setBorder(jbo);
        nameJF = new JTextField(20);
        nameJF.setBorder(fbo);
        jp.add(nameJL);
        jp.add(nameJF);
        //真实姓名
        relNameJL = new JLabel("真实姓名:", JLabel.LEFT);
        relNameJL.setIcon(new ImageIcon("img/username_icon.png"));
        relNameJL.setBorder(jbo);
        relNameJF = new JTextField(20);
        relNameJF.setBorder(fbo);
        jp.add(relNameJL);
        jp.add(relNameJF);
        //身份证号
        carNumJL = new JLabel("身份证号:", JLabel.LEFT);
        carNumJL.setIcon(new ImageIcon("img/idc_icon.png"));
        carNumJL.setBorder(jbo);
        carNumJF = new JTextField(20);
        carNumJF.setBorder(fbo);
        jp.add(carNumJL);
        jp.add(carNumJF);
        //邮箱
        emailJL = new JLabel("邮箱:", JLabel.LEFT);
        emailJL.setIcon(new ImageIcon("img/msg_icon.png"));
        emailJL.setBorder(jbo);
        emailJF = new JTextField(20);
        emailJF.setBorder(fbo);
        jp.add(emailJL);
        jp.add(emailJF);
        //提交按钮
        sub = new JButton("提交");
        sub.setName("sub");
        sub.addMouseListener(this);
        jp.add(sub);
        //取消按钮
        clo = new JButton("取消");
        clo.setName("clo");
        clo.addMouseListener(this);
        jp.add(clo);
        this.add(jp);
        this.setTitle("Richard转账管理系统-->用户注册");//标题
        this.setSize(400, 500);//大小
        this.setLocationRelativeTo(null);//居中
        this.setResizable(false);//不允许改变窗口的大小
        this.setVisible(true);//显示
        this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);

    }


    @Override
    public void mouseClicked(MouseEvent e) {
        String str = e.getComponent().getName();
        switch ((str)) {
            case "sub":
                String tel = telJF.getText();
                String pwd = new String(pwdJF.getPassword());
                String name = nameJF.getText();
                String relName = relNameJF.getText();
                String carNum = carNumJF.getText();
                String email = emailJF.getText();
                if (tel.equals("")) {
                    JOptionPane.showMessageDialog(null, "手机号不能为空");
                    clear();
                    break;
                }
                if (pwd.equals("")) {
                    JOptionPane.showMessageDialog(null, "密码不能为空");
                    clear();
                    break;
                }
                if (name.equals("")) {
                    JOptionPane.showMessageDialog(null, "昵称不能为空");
                    clear();
                    break;
                }
                if (relName.equals("")) {
                    JOptionPane.showMessageDialog(null, "真实姓名不能为空");
                    clear();
                    break;
                }
                if (carNum.equals("")) {
                    JOptionPane.showMessageDialog(null, "身份证号不能为空");
                    clear();
                    break;
                }
                if (email.equals("")) {
                    JOptionPane.showMessageDialog(null, "邮箱不能为空");
                    clear();
                    break;
                }
                UserController con = new UserController();
                if (con.isExistTel(tel)) {
                    JOptionPane.showMessageDialog(null, "手机号已注册");
                    clear();
                    break;
                }
                if (con.isExistEmail(email)) {
                    JOptionPane.showMessageDialog(null, "邮箱已注册");
                    clear();
                    break;
                }
                boolean flag = con.addUser(tel, pwd, name, relName, carNum, email);
                if (flag) {
                    JOptionPane.showMessageDialog(null, "注册成功");
                    dispose();
                } else {
                    JOptionPane.showMessageDialog(null, "注册失败!");
                    clear();
                }
                break;
            case "clo":
                dispose();
                break;
        }

    }
    //private JTextField telJF, nameJF, relNameJF, carNumJF, emailJF;//文本
    /**
     * 清空
     */
    private void clear() {
        telJF.setText("");
        nameJF.setText("");
        relNameJF.setText("");
        carNumJF.setText("");
        emailJF.setText("");
        pwdJF.setText("");
    }

    @Override
    public void mousePressed(MouseEvent e) {

    }

    @Override
    public void mouseReleased(MouseEvent e) {

    }

    @Override
    public void mouseEntered(MouseEvent e) {

    }

    @Override
    public void mouseExited(MouseEvent e) {

    }


}

MainView

package com.pdsu.bankdemo.view;

import com.pdsu.bankdemo.controller.BanksController;
import com.pdsu.bankdemo.controller.UserCloserUtil;
import com.pdsu.bankdemo.dao.UserDao;
import com.pdsu.bankdemo.entity.Banks;
import com.pdsu.bankdemo.entity.User;

import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.List;

/**
 *
 */
public class MainView extends JFrame implements MouseListener {
    private JPanel jpJP, topJP, leftJP, conJP, indexJP;
    private JLabel logoJL, WelJL, indexJL;
    //首页      个人主页  改密   银行卡     存钱         取钱           转账        用户管理
    private JButton indexJB, showUserJB, pwdJB, banksJB, addMoneyJB, deleteMoneyJB, moveMoneyJB, updateUserJB, addbanksJB;
    private User user;

    public MainView(User user) {
        this.user = user;
        jpJP = new JPanel();
        jpJP.setLayout(new BorderLayout());//边框布局
        //顶部
        topJP = new JPanel();
        logoJL = new JLabel();
        ImageIcon lo = new ImageIcon("img/bank.png");
        lo.setImage(lo.getImage().getScaledInstance(100, 100, Image.SCALE_DEFAULT));
        logoJL.setIcon(lo);
        WelJL = new JLabel("欢迎用户:" + user.getName());
        WelJL.setFont(new Font("宋体", 1, 20));
        topJP.add(logoJL);
        topJP.add(WelJL);
        jpJP.add(topJP, BorderLayout.NORTH);
        //左侧导航
        leftJP = new JPanel();
        leftJP.setLayout(new GridLayout(9, 1, 20, 20));
        EmptyBorder jb = new EmptyBorder(10, 0, 10, 20);
        //首页
        indexJB = new JButton("首页");
        indexJB.setName("indexJB");
        indexJB.setBorder(jb);
        indexJB.addMouseListener(this);
        leftJP.add(indexJB);
        //个人信息
        showUserJB = new JButton("个人信息");
        showUserJB.setName("showUserJB");
        showUserJB.setBorder(jb);
        showUserJB.addMouseListener(this);
        leftJP.add(showUserJB);
        //修改密码
        pwdJB = new JButton("修改密码");
        pwdJB.setName("pwdJB");
        pwdJB.setBorder(jb);
        pwdJB.addMouseListener(this);
        leftJP.add(pwdJB);
        //添加银行卡
        addbanksJB = new JButton("添加银行卡");
        addbanksJB.setName("addbanksJB");
        addbanksJB.setBorder(jb);
        addbanksJB.addMouseListener(this);
        leftJP.add(addbanksJB);
        //银行卡
        banksJB = new JButton("银行卡");
        banksJB.setName("banksJB");
        banksJB.setBorder(jb);
        banksJB.addMouseListener(this);
        leftJP.add(banksJB);
        //充值
        addMoneyJB = new JButton("充值");
        addMoneyJB.setName("addMoneyJB");
        addMoneyJB.setBorder(jb);
        addMoneyJB.addMouseListener(this);
        leftJP.add(addMoneyJB);
        //提现
        deleteMoneyJB = new JButton("提现");
        deleteMoneyJB.setName("deleteMoneyJB");
        deleteMoneyJB.setBorder(jb);
        deleteMoneyJB.addMouseListener(this);
        leftJP.add(deleteMoneyJB);
        //转账
        moveMoneyJB = new JButton("转账");
        moveMoneyJB.setName("moveMoneyJB");
        moveMoneyJB.setBorder(jb);
        moveMoneyJB.addMouseListener(this);
        leftJP.add(moveMoneyJB);
        //用户管理
        updateUserJB = new JButton("用户管理");
        updateUserJB.setName("updateUserJB");
        updateUserJB.setBorder(jb);
        updateUserJB.addMouseListener(this);
        leftJP.add(updateUserJB);
        jpJP.add(leftJP, BorderLayout.WEST);

        conJP = new JPanel();
        conJP.setBorder(new EmptyBorder(10, 10, 10, 0));
        indexJP = new JPanel();
        indexJP.setSize(500, 450);
        indexJL = new JLabel();
        ImageIcon icon = new ImageIcon("img/bg2.png");
        icon.setImage(icon.getImage().getScaledInstance(500, 350, Image.SCALE_DEFAULT));
        indexJL.setIcon(icon);


        indexJP.add(indexJL);
        conJP.add(indexJP);
        jpJP.add(conJP);
        this.add(jpJP);
        this.setTitle("Richard转账管理系统!-->主页");//标题
        this.setSize(700, 500);//大小
        UserCloserUtil.setClose(this);
        this.setLocationRelativeTo(null);//居中
        this.setResizable(false);//不允许改变窗口的大小
        this.setVisible(true);//显示
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//可关闭
    }

    /**
     * 切换页面  需要的这种方法时直接调用
     */
    public void updateView(JPanel jp) {
        conJP.removeAll();
        conJP.add(jp);
        conJP.validate();
        conJP.updateUI();
    }

    @Override
    public void mouseClicked(MouseEvent e) {
        String str = e.getComponent().getName();
        switch (str) {
            case "indexJB":
                System.out.println("首页");
                updateView(indexJP);
                break;
            case "showUserJB":
                ShowUsersView showUsersView = new ShowUsersView(user);
                updateView(showUsersView);
                break;
            case "pwdJB":
                UpdatePasswordView updatePasswordView = new UpdatePasswordView(user);
                updateView(updatePasswordView);
                break;
            case "addbanksJB":
                System.out.println("添加银行卡");
                AddBanksView addBanksView = new AddBanksView(user);
                updateView(addBanksView);
                break;
            case "addMoneyJB":
                BanksController banksController1 = new BanksController();
                List<Banks> list1 = banksController1.showBanksByTel(user.getTel());
                AddUserMoneyView addUserMoneyView = new AddUserMoneyView(user, list1);
                updateView(addUserMoneyView);
                break;
            case "banksJB":
                BanksController banksController = new BanksController();
                List<Banks> list = banksController.showBanksByTel(user.getTel());
                ShowBanksView showBanksView = new ShowBanksView(list);
                updateView(showBanksView);
                break;
            case "deleteMoneyJB":
                BanksController banksController2 = new BanksController();
                List<Banks> list4 = banksController2.showBanksByTel(user.getTel());
                DeleteUserMoneyView deleteUserMoneyView = new DeleteUserMoneyView(user, list4);
                updateView(deleteUserMoneyView);
                break;
            case "moveMoneyJB":
                TransToOtherView transToOtherView = new TransToOtherView(user);
                updateView(transToOtherView);
                System.out.println("转账");
                break;
            case "updateUserJB":
                UserDao dao = new UserDao();
                List<User> list3 = dao.read();
                UserManageView userManageView = new UserManageView(list3);
                updateView(userManageView);
                break;
        }

    }

    @Override
    public void mousePressed(MouseEvent e) {

    }

    @Override
    public void mouseReleased(MouseEvent e) {

    }

    @Override
    public void mouseEntered(MouseEvent e) {

    }

    @Override
    public void mouseExited(MouseEvent e) {

    }
}

ShowUsersView

package com.pdsu.bankdemo.view;

import com.pdsu.bankdemo.entity.User;

import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;

public class ShowUsersView extends JPanel {

    private JPanel top, bom;
    private JLabel telJL, pwdJL, nameJL, relNameJL, carNumJL, emailJL, adMJL;//左侧提示
    private JTextField telJF, nameJF, relNameJF, carNumJF, emailJF, adMJF;//文本
    private JPasswordField pwdJF;//密码框

    public ShowUsersView(User u) {
        this.setLayout(new BorderLayout());
        //上边
        top = new JPanel();
        JLabel topJL = new JLabel("个人信息展示");
        topJL.setFont(new Font("宋体", 1, 20));
        top.add(topJL);
        this.add(top, BorderLayout.NORTH);
        //下边
        bom = new JPanel();
        bom.setLayout(new GridLayout(7, 2, 20, 20));

        EmptyBorder jbo = new EmptyBorder(0, 50, 0, 0);
        EmptyBorder fbo = new EmptyBorder(0, 0, 0, 50);


        //手机号
        telJL = new JLabel("手机号:", JLabel.CENTER);
        telJL.setIcon(new ImageIcon("img/phone_icon.png"));
        telJL.setFont(new Font("宋体", 1, 15));
        telJL.setBorder(jbo);
        telJF = new JTextField(20);
        telJF.setEditable(false);
        telJF.setText(u.getTel());
        telJF.setBorder(fbo);
        bom.add(telJL);
        bom.add(telJF);
        //密码
        pwdJL = new JLabel("密码:", JLabel.CENTER);
        pwdJL.setIcon(new ImageIcon("img/password_icon.png"));
        pwdJL.setFont(new Font("宋体", 1, 15));
        pwdJL.setBorder(jbo);
        pwdJF = new JPasswordField(20);
        pwdJF.setEditable(false);
        pwdJF.setBorder(fbo);
        pwdJF.setText(u.getPwd());
        bom.add(pwdJL);
        bom.add(pwdJF);
        //用户名
        nameJL = new JLabel("昵称:", JLabel.CENTER);
        nameJL.setIcon(new ImageIcon("img/name_icon.png"));
        nameJL.setFont(new Font("宋体", 1, 15));
        nameJL.setBorder(jbo);
        nameJF = new JTextField(20);
        nameJF.setEditable(false);
        nameJF.setBorder(fbo);
        nameJF.setText(u.getName());
        bom.add(nameJL);
        bom.add(nameJF);
        //真实姓名
        relNameJL = new JLabel("真实姓名:", JLabel.CENTER);
        relNameJL.setIcon(new ImageIcon("img/username_icon.png"));
        relNameJL.setFont(new Font("宋体", 1, 15));
        relNameJL.setBorder(jbo);
        relNameJF = new JTextField(20);
        relNameJF.setEditable(false);
        relNameJF.setBorder(fbo);
        relNameJF.setText(u.getRelName());
        bom.add(relNameJL);
        bom.add(relNameJF);
        //身份证号
        carNumJL = new JLabel("身份证号:", JLabel.CENTER);
        carNumJL.setIcon(new ImageIcon("img/idc_icon.png"));
        carNumJL.setFont(new Font("宋体", 1, 15));
        carNumJL.setBorder(jbo);
        carNumJF = new JTextField(20);
        carNumJF.setEditable(false);
        carNumJF.setBorder(fbo);
        carNumJF.setText(u.getCardNum());
        bom.add(carNumJL);
        bom.add(carNumJF);
        //邮箱
        emailJL = new JLabel("邮箱:", JLabel.CENTER);
        emailJL.setIcon(new ImageIcon("img/msg_icon.png"));
        emailJL.setFont(new Font("宋体", 1, 15));
        emailJL.setBorder(jbo);
        emailJF = new JTextField(20);
        emailJF.setEditable(false);
        emailJF.setBorder(fbo);
        emailJF.setText(u.getEmail());
        bom.add(emailJL);
        bom.add(emailJF);
        //余额
        adMJL = new JLabel("余额:", JLabel.CENTER);
        adMJL.setIcon(new ImageIcon("img/balance_icon.png"));
        adMJL.setFont(new Font("宋体", 1, 15));
        adMJL.setBorder(jbo);
        adMJF = new JTextField(20);
        adMJF.setEditable(false);
        adMJF.setBorder(fbo);
        adMJF.setText(String.valueOf(u.getMoney()));
        bom.add(adMJL);
        bom.add(adMJF);
        this.add(top, BorderLayout.NORTH);
        this.add(bom, BorderLayout.CENTER);

    }

}

UpdatePasswordView

package com.pdsu.bankdemo.view;

import com.pdsu.bankdemo.controller.UserCloserUtil;
import com.pdsu.bankdemo.controller.UserController;
import com.pdsu.bankdemo.entity.User;

import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class UpdatePasswordView extends JPanel implements MouseListener {
    private JPanel top, bom;
    private JLabel PwdJL, newPwdJL, CnewPwdJL;
    private JPasswordField PwdJF, newPwdJF, CnewPwdJF;
    private JButton sub, reb;//提交重置按钮
    private User users;
    public UpdatePasswordView(User users) {
        this.users = users;
        this.setLayout(new BorderLayout());
        //上边
        top = new JPanel();
        JLabel topJL = new JLabel("修改密码");
        topJL.setFont(new Font("宋体", 1, 24));
        top.add(topJL);
        this.add(top, BorderLayout.NORTH);
        //下边
        bom = new JPanel();

        bom.setBorder(new EmptyBorder(0, 40, 30, 40));
        bom.setLayout(new GridLayout(5, 2, 10, 10));

        EmptyBorder jbo = new EmptyBorder(0, 20, 0, 0);
        EmptyBorder fbo = new EmptyBorder(20, 0, 20, 20);
        //原密码
        PwdJL = new JLabel("原密码:", JLabel.CENTER);
        PwdJL.setFont(new Font("宋体", 1, 18));
        PwdJL.setIcon(new ImageIcon("img/password_icon.png"));
        PwdJL.setBorder(jbo);
        PwdJF = new JPasswordField(20);
        PwdJF.setBorder(fbo);
        bom.add(PwdJL);
        bom.add(PwdJF);
        //请输入新密码
        newPwdJL = new JLabel("新密码:", JLabel.CENTER);
        newPwdJL.setFont(new Font("宋体", 1, 18));
        newPwdJL.setIcon(new ImageIcon("img/password_icon.png"));
        newPwdJL.setBorder(jbo);
        newPwdJF = new JPasswordField(20);
        newPwdJF.setBorder(fbo);
        bom.add(newPwdJL);
        bom.add(newPwdJF);
        //再次输入密码
        CnewPwdJL = new JLabel("再次输入密码:", JLabel.CENTER);
        CnewPwdJL.setFont(new Font("宋体", 1, 18));
        CnewPwdJL.setIcon(new ImageIcon("img/password_icon.png"));
        CnewPwdJL.setBorder(jbo);
        CnewPwdJF = new JPasswordField(20);
        CnewPwdJF.setBorder(fbo);
        bom.add(CnewPwdJL);
        bom.add(CnewPwdJF);
        //提交按钮
        sub = new JButton("提交");
        sub.setName("sub");
        sub.addMouseListener(this);
        bom.add(sub);
        //重置按钮
        reb = new JButton("重置");
        reb.setName("reb");
        reb.addMouseListener(this);
        bom.add(reb);
        this.add(bom, BorderLayout.SOUTH);
    }

    @Override
    public void mouseClicked(MouseEvent e) {

        String str = e.getComponent().getName();
        switch ((str)) {
            case "sub":
                String Pwd = new String(PwdJF.getPassword());
                String newPwd = new String(newPwdJF.getPassword());
                String CnewPwd = new String(CnewPwdJF.getPassword());
                System.out.println(newPwdJF.getPassword());
                if(Pwd.equals(""))
                {
                    JOptionPane.showMessageDialog(null, "原密码不能为空");
                    newPwdJF.setText("");    //设置为空
                    CnewPwdJF.setText("");
                    break;
                }
                if (newPwd.equals("")) {
                    JOptionPane.showMessageDialog(null, "新密码不能为空");
                    newPwdJF.setText("");    //设置为空
                    CnewPwdJF.setText("");
                    break;
                }
                if (CnewPwd.equals("")) {
                    JOptionPane.showMessageDialog(null, "再次输入不能为空");
                    CnewPwdJF.setText("");
                    break;
                }
                if (newPwd.equals(CnewPwd)) {
                    if (Pwd.equals(newPwd)) {
                        JOptionPane.showMessageDialog(null, "不能与原密码一致!");
                        newPwdJF.setText("");    //设置为空
                        CnewPwdJF.setText("");
                        break;
                    } else {
                        UserController userController = new UserController();
                        boolean flag= userController.updatePwd(users.getTel(),Pwd,newPwd);
                        if(flag){
                            JOptionPane.showMessageDialog(null, "改密成功,请重新登录");
                            UserCloserUtil.Close();
                            UserLoginView userLoginView = new UserLoginView();
                            System.out.println("修改成功");
                            break;
                        }
                        else {
                            JOptionPane.showMessageDialog(null, "改密失败");
                        }
                    }
                } else {
                    JOptionPane.showMessageDialog(null, "密码输入不一致!");
                }
                break;
            case "reb":
                clear();
                break;
        }
    }

    /**
     * 清空密码
     */
    private void clear() {
        // TODO Auto-generated method stub
        PwdJF.setText("");
        newPwdJF.setText("");    //设置为空
        CnewPwdJF.setText("");
    }

    @Override
    public void mousePressed(MouseEvent e) {

    }

    @Override
    public void mouseReleased(MouseEvent e) {

    }

    @Override
    public void mouseEntered(MouseEvent e) {

    }

    @Override
    public void mouseExited(MouseEvent e) {

    }
}

AddBanksView

package com.pdsu.bankdemo.view;

import com.pdsu.bankdemo.controller.BanksController;
import com.pdsu.bankdemo.dao.BanksDao;
import com.pdsu.bankdemo.entity.Banks;
import com.pdsu.bankdemo.entity.User;

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.List;

public class AddBanksView extends JPanel implements MouseListener {
    private JPanel top, bom;
    private JLabel banksNumJL, moneyJL, banksNameJL;
    private JTextField banksNumJF, moneyJF, banksNameJF;
    private JButton sub;
    private User user;
    private BanksDao bdao = new BanksDao();
    private Banks banks;

    public AddBanksView(User user) {
        this.user = user;
        this.setLayout(new BorderLayout());
        top = new JPanel();
        top.setLayout(new GridLayout(3, 2, 20, 20));
        //卡号
        banksNumJL = new JLabel("卡号:", JLabel.CENTER);
        banksNumJL.setFont(new Font("宋体", 1, 20));
        banksNumJL.setIcon(new ImageIcon("img/username_icon.png"));
        banksNumJF = new JTextField(15);
        top.add(banksNumJL);
        top.add(banksNumJF);
        //开户行
        banksNameJL = new JLabel("开户行:", JLabel.CENTER);
        banksNameJL.setIcon(new ImageIcon("img/name_icon.png"));
        banksNameJL.setFont(new Font("宋体", 1, 20));

        banksNameJF = new JTextField(15);
        top.add(banksNameJL);
        top.add(banksNameJF);
        //余额
        moneyJL = new JLabel("余额:", JLabel.CENTER);
        moneyJL.setFont(new Font("宋体", 1, 20));
        moneyJL.setIcon(new ImageIcon("img/balance_icon.png"));
        moneyJF = new JTextField(15);
        top.add(moneyJL);
        top.add(moneyJF);
        this.add(top, BorderLayout.CENTER);
        bom = new JPanel();
        sub = new JButton("提交");
        sub.setName("sub");
        sub.addMouseListener(this);
        bom.add(sub);
        this.add(bom, BorderLayout.SOUTH);


    }

    @Override
    public void mouseClicked(MouseEvent e) {
        String bankNum = banksNumJF.getText();
        String money = moneyJF.getText();
        String bankName = banksNameJF.getText();
        if (bankNum.equals("")) {
            JOptionPane.showMessageDialog(null, "卡号不能为空");
            clear();
            return;
        }
        else {
            List<Banks> blist = bdao.read();
            for(Banks b:blist )
            {
                if(b.getBankNum().equals(bankNum))
                {
                    JOptionPane.showMessageDialog(null, "卡号已存在");
                    clear();
                    return;
                }
            }
        }
        if (money.equals("")) {
            JOptionPane.showMessageDialog(null, "余额不能为空");
            return;
        }
        if (bankName.equals("")) {
            JOptionPane.showMessageDialog(null, "开户行不能为空");
            banksNumJF.setText("");
            return;
        }
        double mo = Double.parseDouble(money);
        BanksController b = new BanksController();
        Banks banks = new Banks(bankNum, mo, bankName, user.getTel());
        boolean flag = b.addBanks(banks);
        {
            if (flag) {
                JOptionPane.showMessageDialog(null, "添加成功");
                clear();
            } else {
                JOptionPane.showMessageDialog(null, "添加失败,请检查信息是否正确");
                clear();
            }
        }

    }
    /**
     * 清空密码重置下拉框
     */
    private void clear() {
        // TODO Auto-generated method stub
        moneyJF.setText("");    //余额重置
        banksNumJF.setText("");//卡号重置
        banksNameJF.setText("");//开户行重置
    }

    @Override
    public void mousePressed(MouseEvent e) {

    }

    @Override
    public void mouseReleased(MouseEvent e) {

    }

    @Override
    public void mouseEntered(MouseEvent e) {

    }

    @Override
    public void mouseExited(MouseEvent e) {

    }
}

ShowBanksView

package com.pdsu.bankdemo.view;

import com.pdsu.bankdemo.entity.Banks;

import javax.swing.*;
import java.util.List;

/**
 * 显示银行卡
 */
public class ShowBanksView extends JPanel {
    List<Banks> list;

    public ShowBanksView(List<Banks> list) {
        this.list = list;
        JScrollPane js = new JScrollPane();
        Object[] clum = {"卡号", "开户行", "余额"};
        Object[][] data = new Object[list.size()][3];//三列
        for (int i = 0; i < list.size(); i++) {
            Banks b = list.get(i);
            data[i][0] = b.getBankNum();//卡号
            data[i][1] = b.getBankName();//开户行
            data[i][2] = b.getMoney();//余额
        }
        JTable jTable = new JTable(data, clum);
        js.setViewportView(jTable);
        this.add(js);
    }
}

AddUserMoneyView

package com.pdsu.bankdemo.view;

import com.pdsu.bankdemo.controller.BanksController;
import com.pdsu.bankdemo.controller.UserController;
import com.pdsu.bankdemo.entity.Banks;
import com.pdsu.bankdemo.entity.User;

import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.List;

/**
 * 存款页面
 */
public class AddUserMoneyView extends JPanel implements MouseListener {
    private JPanel top, bom;
    private JLabel moneyJL, banksNumJL;
    private JTextField moneyJF;
    private JComboBox banksNumJB;
    private JButton sub, reb;
    private User user;

    public AddUserMoneyView(User user, List<Banks> list) {
        this.user = user;
        this.setLayout(new BorderLayout());
        top = new JPanel();
        top.setLayout(new GridLayout(2, 2, 20, 20));
        moneyJL = new JLabel("请输入充值金额:", JLabel.CENTER);
        moneyJL.setIcon(new ImageIcon("img/balance_icon.png"));
        moneyJL.setFont(new Font("宋体", 1, 20));
        moneyJF = new JTextField(15);
        top.add(moneyJL);
        top.add(moneyJF);
        banksNumJL = new JLabel("请选择充值账户:", JLabel.CENTER);
        banksNumJL.setIcon(new ImageIcon("img/username_icon.png"));
        banksNumJL.setFont(new Font("宋体", 1, 20));
        banksNumJB = new JComboBox();
        banksNumJB.addItem("--请选择--");
        for (Banks b : list) {
            banksNumJB.addItem(b.getBankNum());
        }
        top.add(banksNumJL);
        top.add(banksNumJB);
        this.add(top, BorderLayout.CENTER);

        bom = new JPanel();
        sub = new JButton("充值");
        sub.setName("sub");
        sub.addMouseListener(this);
        reb = new JButton("重置");
        reb.setName("reb");
        reb.addMouseListener(this);
        bom.add(sub);
        bom.add(reb);
        this.add(bom, BorderLayout.SOUTH);

    }

    @Override
    public void mouseClicked(MouseEvent e) {
        String str = e.getComponent().getName();
        switch ((str)) {
            case "sub":
                String moneys = moneyJF.getText();
                String banksNum = banksNumJB.getSelectedItem().toString();
                if (moneys.equals("")) {
                    JOptionPane.showMessageDialog(null, "金额不能为空!");
                    moneyJF.setText("");    //设置为空
                    banksNumJB.setSelectedIndex(0);
                    return;
                }
                if ("--请选择--".equals(banksNum)) {
                    JOptionPane.showMessageDialog(null, "请选择银行卡!");
                    banksNumJB.setSelectedIndex(0);
                    return;
                }
                try {
                    double money = Double.parseDouble(moneys);
                    if (money <= 0) {
                        JOptionPane.showMessageDialog(null, "充值金额需大于0!!");
                        moneyJF.setText("");    //设置为空
                        banksNumJB.setSelectedIndex(0);
                        return;
                    }

                } catch (Exception ex) {
                    JOptionPane.showMessageDialog(null, "请输入数字");
                    clear();
                    return;
                }
                double money = Double.parseDouble(moneys);
                BanksController bController = new BanksController();
                UserController uController = new UserController();
                boolean flag = bController.DeleteBankMoney(banksNum, money);
                if (flag) {
                    uController.AddUserMoney(user.getTel(), money);
                    user.setMoney(user.getMoney() + money);
                    JOptionPane.showMessageDialog(null, "充值成功!");
                    clear();
                } else {
                    JOptionPane.showMessageDialog(null, "银行卡余额不足,请选择银行卡!");
                    clear();
                }
                break;
            case "reb":
                clear();
                break;
        }

    }

    /**
     * 清空密码重置下拉框
     */
    private void clear() {
        // TODO Auto-generated method stub
        moneyJF.setText("");    //设置为空
        banksNumJB.setSelectedIndex(0);
    }

    @Override
    public void mousePressed(MouseEvent e) {

    }

    @Override
    public void mouseReleased(MouseEvent e) {

    }

    @Override
    public void mouseEntered(MouseEvent e) {

    }

    @Override
    public void mouseExited(MouseEvent e) {

    }
}

DeleteUserMoneyView

package com.pdsu.bankdemo.view;

import com.pdsu.bankdemo.controller.BanksController;
import com.pdsu.bankdemo.controller.UserController;
import com.pdsu.bankdemo.entity.Banks;
import com.pdsu.bankdemo.entity.User;

import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.List;

/**
 * 存款页面
 */
public class DeleteUserMoneyView extends JPanel implements MouseListener {
    private JPanel top, bom;
    private JLabel moneyJL, banksNumJL;
    private JTextField moneyJF;
    private JComboBox banksNumJB;
    private JButton sub, clo;
    private User user;

    public DeleteUserMoneyView(User user, List<Banks> list) {
        this.user = user;
        this.setLayout(new BorderLayout());
        top = new JPanel();
        top.setLayout(new GridLayout(2, 2, 20, 20));
        moneyJL = new JLabel("请输入提现金额:", JLabel.CENTER);
        moneyJL.setIcon(new ImageIcon("img/balance_icon.png"));
        moneyJL.setFont(new Font("宋体", 1, 20));
        moneyJF = new JTextField(15);
        top.add(moneyJL);
        top.add(moneyJF);
        banksNumJL = new JLabel("请选择提现账户:", JLabel.CENTER);
        banksNumJL.setIcon(new ImageIcon("img/username_icon.png"));
        banksNumJL.setFont(new Font("宋体", 1, 20));
        banksNumJB = new JComboBox();
        banksNumJB.addItem("--请选择--");
        for (Banks b : list) {
            banksNumJB.addItem(b.getBankNum());
        }
        top.add(banksNumJL);
        top.add(banksNumJB);
        this.add(top, BorderLayout.CENTER);

        bom = new JPanel();
        sub = new JButton("提现");
        sub.setName("sub");
        sub.addMouseListener(this);
        clo = new JButton("重置");
        clo.setName("clo");
        clo.addMouseListener(this);
        bom.add(sub);
        bom.add(clo);
        this.add(bom, BorderLayout.SOUTH);

    }

    @Override
    public void mouseClicked(MouseEvent e) {
        String str = e.getComponent().getName();
        switch ((str)) {
            case "sub":
                String moneys = moneyJF.getText();
                String banksNum = banksNumJB.getSelectedItem().toString();
                if (moneys.equals("")) {
                    JOptionPane.showMessageDialog(null, "金额不能为空!");
                    clear();
                    return;
                }
                if ("--请选择--".equals(banksNum)) {
                    JOptionPane.showMessageDialog(null, "请选择银行卡!");
                    moneyJF.setText("");    //设置为空
                    banksNumJB.setSelectedIndex(0);
                    return;
                }
                try {
                    double money = Double.parseDouble(moneys);
                    if (money <= 0) {
                        JOptionPane.showMessageDialog(null, "提现金额需大于0!!");
                        clear();
                        return;
                    }

                } catch (Exception ex) {
                    JOptionPane.showMessageDialog(null, "请输入数字");
                    clear();
                    return;
                }
                double money = Double.parseDouble(moneys);
                BanksController bController = new BanksController();
                UserController uController = new UserController();
                boolean flag = bController.AddBankMoney(banksNum, money);
                if (flag) {
                    uController.DeleteUserMoney(user.getTel(), money);
                    user.setMoney(user.getMoney() - money);
                    JOptionPane.showMessageDialog(null, "提现成功!");
                    clear();
                } else {
                    JOptionPane.showMessageDialog(null, "账户余额不足");
                    clear();
                }
                break;
            case "clo":
                clear();
                break;
        }
    }

    /**
     * 清空密码重置下拉框
     */
    private void clear() {
        // TODO Auto-generated method stub
        moneyJF.setText("");    //设置为空
        banksNumJB.setSelectedIndex(0);
    }


    @Override
    public void mousePressed(MouseEvent e) {

    }

    @Override
    public void mouseReleased(MouseEvent e) {

    }

    @Override
    public void mouseEntered(MouseEvent e) {

    }

    @Override
    public void mouseExited(MouseEvent e) {

    }
}

TransToOtherView

package com.pdsu.bankdemo.view;

import com.pdsu.bankdemo.controller.UserCloserUtil;
import com.pdsu.bankdemo.controller.UserController;
import com.pdsu.bankdemo.dao.UserDao;
import com.pdsu.bankdemo.entity.User;

import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import java.util.List;

public class TransToOtherView extends JPanel implements MouseListener {
    private JPanel top, bom;
    private JLabel moneyJL, moveJL,adMJL;
    private JTextField moneyJF, moveJF,adMJF;
    private JButton sub,res;
    private User users;
    private UserDao udao = new UserDao();
    private int count;

    public TransToOtherView(User user) {
        this.users = user;
        this.setLayout(new BorderLayout());
        //上半部分
        top = new JPanel();
        JLabel topJL = new JLabel("转账");
        topJL.setFont(new Font("宋体",1,24));
        top.add(topJL);
        this.add(top,BorderLayout.NORTH);
        //下半部分
        bom = new JPanel();
        bom.setLayout(new GridLayout(5,2,10,10));
        bom.setBorder(new EmptyBorder(0,40,40,40));
        EmptyBorder jbo = new EmptyBorder(0,50,0,0);//上左下右
        EmptyBorder fbo = new EmptyBorder(20,0,20,20);
        /**余额*/
        //余额
        adMJL = new JLabel("余额:", JLabel.CENTER);
        adMJL.setIcon(new ImageIcon("img/balance_icon.png"));
        adMJL.setFont(new Font("宋体", 1, 18));
        adMJL.setBorder(jbo);
        adMJF = new JTextField(20);
        adMJF.setEditable(false);
        adMJF.setBorder(fbo);
        adMJF.setText(String.valueOf(users.getMoney()));
        bom.add(adMJL);
        bom.add(adMJF);

        /**输入转账金额*/
        moveJL = new JLabel("请输入转账金额",JLabel.CENTER);
        moveJL.setIcon(new ImageIcon("img/balance_icon.png"));
        moveJL.setFont(new Font("宋体",1,18));
        moveJL.setBorder(jbo);
        moveJF = new JTextField(20);
        moveJF.setBorder(fbo);
        bom.add(moveJL);
        bom.add(moveJF);
        /**输入对方账号*/
        moneyJL = new JLabel("请输入对方账号",JLabel.CENTER);
        moneyJL.setIcon(new ImageIcon("img/username_icon.png"));
        moneyJL.setFont(new Font("宋体",1,18));
        moneyJL.setBorder(jbo);
        moneyJF = new JTextField(20);
        moneyJF.setBorder(fbo);
        bom.add(moneyJL);
        bom.add(moneyJF);
        /**提交按钮*/
        sub = new JButton("提交");
        sub.setName("sub");
        sub.addMouseListener(this);
        bom.add(sub);
        /**重置按钮*/
        res = new JButton("重置");
        res.setName("res");
        res.addMouseListener(this);
        bom.add(res);


        this.add(bom);
        this.add(bom,BorderLayout.SOUTH);
    }

    public void mouseClicked(MouseEvent e) {
        String str = e.getComponent().getName();
        String move = moveJF.getText();
        String money = moneyJF.getText();
        switch ((str))
        {
            case "sub":
                if (move.equals("")) {
                    JOptionPane.showMessageDialog((Component) null, "转账金额不能为空!");
                    moneyJF.setText("");
                    moveJF.setText("");
                    return;
                } else if (money.equals("")) {
                    JOptionPane.showMessageDialog((Component) null, "转账账号不能为空!");
                    moveJF.setText("");
                    return;
                } else {
                    List<User> u1 = udao.read();
                    for (User u : u1) {
                        if (money.equals(u.getTel())) {
                            count++;
                        }
                    }
                    if (count == 0) {
                        JOptionPane.showMessageDialog((Component) null, "该账号不存在!");
                        moneyJF.setText("");
                        moveJF.setText("");
                        return;
                    } else {
                        Double m_ove;
                        try {
                            m_ove = Double.parseDouble(move);
                            if (m_ove <= 0.0D) {
                                JOptionPane.showMessageDialog((Component) null, "转账金额不能小于零!!");
                                moneyJF.setText("");
                                moveJF.setText("");
                                return;
                            }
                        } catch (Exception var8) {
                            JOptionPane.showMessageDialog((Component) null, "请输入数字!!");
                            moneyJF.setText("");
                            moveJF.setText("");
                            return;
                        }
                        m_ove = Double.parseDouble(move);
                        UserController userController = new UserController();
                        boolean flag = userController.DeleteUserMoney(users.getTel(), m_ove);
                        if (flag) {
                            userController.AddUserMoney(money, m_ove);
                            users.setMoney(users.getMoney() - m_ove);
                            adMJF.setText(String.valueOf(users.getMoney()));
                            JOptionPane.showMessageDialog(null, "转账成功!");
                            moneyJF.setText("");
                            moveJF.setText("");
                        } else {
                            JOptionPane.showMessageDialog((Component) null, "银行卡余额不足,请更换银行卡");
                        }
                    }
                }
                break;
            case  "res":
                moneyJF.setText("");
                moveJF.setText("");
                break;
        }

    }

    public void mousePressed(MouseEvent e) {
    }

    public void mouseReleased(MouseEvent e) {
    }

    public void mouseEntered(MouseEvent e) {
    }

    public void mouseExited(MouseEvent e) {
    }
}

UserManageView

package com.pdsu.bankdemo.view;

import com.pdsu.bankdemo.entity.Banks;
import com.pdsu.bankdemo.entity.User;

import javax.swing.*;
import java.util.List;

public class UserManageView extends JPanel {
    List<User> list;
    public UserManageView(List<User> list) {
        this.list = list;
        JScrollPane js = new JScrollPane();
        Object[] clum = {"用户名", "手机号", "真实姓名", "身份证", "余额"};
        Object[][] data = new Object[list.size()][5];//三列
        for (int i = 0; i < list.size(); i++) {
            User u = list.get(i);
            data[i][0] = u.getName();//用户名
            data[i][1] = u.getTel();//手机号
            data[i][2] = u.getRelName();//真实姓名
            data[i][3] = u.getCardNum();//身份证
            data[i][4] = u.getMoney();//余额

        }
        JTable jTable = new JTable(data, clum);
        js.setViewportView(jTable);
        this.add(js);
    }
}



Test

Main

package com.pdsu.bankdemo.test;

import com.pdsu.bankdemo.view.UserLoginView;

public class Main {
    public static void main(String[] args) {
        //启动程序
        UserLoginView userLoginView = new UserLoginView();

    }
}

制作不易,动动小手支持一下,感谢!

  • 40
    点赞
  • 99
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
开始做本项目时对Struts架构理解的并不是很深刻,导致项目有些模块 互相耦合的比较紧密,不利于以后扩展和改进。 1.SearchGene写的比较乱,程序可读性以及可维护性都不好,下一步拟通过接口编程来现 查询字符串的自动生成。 2.BusinessDelegate写成了一个Singleton是否合适,每一个客户请求后都会new 一个业务对象 对其服务,是否有更好的解决办法以提高程序的效率。 3.Struts-config文件的Action设计的有些散乱,下一步改进。 4.业务对象和DAO合在一起了,降低了程序的扩展性和可维护性,下一步会把二者分开以降低各层 之间的耦合。 5.Struts1.2.7 的 Validator验证框架 不稳定,只能显示第一个参数,同时执行多个验证时参数的显示顺序也不对,是程序原因还是 配置不正确,再上查找。 6.本项目大部分错误都用异常的形式来处理,异常虽可以使程序清晰,但也会消耗大量资,若某些错误如密码错,余额不足等多次 出现则服务器响应速度必定会很慢,下一步将经常发生的错误使用硬代码来处理,减少资浪费。 7.持久层操作大多依赖存储过程和触发器程序的部署会比较复杂,而且会使持久层和数据库耦合过紧,不利于维护,下一步准备用Hibernate 架构改进持久层,如有条件则还可用Spring框架来规范业务层,和统一整个项目。(学习Hibernate和Spring大约1个月时间)。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

慢热型网友.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值