基于Java JFrame 和Mysql的用户登录界面和用户注册界面

在学校完成Java课程设计——宾馆客房管理系统的用户登录界面


代码实现

用户类:

package com.dao;


public class User {
    private String username;
    private String password;
    public static String authority;
    
    public User(){}

    /**
     * @return the username
     */
    public String getUsername() {
        return username;
    }

    /**
     * @param username the username to set
     */
    public void setUsername(String username) {
        this.username = username;
    }

    /**
     * @return the password
     */
    public String getPassword() {
        return password;
    }

    /**
     * @param password the password to set
     */
    public void setPassword(String password) {
        this.password = password;
    }

	public static String getAuthority() {
		return authority;
	}

	public static void setAuthority(String authority) {
		User.authority = authority;
	}

	
    
    
}

功能接口:

package com.dao;


public interface UserDao {

    /**
     * 这是用户登录功能
     *
     * @param username 用户名
     * @param password 密码
     * @return 登录是否成功
     */
    public abstract boolean login(String username, String password);

    /**
     * 这是用户注册功能
     *
     * @param user 被注册的用户信息
     */
    public abstract void regist(User user);
}

接口实现类:

package com.dao.impl;

import com.dao.UserDao;

import java.sql.*;

import com.Mysql.DatabaseConnection;
import com.dao.User;


public class UserDaoImpl implements UserDao {




    @Override
    public boolean login(String username, String password) {
        boolean flag = false;
       

        DatabaseConnection conn =new DatabaseConnection();
		Connection hcon=conn.getConnection();
                
		
		try {
			Statement sql=hcon.createStatement();
                        ResultSet rs=sql.executeQuery("select * from 用户权限表");
                        while(rs.next()){
                       	
                            if(username.equals(rs.getString(1)) && password.equals(rs.getString(2))){
                                flag=true;
                                User.setAuthority(rs.getString(3));
                                break;
                            }
                        }
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		conn.close();
		
        return flag;
    }

    @Override
    public void regist(User user) {
       DatabaseConnection conn =new DatabaseConnection();
		Connection hcon=conn.getConnection();
		String sql="insert into 用户权限表(user,password,authority) values (?,?,?)";
		try {
			
			PreparedStatement ps=hcon.prepareStatement(sql);
			
			ps.setObject(1,user.getUsername() );
                        ps.setObject(2,user.getPassword() );
                        ps.setObject(3,"staff");
			ps.execute();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		conn.close();
    }
}

登录界面类(入口):

package com.view;


import java.awt.Dimension;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JOptionPane;


@SuppressWarnings("serial")
public class Login extends javax.swing.JFrame {

   
    public Login() {
        initComponents();
         init();
    }
    
     private void init() {
        this.setTitle("登录界面");
        this.setResizable(false);
         Toolkit tk = Toolkit.getDefaultToolkit();

        //获取屏幕的宽和高
        Dimension d = tk.getScreenSize();
        double srceenWidth = d.getWidth();
        double srceenHeigth = d.getHeight();

        //获取窗体的宽和高
        int frameWidth = this.getWidth();
        int frameHeight = this.getHeight();

        //获取新的宽和高
        int width = (int) (srceenWidth - frameWidth) / 2;
        int height = (int) (srceenHeigth - frameHeight) / 2;

        //设置窗体坐标
        this.setLocation(width, height);
        //根据路径获取图片
        Image i = tk.getImage("src\\com\\view\\resource\\user.jpg");

        //给窗体设置图片
        this.setIconImage(i);
    
    }
                        
    private void initComponents() {

        jButton1 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        username = new javax.swing.JTextField();
        password = new javax.swing.JTextField();
        mainPicture = new javax.swing.JLabel();
        jButton2 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jButton1.setText("注册");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jButton3.setText("重置");
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });

        jLabel1.setFont(new java.awt.Font("楷体", 0, 18)); // NOI18N
        jLabel1.setText("用户名");

        jLabel2.setFont(new java.awt.Font("楷体", 0, 18)); // NOI18N
        jLabel2.setText("密  码");

        username.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                usernameActionPerformed(evt);
            }
        });

        mainPicture.setFont(new java.awt.Font("黑体", 1, 36)); // NOI18N
        mainPicture.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/view/resource/user.jpg"))); // NOI18N
        mainPicture.setText("宾馆客房管理系统");

        jButton2.setText("登陆");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(mainPicture, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addGroup(layout.createSequentialGroup()
                .addGap(54, 54, 54)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jButton1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(jButton3)
                        .addGap(37, 37, 37)
                        .addComponent(jButton2)
                        .addGap(72, 72, 72))
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(jLabel1)
                            .addComponent(jLabel2))
                        .addGap(18, 18, 18)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(password, javax.swing.GroupLayout.DEFAULT_SIZE, 211, Short.MAX_VALUE)
                            .addComponent(username))
                        .addContainerGap(38, Short.MAX_VALUE))))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addComponent(mainPicture, javax.swing.GroupLayout.PREFERRED_SIZE, 72, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(username, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(56, 56, 56)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(password, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 53, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jButton3)
                    .addComponent(jButton1)
                    .addComponent(jButton2))
                .addGap(44, 44, 44))
        );

        pack();
    }                     

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    	UserRegister ur = new UserRegister();
        ur.setVisible(true);
        this.dispose();
    }                                        

    private void usernameActionPerformed(java.awt.event.ActionEvent evt) {                                         
        
    }                                        

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
         this.username.setText("");
         this.password.setText("");
    }                                        

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
              /*
        思路:
        A:获取用户名和密码
        B:正则表达式校验用户名和密码
        C:创建对象调用功能,返回一个boolean值
        D:根据boolean值给出提示
        */
          //获取用户名和密码
        String username1 = this.username.getText().trim();
        String password1 = this.password.getText().trim();
        
        //用正则表达式做数据校验
        //定义规则
        //用户名规则
        String usernameRegex = "[a-zA-z]{5}";
        //密码规则
        String passwordRegex = "\\w{6,12}";
        
        //校验
        if(!username1.matches(usernameRegex)) {
            JOptionPane.showMessageDialog(this, "用户名不满足条件(5个英文字母组成)");
            this.username.setText("");
            this.username.requestFocus();
            return;
        }
        
         if(!password1.matches(passwordRegex)) {
            JOptionPane.showMessageDialog(this, "密码不满足条件(6-12个任意单词字符)");
            this.password.setText("");
            this.password.requestFocus();
            return;
        }
         
         //创建对象调用功能,返回一个boolean值
         com.dao.UserDao ud = new com.dao.impl.UserDaoImpl();
         boolean flag =  ud.login(username1, password1);

         
         if(flag){
              JOptionPane.showMessageDialog(this, "恭喜你登录成功");          
              com.jframe.Homepage h = new com.jframe.Homepage();
              h.setVisible(true);
              this.dispose();
     
             
         }else {
               JOptionPane.showMessageDialog(this, "用户名或者密码有误");
               this.username.setText("");
               this.password.setText("");
               this.username.requestFocus();
         }
    }                                        

    
    public static void main(String args[]) {
    
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
    
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Login().setVisible(true);
            }
        });
    }
          
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel mainPicture;
    private javax.swing.JTextField password;
    private javax.swing.JTextField username;
              
}

