GUI界面连接Mysql数据库

                                                   GUI界面连接Mysql数据库

GUI程序不仅界面美观,而且使用方便,各种软件的操作上也可统一,本实验通过Java来编写GUI程序。Java提供了编写GUI程序所需要的各种类,其中在本次实验中用到了java swing 用来设计登录、注册、修改密码、删除用户等界面,其中还用到了ActionListener接口来监听界面内的组件事件,用来触发事件作出反应。其中在本实验中我给主框的背景设置了绿色背景,并且增加了一个重复密码框,为了保证信息的安全性。button设计了不同的功能,如弹出dialog对话框、调用新的JFrame界面,通过GUI程序实现了图形化界面,然后在本实验中利用Mysql数据库,建立了数据库通过JDBC实现了GUI界面连接数据库,并对数据库中的内容进行查询等操作。

源码如下:

——————————————————————————ZJdbcs——————————

package chunlan;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import javax.swing.JOptionPane;

public class ZJdbcs {

         Connection con = null;

         Statement statement = null;

         ResultSet res = null;

         String driver = "com.mysql.jdbc.Driver";

         String url  = "jdbc:mysql://localhost:3306/zhangchunlan";

         String name = "root";

         String passwd = "123456";        

         public ZJdbcs() {

                   try{

                   Class.forName(driver).newInstance();

                   con = DriverManager.getConnection(url,name,passwd);

                   statement = con.createStatement();

                   }

                   catch(ClassNotFoundException e){

                            System.out.println("对不起,找不到这个Driver");

                            e.printStackTrace();

                            e.printStackTrace();

                   }

                   catch(Exception e){

                            e.printStackTrace();

                   }

                  

         }

         public boolean update(String username,String password1,String newpassword ){

                   boolean judge = false;

                   boolean s = compare(username,password1);

             if(s){

                      String sql = "update user set password=\""+newpassword+"\"where username=\""+username+"\"";

                      try{

                                int a = statement.executeUpdate(sql);

                               

                                if(a==1){

                                          JOptionPane.showMessageDialog(null,"密码修改成功!");

                                          judge = true;   

                                }

                               

                      }

                      catch (SQLException e){

                                JOptionPane.showMessageDialog(null, "用户不存在!");

                      }

             }

             else{         

                      JOptionPane.showMessageDialog(null, "修改失败");  

             }

                   return judge;

         }

         public void delete(String username,String password){

                   if(compare(username,password)){

                            JOptionPane.showMessageDialog(null, "已经完成删除");

                   }

                   else{

                            return ;

                   }

                   String sql="delete from user where username=\""+username+"\"";

             try{

                      int a=statement.executeUpdate(sql);

                     

             }

                   catch(SQLException e){

                            JOptionPane.showMessageDialog(null, "不存在该用户!");

                            e.printStackTrace();

                   }

                                    

         }

         public void insert(String username,String password){

                   String sql="insert into user(username,password)values(\""+username+"\",\""+password+"\")";

                   try {

                            int a=statement.executeUpdate(sql);

                            if(a==1){

                                     JOptionPane.showMessageDialog(null, "注册成功!");

                            }

                           

                   }

                   catch (SQLException e){

                            JOptionPane.showMessageDialog(null,"对不起该用户名有了!");

                   }

         }

         public boolean compare(String username,String password){

                   boolean m=false;

                   String sql="select password from user where username=\""+username+"\"";

                   try {

                            res=statement.executeQuery(sql);

                            if(res.next()){

                                     String pa=res.getString(1);

                                     System.out.println(pa+" "+password);

                                     if(pa.equals(password)){

                                               m=true;

                                     }

                                     else {

                                         JOptionPane.showMessageDialog(null, "密码错误!");                

                                     }

                            }

                                     else {

                                               JOptionPane.showMessageDialog(null, "用户名不存在!");

                                     }

                                    

                            }

                   catch (SQLException e) {

                            JOptionPane.showMessageDialog(null,"对不起,没有查询到该用户名!");

                           

                   }

                   return m;         

                   }

         public void releaseConnection(){

                   try{

                            if(statement !=null){

                                     statement.close();

                            }

                            if(con !=null){

                                     con.close();

                            }

                   }

 

                   catch (Exception e){

                            JOptionPane.showMessageDialog(null, "数据库未成功关闭!");

                   }

         }

}

 

