2022年JAVA课程设计-银行存取管理系统 .pdf
1 JAVA 程序设计课程设计报告设计题目:银行存取系统设计与实现学院名称:信息工程学院专业班级:13 计本 2 姓名:王田学号:1312252233 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 37 页 - - - - - - - - - 2 目录一 需求分析。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。3 二 概要设计。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。3 三 详细设计。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。3 四 模块中数据库访问。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。3 4.1 数据库核对用户名和密码(登录)。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。3 4.2 向数据库添加一行(注册)。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。4 4.3 修改数据库中数据(取款、存款、转账、修改密码码)。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。54.4 查询数据库中数据(显示余额、查询修改)。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。5 4.5 删除数据库中一行(注销用户)。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。6 五 软件的整体规划。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。7 5.1 登录界面 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。7 5.2 用户业务界面。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。8 六 数据库设计。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。8 七 软件测试。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。8 7.1 登录界面(已有用户登录不能登录其他用户)。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。9 7.2 注册界面(有空文本框有提示)。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。9 7.3 用户主页(窗口关闭按钮不可以)。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。10 7.4 存款 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。10 7.5 取款(余额不足有提示)。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。10 7.6 转账(余额不足、卡号不存在都有提示窗口)。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。11 7.7 查询修改(卡号不可修改)。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。11 7.8 数据库截图 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。11 7.9 测试方法 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。12 八 总结。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。12 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 37 页 - - - - - - - - - 3 一 需求分析本软件主要是为用户在银行自助服务的目的设计。主要业务包括注册、取款、存款、转账、修改密码、 查询余额和查询修改信息等项目,一个用户只允许操作自己的信息,保证用户账户的安全。二 概要设计主要设计可以为用户服务的ATM机客户端,用户可以在登录界面注册自己的卡号,登录后可以进行取款、存款、转账、修改密码、查询余额和查询修改信息的业务,所有操作都会保存数据库。实现银行自助服务的目的。三 将用户需求模块化根据概要设计的原则来分析一下本项目的用户需求,并最终转化成用程序语言描述的模块。什么样的需求才是一个模块?模块应该具备如下几个特征。(1) 登录主界面:用类 a 来实现主界面的显示, 用 Denlu 类中的 checkUser(String k,String m)方法链接数据库核对用户名和密码是否正确,如果正确返回1,如果卡号不存在返回2,如果读取数据库失败返回3。(2)用户注册:用类Zc 来实现注册界面的显示,用Denlu 类中的zhucezh(String name,String sex,String kahao,String mima,String phone) 方法链接数据库,将新用户添加入数据库。(3)用户主页:用类Zhuye 来实现主页界面的显示,主页中包括业务有取款、存款、转账、 修改密码、查询余额和查询修改信息,最后有退出按钮 (不能使用窗口关闭按钮退出主页,一个用户登录其他用户不能登录)。1取款:用类Qukuan 来实现取款窗口的显示,用Denlu 类中的 qukuan(long k,long j) 方法链接数据库操作数据。2存款:用类Cunkuan 来实现存款窗口的显示,用Denlu 类中的 cunkuan(long k,long j)方法链接数据库操作数据。3转账:用类 Zuanzhang来实现转账窗口的显示,用 Denlu 类中的 zhuanzhang(long k,long j)方法链接数据库操作数据。4修改密码:用类Xiugai来实现修改密码窗口的显示,用Denlu 类中的gaimi(String y,String x) 方法链接数据库操作数据。5查询余额:用类Xianshi 来实现查询余额窗口的显示,用Denlu 类中的 chaxun()方法链接数据库操作数据。6查询修改:用类Chaxun 来实现查改窗口的显示,用Denlu 类中的chagai(String name,String sex,String phone)方法链接数据库操作数据。7注销:使用静态方法shanchu(String id)实现,注销时如果余额不为0,提示“取出余额在注销”。四 模块中数据库访问JAVA课程设计 - 银行存取管理系统(源代码)同学们,这里是银行存取管理系统的所有JAVA代码,下载复制粘贴就可以用。具体建包如下图: (按图片建立数据库 ) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 37 页 - - - - - - - - - 4 数据库截图所有源代码:类 :a.java package zhuce; import javax.swing.*; import java.awt.*; import java.awt.event.*; publicclass a extends JFrame static TextField Kahao =new TextField(1,20); static JPasswordField Mima =new JPasswordField(110,15); staticbooleanweiyi=false; public a() JFrame f=new JFrame( 银行管理系统 ); f.setBounds(200,100,700,600); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 37 页 - - - - - - - - - 5 f.setResizable(false); Container c=getContentPane(); /必须继承 JFrame 类c.setLayout(null); c.setBackground(Color.blue); /不采用任何布局方式f.add(c); JLabel label1=new JLabel( 欢迎您进入银行管理系统 ); JLabel label2=new JLabel( 银 行 卡 号: ); JLabel label3=new JLabel( 银行卡密码: ); label1.setFont(new Font(Serif,Font.BOLD,40); label1.setForeground(Color.WHITE ); /label1.setBounds(300,200,400,300); /改变标签位置错误label2.setFont(new Font(Serif,Font.BOLD,20); label2.setForeground(Color.WHITE ); label3.setFont(new Font(Serif,Font.BOLD,20); label3.setForeground(Color.WHITE ); JButton button1=new JButton( 登录 ); JButton button2=new JButton( 注册 ); BHandler h=new BHandler(); button1.addActionListener(h); button2.addActionListener(h); JPanel p1=new JPanel(); JPanel p2=new JPanel(); JPanel p3=new JPanel(); JPanel p4=new JPanel(); p1.setBounds(0,0,700,200); /改变面板位置错误p1.setBackground(Color.blue); p1.add(label1); p2.setBounds(0,200,700,50); p2.setBackground(Color.blue); p2.add(label2); p2.add(Kahao ); p3.setBounds(0,250,700,50); p3.setBackground(Color.blue); p3.add(label3); p3.add(Mima ); p4.setBounds(0,350,700,70); /改变面板位置错误p4.setBackground(Color.blue); p4.add(button1); p4.add(button2); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 37 页 - - - - - - - - - 6 c.add(p1); c.add(p2); c.add(p3); c.add(p4); f.setVisible(true); publicstaticvoid main(String args) a b=new a(); publicclass BHandler implements ActionListener publicvoid actionPerformed (ActionEvent event) if(event.getActionCommand()= 注册 ) Zc zhuce=new Zc(); /zhuce.validate(); elseif(event.getActionCommand()= 登录 ) if(Denlu.checkUser( Kahao .getText(),Mima .getText()=1&weiyi=false) weiyi=true; JOptionPane.showMessageDialog(a.this, 登录成功! ); Zhuye zhu=new Zhuye(); elseif( weiyi=true) JOptionPane.showMessageDialog(a.this, 请先退出已经登录的用户! ); else JOptionPane.showMessageDialog(a.this, 卡号或者密码不正确! ); else 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 37 页 - - - - - - - - - 7 类 :Chaxun.java package zhuce; import javax.swing.*; import zhuce.Zhuanzhang.BHandler; import java.awt.*; import java.awt.event.*; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; publicclass Chaxun extends JDialog TextField name =new TextField(20); TextField sex =new TextField(20); TextField kahao =new TextField(20); TextField phone =new TextField(20); public Chaxun(JFrame m,String s) super(m,s); setBounds(350,150,400,400); setVisible(true); setModal(false); setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE ); setResizable(false); setLayout(null); JLabel label1=new JLabel( 客户个人信息查询与修改 ); JLabel label2=new JLabel( 姓名: ); JLabel label3=new JLabel( 性别: ); JLabel label4=new JLabel( 卡号: ); JLabel label5=new JLabel( 手机号: ); label1.setFont(new Font(Serif,Font.BOLD,20); label2.setFont(new Font(Serif,Font.BOLD,13); label3.setFont(new Font(Serif,Font.BOLD,13); label4.setFont(new Font(Serif,Font.BOLD,13); label5.setFont(new Font(Serif,Font.BOLD,13); kahao .setEditable(false); /卡号不可修改JButton button1=new JButton( 确定 ); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 37 页 - - - - - - - - - 8 JButton button2=new JButton( 取消 ); BHandler h=new BHandler(); button1.addActionListener(h); button2.addActionListener(h); JPanel p1=new JPanel(); JPanel p2=new JPanel(); JPanel p3=new JPanel(); JPanel p4=new JPanel(); JPanel p5=new JPanel(); JPanel p6=new JPanel(); p1.setBounds(0,0,400,70); p1.add(label1); p2.setBounds(0,70,400,50); p2.add(label2); p2.add(name ); p3.setBounds(0,120,400,50); p3.add(label3); p3.add(sex ); p4.setBounds(0,170,400,50); p4.add(label4); p4.add(kahao ); p5.setBounds(0,220,400,50); p5.add(label5); p5.add(phone ); p6.setBounds(0,270,400,70); p6.add(button1); p6.add(button2); add(p1); add(p2); add(p3); add(p4); add(p5); add(p6); try / /1.注册驱动 String driverClassName = com.mysql.jdbc.Driver; Class.forName( com.mysql.jdbc.Driver); /2.连接数据库 Connection conn = DriverManager.getConnection( jdbc:mysql:/localhost:3306/ren, root, ); Statement stmt=conn.createStatement(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 37 页 - - - - - - - - - 9 ResultSet rs=stmt.executeQuery(select * from tablename where UserID=+Integer.parseInt(a.Kahao .getText()+); if(rs.next() name .setText(rs.getString(Username); sex .setText(rs.getString(Usersex); kahao .setText(rs.getString(UserID); phone .setText(rs.getString(Userphone); rs.close(); stmt.close(); conn.close(); catch(Exception sqle) System.err.println(sqle); JOptionPane.showMessageDialog(Zhuye.z, 系统故障, 请稍后在试! ); setVisible(true); publicclass BHandler implements ActionListener publicvoid actionPerformed (ActionEvent event) int x; if(event.getActionCommand()= 确定 ) x=Denlu.chagai( name .getText(),sex .getText(),phone .getText(); System.out .println(x); if(x=1) JOptionPane.showMessageDialog(Zhuye.z , 修改成功! );dispose(); else JOptionPane.showMessageDialog(Zhuye.z , 修改出错! );dispose(); elseif(event.getActionCommand()= 取消 ) dispose(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 37 页 - - - - - - - - - 10 类:Cunkuan.java package zhuce; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Cunkuan extends JDialog TextField jine=new TextField(10); public Cunkuan(JFrame m,String s) super(m,s); setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE); setBounds(400,250,400,200); setVisible(true); setResizable(false); setLayout(null); JLabel label1=new JLabel(请输入存款的金额); label1.setFont(new Font(Serif,Font.BOLD,20); JLabel label2=new JLabel(金额: ); label2.setFont(new Font(Serif,Font.BOLD,13); JButton button1=new JButton(确认 ); BHandler h=new BHandler(); button1.addActionListener(h); JPanel p1=new JPanel(); JPanel p2=new JPanel(); p1.setBounds(0,0,200,70); p1.add(label1); p2.setBounds(25,70,400,50); p2.add(label2); p2.add(jine); p2.add(button1); add(p1); add(p2); setVisible(true); public class BHandler implements ActionListener 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 37 页 - - - - - - - - - 11 public void actionPerformed (ActionEvent event) if(!(jine.getText().equals() int i=0; i=Denlu.cunkuan(Integer.parseInt(a.Kahao.getText(),Integer.parseInt(jine.getText(); if(i=1) JOptionPane.showMessageDialog(Zhuye.z,成功存款 +jine.getText()+元! ); dispose(); else JOptionPane.showMessageDialog(Zhuye.z,系统故障,请稍后在试!); else JOptionPane.showMessageDialog(Zhuye.z,请输入存款金额!); 类:Denlu.java package zhuce; import java.sql.*; publicclass Denlu public Denlu() publicstaticint shanchu(String id) long a= chaxun(); if(a=0) try Class.forName( com.mysql.jdbc.Driver); Connection conn = DriverManager.getConnection( jdbc:mysql:/localhost:3306/ren, root, ); Statement stmt=conn.createStatement(); String sql=delete from tablename where UserID=+Integer.parseInt(id)+; stmt.executeUpdate(sql); stmt.close(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 37 页 - - - - - - - - - 12 conn.close(); return 1; catch(Exception sqle) System.err.println(sqle); return 3; elsereturn 2; publicstaticintzhucezh(String name,String sex,String kahao,String mima,String phone) try / /1.注册驱动 String driverClassName = com.mysql.jdbc.Driver; Class.forName( com.mysql.jdbc.Driver); /2.连接数据库 Connection conn = DriverManager.getConnection( jdbc:mysql:/localhost:3306/ren, root, ); Statement stmt=conn.createStatement(); String sql=insert into tablename values(?,?,?,?,?,?); PreparedStatement ps=(PreparedStatement) conn.prepareStatement(sql); ps.setString(1,kahao); ps.setString(2,name); ps.setString(3,mima); ps.setString(4,phone); ps.setString(5,sex); ps.setInt(6,0); ps.executeUpdate(); ps.close(); stmt.close(); conn.close(); return 1; catch(Exception sqle) System.err.println(sqle); return 3; publicstaticint chagai(String name,String sex,String phone) try 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 37 页 - - - - - - - - - 13 / /1.注册驱动 String driverClassName = com.mysql.jdbc.Driver; Class.forName( com.mysql.jdbc.Driver); /2.连接数据库 Connection conn = DriverManager.getConnection( jdbc:mysql:/localhost:3306/ren, root, ); Statement stmt=conn.createStatement(); ResultSet rs=stmt.executeQuery(select * from tablename where UserID=+Integer.parseInt(a.Kahao .getText()+); if(rs.next() stmt.executeUpdate(Update tablename set Usersex=+sex+ ,Username=+name+ ,Userphone=+phone+ where UserID=+Integer.parseInt(a.Kahao .getText()+); rs.close(); stmt.close(); conn.close(); return 1; catch(Exception sqle) System.err.println(sqle); return 3; return 2; publicstaticint gaimi(String y,String x) long p; p=checkUser(a.Kahao .getText(),y); if(p=1) try / /1.注册驱动 String driverClassName = com.mysql.jdbc.Driver; Class.forName( com.mysql.jdbc.Driver); /2.连接数据库 Connection conn = DriverManager.getConnection( jdbc:mysql:/localhost:3306/ren, root, ); Statement stmt=conn.createStatement(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 37 页 - - - - - - - - - 14 ResultSet rs=stmt.executeQuery(select * from tablename where UserID=+Integer.parseInt(a.Kahao .getText()+); if(rs.next() stmt.executeUpdate(Update tablename set UserPW=+x+ where UserID=+Integer.parseInt(a.Kahao .getText()+); rs.close(); stmt.close(); conn.close(); return 1; catch(Exception sqle) System.err.println(sqle); return 3; return 2; publicstaticlong chaxun() long j; try / /1.注册驱动 String driverClassName = com.mysql.jdbc.Driver; Class.forName( com.mysql.jdbc.Driver); /2.连接数据库 Connection conn = DriverManager.getConnection( jdbc:mysql:/localhost:3306/ren, root, ); Statement stmt=conn.createStatement(); ResultSet rs=stmt.executeQuery(select * from tablename where UserID=+Integer.parseInt(a.Kahao .getText()+); if(rs.next() j=rs.getInt(Useryue); rs.close(); stmt.close(); conn.close(); return j; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 37 页 - - - - - - - - - 15 catch(Exception sqle) System.err.println(sqle); return -2; return -2; publicstaticint qukuan(long k,long j) try / /1.注册驱动 String driverClassName = com.mysql.jdbc.Driver; Class.forName( com.mysql.jdbc.Driver); /2.连接数据库 Connection conn = DriverManager.getConnection( jdbc:mysql:/localhost:3306/ren, root, ); Statement stmt=conn.createStatement(