English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java: простая программа для входа и регистрации

Короткий код для входа и регистрации, объединяющий некоторые знания, которые вы изучили, для их использования, чтобы укрепить память. В этом примере, если комментарии не очень详细, см. также другие блоги.

Обзор функций:Простая система входа и регистрации, использующая знания о базе данных sqlserver, singleton-модели, регулярных выражениях и графическом разработке.

1、В интерфейсе входа можно войти или зарегистрировать пользователя. В интерфейсе регистрации пользователя вводите информацию в соответствии с форматом,规定的正则表达式,如果有误,则重新输入。
2、Нажмите на регистрацию, сначала устанавливается соединение с базой данных SQLserver, при успешном подключении проверяется, существует ли этот имя пользователя. Если существует, выдается предупреждение. В противном случае выполняется регистрация.
3、Интерфейс входа, при нажатии на кнопку входа, сначала устанавливается соединение с базой данных. По имени пользователя и паролю ищется в базе данных, если найден, то вход успешен. В противном случае выдается предупреждение.
4、Используя паттерн Singleton, был создан только один объект класса 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() 
 { 
  //Создание компонентов 
   //Создание компонентов 
  jb1=new JButton("Войти"); 
  jb2=new JButton("регистрация"); 
  jb3=new JButton("Выйти"); 
  //Настройка слушателя 
  jb1.addActionListener(this); 
  jb2.addActionListener(this); 
  jb3.addActionListener(this); 
  jlb1=new JLabel("Имя пользователя:"); 
  jlb2=new JLabel("Пароль:"); 
  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("注册登录界面"); 
  this.setLayout(new GridLayout(3,1)); 
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  this.setBounds(300, 200, 300, 180); 
 } 
 @Override 
 public void actionPerformed(ActionEvent e) { 
  //监听各个按钮 
  if(e.getActionCommand()=="退出") 
  { 
   System.exit(0); 
  }else if(e.getActionCommand()=="登录") 
  { 
   //调用登录方法 
   this.login(); 
  }else if(e.getActionCommand()=="注册") 
  { 
   //Вызов метода регистрации 
   this.Regis(); 
  } 
 } 
 //注册方法 
  public void Regis() { 
   this.dispose(); //关闭当前界面 
   new UI(); //打开新界面 
 } 
 //登录方法 
 public void login() { 
  SQLserver s=new SQLserver(); 
  s.ConnectSQL(); 
  s.SQLverify(jtf.getText(), jpf.getText()); 
  this.jtf.setText(""); 
  this.jpf.setText(""); 
 } 
} 

UI.java   用于注册的页面显示。使用了正则表达式来规定输入的内容。注册时候,需要首先判断用户名是否存在,若存在,则给出提示,反之进行注册。

package package1; 
import java.awt.event.*; 
import java.awt.*; 
import javax.swing.*; 
/* 
 * 注册界面。 
 */ 
