900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > java银行管理系统(MySql+JDBC+数据库(Druid数据库连接池)+GUI)重要代码有解析注释

java银行管理系统(MySql+JDBC+数据库(Druid数据库连接池)+GUI)重要代码有解析注释

时间:2021-03-30 10:07:58

相关推荐

java银行管理系统(MySql+JDBC+数据库(Druid数据库连接池)+GUI)重要代码有解析注释

java银行管理系统

小白又来水博客了


文章目录

java银行管理系统一、项目需求与分析:二、知识及有关技术的概述:三、银行管理系统需求的具体实现:四、部分功能预览:五、Last:

一、项目需求与分析:

该系统主要有如下业务功能:每个人储户、管理员都拥有一个系统账号和密码。管理员可执行增、删、改、查、用户等系统操作。储户可执行存取款、转账汇款、打印流水、修改密码、验证信息

二、知识及有关技术的概述:

与数据库建立链接

1.1、使用Druid数据库连接池技术(博主采用):

/*** 使用Druid数据库连接池技术*/private static DataSource source1;static{try {Properties pros = new Properties();InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("druid.properties");pros.load(is);source1 = DruidDataSourceFactory.createDataSource(pros);} catch (Exception e) {e.printStackTrace();}}public static Connection getConnection3() throws SQLException{Connection conn = source1.getConnection();return conn;}

Druid数据库配置文件:

/***以下是mysql5.0的配置*/url=jdbc:mysql://localhost:3306/test1?rewriteBatchedStatements=trueusername=rootpassword=123456driverClassName=com.mysql.jdbc.DriverinitialSize=10maxActive=20maxWait=1000filters=wall

1.2、使用C3P0的数据库连接池技术:

** @Description 使用C3P0的数据库连接池技术* @author shkstart* @return* @throws SQLException*///数据库连接池只需提供一个即可。private static ComboPooledDataSource cpds = new ComboPooledDataSource("hellc3p0");public static Connection getConnection1() throws SQLException{Connection conn = cpds.getConnection();return conn;}

1.3、创建一个DBCP数据库连接池:

//创建一个DBCP数据库连接池private static DataSource source;static{try {Properties pros = new Properties();FileInputStream is = new FileInputStream(new File("src/dbcp.properties"));pros.load(is);source = BasicDataSourceFactory.createDataSource(pros);} catch (Exception e) {e.printStackTrace();}}public static Connection getConnection2() throws Exception{Connection conn = source.getConnection();return conn;}

2.分别对管理、用户、以及流水记录建立的MySql表:

Administrator:

Transfer:

User:

3.对于GUI事件监听博主大量采用ActionListener(问就是学术浅):

书写格式record.addActionListener(new AbstractAction() {@Overridepublic void actionPerformed(ActionEvent e) {这里可以调用所封装的类:}});作用当鼠标左键点击窗口中的按钮时触发

三、银行管理系统需求的具体实现:

首先给项目分层(利用MVC)思想:

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

创建以下7个层:

com.MyBank.been 实体类层 放置实体类com.MyBank.dao dao层 操作数据com.MyBank.service 服务层 处理业务com.MyBank.service 控制层 控制操作com.MyBank.utils 配合dao层 链接数据com.MyBank.test 测试com.MyBank.view 视图层 展示信息

实体层、持久层等结构如下:

Administrator:

package com.MyBank.been;public class Administrator {private String Aname;private String Acord;public String getAname() {return Aname;}public void setAname(String aname) {Aname = aname;}public String getAcord() {return Acord;}public void setAcord(String acord) {Acord = acord;}public Administrator() {}@Overridepublic String toString() {return "Administrator{" +"Aname='" + Aname + '\'' +", Acord='" + Acord + '\'' +'}';}}

Transfer :

