قم بتسجيل الدخول وتسجيل الكود الصغير ، ودمج بعض المعرفة الصغيرة التي تعلمتها واستخدامها لتعميق انطباعك. إذا كان هناك أي تعليقات في هذا المثال ، فيرجى الرجوع إلى المدونات الأخرى للحصول على التفاصيل.
مقدمة الوظيفة: نظام تسجيل الدخول والتسجيل البسيط ، باستخدام المعرفة مثل قاعدة البيانات SQLServer ، نمط Singleton ، التعبيرات العادية ، والتطوير الرسومي.
1. في واجهة تسجيل الدخول ، يمكنك تسجيل الدخول أو تسجيل مستخدم. قم بتسجيل واجهة المستخدم وأدخل المعلومات وفقًا لمتطلبات التنسيق المحددة في التعبير العادي. إذا كان هناك أي خطأ ، أعد الدخول.
2. انقر للتسجيل والاتصال أولاً بقاعدة بيانات SQLServer. إذا نجح الاتصال ، فسوف يحدد ما إذا كان اسم المستخدم موجودًا بالفعل. إذا كان موجودًا ، فسيتم إعطاء موجه. خلاف ذلك ، سجل.
3. سجل الواجهة. عند النقر فوق زر تسجيل الدخول ، قم أولاً بإنشاء اتصال مع قاعدة البيانات. ابحث في قاعدة البيانات وفقًا لاسم المستخدم وكلمة المرور. إذا كان الأمر كذلك ، فسيكون تسجيل الدخول ناجحًا. خلاف ذلك ، إعطاء موجه.
4. باستخدام وضع Singleton ، يمكننا فقط إنشاء كائن يشبه SQLServer ، والذي يحفظ بشكل كبير الذاكرة.
انظر: https://github.com/chaohuangtianjie994/a-login-register-system
5. بناءً على هذا ، يمكن تنفيذ عدد كبير من وظائف التوسع.
الرمز كما يلي:
userregister.java واجهة تسجيل الدخول.
Package1 ؛ / * * الوظيفة: تحتوي واجهة تسجيل الدخول على وظيفة التسجيل وواجهة التسجيل تنبثق. * احفظ المعلومات المسجلة في قاعدة البيانات وتسجيل الدخول يمكن تنفيذها. *المؤلف: ywq */ import javax.swing. *؛ استيراد java.awt.*؛ استيراد java.awt.event.*؛ استيراد java.sql.*؛ يمتد userregister من الفئة العامة JFrame تنفذ 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 ؛ الفراغ الثابت العام (سلسلة [] args) {userregister ur = new userregister () ؛ } user userregister () {// إنشاء مكون // إنشاء مكون jb1 = new jbutton ("login") ؛ JB2 = New JButton ("التسجيل") ؛ JB3 = New JButton ("Exit") ؛ // تعيين الاستماع JB1.AddActionListener (هذا) ؛ jb2.AddActionListener (هذا) ؛ JB3.AddActionListener (هذا) ؛ 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 (صحيح) ؛ this.setResible (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) {// استمع إلى كل زر إذا (e.getActionCommand () == "exit") {system.exit (0) ؛ } if if ( } آخر إذا ( }} // method method public void regis () {this.dispose () ؛ // أغلق الواجهة الحالية الجديدة () ؛ // افتح الواجهة الجديدة} // طريقة تسجيل الدخول public void login () {sqlserver s = new sqlserver () ؛ S.Connectsql () ؛ S.SqLverify (jtf.getText () ، jpf.getText ()) ؛ this.jtf.settext ("") ؛ this.jpf.settext ("") ؛ }} عرض صفحة ui.java للتسجيل. يتم استخدام التعبيرات العادية لتحديد محتوى الإدخال. عند التسجيل ، تحتاج إلى تحديد ما إذا كان اسم المستخدم موجودًا أولاً. إذا كانت موجودة ، يتم إعطاء موجه ، وإلا سجل.
Package1 ؛ استيراد java.awt.event.*؛ استيراد java.awt.*؛ استيراد javax.swing.*؛ / * * واجهة التسجيل. */Class UI يمتد JFrame تنفذ 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 أرقام أحرف _or") ؛ 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 ("Return") ؛ jb1.settooltiptext ("انقر لي للعودة إلى واجهة تسجيل الدخول") ؛ JB2 = New JButton ("التسجيل") ؛ JB1.AddActionListener (هذا) ؛ jb2.AddActionListener (هذا) ؛ 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 (صحيح) ؛ this.setDefaultCloseOperation (jframe.exit_on_close) ؛ // this.setResible (false) ؛ } public void actionperformed (ActionEvent e) {if ( مستخدم جديد () ؛ // system.out.println ("-------") ؛ } آخر إذا (e.getActionCommand () == "تسجيل") {// استدعاء طريقة التسجيل this.zhuce () ؛ }} public void zhuce () {string regex1 = "// w {3،6}" ؛ // يجب أن يكون اسم المستخدم 3-6 بت flag1 = jtf1.getText (). المطابقات (regex1) ؛ regex2 = "// w {6}" ؛ // يجب أن تكون كلمة المرور 6 بت من flag2 = jtf2.getText (). المطابقة (regex2) ؛ regex3 = "[// u4e00-// u9fa5] {2،4}" ؛ // يجب أن يكون الاسم 2-4 أحرف صينية boolean flag3 = jtf3.getText (). المطابقة (regex3) ؛ String regex4 = "// d {3،6}" ؛ // يجب أن يكون رقم الطالب 3-6 بت flag4 = jtf4.getText (). المطابقات (regex4) ؛ // if (jtf1.getText () == null || jtf2.getText () == null || jtf3.getText () == null || jtf4.getText () == null) if strails or onger or on {joptionpane.showmessagedialog (null ، joptionpane.warning_message) ؛ JTF1.Settext ("") ؛ } آخر إذا (flag2 == false) {joptionpane.showmessagedialog (null ، "تم ملء كلمة المرور بشكل غير صحيح ، يجب أن تكون 6 أحرف أو أرقام" ، "رسالة موجهة" ، joptionpane.warning_message) ؛ JTF2.Settext ("") ؛ } آخر إذا (flag3 == false) {joptionpane.showmessagedialog (null ، "ملء الاسم غير الصحيح ، يجب أن تكون الأحرف الصينية 2-4 أرقام" ، "رسالة موجهة" ، joptionpane.warning_message) ؛ JTF3.Settext ("") ؛ } آخر إذا (flag4 == false) {joptionpane.showmessagedialog (null ، "ملء رقم الطالب غير الصحيح ، يجب أن يكون 3-6 أرقام" ، "رسالة موجهة" ، joptionpane.warning_message) ؛ JTF4.Settext ("") ؛ } آخر {// استدعاء طريقة التسجيل/تحقق أولاً مما إذا كان اسم المستخدم المراد تسجيله موجودًا SQLServer SS = جديد 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 بتنفيذ وظائف مختلفة مثل الاتصال بقاعدة البيانات والتحقق من الاستعلام.
Package1 ؛ استيراد java.sql.*؛ استيراد javax.swing.joptionpane ؛ /** العمليات المتعلقة بقواعد البيانات ، مغلفة بشكل منفصل في الفئات*/ class sqlserver {connection ct ؛ أعدت PS ؛ ResultSet RS ؛ مستخدم سلسلة ، ذاتي ؛ // تغلف الطريقة التي يتم الاتصال بقاعدة البيانات إلى طريقة public void connectsql () {try {class.forname ("sun.jdbc.odbc.jdbcodbcdriver") ؛ // تحميل برنامج التشغيل ct = drivermanager.getConnection ("JDBC: ODBC: ywq") ؛ // GET Connection System.out.println ("Database Connected ...") ؛ } catch (استثناء e) {// todo catch e.printstacktrace () ؛ }} // طريقة لتسجيل user user userregis (السلسلة A ، السلسلة B ، السلسلة C ، السلسلة D) {// إنشاء Rocket Try {ps = ct.preparestatement ("أدخل في قيم المستخدمين (؟ ،؟ ،؟ ،؟ ،؟ ،؟)") ؛ ps.SetString (1 ، a) ؛ Ps.SetString (2 ، ب) ؛ Ps.SetString (3 ، C) ؛ ps.SetString (4 ، د) ؛ // تنفيذ int i = ps.executeupdate () ؛ if (i == 1) {joptionpane.showmessagedialog (null ، "النجاح المسجل" ، "رسالة موجهة" ، joptionpane.warning_message) ؛ } آخر {joptionpane.showmessagedialog (null ، "register fans" ، "message form" ، joptionpane.error_message) ؛ }} catch (sqlexception e) {// todo catch catch e.printstacktrace () ؛ }} // طريقة التحقق من تسجيل الدخول public void sqlverify (السلسلة A ، السلسلة B) {try {ps = ct.preparestatement ("حدد * من المستخدمين حيث اسم المستخدم =؟ و password =؟") ؛ ps.SetString (1 ، a) ؛ Ps.SetString (2 ، ب) ؛ // مجموعة نتائج 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 () ؛ }} // تسجيل طريقة التحقق لتحديد ما إذا كان اسم المستخدم بالفعل لديه void public zhuceverify (السلسلة a) {try {ps = ct.preparestatement ("حدد * من المستخدمين حيث اسم المستخدم =؟") ؛ // system.out.println (ps) ؛ ps.SetString (1 ، a) ؛ rs = ps.executequery () ؛ if (rs.next ()) {joptionpane.showmessagedialog (null ، "اسم المستخدم موجود بالفعل" ، "رسالة موجهة" ، joptionpane.warning_message) ؛ } else {// register ui ui = new ui () ؛ this.userregis (ui.jtf1.gettext () ، ui.jtf2.gettext () ، ui.jtf3.gettext () ، ui.jtf4.getText ()) ؛ }} catch (sqlexception e) {E.PrintStackTrace () ؛ }}}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.