نسخة Java-Single-Player من نظام إدارة Bookstore (وحدات تصميم الممارسة والأفكار _series 1): //www.vevb.com/article/91004.htm
يقدم
نصيحة: يوجد دليل في النقطة المذكورة أعلاه يمكنه تحديد موقع الفصول التي تحتاج إلى رؤيتها بسرعة.
اليوم ، تم إجراء تعديل صغير للرمز السابق لجعل الكود أكثر مثالية.
بالنسبة لرمز التعريف الفريد للمستخدم UUID ، سيتم تعديله ليتم إنشاؤه داخليًا في البرنامج في المستقبل.
لا يزال المستخدم الحالي UUID من قبل المستخدم.
اليوم ، بالنسبة لهذا البرنامج ، أضفنا جزءًا من طبقة العرض التقديمي لواجهة المستخدم وأضفنا تعداد الفئة العامة.
فيما يلي منشور لجميع رموز البرنامج الذي كتبته: سأنتهي تدريجياً من كتابة هذا البرنامج ، يرجى التأكيد! (يمكن العثور على الوظائف التي يجب تنفيذها في سلسلة أنظمة إدارة المكتبة. لقد قمت بتصنيف المقالات لهذه السلسلة ، حتى يتمكن الجميع من العثور عليها)
لن تتوقف هذه السلسلة من المدونات أبدًا.
الكود الآن طبقات:
الصورة بعد تشغيل البرنامج:
لقد نشرت الرمز بالترتيب من الأعلى إلى أسفل الدليل:
يرجى الملاحظة! ترتيب الرمز هذا ليس الترتيب الذي أكتبه الرمز!
إذا كنت ترغب في الرجوع إلى كتاباتي ، فالرجاء عدم اتباع ترتيب الكود الذي نشرته.
يجب عليك أولاً كتابة الفصول العامة وفصول الأدوات.
مرة أخرى: فئة طبقة البيانات -> فئة الطبقة المنطقية -> فئة طبقة العرض التقديمي
بعض الصور بعد تشغيل البرنامج:
فئة usertypeenum:
cn.hncu.bookstore.common ؛
فئة usertypeenum:
حزمة cn.hncu.bookstore.common ؛/*** الوظيفة: تعداد أنواع المستخدمين! <br/> * محدد في وحدة عامة. <br/> * المتغيرات: <br/> * admin (1 ، "Super Administrator") ، <br/> * كتاب (2 ، "مكتبة") ، <br/> * في (3 ، "مسؤول الشراء") ، <br/> Admin (1 ، "Super Administrator") ، Book (2 ، "Librarian") ، في (3 ، "مسؤول الشراء") ، OUT (4 ، "مسؤول المبيعات") ، الأسهم (5 ، "مسؤول المخزون") ؛ نوع int النهائي الخاص ؛ اسم السلسلة النهائية الخاصة ؛ / *** تهيئة اسم متغير التعداد* param type --- رقم عدد صحيح يتوافق مع متغير التعداد* اسم param --- اسم نوع السلسلة المقابل لمتغير التعداد*/ usertypeenum الخاص (int type ، string name) {this.type = type ؛ this.name = name ؛ } / *** احصل على عدد متغير التعداد الحالي* return --- type-number* / public int gettype () {return type ؛ } / *** احصل على الاسم الصيني لمتغير التعداد الحالي* return --- الاسم الصيني* / السلسلة العامة getName () {return name ؛ } /*** احصل على الاسم الصيني لمتغير التعداد المقابل للرقم بناءً على رقم int* param نوع --- المعلمة int المطلوبة لتمريرها* @العودة --- إذا كان هناك متغير تعداد يتوافق مع هذا الرقم ، يتم إرجاع الاسم الصيني لمتغير التعداد. * <br/>-إذا لم يكن هناك متغير تعداد يتوافق مع مثل هذا الرقم ، فسيتم طرح رسالة استثناء. */ سلسلة ثابتة عامة getNamebyType (int type) {for (usertypeenum usertype: usertypeenum.values ()) {if (usertype.gettype () == type) {return usertype.getName () ؛ }} رمي جديد غير unalfalArgumentException ("لا يوجد نوع مستخدم مقابل في التعداد:"+type) ؛ }/** * احصل على نوع int من متغير التعداد المقابل للاسم القائم على الاسم الصيني لمتغير التعداد * اسم param --- اسم نوع السلسلة الذي يجب أن يتم تمريره في * @العودة --- إذا كان هناك متغير التعداد المتغير ، فالإبلاغ يتوافق مع هذا الاسم. static int getTypeByName (اسم السلسلة) {for (userTypeEnum userType: userTypeEnum.values ()) {if (usertype.getName (). equals (name)) {return usertype.gettype () ؛ }} رمي جديد alfictalargumentException ("لا يوجد نوع مستخدم مقابل في التعداد:"+name) ؛ }}واجهة USEREBI:
cn.hncu.bookstore.user.business.ebi ؛
واجهة USEREBI:
package cn.hncu.bookstore.user.business.ebi ؛ import java.util.list ؛ import cn.hncu.bookstore.user.vo.usermodel ؛ import cn.hncu.bookstore.user.vo.userquerymodel ؛ / *** الوظيفة: إنشاء مستخدم** param usermodel --- بيانات المستخدم المراد إنشاؤها* return --- وسائل حقيقية الناجحة ، فشل إنشاء الوسائل الخاطئة* / BOOLEAN Public Create (usermodel user) ؛ / ** * الوظيفة: حذف مستخدم بناءً على رمز التعريف الفريد للمستخدم UUID * * param uuid --- رمز التعريف الفريد للمستخدم ، لن يكون كل مستخدم هو نفسه * @RETURN --- يعني أن الحذف ناجح ، يعني خطأ فاشل الحذف */ حذف BOOLEAN العام (سلسلة uuid) ؛ / *** الوظيفة: تعديل معلومات بيانات المستخدم** param user --- اسم معلمة بيانات المستخدم الذي يجب تعديله* return return true-يشير إلى أن التعديل ناجح ، ويشير الإرجاع إلى أن التعديل قد فشل*/ تحديث منطقي العام (مستخدم UserModel) ؛ / *** الوظيفة: احصل على جميع بيانات المستخدم** @REGINT --- مجموعة USERMODEL ، أي بيانات المستخدم*/ قائمة عامة <SERMODEL> GETALL () ؛ /** * الوظيفة: ابحث وفقًا لشروط بحث معينة ، * <br/> * إرجاع بيانات المستخدم التي تلبي شروط البحث. ** param uqm --- شروط البحث المغطاة* @Regurn ---- مجموعة بيانات المستخدم التي تلبي شروط البحث*/ القائمة العامة <UserModel> getByCondition (userQueryModel UQM) ؛ / *** الوظيفة: احصل على بيانات مستخدم معينة** param uuid --- رمز التعريف الفريد من نوعه* @RETURN --- إرجاع بيانات المستخدم الموجودة وفقًا لرمز التعريف الفريد هذا*/ getingle usermodel العامة (سلسلة uuid) ؛}
فئة userebo:
cn.hncu.bookstore.user.business.ebo ؛
فئة userebo:
package cn.hncu.bookstore.user.business.ebo ؛ import java.util cn.hncu.bookstore.user.dao.factory.userdaofactory ؛ استيراد cn.hncu.bookstore.user.vo.usermodel ؛ استيراد cn.hncu.bookstore.user.vo.userquerymodel ؛ public class userebo userebi Override Public Boolean Create (usermodel user) {return dao.create (user) ؛ } Override Public Boolean Delete (String uuid) {return dao.delete (uuid) ؛ } Override Public Boolean Update (usermodel user) {return dao.update (user) ؛ } Override Public List <Usermodel> getAll () {return dao.getall () ؛ } Override Public List <Usermodel> getByCondition (userQueryModel uqm) {// todo method method method method null ؛ } Override public usermodel getingle (string uuid) {return dao.getsingle (uuid) ؛ }}فئة USEREBIFACTORY:
cn.hncu.bookstore.user.business.Factory ؛
فئة USEREBIFACTORY:
package cn.hncu.bookstore.user.business.factory ؛ استيراد cn.hncu.bookstore.user.business.ebi.userebi ؛ استيراد cn.hncu.bookstore.user.business.ebo.userebo }}
واجهة userDao:
cn.hncu.bookstore.user.dao.dao ؛
واجهة userDao:
package cn.hncu.bookstore.user.dao.dao ؛ استيراد java.util.list ؛ استيراد cn.hncu.bookstore.user.vo.usermodel ؛ استيراد cn.hncu.bookstore userDao { / *** الوظيفة: إنشاء مستخدم** param usermodel --- بيانات المستخدم المراد إنشاؤها* @return-تعني أن إنشاء الوسائل الناجحة ، والوسائل الخاطئة فشل في إنشاء* / BOURIC BOOLEAN CREATE (USERMODEL user) ؛ / ** * الوظيفة: حذف مستخدم بناءً على رمز التعريف الفريد للمستخدم UUID * * param uuid --- رمز التعريف الفريد للمستخدم ، لن يكون كل مستخدم هو نفسه * @RETURN --- يعني أن الحذف ناجح ، يعني خطأ فاشل الحذف */ حذف BOOLEAN العام (سلسلة uuid) ؛ / *** الوظيفة: تعديل معلومات بيانات المستخدم** param user --- اسم معلمة بيانات المستخدم الذي يجب تعديله* return return true- يعني أن التعديل ناجح ، عودة خاطئة-تعني التعديل فشل*/ تحديث منطقي عام (مستخدم usermodel) ؛ / *** الوظيفة: احصل على جميع بيانات المستخدم** @REGINT --- مجموعة USERMODEL ، أي بيانات المستخدم*/ قائمة عامة <SERMODEL> GETALL () ؛ /** * الوظيفة: ابحث وفقًا لشروط بحث معينة ، * <br/> * إرجاع بيانات المستخدم التي تلبي شروط البحث. ** param uqm --- شروط البحث المغطاة* @Regurn ---- مجموعة بيانات المستخدم التي تلبي شروط البحث*/ القائمة العامة <UserModel> getByCondition (userQueryModel UQM) ؛ / *** الوظيفة: احصل على بيانات مستخدم معينة** param uuid --- رمز التعريف الفريد من نوعه* @RETURN --- إرجاع بيانات المستخدم الموجودة وفقًا لرمز التعريف الفريد هذا*/ getingle usermodel العامة (سلسلة uuid) ؛}فئة userDaoFactory:
cn.hncu.bookstore.user.dao.factory ؛
فئة userDaoFactory:
package cn.hncu.bookstore.user.dao.factory ؛ استيراد cn.hncu.bookstore.user.dao.dao.userdao ؛ استيراد cn.hncu.bookstore.user.dao.impl.userdaoserimpl ؛ */الفئة العامة userDaofActory {public static userdao getUserdao () {return new userDaoSerimpl () ؛ }}فئة userDaoSerimpl:
cn.hncu.bookstore.user.dao.impl ؛
فئة userDaoSerimpl:
package cn.hncu.bookstore.user.dao.impl ؛ import java.util.arraylist ؛ import java.util.list ؛ import cn.hncu.bookstore.user.dao.dao cn.hncu.bookstore.user.vo.userquerymodel ؛ استيراد cn.hncu.bookstore.util.fileioutil ؛/** * <br/> * فئة تنفيذ محددة لمعالجة بيانات المستخدم --- تنفيذ userdao interface * * author chen haoxiang * * @vivers file_name = "user.txt" ؛ Override Public Boolean Create (usermodel user) {// 1 First Deserialize (read) قائمة البيانات الموجودة <Sermodel> list = fileioutil.readformfile (file_name) ؛ // 2 حدد ما إذا كان المستخدم موجودًا بالفعل ، ثم قرر ما إذا كان سيتم إنشاء (UserModel usermodel: list) {// إذا كان uuids من المستخدمين متساويين ، فإن المستخدم هو نفسه إذا كان (usermodel.getuuid (). fileioutil.write2file (قائمة ، file_name) ؛ إرجاع true ؛ // إنشاء بنجاح ، إرجاع True} Override Public Boolean Delete (String uuid) {// 1 First Deserialize (اقرأ) قائمة البيانات الموجودة <Sermodel> list = fileioutil.readformfile (file_name) ؛ // 2 حدد ما إذا كان المستخدم موجودًا بالفعل ، ثم قرر ما إذا كان سيتم حذف // لـ (int i = 0 ؛ i <list.size () ؛ i ++) {// if (list.get (i) .getuuid (). equals (uuid)) {// list.remove (i) ؛ // fileioutil.write2file (list ، file_name) ؛ // إرجاع صحيح ؛ //} //} لـ (usermodel usermodel: list) {// إذا كان uuids من مستخدمين متساويين ، فإن المستخدم هو نفسه إذا (usermodel.getuuid (). equals (uuid)) {list.remove (usermodel) ؛ fileioutil.write2file (قائمة ، file_name) ؛ // حذف بنجاح ، إرجاع Return True True ؛ }} // 3 المستخدم غير موجود // فشل حذف ، إرجاع عودة خاطئة خطأ ؛ } Override Public Boolean Update (usermodel user) {// 1 deserialize (اقرأ) قائمة البيانات الأولى الموجودة <Sermodel> list = fileioutil.readformfile (file_name) ؛ // 2 حدد ما إذا كان المستخدم موجودًا بالفعل ، ثم قرر ما إذا كان سيتم إنشاء (int i = 0 ؛ i <list.size () ؛ i ++) {// uuid لا يمكن تغييره. ابحث عن بيانات المستخدم من خلال UUID ، وقم بتعديلها على ما يرام إذا (list.get (i) .getuuid (). equals (user.getuuid ())) {// تعديل المستخدم الذي تم العثور عليه إلى قائمة المستخدم (i ، user) ؛ fileioutil.write2file (قائمة ، file_name) ؛ // ابحث عن المستخدم وإرجاع الإرجاع الحقيقي الحقيقي ؛ }} // 3 إذا لم يكن المستخدم موجودًا ، فإن التعديل فشل في العودة خطأ ؛ } Override Public List <Usermodel> getAll () {return fileioutil.readformfile (file_name) ؛ } Override Public List <Usermodel> getByCondition (userQueryModel uqm) {// todo method method method method null ؛ } Override Public UserModel getingle (string uuid) {// 1 deserialize (اقرأ) قائمة البيانات الحالية الحالية <SterModel> list = fileioutil.readformfile (file_name) ؛ // 2 حدد ما إذا كان المستخدم موجودًا بالفعل ، وإذا كان موجودًا ، فأرجع المستخدم لـ (int i = 0 ؛ i <list.size () ؛ i ++) {if (list.get (i) .getuuid (). equals (uuid)) {return list.get.get (i) ؛ }} // 3 إذا لم يكن المستخدم موجودًا ، فقم بإرجاع إرجاع NULL NULL ؛ }}فئة Addpanel:
cn.hncu.bookstore.user.ui ؛
فئة Addpanel:
/ * * addpanel.java * * تم إنشاؤه على __date__ ، __time__ */package cn.hncu.bookstore.user.ui ؛ import javax.swing.jframe ؛ import javax.swing.joptionpane ؛ import cn.hncu.bookstore.common.usertypeenum ؛ cn.hncu.bookstore.user.business.ebi.userebi ؛ استيراد cn.hncu.bookstore.user.business.factory.userebifactory ؛ Haoxiang*/class public addpanel يمتد javax.swing.jpanel {private jframe mainframe = null ؛ / ** إنشاء نموذج جديد addPanel*/ public addPanel (Jframe Mainframe) {this.mainframe = mainframe ؛ initComponents () ؛ myinitdata () ؛ } private void myinitdata () {for (usertypeenum type: usertypeenum.values ()) {combtype.additem (type.getName ()) ؛ }} /** تسمى هذه الطريقة من داخل المُنشئ إلى* تهيئة النموذج. * تحذير: لا تعدل هذا الرمز. يتم تجديد محتوى هذه الطريقة دائمًا بواسطة محرر النماذج. */// gen-begin: initComponents // <Editor-Fold DefaultState = "Glapsed" desc = "code regended"> private void initComponents () {jlabel1 = new javax.swing.jlabel () ؛ jlabel2 = new javax.swing.jlabel () ؛ tfdname = new javax.swing.jtextfield () ؛ jlabel3 = new javax.swing.jlabel () ؛ tfduuid = new javax.swing.jtextfield () ؛ jlabel4 = new javax.swing.jlabel () ؛ TFDPWD2 = new javax.swing.jpasswordfield () ؛ JLabel5 = new javax.swing.jlabel () ؛ jlabel6 = new javax.swing.jlabel () ؛ combitype = new javax.swing.jcombobox () ؛ TFDPWD = new javax.swing.jpasswordfield () ؛ btnadd = new javax.swing.jbutton () ؛ btnback = new javax.swing.jbutton () ؛ setMinimumSize (New Java.Awt.Dimension (800 ، 600)) ؛ setLayout (NULL) ؛ jlabel1.setfont (New Java.awt.font ("Microsoft Yahei" ، 1 ، 48)) ؛ jlabel1.setforeground (New Java.Awt.Color (204 ، 0 ، 0)) ؛ jlabel1.settext ("/u6dfb/u52a0/u7528/u6237") ؛ إضافة (jlabel1) ؛ jlabel1.setBounds (270 ، 30 ، 230 ، 80) ؛ jlabel2.setfont (New Java.awt.font ("Microsoft Yahei" ، 0 ، 18)) ؛ jlabel2.settext ("/u7528/u6237/u7c7b/u578b:") ؛ إضافة (jlabel2) ؛ JLabel2.SetBounds (40 ، 310 ، 90 ، 30) ؛ tfdname.setfont (New Java.awt.font ("Dialog" ، 1 ، 18)) ؛ tfdname.setautoscrolls (false) ؛ إضافة (tfdname) ؛ tfdname.setBounds (420 ، 160 ، 120 ، 30) ؛ jlabel3.setfont (New Java.awt.font ("Microsoft Yahei" ، 0 ، 18)) ؛ jlabel3.settext ("uuid:") ؛ إضافة (jlabel3) ؛ JLabel3.setBounds (70 ، 160 ، 50 ، 30) ؛ tfduuid.setfont (new java.awt.font ("Dialog" ، 0 ، 11)) ؛ إضافة (tfduuid) ؛ tfduuid.setBounds (140 ، 160 ، 110 ، 30) ؛ JLabel4.SetFont (New Java.awt.font ("Microsoft Yahei" ، 0 ، 18)) ؛ JLabel4.Settext ("/u59d3/u540d:") ؛ إضافة (jlabel4) ؛ JLabel4.SetBounds (360 ، 160 ، 50 ، 30) ؛ إضافة (TFDPWD2) ؛ TFDPWD2.SetBounds (420 ، 240 ، 170 ، 30) ؛ JLabel5.setfont (New Java.awt.font ("Microsoft Yahei" ، 0 ، 18)) ؛ jlabel5.settext ("/u5bc6/u7801:") ؛ إضافة (jlabel5) ؛ JLabel5.setBounds (70 ، 240 ، 50 ، 30) ؛ jlabel6.setfont (New Java.awt.font ("Microsoft Yahei" ، 0 ، 18)) ؛ jlabel6.settext ("/u786e/u8ba4/u5bc6/u7801:") ؛ إضافة (jlabel6) ؛ jlabel6.setBounds (330 ، 240 ، 90 ، 30) ؛ combitype.setfont (New Java.awt.font ("Dialog" ، 1 ، 18)) ؛ combitype.setforeground (New Java.Awt.Color (51 ، 51 ، 255)) ؛ combtype.setmodel (new javax.swing.defaultComboBoxModel (سلسلة جديدة [] {"الرجاء تحديد ..."})) ؛ إضافة (combitype) ؛ combitype.setBounds (140 ، 310 ، 160 ، 30) ؛ tfdpwd.setfont (new java.awt.font ("安一" ، 1 ، 18)) ؛ إضافة (TFDPWD) ؛ TFDPWD.SetBounds (140 ، 240 ، 160 ، 30) ؛ btnadd.setfont (New Java.awt.font ("Dialog" ، 1 ، 24)) ؛ Btnadd.SetForeGround (New Java.Awt.Color (0 ، 204 ، 204)) ؛ btnadd.settext ("/u6dfb/u52a0") ؛ btnadd.addActionListener (new java.awt.event.ActionListener () {public void actionperformed (java.awt.event.actionevent evt) {btnaddacteperformed (evt) ؛}}) ؛ إضافة (btnadd) ؛ Btnadd.SetBounds (140 ، 430 ، 120 ، 60) ؛ btnback.setfont (New Java.awt.font ("Dialog" ، 1 ، 24)) ؛ btnback.setforeground (New Java.Awt.Color (0 ، 204 ، 204)) ؛ btnback.settext ("/u8fd4/u56de") ؛ btnback.addActionListener (new java.awt.event.actionListener () {public void actionperformed (java.awt.event.actionevent evt) {btnbackActionPerformed (evt) ؛}}) ؛ إضافة (btnback) ؛ btnback.setBounds (470 ، 430 ، 120 ، 60) ؛ } // </editor-fold> // gen-end: initComponents private void back () {mainframe.setContentPane (new listpanel (mainframe)) ؛ mainframe.validate () ؛ } / ***استمع زر العودة*param انقر فوق الاستماع إلى زر الإرجاع* / private void btnbackActionPerformed (java.awt.event.actionevent evt) {back () ؛ } private void btnaddActionPerformed (java.awt.event.actionevent evt) {// 1 جمع المعلمات uuid = tfduuid.getText () ؛ اسم السلسلة = tfdname.getText () ؛ String pwd = new string (tfdpwd.getPassword ()) ؛ String pwd2 = سلسلة جديدة (TFDPWD2.GetPassword ()) ؛ if (! pwd.equals (pwd2)) {joptionpane.showmessagedialog (null ، "مدخلات كلمة المرور غير متسقة مرتين ، يرجى إعادة الدخول!") ؛ يعود؛ } int type = 0 ؛ حاول {type = usertypeenum.gettypebyname (combtype.getSelectedItem () .toString ()) ؛ } catch (استثناء e) {joptionpane.showmessagedialog (null ، "يرجى تحديد نوع المستخدم!") ؛ يعود؛ } // 2 تنظيم المعلمات usermodel user = new UserModel () ؛ user.setName (name) ؛ user.setpwd (pwd) ؛ user.settype (type) ؛ user.setuuid (uuid) ؛ // 3 استدعاء الطبقة المنطقية userebi ebi = userebiFactory.getuserebi () ؛ // 4direct إلى صفحات مختلفة وفقًا للنتيجة التي تم إرجاعها بواسطة المكالمة إذا (ebi.create (user)) {back () ؛ } آخر {joptionpane.showmessagedialog (null ، "هذا المستخدم موجود بالفعل!") ؛ }} // gen -begin: متغيرات // إعلان المتغيرات - لا تعدل javax.swing.jbutton btnadd ؛ الخاص javax.swing.jbutton btnback ؛ private javax.swing.jcombobox combitype ؛ الخاص javax.swing.jlabel jlabel1 ؛ الخاص javax.swing.jlabel jlabel2 ؛ الخاص javax.swing.jlabel jlabel3 ؛ الخاص javax.swing.jlabel jlabel4 ؛ الخاص javax.swing.jlabel jlabel5 ؛ الخاص javax.swing.jlabel jlabel6 ؛ الخاص javax.swing.jtextfield tfdname ؛ الخاص javax.swing.jpasswordfield TFDPWD ؛ private javax.swing.jpasswordfield TFDPWD2 ؛ private javax.swing.jtextfield tfduuid ؛ // نهاية إعلان المتغيرات // gen-end: المتغيرات}فئة ListPanel:
cn.hncu.bookstore.user.ui ؛
فئة ListPanel:
/ * * listpanel.java * * تم إنشاؤه على __date__ ، __time__ */package cn.hncu.bookstore.user.ui ؛ import java.util.list ؛ import javax.swing.jframe ؛ import cn.hncu.bookstore.user.business.ebi. cn.hncu.bookstore.user.business.factory.userebifactory ؛ استيراد cn.hncu.bookstore.user.vo.usermodel ؛/*** عرض طبقة العرض التقديمي*** @author chen haoxiang* @version 1.0*/public class list passends javax.swing.jpan. / ** إنشاء نموذج جديد listPanel*/ public listPanel (JFrame Mainframe) {this.mainframe = mainframe ؛ initComponents () ؛ myinitdata () ؛ } / *** اقرأ جميع المستخدمين وأضفهم إلى القائمة* / private void myinitdata () {userebi user = userebiFActory.getuserebi () ؛ قائمة <SERMODEL> list = user.getAll () ؛ userlists.setListData (list.toarray ()) ؛ } /** هذه الطريقة تسمى من داخل المنشئ إلى* تهيئة النموذج. * تحذير: لا تعدل هذا الرمز. يتم تجديد محتوى هذه الطريقة دائمًا بواسطة محرر النماذج. *///gen-begin: initComponents // <editor-fold defaultState = "Glappsed" desc = "code code"> private void initComponents () {jsCrollPane1 = new javax.swing.jscrollpane () ؛ userlists = new javax.swing.jlist () ؛ jlabel1 = new javax.swing.jlabel () ؛ btntoadd = new javax.swing.jbutton () ؛ setMinimumSize (New Java.Awt.Dimension (800 ، 600)) ؛ setLayout (NULL) ؛ userlists.setmodel (new javax.swing.abstractListModel () {String [] STRINGS = {"" " jscrollpane1.setViewPortView (قوائم المستخدمين) ؛ إضافة (jscrollpane1) ؛ jscrollpane1.setBounds (150 ، 150 ، 480 ، 230) ؛ jlabel1.setfont (New Java.awt.font ("Tahoma" ، 1 ، 48)) ؛ jlabel1.setforeground (New Java.Awt.Color (204 ، 0 ، 51)) ؛ jlabel1.settext ("user") ؛ jlabel1.settext ("user") ؛ jlabel1.setforeground (New Java.Awt.Color (204 ، 0 ، 51)) ؛ jlabel1.settext ("user") ؛ قائمة ") ؛ إضافة (jlabel1) ؛ jlabel1.setBounds (270 ، 30 ، 260 ، 80) ؛ btntoadd.setfont (new java.awt.font (" Dialog "، 1 ، 18)) ؛ btntoadd.addactioner (new java.awt.ActionListener () {public void actionperformed ( </editor-fold> // gen-end: initComponents private void btntoaddactionperformed (java.awt.actionevent evt) javax.swing.jbutton btntoadd ؛فئة UserModel:
cn.hncu.bookstore.user.vo ؛
فئة UserModel:
وحدة كائن قيمة المستخدم:
package cn.hncu.bookstore.user.vo ؛ استيراد java.io.serializable ؛ استيراد cn.hncu.bookstore.common.usertypeenum ؛/** * @auuthor chen haoxiang * @version 1.0 * <br/> * كائن القيمة المستخدمة لتوفير معلومات المستخدم <br/> طريقة setter-getters <br/> * 3. الكتابة متساوية وطريقة الرمز --- استخدم المفتاح الأساسي (UUID) رمز التعرف الفريد <br/> * 4 pwd ؛ // كلمة مرور المستخدم public usermodel () {}/*** الوظيفة: احصل على رمز التعريف الفريد uuid-user** return return uuid-user رمز التعريف الفريد*/السلسلة العامة getUuid () {return uuid ؛ } / *** الوظيفة: قم بتعيين رمز التعريف الفريد uuid-user* param uuid-user معلمة نوع التعريف الفريد لسلسلة المعلمة* / public void setuuid (string uuid) {this.uuid = uuid ؛ } / *** الوظيفة: احصل على اسم المستخدم للمستخدم* @RETURN --- name-username* / public string getName () {return name ؛ } / *** الوظيفة: اضبط اسم المستخدم للمستخدم** param name-username تم تعيينه بواسطة المستخدم ، معلمة نوع السلسلة* / public void setName (اسم السلسلة) {this.name = name ؛ } / *** الوظيفة: احصل على نوع المستخدم:* 1 - يمثل المسؤول ، ويمكن تنفيذ جميع العمليات* 2 - تمثل الشخص الذي يمكنه تشغيل وحدة الكتب* 3- يمثل الشخص الذي يمكنه تشغيل وحدة المشتريات* 4 - التي يمكنها تشغيل الشخص الذي يمكنه تشغيله في مجال المبيعات* () } / *** الوظيفة: اضبط نوع المستخدم:* 1 - يشار إليه كمسؤول ، يمكن تنفيذ جميع العمليات* 2 - يُشار إليها كشخص يمكنه تشغيل وحدات الكتب* 3 - يشار إليه كشخص يمكنه تشغيل وحدات شراء الشخصيات* 4 - تُشير إلى أن يكون الشخص الذي يمكنه تشغيل وحدات المبيعات* 5 - تم ترحيله كشخص من وحدات المخزون. setType (int type) {this.type = type ؛ } / *** الوظيفة: احصل على كلمة مرور المستخدم* @RETURN ، كلمة مرور المستخدم* / السلسلة العامة getPWD () {return pwd ؛ } / *** الوظيفة: تعيين كلمة مرور المستخدم* param pwd- المعلمة نوع السلسلة* / public void setPWD (String pwd) {this.pwd = pwd ؛ } Override public int hashcode () {Final int prime = 31 ؛ int النتيجة = 1 ؛ النتيجة = prime * result + ((uuid == null)؟ 0: uuid.hashCode ()) ؛ نتيجة العودة } Override Public Boolean يساوي (كائن OBJ) {if (this == obj) إرجاع true ؛ إذا (OBJ == NULL) عودة خطأ ؛ if (getClass ()! = obj.getClass ()) return false ؛ usermodel other = (UserModel) obj ؛ if (uuid == null) {if (other.uuid! = null) return false ؛ } آخر إذا (! uuid.equals (other.uuid)) إرجاع خطأ ؛ العودة صحيح. } Override public string toString () {return uuid + "،" + name + "،" + usertypeenum.getNamebyType (type) ؛ }}فئة userQueryModel:
cn.hncu.bookstore.user.vo ؛
فئة userQueryModel:
على الرغم من عدم وجود رمز ، لا يمكن تجاهله! هذا ما تحتاجه عند البحث عن المستخدمين.
كتبت السبب في السلسلة.
حزمة cn.hncu.bookstore.user.vo ؛/** * * Author Chen Haoxiang * * version 1.0 */public class userquerymodel يمتد UserModel {}فئة fileioutil:
cn.hncu.bookstore.util ؛
فئة fileioutil:
package cn.hncu.bookstore.util ؛ import java.io.file ؛ import java.io.fileinputStream ؛ import java.io.filenotfoundexception ؛ import java.io.fileOutputStream ؛ import java.io.ioException ؛ import java.io.oBquesInputStream ؛ java.util.arraylist ؛ import java.util.list ؛ import javax.swing.joptionpane ؛/*** البيانات العامة للبيانات العامة اقرأ وكتابة الفئة* author Chen haoxiang** @version 1.0*/public class fileioutil {public fileioutil () {}/*** اقرأ جميع البيانات من البيانات وتراجعها** جدول) * RETURN سجلات من جميع الجداول! */suppressWarnings ("Unchecked") // Press Warning Public Static <E> List <E> readformfile (string fileName) {list <e> list = new ArrayList <e> () ؛ ملف الملف النهائي = ملف جديد (اسم الملف) ؛ ObjectInputStream في = null ؛ if (! file.exists ()) {//joptionpane.showmessagedialog(null ، "جدول البيانات غير موجود!") ؛ قائمة العودة } جرب {in = new ObjectInputStream (fileInputStream جديد (اسم الملف)) ؛ حاول {list = (list <e>) in.ReadObject () ؛ } catch (classNotFoundException e) {E.PrintStackTrace () ؛ }} catch (fileNotfoundException e) {e.printStackTrace () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ } أخيرًا {if (in! = null) {try {in.close () ؛ } catch (ioException e) {رمي new RunTimeException ("فشل قاعدة البيانات الإغلاق") ؛ }}} قائمة الإرجاع ؛ } / ** * اكتب مجموعة قائمة في ملف ملف بيانات البيانات * * param قائمة (مجموعة البيانات التي يجب تخزينها) * param filename (اسم الملف الذي يتم كتابته إليه) * / ثابت عام <e> void write2file (قائمة <e> قائمة السلسلة) حاول {out = new ObjectOutputStream (FileOutputStream جديد (اسم الملف)) ؛ out.writeObject (قائمة) ؛ } catch (fileNotFoundException e) {e.printStackTrace () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ } أخيرًا {if (out! = null) {try {out.close () ؛ } catch (ioException e) {رمي new runTimeException ("فشلت قاعدة البيانات الإغلاق!") ؛ }}}}}}}}} فئة المكتبة: (بما في ذلك الطريقة الرئيسية)
cn.hncu.bookstore ؛
فصل المكتبة:
الطريقة الرئيسية لوحدة المستخدم موجودة في هذه الفئة:
/ * * bookstore.java * * تم إنشاؤه على __date__ ، __time__ */package cn.hncu.bookstore ؛ استيراد cn.hncu.bookstore.user.ui.listpanel ؛/** * * ** chen haoxiang */public class plocstore يمتد javax.swing.jframe {/** initComponents () ؛ this.setContentPane (ListPanel جديد (هذا)) ؛ this.setResizible (false) ؛ // this.setDefaultCloseOperation (exit_on_close) ؛ } /** هذه الطريقة تسمى من داخل المنشئ إلى* تهيئة النموذج. * تحذير: لا تعدل هذا الرمز. يتم تجديد محتوى هذه الطريقة دائمًا بواسطة محرر النماذج. */// gen-begin: initComponents // <editor-fold defaultState = "Glappsed" desc = "code code"> private void initComponents () {menubar = new javax.swing.jmenubar () ؛ FileMenu = new javax.swing.jmenuitem = new javax.swing.jmenuitem () ؛ savemenuitem = new javax.swing.jmenuitem () ؛ Saveasmenuitem = new javax.swing.jmenuitem () ؛ exitmenuitem = new javax.swing.jmenuitem () ؛ editmenu = new javax.swing.jmenuitem () ؛ cutmenuitem = new javax.swing.jmenuitem () ؛ cutmenuitem = new javax.swing.jmenuitem () ؛ editmenu = new javax.swing.jmenu () ؛ cutmenuitem = new javax.swing.jmenuitem () ؛ copymenuitem = new javax.swing.jmenuitem () ؛ pastemenuitem = new javax.swing.jmenuitem () ؛ deletemenuitem = new javax.swing.jmenuitem () ؛ Helpmenu = new javax.swing.jmenuitem () ؛ contentsmenuitem = new javax.swing.jmenuitem () ؛ aboutmenuitem = new javax.swing.jmenuitem () ؛ setDefaultCloseOperation (javax.swing.windowconstants.exit_on_close) ؛ setMinimumSize (New Java.Awt.Dimension (800 ، 600)) ؛ FileMenu.settext ("file") ؛ OpenMenuitem.settext ("Open") ؛ filemenu.add (OpenMenuitem) ؛ savemenuitem.settext ("حفظ") ؛ filemenu.add (savemenuitem) ؛ Saveasmenuitem.settext ("حفظ كما ...") ؛ filemenu.add (seveasmenuitem) ؛ exitmenuitem.settext ("exit") ؛ exitmenuitem.addActionListener (new java.awt.event.actionListener () {public void actionperformed (java.awt.event.actionevent evt) {exitmenuitemactionperformed (evt) ؛}}) ؛ filemenu.add (Exitmenuitem) ؛ Menubar.add (FileMenu) ؛ editmenu.settext ("edit") ؛ cutmenuitem.settext ("cut") ؛ editmenu.add (cutmenuitem) ؛ copymenuitem.settext ("نسخ") ؛ editmenu.add (copymenuitem) ؛ pastemenuitem.settext ("Paste") ؛ editmenu.add (pastemenuitem) ؛ deletemenuitem.settext ("delete") ؛ editmenu.add (deletemenuitem) ؛ menubar.add (editmenu) ؛ Helpmenu.settext ("Help") ؛ contentsmenuitem.settext ("المحتويات") ؛ Helpmenu.add (ContentSmenuitem) ؛ aboutmenuitem.settext ("حول") ؛ Helpmenu.add (aboutmenuitem) ؛ menubar.add (Helpmenu) ؛ setjmenubar (مينوبار) ؛ javax.swing.grouplayout التصميم = new javax.swing.grouplayout (getContentPane ()) ؛ getContentPane (). setLayout (التصميم) ؛ Skyout.SethorizontalGroup (layout.createparallelgroup (javax.swing.grouplayout.alignment.leading) .addgap (0 ، 400 ، Short.max_value)) ؛ Synout.setverticalgroup (layout.createparallelgroup (javax.swing.grouplayout.alignment.leading) .addgap (0 ، 279 ، Short.max_value)) ؛ علية()؛ } // </editor-fold> // gen-end: initComponents private void exitmenuitemactionperformed (java.awt.event.actionevent evt) {// gen-first: event_exitmenutemactionperformed system.exit (0) ؛ } // gen-last: event_exitmenuitemactionperformed/** * param args وسيطات سطر الأوامر */public static void main (String args []) {java.awt.eventqueue.invokelater (new Runnable () {public void run () {new bookstore (). } // gen -begin: repiables // ariables dinaration - لا تعدل javax.swing.jmenuitem aboutmenuitem ؛ private javax.swing.jmenuitem contentsmenuitem ؛ private javax.swing.jmenuitem copymenuitem ؛ الخاص javax.swing.jmenuitem cutmenuitem ؛ private javax.swing.jmenuitem deletemenuitem ؛ الخاص javax.swing.jmenuitem exitmenuitem ؛ الخاص javax.swing.jmenu filemenu ؛ private javax.swing.jmenu helpmenu ؛ الخاص javax.swing.jmenubar menubar ؛ الخاص javax.swing.jmenuitem openmenuitem ؛ الخاص javax.swing.jmenuitem pastemenuitem ؛ private javax.swing.jmenuitem saveasmenuitem ؛ private javax.swing.jmenuitem savemenuitem ؛ // نهاية إعلان المتغيرات // gen-end: المتغيرات} هذا كل شيء اليوم ، ليستمر. . .
هناك خطأ صغير في الإضافة الحالية ، وهو أنه عند إضافة مستخدم ، لا تدخل أي شيء.
حدد نوع المستخدم فقط ، ويمكنك أيضًا إنشائه! سأصلحه في المرة القادمة.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.