class UI extends JFrame implements ActionListener{ 
 //定义组件 
 JFrame jf; 
 JPanel jp; 
 JLabel jl1,jl2,jl3,jl4; 
 JTextField jtf1,jtf2,jtf3,jtf4; 
 JButton jb1,jb2; 
 public UI() 
 { 
  //初始化组件 
  jf=new JFrame(); 
  jp=new JPanel(); 
  jl1=new JLabel("введите имя пользователя:"); 
  jtf1=new JTextField(10); 
  jtf1.setToolTipText("имя пользователя должно состоять из 3-6 букв, подчеркивания или цифр"); 
  jl2=new JLabel("введите пароль:"); 
  jtf2=new JTextField(10); 
  jtf2.setToolTipText("пароль должен состоять из 6 букв, подчеркивания или цифр"); 
  jl3=new JLabel("введите имя:"); 
  jtf3=new JTextField(10); 
  jtf3.setToolTipText("имя должно состоять из 2-4 иероглифов"); 
  jl4=new JLabel("введите номер студента:"); 
  jtf4=new JTextField(10); 
  jtf4.setToolTipText("номер студента должен состоять из 3-6 цифр"); 
  jb1=new JButton("возврат"); 
  jb1.setToolTipText("нажми меня, чтобы вернуться на страницу входа"); 
  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("регистрационная форма"); 
  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}"; //Имя пользователя должно быть 3-6 символов 
  boolean flag1=jtf1.getText().matches(regex1); 
  String regex2="\\w{6}"; //Пароль должен быть 6 символов 
  boolean flag2=jtf2.getText().matches(regex2); 
  String regex3="[\\u4e00-\\u9fa5]{2,4}"; //Имя должно быть 2-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"); //加载驱动 
   ct = DriverManager.getConnection("jdbc:odbc:ywq"); //得到连接 
   System.out.println("已成功连接数据库..."); 
  } catch (Exception e) { 
   // TODO Auto-generated catch block 
   e.printStackTrace(); 
  } 
 } 
 //注册用户的方法 
 public void UserRegis(String a, String b, String c, String d) 
 { 
  // Create rocket car 
  try { 
   ps = ct.prepareStatement("insert into users values(?,?,?,?)"); 
   ps.setString(1, a); 
   ps.setString(2, b); 
   ps.setString(3, c); 
   ps.setString(4, d); 
   // Execution 
   int i = ps.executeUpdate(); 
   if(i==1) 
   { 
    JOptionPane.showMessageDialog(null, "Registration successful","Prompt message", JOptionPane.WARNING_MESSAGE); 
   }else 
   { 
    JOptionPane.showMessageDialog(null, "Registration failed","Prompt message", JOptionPane.ERROR_MESSAGE); 
   } 
  } catch (SQLException e) { 
   // TODO Auto-generated catch block 
   e.printStackTrace(); 
  } 
 } 
// Login verification method 
 public void SQLverify(String a, String b) 
 { 
  try { 
   ps = ct.prepareStatement("select * from users where username=? and password=? "); 
   ps.setString(1, a); 
   ps.setString(2, b); 
   // ResultSet result set, you can understand ResultSet as the result set of a table row 
   rs = ps.executeQuery(); 
   if(rs.next()) 
   { 
    user = rs.getString(1); 
    pwd = rs.getString(2); 
    JOptionPane.showMessageDialog(null, "Login successful!!!", "Prompt message", JOptionPane.WARNING_MESSAGE); 
    System.out.println("Successfully obtained password and username from database"); 
    System.out.println(user + "\t" + pwd + "\t"); 
   }else 
   { 
    JOptionPane.showMessageDialog(null, "Username or password error, please re-enter!", "Prompt message", JOptionPane.ERROR_MESSAGE); 
   } 
  } catch (SQLException e) { 
   e.printStackTrace(); 
  } 
 } 
 // Registration verification method, determines if the username already exists 
 public void ZhuceVerify(String a) 
 { 
  try { 
   ps=ct.prepareStatement("select * from users where 用户名=?"); 
//   System.out.println(ps); 
   ps.setString(1, a); 
   rs=ps.executeQuery(); 
   if(rs.next()) 
   { 
    JOptionPane.showMessageDialog(null, "Этот пользователь уже существует", "Сообщение", JOptionPane.WARNING_MESSAGE); 
   }else 
   { 
//    Выполнить регистрацию 
    UI ui=new UI(); 
    this.UserRegis(ui.jtf1.getText(),ui.jtf2.getText(),ui.jtf3.getText(),ui.jtf4.getText()); 
   } 
  } catch (SQLException e) { 
   e.printStackTrace(); 
  } 
 } 
} 

Это конец статьи. Надеюсь, это поможет вам в изучении. Также希望大家多多支持呐喊教程。

Заявление: контент этой статьи предоставлен из Интернета, авторские права принадлежат соответствующему автору. Контент был предложен пользователями Интернета и загружен самостоятельно. Этот сайт не обладает правами собственности, не производил редактирование人工, и не несет ответственности за соответствующие юридические вопросы. Если вы обнаружите подозрительный контент, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (при отправке письма, пожалуйста, замените # на @) для сообщения о нарушении авторских прав,并提供 соответствующие доказательства. При обнаружении факта нарушения авторских прав, сайт незамедлительно удаляет涉嫌侵权的内容。

Основной учебник
Рекомендуем для вас