قم بإعداد <br /> في المراحل المبكرة من <br /> ، أولاً وقبل كل شيء ، يجب أن يكون لديك بوضوح فكرة عامة ، وما هي الوظائف التي يجب تحقيقها ، وفهم جوانب الوحدة النمطية بأكملها ، واكتشاف أوجه القصور الخاصة بك من عملية العمل. معظم التقدم التقني يحتاج إلى الخروج من الممارسة.
الوظيفة : وظيفة تسجيل المستخدم+دالة تسجيل الدخول إلى النظام+توليد رمز التحقق
المعرفة : تصميم النوافذ ، تصميم قاعدة البيانات ، سمات التغليف Javabean ، تنفيذ JDBC لاتصال قاعدة البيانات ، رمز التحقق (بما في ذلك رمز التحقق بالألوان) تقنية توليد ، وبعضها مثل استخدام معلومات تسجيل مستخدم التعبير العادية ، الحصول على أحرف بشكل عشوائي للحصول على سلسلة الأحرف ، التحكم في عدد الأحرف في النص ، إلخ.
خريطة معاينة وحدة التصميم:
معاينة رمز التحقق من اللون:
قاعدة البيانات المستخدمة: MySQL
تصميم قاعدة البيانات
قم بإنشاء قاعدة بيانات DB_DATABASE01 ، والتي تحتوي على جدول TB_USER لحفظ بيانات تسجيل المستخدمين.
أنه يحتوي على 4 حقول
ID int (11)
اسم المستخدم Varchar (15)
كلمة المرور varchar (20)
البريد الإلكتروني varchar (45)
يمكن تصميم بيان MySQL مثل هذا:
إنشاء مخطط DB_DATABASE01 ؛ 1 ، "lixiyu" ، "lixiyu" ، [email protected]) ؛
استخدم lixiyu كاسم مستخدم.
حدد عبارة للتحقق من النموذج الذي تم إنشاؤه:
اكتب سمات مستخدم التغليف Javabean
حزمة com.lixiyu. public void setId (int id) {this.id = id ؛} السلسلة العامة getuseernername () {return username ؛} public void setUsername (string username) {thi s.username = username ؛} السلسلة العامة getPassword () {return password ؛ } public void setPassword (سلسلة كلمة مرور) {this.password = password ؛} السلسلة العامة getEmail () {return elem ؛
اكتب فئة أداة JDBC
ضع الرمز المتعلق بعملية قاعدة البيانات في واجهة DBConfig وفئة DBHelper
يتم استخدام واجهة DBConfig لحفظ قاعدة البيانات واسم المستخدم وكلمة المرور رمز معلومات:
package com.lixiyu.util ؛
لتبسيط تطوير JDBC ، استخدم Dbhelper مجموعة Commons Dbutil.
يرث فئة Dbhelper واجهة DBConfig.
(1) طريقة getConnection (): الحصول على اتصال قاعدة البيانات ، استخدم مصدر بيانات MySQL لتبسيط البرمجة لتجنب التشوهات بسبب تحميل برامج تشغيل قاعدة البيانات.
(2) موجودة () الطريقة: تحديد ما إذا كان اسم مستخدم الإدخال موجودًا.
(3) تحقق () الطريقة: عندما يدخل المستخدم اسم المستخدم وكلمة المرور ، تحقق مما إذا كانت طريقة Check () صحيحة.
(4) حفظ () الطريقة: بعد إدخال المستخدم معلومات التسجيل القانونية ، احفظ المعلومات.
رمز مفصل:
حزمة com.lixiyu. commons.dbutils.queryrunner ؛ ؛ Connection GetConnection () كلمة المرور) ؛ * لتحديد ما إذا كان المستخدم الذي يحدد اسم المستخدم متاحًا. / تحديد connnnection Query () ؛ RSH) ؛ .printstacktrace () ؛} أخيرًا. استخدم مكون العموم لانج لتجنب حقن SQL * * RETRURN: العودة إلى خطأ ، عودة إلى خطأ */ فحص منطقي ثابت (اسم مستخدم السلسلة ، كلمة المرور) {username = stringscapeutils.escapesql (username) ؛ إدخال اسم المستخدم إلى QueryRunner Runner = New QueryRunner () مؤامرة النتائج <bounge> rsh = new Scalalandler () النتيجة. TOCHARRAY () ؛ // صفيفات كلمة المرور (QueryPasswork D ، '0') ؛ / صفيفات كلمة المرور. / في حالة حدوث عودة غير طبيعية خطأ} / * * احفظ المعلومات المسجلة التي أدخلها المستخدم * * @RETURN: إذا تم إرجاع الحفظ بنجاح إلى TRUE ، فإن فشل الحفظ يرجع إلى SAVE BOOLEAN SAVE (مستخدم المستخدم) الخاطئة (مستخدم المستخدم) { QueryRunner Runner = new QuestionRunner () ؛ ؛ . e) {e.printstacktrace () ؛} أخيرًا {equietly (conn) ؛
تسجيل الدخول النظام
1.1 تصميم نافذة
استخدم تصميم BoxLayout لتعيين طريقة ترتيب التحكم من أعلى إلى أسفل:
نسخ رمز رمز كما يلي: contentPane.setLayout (New BoxLayout (contentPane ، boxlayout.page_axis)) ؛
تستخدم النافذة عناصر التحكم والمجالات النصية ومجالات كلمة المرور والأزرار وعناصر التحكم الأخرى لتنفيذ التعليمات البرمجية:
يمتد تسجيل الدخول إلى الطبقة العامة ("" "com.sun.java.swing.plaf.nimbus.nimbuslookandfeel") ؛} catch (throwable e) {eventqueue.invokeler (new r) unnaable () {public void run () {try {login frame = new login () ؛ usernamepanel = new jpanel () ؛ ؛ () ؛ jpasswordfield () ؛ = New JLabel ("/u9a8c/u8bc1/u7801/uff1a") ؛ ValidateTextField.setfont (New Font ("Microsoft Yahei" ، font.plain ، 15) ؛ valuitedpanel.add (ValidateTextfield) ؛ ValityTextfield.setColumns (5) ). ) ؛ CancelButton = New Jbutton ("Exit") ؛ .
عرض في النافذة:
فئة Swingutil {/** وفقًا لحجم الحاوية ، يتم حساب الإحداثيات اليسرى اليسرى. / 2 ؛ إحداثيات الزاوية اليسرى}}
1.2 الحصول على رمز التحقق ورسمه
الطبقة العامة CaptChalabel يمتد Jlabel {Private Static Final SerialVersionuid = -963570191302793615 ؛ الملصق} Overridepublic Void Paint (Graphics G) {Super. G.DrawString (نص ، 5 ، 25) ؛
*رمز التحقق من اللون:
الطبقة العامة colorfluledcaptChalabel يمتد Jlabel {Private Static Final SerialVersionuid = -963570191302793615L ؛ .gray ، color.green ، color.light_gray ، color.magenta ، color.orange ، color.pink ، color.red ، color.yllow} ؛ النص = setPreferredsize (60 ، 36) ؛ setfont (خط جديد ("Microsoft Yahei" ، font.plain ، 16)) ؛ color Randomutils.Nextint (Colors.Length)) ؛
1.3 مدرسة غير فارغة
if (username.isempty ()) {// تحديد ما إذا كان اسم المستخدم فارغًا. (كلمة المرور) .isempty ()) {// حدد ما إذا كانت كلمة المرور فارغة jobpane.showmessagedialog (هذا ، "كلمة المرور لا يمكن أن تكون فارغة!" ، "warningpane.warning_message) ؛ return ؛} if (ate.isempty ()))) {// حدد ما إذا كان رمز التحقق هو reghpanepane.showmessagedialog (هذا ، "رمز التحقق لا يمكن أن يكون فارغًا!" ، "معلومات التحذير" ، jobpane.warning_message) ؛
1.4 التحقق من الشرعية
إذا كان (! dbhelper.exists (اسم المستخدم)) {// إذا لم يكن اسم المستخدم موجودًا ، فسيطلب من JobPane.ShowMessagedialog (هذا ، "اسم المستخدم غير موجود!" ، "warningpane.warning_message) ؛ return ؛} if ( ! للمطالبة JobPane.ShowMessagedialog (هذا ، "خطأ رمز التحقق!" ، "معلومات التحذير" ، Jobparning_Message) ؛
1.5 عرض النافذة الرئيسية
eventqueue.invokeLateer (new RunNable () {OverRidepublic Run () {mainframe frame = new mainframe () ؛ // إنشاء الإطار الرئيسي. ) {E.PrintStackTrace () ؛}}) ؛
تصميم النافذة الرئيسية (بسيطة نسبيا هذا):
Mainframe () {setDefaultCloseOperation (jframe.exit_on_close) ؛ ContentPane .SetLayout (New BorderLayout (0 ، 0)) ؛ El .setfont (خط جديد ("Microsoft yahei" ، font.plain ، 40) ؛ // set tag fonts contentPane.add (tiplabel ، borderlayout.center) ؛ // application label setlocation (swingutil.centrecontainer (geti Ze ()) ) ؛
تسجيل المستخدم
1.1 تصميم نافذة
يمتد السجل العام {/**** Final Serizinguid = 249129429716338L ؛ عرض معلومات موجه/*** قم بتشغيل التطبيق.*/public static void main (String [] art) {try {uimanager.setlookandfeel ("com.sun.java.plaf.nimbus.ni.ni mbuslookandfeel") ؛ (Throwable E) {E.PrintStackTrace () ؛} EventQueue.invokelo (new RunNable () {Overridepublic void Run () {try {register frame = newer () ؛ f rame.setVisible (true) ؛} catch (استثناء e e ) {E.PrintStackTrace () ؛}}) ؛}/*** إنشاء الإطار New JPanel () setContentPane (ContentPane) ؛ /u540d/uff1a ") ؛ uernamelabel.setfont to 4/U7684 /u7b57/u7b26/u7b26/u4e32 ") (DocumentSizer ، 15) ؛ ") ؛ passwordlabel1.setfont toset (" Microsoft Yahei "، font.plain ، 15)) ؛ passwordpanel1.add (passwordfield1 = newwordfield (passwordfordfield1 = newwordfield () 20) ؛ .setcolumns (10) 15) ؛ DocumeSizizer ، 20) ؛ .Add (EmailPanel) ) ؛ adddocumentlister (New DocumentSeListener ، 45) ؛ tton submitbutton = new jbutton (/u63d0/u4ea4) ؛ ، font.plain ، = New Jbutton ("/u53d6/u6d88") ؛ Yahei "، font.plain ، 15) ؛ ButtonPanel.add (CancelButton) ؛ Pack () ؛ // ضبط حجم setLocation (swingutil.centrecontrecontrecontrecontrecontr ainer (getSize ())) ؛ منتصف النافذة}
1.2 استخدم DocumentFilter للحد من عدد الأحرف المتوفرة في النص
يمتد فئة Public DocumentSizeFilter {private int maxSize ؛ ، int Office ، سلسلة السلسلة ، attributeset attr) يلقي badlocationException {if (fb.getDocume (). getLength () + string.length ()) <= maxSize) super.insertstring كبير الطول (FB ، الإزاحة ، سلسلة ، attr) ؛ BadLocationException {if (fb.getDocument (). } {toolkit.getDefaultToolkit ().
1.3 استخدم واجهة DocumentListener لتنفيذ عنصر التحكم في نص العرض.
DocumentSedSizeliseliseliseliselisizize elements {private jlabel tiplabel ؛ }@ ouverridepubublic void removenate (documentevent e) {settiptext (e) ؛}@osuepublic voidupdate (documentevent e) {settiptext (e) ؛} private void settiptext (documentevent e) كائن المستند Tiplabel.setForeground (color.black) ٪ tiplabel. () + "/" + maxSize) ؛}}
1.4 مدرسة غير فارغة
if (username.isempty ()) {// تحديد ما إذا كان اسم المستخدم فارغًا. (password1) .isempty ()) {// حدد ما إذا كانت كلمة المرور هي Newspane. showmessagedialog (هذا ، "كلمة المرور لا يمكن أن تكون فارغة!" ، "warningpane.warning_message) ؛ return ؛} if (new s tring (password2). ()) {// الحكم ما إذا كانت كلمة مرور التأكيد فارغة panepane.showmessagedialog (هذا ، "تأكيد كلمة المرور لا يمكن أن يكون فارغًا!" ، "warningpane.warning_message) ؛ pty ()) {{// (هذا ، "البريد الإلكتروني لا يمكن أن يكون فارغًا!" ، "معلومات التحذير" ، jobpane.warning_message) ؛
1.5 استخدم سلسلة التحقق العادية التعبير (التحقق من الشرعية)
// قمح ما إذا كان اسم المستخدم قانونيًا إذا (! pattern.matches ("// w {5،15}" ، اسم المستخدم) {JobPane.ShowMessagedialog (هذا ، "الرجاء إدخال اسم المستخدم القانوني!" ، "معلومات التحذير" ، jobpane.warning_message) ؛ هذا ، هذا ، هذا ، هذا ، هذا ، هذا ، هذا ، هذا ، هذا ، هذا ، هذا ، هذا ، هذا ، هذا ، هذا ، هذا ، هذا ، هذا ، "إدخال كلمات المرور المختلفة! "" ، "" ، "" "معلومات التحذير" ، jobpane.warning_message) ؛ العودة ؛} // jobpine.showmessagedialo g (هذا ، "الرجاء إدخال البريد الإلكتروني القانوني!" ، "معلومات التحذير" ، jobpane.warning_message) ؛ LOG (هذا ، "اسم المستخدم موجود بالفعل" ، "معلومات التحذير" ، JobPane.warning_message) ؛
1.6 احفظ معلومات التسجيل
المستخدم = مستخدم جديد (). if (dbhelper.save (user)) {JobPane.ShowMessagedialog (هذا "تسجيل المستخدم!" ane .information_message) ؛ ؛}}}
في هذه المرحلة ، يتم الانتهاء من وحدة تسجيل تسجيل الدخول بسيطة وكاملة.
ما سبق هو كل محتويات هذه المقالة.