注册界面类:

package com.view;

import java.awt.Dimension;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JOptionPane;


@SuppressWarnings("serial")
public class UserRegister extends javax.swing.JFrame {

  
    public UserRegister() {
        initComponents();
        init();
    }

     private void init() {
        this.setTitle("注册界面");
        this.setResizable(false);
         Toolkit tk = Toolkit.getDefaultToolkit();

        //获取屏幕的宽和高
        Dimension d = tk.getScreenSize();
        double srceenWidth = d.getWidth();
        double srceenHeigth = d.getHeight();

        //获取窗体的宽和高
        int frameWidth = this.getWidth();
        int frameHeight = this.getHeight();

        //获取新的宽和高
        int width = (int) (srceenWidth - frameWidth) / 2;
        int height = (int) (srceenHeigth - frameHeight) / 2;

        //设置窗体坐标
        this.setLocation(width, height);
        //根据路径获取图片
        Image i = tk.getImage("src\\com\\view\\resource\\user.jpg");

        //给窗体设置图片
        this.setIconImage(i);
    
    }
                        
    private void initComponents() {

        password = new javax.swing.JTextField();
        jButton4 = new javax.swing.JButton();
        jButton6 = new javax.swing.JButton();
        jLabel5 = new javax.swing.JLabel();
        jLabel6 = new javax.swing.JLabel();
        username = new javax.swing.JTextField();
        mainPicture1 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jButton4.setText("确认");
        jButton4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton4ActionPerformed(evt);
            }
        });

        jButton6.setText("取消");
        jButton6.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton6ActionPerformed(evt);
            }
        });

        jLabel5.setFont(new java.awt.Font("楷体", 0, 18)); // NOI18N
        jLabel5.setText("用户名");

        jLabel6.setFont(new java.awt.Font("楷体", 0, 18)); // NOI18N
        jLabel6.setText("密  码");

        username.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                usernameActionPerformed(evt);
            }
        });

        mainPicture1.setFont(new java.awt.Font("黑体", 1, 36)); // NOI18N
        mainPicture1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/view/resource/user.jpg"))); // NOI18N
        mainPicture1.setText("宾馆客房管理系统");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addGroup(layout.createSequentialGroup()
                                .addGap(54, 54, 54)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addComponent(jLabel5)
                                    .addComponent(jLabel6))
                                .addGap(18, 18, 18)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addComponent(password, javax.swing.GroupLayout.DEFAULT_SIZE, 211, Short.MAX_VALUE)
                                    .addComponent(username)))
                            .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                                .addGap(98, 98, 98)
                                .addComponent(jButton4)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 80, Short.MAX_VALUE)
                                .addComponent(jButton6)
                                .addGap(45, 45, 45)))
                        .addGap(0, 0, Short.MAX_VALUE))
                    .addComponent(mainPicture1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addComponent(mainPicture1, javax.swing.GroupLayout.PREFERRED_SIZE, 72, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel5)
                    .addComponent(username, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(56, 56, 56)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel6)
                    .addComponent(password, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 53, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jButton6)
                    .addComponent(jButton4))
                .addGap(44, 44, 44))
        );

        pack();
    }// </editor-fold>                        

    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        /*
        分析:
        A:获取用户名和密码
        B:用正则表达式做数据校验
        C:封装成用户对象
        D:调用用户操作的功能进行注册
        E:回到登录界面
        */
        //获取用户名和密码
        String username1 = this.username.getText().trim();
        String password1 = this.password.getText().trim();

        //用正则表达式做数据校验
        //定义规则
        //用户名规则
        String usernameRegex = "[a-zA-z]{5}";
        //密码规则
        String passwordRegex = "\\w{6,12}";

        //校验
        if(!username1.matches(usernameRegex)) {
            JOptionPane.showMessageDialog(this, "用户名不满足条件(5个英文字母组成)");
            this.username.setText("");
            this.username.requestFocus();
            return;
        }

        if(!password1.matches(passwordRegex)) {
            JOptionPane.showMessageDialog(this, "密码不满足条件(6-12个任意单词字符)");
            this.password.setText("");
            this.password.requestFocus();
            return;
        }

        //封装成用户对象
        com.dao.User user = new com.dao.User();
        user.setUsername(username1);
        user.setPassword(password1);

        //调用用户操作的功能进行注册
        com.dao.UserDao ud = new com.dao.impl.UserDaoImpl();
        ud.regist(user);

        //给出提示
        JOptionPane.showMessageDialog(this, "用户注册成功,回到登录界面");

        goLogin();
    }                                        

    private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        goLogin();
    }                                        

    private void usernameActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
    }                                        
     
    private void goLogin() {
        Login hf = new Login();
       hf.setVisible(true);
       this.dispose();
    }
   
                   
    private javax.swing.JButton jButton4;
    private javax.swing.JButton jButton6;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel mainPicture1;
    private javax.swing.JTextField password;
    private javax.swing.JTextField username;
                 
}

数据库连接类:

package com.Mysql;
import java.sql.*;
public class DatabaseConnection {

	
		private static final String DBDRIVER = "com.mysql.jdbc.Driver" ;
		private static final String DBURL = "jdbc:mysql://localhost:3306/hotal?useUnicode=true&characterEncoding=utf8" ;
		private static final String DBUSER = "root" ;
		private static final String PASSWORD = "123456789" ;
		private Connection conn = null ;
		/**
		 * 在构造方法调用时将进行数据库连接对象的取得
		 */
		public DatabaseConnection() {
			try {
				Class.forName(DBDRIVER) ;	// 加载数据库驱动程序
				this.conn = DriverManager.getConnection(DBURL, DBUSER,PASSWORD) ;
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		/**
		 * 取得数据库连接对象
		 * @return 实例化的Connection对象,如果返回null,表示没有连接成功
		 */
		public Connection getConnection() {
			return this.conn ;
		}
		/**
		 * 进行数据库的关闭操作
		 */
		public void close() {
			if (this.conn != null) {
				try {
					this.conn.close();
				} catch (SQLException e) {
					e.printStackTrace(); 
				}
			}
		}
}

  • 24
    点赞
  • 137
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值