Java编写ATM机模拟系统(连接数据库)

您所在的位置:网站首页 ATM操作流程思路 Java编写ATM机模拟系统(连接数据库)

Java编写ATM机模拟系统(连接数据库)

2024-07-15 16:57| 来源: 网络整理| 查看: 265

本篇是完整代码,我还上传了资源,资源里有完整的代码和数据库驱动,可以直接下载使用

初学java,在代码上的理解不够,写出的代码极为冗长,有不少的缺陷,等日后慢慢完善,若是有好的建议,请与我分享 一、工作任务 输入给定的卡号和密码(初始卡号为62250028和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行操作: 1、查询余额:初始余额为10000元; 2、ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支; 3、ATM存款:不能出现负存款; 4、修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码; 5、采用数据库存储数据,可以实现 GUI界面,也可以实现功能,结果打印到控制台上。 二、系统设计 1.连接数据库类(其他类想连接数据库,直接调用这个类即可)

package ATM; //此类的功能是连接数据库 import java.sql.Connection; import java.sql.DriverManager; //连接数据库 public class GetDBConnection { //DBName:数据库名 ,id : 用户名(root)password:数据库密码 public static Connection ConnectDB(String DBName,String id,String password) { Connection con = null; String uri="jdbc:mysql://127.0.0.1:3306/"+DBName+"?useSSL=true&characterEncoding=utf-8"; try { Class.forName("com.mysql.jdbc.Driver");//加载驱动 } catch (Exception e) {} try { con = DriverManager.getConnection(uri,id,password);//连接 } catch (Exception e) {} return con; } }

2、方法类(查询,存款,取款,改密码等方法都写在这个类中,是整篇代码的核心。其他类只是设计页面,想完成功能都需要调用这个类中的代码)

package ATM; //此页是基本方法页,所有的方法都放在本页,其他类通过调用本页方法来实现功能 import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; //atm的增删改查 public class Basic_operation{ //以下三个接数据库增删改查所用的变量 public String sql; public PreparedStatement ps; public static Connection con; public static String cardID="";//用户卡号 public static String password="123456";//用户登陆密码(默认为123456) public static String password2="";//新密码(修改密码) public static String password3="";//确认新密码(修改密码) public static String balanceFixed ="0";//盛放余额的变量 public String s="";//接收各个方法返回值的变量 //构造方法 Basic_operation() { //连接数据库 con = GetDBConnection.ConnectDB("atmBankDatabase", "root", ""); if(con == null) { System.out.println("数据库连接失败"); return; } sql="select balance from account where id=?;"; try { ps=con.prepareStatement(sql); ps.setString(1, cardID); ResultSet rs =ps.executeQuery();//向数据库发送数据查询语句 while(rs.next()) { balanceFixed = rs.getString("balance"); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //数据库的增删改查都是固定的操作 //1.查余额 public String select(String cardID) throws SQLException { String sql="select balance from account where id=?;"; ps=con.prepareStatement(sql); ps.setString(1, cardID); ResultSet rs =ps.executeQuery();//向数据库发送数据查询语句 while(rs.next()) { balanceFixed = rs.getString("balance"); } double balance_number = Double.parseDouble(balanceFixed); System.out.println("当前账户余额:"+balance_number); balanceFixed = String.valueOf(balance_number); s="当前账户余额:"+balanceFixed; return s; } //2.取款 public String Withdrawal(String cardID,String take_money2) { //take_money要取的钱数 boolean isNum = take_money2.matches("[0-9]+"); if(isNum) { double take_money = Double.parseDouble(take_money2); if(take_money=6) { char[] a = password2.toCharArray(); if(a[0]==a[1]&&a[1]==a[2]&&a[2]==a[3]&&a[3]==a[4]&&a[4]==a[5]) { System.out.println("不可以设置全部数字相同的密码"); s="不可以设置全部数字相同的密码"; }else { if(password2.equals(password3)) { sql="update account set apassword=? where id=?;"; ps = con.prepareStatement(sql); ps.setString(1, password2); ps.setString(2, cardID); ps.executeUpdate(); System.out.println("密码修改成功"); s="密码修改成功"; }else { System.out.println("两次密码不相同,请重新输入"); s="两次密码不相同,请重新输入"; } } }else { System.out.println("修改失败,密码长度不可小于6位"); s="修改失败,密码长度不可小于6位"; } }else { System.out.println("原密码错误,请重新输入"); s="原密码错误,请重新输入"; } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return s; } //5.登陆 public String jlogin(String cardID,String password) { String newCardID="0"; String newPassword="0"; sql="select id,apassword from account where id=?;"; try { ps=con.prepareStatement(sql); ps.setString(1, cardID); ResultSet rs =ps.executeQuery();//向数据库发送数据查询语句 while(rs.next()) { newCardID= rs.getString("id"); newPassword=rs.getString("apassword"); } if(cardID.equals(newCardID) && password.equals(newPassword)) { System.out.println("登陆成功"); s = "登陆成功"; this.cardID=cardID;//使另一个类可以调用这个cardID }else { System.out.println("用户名或密码不正确,请重新输入"); s="用户名或密码不正确,请重新输入"; } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return s; } public static void main(String[] args) { // TODO Auto-generated method stub Basic_operation a = new Basic_operation(); } }

3.登陆页面(程序必须在此页开始运行) 这个账号输入有缺陷,只能输入8位的数字账号,第9位会自动进入到密码输入的那一行(我的知识有限,只能这么做了),要是账号是其他位数的,只能修改代码了 用了3个面板, 登陆页面

package ATM; //此页是登陆界面 import java.awt.Color; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Date; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; //登陆界面设置三个画板,一个用来放置账户和密码文本框,另一个用来放置数字键盘,另一个用来放置文本域 public class OpenLogin extends JFrame implements ActionListener{ Basic_operation basi = new Basic_operation();//调用Basic_operation类中写好的方法 JFrame frame; JPanel p,p2,p3;//三个画板 //panel面板中内容 JTextField jtext = new JTextField(20);//文本框 JPasswordField jpass = new JPasswordField(20);//密码框 JButton b=new JButton("登陆"); JButton b2=new JButton("退出"); //panel2面板中内容 JButton bt[] =new JButton[14]; //panel3面板中内容 JTextArea jtarea = new JTextArea(" 欢迎来到建设银行! ",6,40);//文本域 public OpenLogin() { open_login(); } public void open_login() { frame = new JFrame(); setTitle("ATM登陆界面"); //盒式布局 Box boxHP = Box.createHorizontalBox(); Box boxHP2 = Box.createHorizontalBox(); Box boxVP = Box.createVerticalBox(); //1.创建一个JPanel对象,里面存放一个JTextField和JPasswordField组件 p = new JPanel(new GridLayout(5,3,0,15)); init(); //2.创建一个panel对象p2,并且设置它的布局管理器为GridLayout p2 = new JPanel(); init2(); //向panel3面板中添加文本域 p3 = new JPanel(new GridLayout(1,1,10,10)); init3(); //3.把panel和panel2添加到frame中 boxHP.add(p); boxHP.add(p2); boxHP2.add(p3); boxVP.add(boxHP); boxVP.add(boxHP2); add(boxVP); //设置windowListener,监听用户点击x的动作,若点击x,则关闭窗口 setDefaultCloseOperation(DISPOSE_ON_CLOSE); //设置最佳大小,pack方法 //pack()使setBounds(x, y, width, height);失灵 pack(); setVisible(true);//设置可见 } void init() { Box boxH,boxH2;//水平 boxH = Box.createHorizontalBox(); boxH2 = Box.createHorizontalBox(); boxH.add(new JLabel("账号:")); boxH.add(jtext); boxH2.add(new JLabel("密码:")); boxH2.add(jpass); p.setBorder(BorderFactory.createTitledBorder("登陆区域:")); p.add(new JLabel("请在确定周围环境安全的前提下操作:")); p.add(boxH); p.add(boxH2); p.add(b); p.add(b2); } void init2() { p2.setBorder(BorderFactory.createTitledBorder("数字键盘:")); p2.setLayout(new GridLayout(4,3,7,7));//4行3列 //4.往panel2中添加内容 for(int i=1;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3