————————————————————————————Login类————————

package chunlan;

import java.awt.Color;

import java.awt.Font;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.*;

public class Login extends JFrame implements ActionListener{

         private JPanel pan = new JPanel();//创建一个面板,再向这个面板添加组件,然后把这个面板添加到其他容器。

         private JLabel namelab = new JLabel("用户名");//创建标签

         private JLabel passlab = new JLabel("密    码");

         private JLabel passlabs = new JLabel("重复密码");

         private JTextField nametext = new JTextField();//创建密码框

         private JPasswordField passtext = new JPasswordField();

         private JPasswordField passtexts = new JPasswordField();

 

 

         public JButton denglu = new JButton("登录");//JButton 创建按钮

         public JButton zhuce = new JButton("注册");

         public JButton updatepass = new JButton("修改密码");

         public JButton deleteuser = new JButton("删除用户");

 

         public Login() {

                   Font font = new Font("宋体", Font.BOLD, 12);//Font.awt.font是指提供与字体相关的类和接口,设计字体显示效果(String 字体,int 风格,int 字号);

                                                               //Font.PLAIN(普通) Font.BOLD(加粗) Font.ITALIC(斜体)

                                                               //Font.BOLD+Font.ITALIC(粗斜体)

                   super.setTitle("欢迎登录本系统");//设置窗口的标题

                   super.setBounds(1000,500,800,800);

                   pan.setLayout(null);//不设置布局管理器

                   namelab.setBounds(20, 20, 60, 30);//setBounds(int x,int y,int width,int height)前两个组件左上角在容器中的坐标,后两个是组件的宽度和高度

                   nametext.setBounds(90, 20, 140, 30);

                   passlab.setBounds(20, 60, 60, 30);

                   passtext.setBounds(90, 60, 140, 30);

                   passlabs.setBounds(20, 100, 60, 30);

                   passtexts.setBounds(90, 100, 140, 30);

                   denglu.setBounds(30, 140, 90, 20);

                   zhuce.setBounds(140, 140, 90, 20);

                   updatepass.setBounds(30, 180, 90, 20);

                   deleteuser.setBounds(140, 180, 90, 20);

                   pan.add(namelab);//添加按钮

                   pan.add(nametext);

                   pan.add(passlab);

                   pan.add(passtext);

                   pan.add(passlabs);

                   pan.add(passtexts);

                   pan.add(denglu);

                   pan.add(zhuce);

                   pan.add(updatepass);

                   pan.add(deleteuser);

                   pan.setBackground(Color.GREEN);

                   passtexts.setFont(font);

                   passtext.setFont(font);

                   zhuce.setFont(font);

                   updatepass.setFont(font);

                   deleteuser.setFont(font);

                   denglu.addActionListener(this);//添加监听

                   zhuce.addActionListener(this);

                   updatepass.addActionListener(this);

                   deleteuser.addActionListener(this);

                   super.add(pan);//super关键字来引用父类的成分

                   super.setSize(300, 250);

                   super.setVisible(true);//窗口是否可见

         }

 

         public static void main(String[] args) {

 

                   new Login();

         }

 

         @Override

         public void actionPerformed(ActionEvent arg0) {

                   if (arg0.getSource() == denglu) {

                            denglu();

                   } else if (arg0.getSource() == zhuce) {

                            zhuce();

                   } else if (arg0.getSource() == updatepass) {

                            updatepass();

                   } else if (arg0.getSource() == deleteuser) {

                            deleteuser();

                   }

 

         }

         // 登录按钮的事件处理函数

         public void denglu() {

                   ZJdbcs d = new ZJdbcs();

                   String username = nametext.getText();

                   String password = passtext.getText();

                   if (d.compare(username, password)) {

                            JOptionPane.showMessageDialog(null, "登录成功!");

                            super.setVisible(false);

                   }

                   d.releaseConnection();

         }

         // 注册按钮触发后的事件处理函数

         public void zhuce() {

                   ZJdbcs d = new ZJdbcs();

                   String username = nametext.getText();

                   String password = passtext.getText();

                   d.insert(username, password);

                   d.releaseConnection();

         }

 

         // 修改密码按钮触发后的事件处理函数

