English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Petit code de connexion et d'inscription, intégrant certains connaissances que j'ai appris, pour renforcer l'impression. Dans cet exemple, si certains commentaires ne sont pas détaillés, voir d'autres blogs.
Présentation des fonctionnalités :Un simple système de connexion et d'inscription, utilisant des connaissances telles que la base de données sqlserver, le patron Singleton, les expressions régulières et le développement graphique.
1、Sur l'interface de connexion, vous pouvez vous connecter ou vous inscrire. Sur l'interface d'inscription, entrez les informations selon le format régulier requis. Si il y a une erreur, entrez à nouveau.
2、Lorsque vous cliquez sur l'inscription, connectez d'abord à la base de données SQLserver. Si la connexion est réussie, vérifiez si ce nom d'utilisateur existe déjà. Si il existe, affichez un message d'alerte. Sinon, procédez à l'inscription.
3、Lorsque vous cliquez sur le bouton de connexion sur l'interface de connexion, établit d'abord une connexion avec la base de données. Recherchez dans la base de données en fonction du nom d'utilisateur et du mot de passe. Si elle existe, la connexion est réussie. Sinon, affichez un message d'alerte.
4、En utilisant le patron Singleton, un seul objet SQLserver est créé, ce qui économise considérablement les coûts de mémoire.
Le code complet du programme est visible ici :https://github.com/chaohuangtianjie994/A-login-register-System
5、En conséquence, de nombreuses fonctionnalités peuvent être étendues.
Le code est le suivant :
UserRegister.java - Interface de connexion.
package package1; /* * Fonction : L'interface de connexion avec la fonction d'inscription, affiche l'interface d'inscription. * Enregistrer les informations d'inscription dans la base de données et permettre l'opération de connexion. * auteur : ywq */ import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.sql.*; public class UserRegister extends JFrame implements ActionListener{ //Définir les composants de l'interface de connexion 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() { //Créer des composants //Créer des composants jb1=new JButton("Se connecter"); jb2=new JButton("注册"); jb3=new JButton("Quitter"); //Configurer l'écoute jb1.addActionListener(this); jb2.addActionListener(this); jb3.addActionListener(this); jlb1=new JLabel("Nom d'utilisateur : "); jlb2=new JLabel("Mot de passe : "); 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("Interface d'enregistrement et de connexion"); this.setLayout(new GridLayout(3,1)); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setBounds(300, 200, 300, 180); } @Override public void actionPerformed(ActionEvent e) { //Écouter les différents boutons if(e.getActionCommand()=="退出") { System.exit(0); }else if(e.getActionCommand()=="登录") { //Appel de la méthode de connexion this.login(); }else if(e.getActionCommand()=="注册") { //调用注册方法 this.Regis(); } } //Méthode d'enregistrement public void Regis() { this.dispose(); //Fermer l'interface actuelle new UI(); //Ouvrir une nouvelle interface } //Méthode de connexion public void login() { SQLserver s=new SQLserver(); s.ConnectSQL(); s.SQLverify(jtf.getText(), jpf.getText()); this.jtf.setText(""); this.jpf.setText(""); } }
UI.java - Page d'affichage pour l'enregistrement. Utilise des expressions régulières pour régler le contenu de l'entrée. Lors de l'enregistrement, il faut d'abord vérifier si le nom d'utilisateur existe, s'il existe, afficher un message d'alerte, sinon procéder à l'enregistrement.
package package1; import java.awt.event.*; import java.awt.*; import javax.swing.*; /* * Interface de registration. */ class UI extends JFrame implements ActionListener{ //Définition des composants JFrame jf; JPanel jp; JLabel jl1,jl2,jl3,jl4; JTextField jtf1,jtf2,jtf3,jtf4; JButton jb1,jb2; public UI() { //Initialiser les composants jf=new JFrame(); jp=new JPanel(); jl1=new JLabel("Veuillez entrer le nom d'utilisateur :"); jtf1=new JTextField(10); jtf1.setToolTipText("Le nom d'utilisateur doit être3-6de lettres ou de chiffres"); jl2=new JLabel("Veuillez entrer le mot de passe :"); jtf2=new JTextField(10); jtf2.setToolTipText("Le mot de passe doit être6de lettres ou de chiffres"); jl3=new JLabel("Veuillez entrer le nom :"); jtf3=new JTextField(10); jtf32-4de chiffres jl4=new JLabel("Veuillez entrer le numéro d'étudiant :"); jtf4=new JTextField(10); jtf4.setToolTipText("Le numéro d'étudiant doit être3-6de chiffres jb1=new JButton("返回"); jb1.setToolTipText("Cliquez ici pour retourner à l'interface de connexion"); 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"}; //Le nom d'utilisateur doit être3-6位 boolean flag1=jtf1.getText().matches(regex1); String regex2="\\w{6"}; //Le mot de passe doit être6位 boolean flag2=jtf2.getText().matches(regex2); String regex3="[\\u4e00-\\u9fa5]{2,4"}; //Le nom doit être en caractères chinois2-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"); //Charger le pilote ct=DriverManager.getConnection("jdbc:odbc:ywq"); //Obtenir la connexion System.out.println("Connexion à la base de données réussie..."); } catch (Exception e) { // TODO Auto-bloc catch généré e.printStackTrace(); } } //Méthode d'inscription des utilisateurs public void UserRegis(String a,String b,String c,String d) { //Créer un véhicule de fusée try { ps=ct.prepareStatement("insert into users values(?,?,?,?)"); ps.setString(1,a); ps.setString(2,b); ps.setString(3,c); ps.setString(4,d); //Exécution int i=ps.executeUpdate(); if(i==1) { JOptionPane.showMessageDialog(null, "Inscription réussie","Message d'alerte",JOptionPane.WARNING_MESSAGE); }else { JOptionPane.showMessageDialog(null, "Échec d'inscription","Message d'alerte",JOptionPane.ERROR_MESSAGE); } } catch (SQLException e) { // TODO Auto-bloc catch généré e.printStackTrace(); } } // Méthode de vérification de connexion public void SQLverify(String a,String b) { try { ps=ct.prepareStatement("select * from users where 用户名=? et mot de passe=? "); ps.setString(1, a); ps.setString(2, b); // ResultSet ensemble des résultats, vous pouvez comprendre ResultSet comme le résultat d'un ensemble de lignes de table retourné rs = ps.executeQuery(); if(rs.next()) { user = rs.getString(1); pwd = rs.getString(2); JOptionPane.showMessageDialog(null, "Connexion réussie!!!", "Message d'alerte", JOptionPane.WARNING_MESSAGE); System.out.println("Mot de passe et nom d'utilisateur réussi à être récupéré de la base de données"); System.out.println(user + "\t" + pwd + "\t"); }else { JOptionPane.showMessageDialog(null, "Utilisateur ou mot de passe incorrect, veuillez réessayer !", "Message d'alerte", JOptionPane.ERROR_MESSAGE); } } catch (SQLException e) { e.printStackTrace(); } } //Méthode de vérification d'inscription, vérifiez si le nom d'utilisateur existe déjà 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, "Ce nom d'utilisateur existe déjà", "Message d'alerte", JOptionPane.WARNING_MESSAGE); }else { // s'inscrire UI ui=new UI(); this.UserRegis(ui.jtf1.getText(),ui.jtf2.getText(),ui.jtf3.getText(),ui.jtf4.getText()); } } catch (SQLException e) { e.printStackTrace(); } } }
Voici la totalité du contenu de cet article, j'espère qu'il vous sera utile dans vos études, et j'espère que vous soutiendrez également le tutoriel d'encouragement.
Déclaration : le contenu de cet article est issu du réseau, et appartient à ses auteurs respectifs. Le contenu est contribué et téléversé par les utilisateurs d'Internet de manière volontaire. Ce site ne détient pas de droits de propriété, n'a pas été édité par l'homme, et n'assume aucune responsabilité juridique connexe. Si vous trouvez du contenu suspect de violation de droits d'auteur, vous êtes invité à envoyer un e-mail à : notice#oldtoolbag.com (veuillez remplacer # par @ lors de l'envoi d'un e-mail pour signaler une violation, et fournir des preuves pertinentes. Une fois vérifié, ce site supprimera immédiatement le contenu suspect de violation de droits d'auteur.)