package com.MyBank.been;public class Transfer {private String transfer_people;//转账人private String transfer_object;//转账的对象private double transfer_money;//转账数目private String transfer_data;//转账日期private double money;public Transfer() {super();}public Transfer(String transfer_people, String transfer_object, double transfer_money, String transfer_data,double money) {super();this.transfer_people = transfer_people;this.transfer_object = transfer_object;this.transfer_money = transfer_money;this.transfer_data = transfer_data;this.money = money;}public String getTransfer_people() {return transfer_people;}public void setTransfer_people(String transfer_people) {this.transfer_people = transfer_people;}public String getTransfer_object() {return transfer_object;}public void setTransfer_object(String transfer_object) {this.transfer_object = transfer_object;}public double getTransfer_money() {return transfer_money;}public void setTransfer_money(double transfer_money) {this.transfer_money = transfer_money;}public String getTransfer_data() {return transfer_data;}public void setTransfer_data(String transfer_data) {this.transfer_data = transfer_data;}public double getMoney() {return money;}public void setMoney(double money) {this.money = money;}@Overridepublic String toString() {return "Transfer [transfer_people=" + transfer_people + ", transfer_object=" + transfer_object+ ", transfer_money=" + transfer_money + ", transfer_data=" + transfer_data + ", money=" + money + "]";}}

User :

package com.MyBank.been;public class User {private String name;private String password; //密码private String id; //身份证号private String number; //银行卡号private String payment; //支付密码private String phone; //手机号private double balance; //余额private String acount; //账号public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getNumber() {return number;}public void setNumber(String number) {this.number = number;}public String getPayment() {return payment;}public void setPayment(String payment) {this.payment = payment;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public double getBalance() {return balance;}public void setBalance(double balance) {this.balance = balance;}public String getAcount() {return acount;}public void setAcount(String acount) {this.acount = acount;}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", password='" + password + '\'' +", id='" + id + '\'' +", number='" + number + '\'' +", payment='" + payment + '\'' +", phone='" + phone + '\'' +", balance=" + balance +", acount='" + acount + '\'' +'}';}}

dao层:

Administrator

package com.MyBank.dao;import com.MyBank.been.Administrator;import com.MyBank.utils.BaseUtils;import mons.dbutils.QueryRunner;import mons.dbutils.handlers.BeanHandler;import java.sql.SQLException;public class AdministratorDao {//找到用户和密码public Administrator findNameAndCord(String str1, String str2){String sql = "select *from administrator where Aname=? and Acord=?";QueryRunner qr = BaseUtils.getQueryRunner();try {return qr.query(sql,new BeanHandler<Administrator>(Administrator.class),str1,str2);} catch (SQLException throwables) {throwables.printStackTrace();}return null;}//删除用户public int delectUser(String str1, String str2){String sql = "delete from user where user=? and acount=?";QueryRunner qr = BaseUtils.getQueryRunner();try {int update = qr.update(sql, str1, str2);return update;} catch (SQLException throwables) {throwables.printStackTrace();}return 0;}//更新姓名 账号 密码public int UpdateCord(String str1,String str2,String str3){String sql = "update user set acount=?,cord= ?where name=? ";QueryRunner qr = BaseUtils.getQueryRunner();try {int i =qr.update(sql,str2,str3,str1);return i;} catch (SQLException throwables) {throwables.printStackTrace();}return 0;}}

service层:

package com.MyBank.service;import com.MyBank.been.Transfer;import com.MyBank.been.User;import com.MyBank.dao.FindAllSql;import com.MyBank.dao.TransferInsertSql;import com.MyBank.dao.UserDao;import java.sql.SQLException;import java.util.List;public class UserService {/**** @param str1 用户名* @param str2 密码* @return*/public User findNameAndCord(String str1, String str2) {UserDao userDao = new UserDao();return userDao.findNameAndCord(str1, str2);}/**** @param str1 账号* @param str2 卡号* @param str3 身份证号* @return*/public User findIdAndNumberAndAcount(String str1, String str2, String str3) {UserDao userDao = new UserDao();return userDao.findIdAndNumberAndAcount(str1, str2, str3);}public int Insert(User user) {UserDao userDao = new UserDao();return userDao.Insert(user);}public User findPayment(String str2) throws SQLException {UserDao userDao = new UserDao();return userDao.findPayment(str2);}public User findCount(String str2) throws SQLException {UserDao userDao = new UserDao();return userDao.findCount(str2);}public boolean UpdateBlance(User user) {UserDao userDao = new UserDao();if (userDao.UpdateBlance(user) == 0)return false;elsereturn true;}public boolean UpdateCord(User user) {UserDao userDao = new UserDao();if (userDao.UpdateCord(user) == 0)return false;elsereturn true;}public List findAll(String str) {FindAllSql findAllSql = new FindAllSql();List<Transfer> list = findAllSql.findAll(str);if (list == null)return null;elsereturn list;}public int Insert1(Transfer tf) {TransferInsertSql insert = new TransferInsertSql();return insert.Insert1(tf);}}

view层:

package com.MyBank.view;import com.MyBank.been.Administrator;import com.MyBank.been.User;import com.MyBank.dao.AdministratorDao;import com.MyBank.service.UserService;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;/*** 登录注册类*/public class LoginPage extends JFrame {public void FirstRegister() {JFrame frame = new JFrame();Container c = frame.getContentPane();JTextField account = new JTextField();JPasswordField password = new JPasswordField();JButton record = new JButton("登录");JButton register = new JButton("注册");JButton forget = new JButton("忘记/修改密码");User user = new User();// 窗口设置frame.setTitle("欢迎进入银行");int width = Toolkit.getDefaultToolkit().getScreenSize().width;int height = Toolkit.getDefaultToolkit().getScreenSize().height;frame.setBounds(width / 2 - 200, height / 2 - 220, 650, 650);c.setLayout(new BorderLayout());frame.setResizable(false);frame.setVisible(true);frame.setDefaultCloseOperation(EXIT_ON_CLOSE);JPanel jpanel = new JPanel();jpanel.setBackground(Color.cyan);jpanel.setLayout(null);JLabel Bank = new JLabel("Bank");Bank.setFont(new Font("宋体", Font.PLAIN, 30));jpanel.add(Bank);Bank.setBounds(280, 10, 100, 30);c.add(jpanel, "North");// 创建两个单选按钮JRadioButton radioBtn01 = new JRadioButton("管理员");radioBtn01.setFont(new Font("宋体", Font.PLAIN, 20));radioBtn01.setBounds(180, 400, 100, 20);JRadioButton radioBtn02 = new JRadioButton("用 户");radioBtn02.setFont(new Font("宋体", Font.PLAIN, 20));radioBtn02.setBounds(400, 400, 100, 20);// 创建按钮组,把两个单选按钮添加到该组ButtonGroup btnGroup = new ButtonGroup();btnGroup.add(radioBtn01);btnGroup.add(radioBtn02);jpanel.add(radioBtn01);jpanel.add(radioBtn02);ImageIcon jpg = new ImageIcon("1.jpg");jpg.setImage(jpg.getImage().getScaledInstance(200, 200, Image.SCALE_DEFAULT));JLabel a3 = new JLabel(jpg);a3.setBounds(240, 50, 200, 200);c.add(a3);JLabel a1 = new JLabel("账号:");a1.setFont(new Font("宋体", Font.PLAIN, 20));a1.setBounds(180, 280, 50, 20);JLabel a2 = new JLabel("密码:");a2.setFont(new Font("宋体", Font.PLAIN, 20));a2.setBounds(180, 360, 50, 20);jpanel.add(a1);jpanel.add(a2);account.setBounds(280, 275, 150, 30);account.setFont(new Font("宋体", Font.PLAIN, 18));password.setBounds(280, 355, 150, 30);password.setFont(new Font("宋体", Font.PLAIN, 18));jpanel.add(account);jpanel.add(password);c.add(jpanel, "Center");jpanel.add(register);jpanel.add(forget);register.setBounds(15, 550, 200, 40);register.setFont(new Font("宋体", Font.PLAIN, 15));forget.setBounds(425, 550, 200, 40);forget.setFont(new Font("宋体", Font.PLAIN, 15));c.add(jpanel);jpanel.add(record);record.setBounds(270, 450, 150, 75);record.setFont(new Font("宋体", Font.PLAIN, 20));c.add(jpanel);JLayeredPane jp = new JLayeredPane();register.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {// 触发注册弹窗homeRegist homeRegist = new homeRegist();homeRegist.RegisterDialog();frame.setVisible(false);}});forget.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {// 触发忘记密码弹窗homeVerify honVerify = new homeVerify();honVerify.ForgetDialog(user);frame.setVisible(false);}});record.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {// 触发登录弹窗String str1 = account.getText();String str2 = password.getText();UserService userService = new UserService();AdministratorDao adminDao = new AdministratorDao();User user3 = userService.findNameAndCord(str1,str2);Administrator admin = adminDao.findNameAndCord(str1,str2);if(user3!=null && radioBtn02.isSelected()) {JOptionPane.showMessageDialog(null, "登录成功", "提示", JOptionPane.WARNING_MESSAGE);HomeMenu homeMenu = new HomeMenu();homeMenu.HomeMenu(user3);frame.setVisible(false);}else if(admin != null && radioBtn01.isSelected()){JOptionPane.showMessageDialog(null, "登录成功", "提示", JOptionPane.WARNING_MESSAGE);A_homeMain home = new A_homeMain();home.a_homeMain();frame.setVisible(false);}else {JOptionPane.showMessageDialog(null, "信息错误.", "提示", JOptionPane.ERROR_MESSAGE);}}});}}

四、部分功能预览:

主页面:

注册页面:

管理员菜单

查看菜单

用户菜单

部分功能展示:

五、Last:

资源+3232691860,有问题都可以远程解决。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。