         public void updatepass() {

                   pan.setEnabled(false);

                   JFrame frame1 = new JFrame("密码修改");

                   frame1.setSize(250, 200);

                   JPanel updatepass = new JPanel();

                   JLabel namelab1 = new JLabel("用户名");

                   JLabel passlab1 = new JLabel("旧密码");

                   JLabel newpasslab = new JLabel("新密码");

                   JTextField nametext1 = new JTextField("" + nametext.getText());

                   JPasswordField passtext1 = new JPasswordField();

                   JPasswordField newpasstext = new JPasswordField();

                   JButton ok = new JButton("修改");

                   JButton resert = new JButton("重

                   updatepass.setLayout(null);

                   namelab1.setBounds(5, 5, 70, 20);

                   nametext1.setBounds(80, 5, 120, 20);

                  passlab1.setBounds(5, 30, 70, 20);

                   passtext1.setBounds(80, 30, 120, 20);

                   newpasslab.setBounds(5, 60, 70, 20);

                   newpasstext.setBounds(80, 60, 120, 20);

                   ok.setBounds(10, 110, 60, 20);

                   resert.setBounds(90, 110, 60, 20);

 

                   updatepass.add(namelab1);

                   updatepass.add(nametext1);

                   updatepass.add(passlab1);

                   updatepass.add(passtext1);

                   updatepass.add(newpasslab);

                   updatepass.add(newpasstext);

                   updatepass.add(ok);

                   updatepass.add(resert);

                   frame1.add(updatepass);

                   frame1.setVisible(true);

                   ok.addActionListener(new ActionListener() {

                            @Override

                            public void actionPerformed(ActionEvent arg0) {

                                     ZJdbcs d = new ZJdbcs();

                                     String username = nametext1.getText();

                                     String password1 = passtext1.getText();

                                     String newpassword = newpasstext.getText();

                                     if (d.update(username, password1, newpassword)) {

                                               frame1.setVisible(false);

                                               d.releaseConnection();

                                     }

                            }

                   });

                   // 重置文本框 里的内容

                   resert.addActionListener(new ActionListener() {

                            @Override

                            public void actionPerformed(ActionEvent arg0) {

                                     nametext1.setText("");

                                     passtext1.setText("");

                                     newpasstext.setText("");

                            }

                   });

                  

         }

         // 删除用户按钮触发后的事件处理函数

         /*public void deleteuser() {

                   String username = nametext.getText();

                   String password = passtext.getText();

                   ZJdbcs d = new ZJdbcs();

                   d.delete(username, password);

                   d.releaseConnection();

         }*/

         public void deleteuser() {

                   pan.setEnabled(false);

                   JFrame frame1 = new JFrame("删除用户");

                   frame1.setSize(250, 200);

                   JPanel delete = new JPanel();

                   JLabel namelab1 = new JLabel("用户名");

                   JLabel passlab1 = new JLabel("密码");

                   JTextField nametext1 = new JTextField();

                   JPasswordField passtext1 = new JPasswordField();

                   JButton ok = new JButton("确认删除");

                   delete.setLayout(null);//你定义了个叫delete的pabel存放控件

 

                   namelab1.setBounds(5, 5, 70, 20);

                   nametext1.setBounds(80, 5, 120, 20);

                   passlab1.setBounds(5, 30, 70, 20);

                   passtext1.setBounds(80, 30, 120, 20);

                   ok.setBounds(80, 110, 100, 20);

                   delete.add(namelab1);

                   delete.add(nametext1);

                   delete.add(passlab1);

                   delete.add(passtext1);

                   delete.add(ok);

                 frame1.add(delete);

                   frame1.setVisible(true);

          ok.addActionListener(new ActionListener() {

                            public void actionPerformed(ActionEvent arg0) {

                                     ZJdbcs s = new ZJdbcs();

                                     String username1 = nametext1.getText();

                                     String password1 = passtext1.getText();

                                     s.delete(username1, password1);

                                     frame1.setVisible(false);//如果删除成功,删除界面要置为不可见

                                     s.releaseConnection();

                                    

                            }

                   });

         }

}

实验结构如下:

(1)在MySQL数据库中创建如下数据表:

(2)登录功能的实现如下图:

 

(3)注册功能的实现如下图:

 

 

 

 

(4)对数据库中用户的密码进行修改,如下图:

 

 

 

(5)删除数据库中的用户如下图:

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_43254543/article/details/88891154