English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
登录注册小代码,将学过的一些小知识融合在一起进行了使用,加深印象。本例中如果有注释不详细的地方,详见其他博客。
功能介绍:简单的登录注册系统,使用了数据库sqlserver、单例模式、正则表达式以及图形化开发等知识。
1、在登录界面,可以登录或注册用户。注册用户界面,按照正则表达式规定的格式要求输入信息,若有误,则重新输入。
2、点击注册,首先连接SQLserver数据库,连接成功则会判断该用户名是否已经存在,若存在,则给出提示。反之则进行注册。
3、登录界面,点击登录按钮时,首先与数据库建立连接。按照用户名和密码来向数据库中查找,若有,则登录成功。反之给出提示。
4、利用单例模式,实现了只创建类SQLserver的一个对象,大大节省了内存开销。
程序完整代码见:https://github.com/chaohuangtianjie994/A-login-register-System
5、基于此,可以进行大量的扩展功能。
代码如下:
UserRegister.java 登录界面。
package package1; /* * 功能:登录界面带有注册功能,弹出注册界面。 * 将注册的信息保存在数据库中,并且可以进行登录操作。 * author:ywq */ import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.sql.*; public class UserRegister extends JFrame implements ActionListener{ //定义登录界面的组件 JButton jb1,jb2,jb3=null; JRadioButton jrb1,jrb2=null; JPanel jp1,jp2,jp3=null; JTextField jtf=null; JLabel jlb1,jlb2=null; JPasswordField jpf=null; public static void main(String[] args) { UserRegister ur=new UserRegister(); } public UserRegister() { //Crear componentes //Crear componentes jb1=new JButton("Iniciar sesión"); jb2=new JButton("注册"); jb3=new JButton("Salir"); //Configurar el escucha jb1.addActionListener(this); jb2.addActionListener(this); jb3.addActionListener(this); jlb1=new JLabel("Nombre de usuario:"); jlb2=new JLabel("Contraseña:"); jtf=new JTextField(10); jpf=new JPasswordField(10); jp1=new JPanel(); jp2=new JPanel(); jp3=new JPanel(); jp1.add(jlb1); jp1.add(jtf); jp2.add(jlb2); jp2.add(jpf); jp3.add(jb1); jp3.add(jb2); jp3.add(jb3); this.add(jp1); this.add(jp2); this.add(jp3); this.setVisible(true); this.setResizable(false); this.setTitle("Interfaz de registro y inicio de sesión"); this.setLayout(new GridLayout(3,1)); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setBounds(300, 200, 300, 180); } @Override public void actionPerformed(ActionEvent e) { //Escuchar los botones if (e.getActionCommand() == "退出") { System.exit(0); } else if (e.getActionCommand() == "登录") { //Llamar al método de inicio de sesión this.login(); }else if(e.getActionCommand()=="注册") { //调用注册方法 this.Regis(); } } //Método de registro public void Regis() { this.dispose(); //Cerrar la interfaz actual new UI(); //Abrir nueva interfaz } //Método de inicio de sesión public void login() { SQLserver s=new SQLserver(); s.ConnectSQL(); s.SQLverify(jtf.getText(), jpf.getText()); this.jtf.setText(" "); this.jpf.setText(" "); } }
UI.java - Página de visualización para registro. Se utiliza la expresión regular para especificar el contenido de entrada. Al registrar, primero se debe determinar si el nombre de usuario existe, si existe, se mostrará un mensaje de advertencia, de lo contrario, se procederá con el registro.
package package1; import java.awt.event.*; import java.awt.*; import javax.swing.*; /* * Interfaz de registro. */ class UI extends JFrame implements ActionListener{ //Definición de componentes JFrame jf; JPanel jp; JLabel jl1,jl2,jl3,jl4; JTextField jtf1,jtf2,jtf3,jtf4; JButton jb1,jb2; public UI() { //Inicializar componentes jf=new JFrame(); jp=new JPanel(); jl1=new JLabel("Por favor, ingrese el nombre de usuario:"); jtf1=new JTextField(10); jtf1.setToolTipText("El nombre de usuario debe ser3-6letras o números"); jl2=new JLabel("Por favor, ingrese la contraseña:"); jtf2=new JTextField(10); jtf2.setToolTipText("La contraseña debe ser6letras o números"); jl3=new JLabel("Por favor, ingrese el nombre:"); jtf3=new JTextField(10); jtf3.setToolTipText("El nombre debe ser en caracteres chinos2-4números"); jl4=new JLabel("Por favor, ingrese el número de matrícula:"); jtf4=new JTextField(10); jtf4.setToolTipText("El número de matrícula debe ser3-6números"); jb1=new JButton("Volver"); jb1.setToolTipText("Haga clic aquí para regresar a la interfaz de inicio de sesión"); jb2=new JButton("注册"); jb1.addActionListener(this); jb2.addActionListener(this); jp.setLayout(new GridLayout(5,2)); jp.add(jl1); jp.add(jtf1); jp.add(jl2); jp.add(jtf2); jp.add(jl3); jp.add(jtf3); jp.add(jl4); jp.add(jtf4); jp.add(jb1); jp.add(jb2); this.add(jp); this.setTitle("Interfaz de registro"); this.setBounds(200, 100, 250, 150); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // this.setResizable(false); } public void actionPerformed(ActionEvent e) { if(e.getActionCommand()=="返回") { this.dispose(); new UserRegister(); // System.out.println("-------"); }else if(e.getActionCommand()=="注册") { //调用注册方法 this.zhuce(); } } public void zhuce() { String regex1="\\w{3,6"}; //El nombre de usuario debe ser3-6位 boolean flag1=jtf1.getText().matches(regex1); String regex2="\\w{6"}; //La contraseña debe ser6位 boolean flag2=jtf2.getText().matches(regex2); String regex3="[\\u4e00-\\u9fa5]{2,4"}; //El nombre debe ser en caracteres chinos2-4个字 boolean flag3=jtf3.getText().matches(regex3); String regex4="\\d{3,6"}; //学号必须是3-6位 boolean flag4=jtf4.getText().matches(regex4); // if(jtf1.getText()==null||jtf2.getText()==null||jtf3.getText()==null||jtf4.getText()==null) if(flag1==false) { JOptionPane.showMessageDialog(null, "用户名填写错误,必须为3-6位字母_或者数字", "提示信息", JOptionPane.WARNING_MESSAGE); jtf1.setText(""); }else if(flag2==false) { JOptionPane.showMessageDialog(null, "密码填写错误,必须为6位字母_或者数字", "提示信息", JOptionPane.WARNING_MESSAGE); jtf2.setText(""); }else if(flag3==false) { JOptionPane.showMessageDialog(null, "姓名填写错误,必须汉字2-4位", "提示信息", JOptionPane.WARNING_MESSAGE); jtf3.setText(""); }else if(flag4==false) { JOptionPane.showMessageDialog(null, "学号填写错误,必须为3-6位数字", "提示信息", JOptionPane.WARNING_MESSAGE); jtf4.setText(""); } else { //调用注册方法/先检查要注册的用户名是否存在 SQLserver ss=new SQLserver(); ss.ConnectSQL(); ss.ZhuceVerify(jtf1.getText()); // ss.UserRegis(jtf1.getText(),jtf2.getText(),jtf3.getText(), jtf4.getText()); this.jtf1.setText(""); this.jtf2.setText(""); this.jtf3.setText(""); this.jtf4.setText(""); } } }
SQLserver.java实现了与数据库的连接以及查询验证等各个功能。
package package1; import java.sql.*; import javax.swing.JOptionPane; /* * 与数据库相关的操作,单独封装成类 */ class SQLserver { Connection ct; PreparedStatement ps; ResultSet rs; String user,pwd; //将连接数据库的方法封装为一个方法 public void ConnectSQL() { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //Cargar controlador ct=DriverManager.getConnection("jdbc:odbc:ywq"); //Obtener conexión System.out.println("¡Conexión exitosa a la base de datos..."); } catch (Exception e) { // TODO Auto-bloque de captura generado e.printStackTrace(); } } //Método de registro de usuario public void UserRegis(String a,String b,String c,String d) { //Crear coche de cohete try { ps=ct.prepareStatement("insert into users values(?,?,?,?)"); ps.setString(1,a); ps.setString(2,b); ps.setString(3,c); ps.setString(4,d); //Ejecutar int i=ps.executeUpdate(); if(i==1) { JOptionPane.showMessageDialog(null, "¡Éxito en el registro!", "Mensaje de advertencia", JOptionPane.WARNING_MESSAGE); } else { JOptionPane.showMessageDialog(null, "¡Fallo en el registro!", "Mensaje de advertencia", JOptionPane.ERROR_MESSAGE); } } catch (SQLException e) { // TODO Auto-bloque de captura generado e.printStackTrace(); } } // Método de verificación de inicio de sesión public void SQLverify(String a,String b) { try { ps=ct.prepareStatement("select * from users where nombre_de_usuario=? y contraseña=? "); ps.setString(1, a); ps.setString(2, b); // ResultSet conjunto de resultados, puede entender ResultSet como el conjunto de filas devueltas por una tabla rs = ps.executeQuery(); if(rs.next()) { user = rs.getString(1); pwd = rs.getString(2); JOptionPane.showMessageDialog(null, "¡Inicio de sesión exitoso!!!", "Mensaje de advertencia", JOptionPane.WARNING_MESSAGE); System.out.println("¡Se ha obtenido con éxito la contraseña y el nombre de usuario desde la base de datos!"); System.out.println(user + "\t" + pwd + "\t"); } else { JOptionPane.showMessageDialog(null, "¡Nombre de usuario o contraseña incorrectos, ingrese de nuevo!", "Mensaje de advertencia", JOptionPane.ERROR_MESSAGE); } } catch (SQLException e) { e.printStackTrace(); } } //método de verificación de registro, determinar si el nombre de usuario ya existe public void ZhuceVerify(String a) { try { ps=ct.prepareStatement("select * from users where nombre_de_usuario=?); // System.out.println(ps); ps.setString(1, a); rs=ps.executeQuery(); if(rs.next()) { JOptionPane.showMessageDialog(null, "El nombre de usuario ya existe", "Mensaje de advertencia", JOptionPane.WARNING_MESSAGE); } else { // realizar el registro UI ui=new UI(); this.UserRegis(ui.jtf1.getText(),ui.jtf2.getText(),ui.jtf3.getText(),ui.jtf4.getText()); } } catch (SQLException e) { e.printStackTrace(); } } }
Esto es todo el contenido del artículo, espero que sea útil para su aprendizaje y que todos apoyen y alienten el tutorial de grito.
Declaración: el contenido de este artículo se obtiene de la red, es propiedad del autor original, el contenido se contribuye y carga de manera autónoma por los usuarios de Internet, este sitio no posee los derechos de propiedad, no se ha procesado editorialmente y no asume responsabilidades legales relacionadas.3codebox.com (al enviar un correo electrónico, por favor reemplace # con @) para denunciar y proporcionar evidencia relevante. Una vez verificado, este sitio eliminará inmediatamente el contenido sospechoso de infracción.