English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
كود صغير لتسجيل الدخول والإنضمام، يدمج بعض المعرفة الصغيرة التي تعلمتها واستخدامها لزيادة التذكر. في هذا المثال، إذا كانت التعليقات غير واضحة، راجع المدونات الأخرى.
شرح للوظائف:نظام تسجيل الدخول والإنضمام بسيط، يستخدم قاعدة بيانات sqlserver ومبدأ الصيغة الفردية، تعبير النمط العادي، وتطوير التطبيقات التفاعلية.
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); هذا.setVisible(true); this.setResizable(false); this.setTitle("注册登录界面"); this.setLayout(new GridLayout(3,1)); هذا.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); هذا.add(jp); هذا.setTitle("واجهة التسجيل"); هذا.setBounds(200, 100, 250, 150); هذا.setVisible(true); هذا.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هذا.setResizable(false); } public void actionPerformed(ActionEvent e) { إذا (e.getActionCommand() == "رجوع") { هذا الدستور 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(""); } { //调用注册方法/先检查要注册的用户名是否存在 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) { // إنشاء سيارة صاروخية try { ps=ct.prepareStatement("insert into users values(?,?,?,?)"); ps.setString(1,a); ps.setString(2,b); ps.setString(3,c); ps.setString(4,d); // تنفيذ int i=ps.executeUpdate(); if(i==1) { JOptionPane.showMessageDialog(null, "نجح في التسجيل","رسالة تنبيه",JOptionPane.WARNING_MESSAGE); } { JOptionPane.showMessageDialog(null, "فشل التسجيل","رسالة تنبيه",JOptionPane.ERROR_MESSAGE); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //-methodة التحقق من الورود public void SQLverify(String a,String b) { try { ps=ct.prepareStatement("select * from users where اسم المستخدم=? and كلمة المرور=? "); ps.setString(1, a); ps.setString(2, b); // ResultSet نتائج مجموعة النتائج، يمكنكم فهم ResultSet كنتائج جدول الصفوف المعدة للإرجاع rs = ps.executeQuery(); if(rs.next()) { user = rs.getString(1); pwd = rs.getString(2); JOptionPane.showMessageDialog(null, "نجح في الدخول!!!", "رسالة تنبيه", JOptionPane.WARNING_MESSAGE); System.out.println("نجح في الحصول على كلمة المرور واسم المستخدم من قاعدة البيانات"); System.out.println(user + "\t" + pwd + "\t"); } { JOptionPane.showMessageDialog(null, "اسم المستخدم أو كلمة المرور غير صحيحة، يرجى إعادة التدخل!", "رسالة تنبيه", JOptionPane.ERROR_MESSAGE); } } catch (SQLException e) { e.printStackTrace(); } } //注册验证方法,判断用户名是否已经存在 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); } { // إجراء التسجيل 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 (عند إرسال البريد الإلكتروني، يرجى استبدال # ب @) لإبلاغنا، وقدم الدليل على الدليل، إذا تم التحقق من ذلك، سيتم حذف المحتوى المزعوم فورًا.