نظام إدارة مكتبة:
أهداف تمرين المشروع:
1. التحليل الأساسي لتطبيقات جافا
2. زراعة الأفكار الأساسية للبرمجة الموجهة للكائنات
3. التطبيق الشامل لأنماط تصميم جافا الأساسية
4. إتقان التصميم الأساسي للطبقات والواجهات
5. بناء بنية حزمة تطبيق Java معقولة
6. المعرفة التي تعلمتها التطبيق الشامل لـ JSE
7. استخدام إطار جمع العقلانية في التطبيق
8. الاستخدام الشامل للمكونات المشتركة للتأرجح في التطبيقات
9. آلية تنفيذ طبقة الأداء الأساسية
10. العمليات الأساسية لدارات وملفات IO
11. تطوير عادات برمجة Java الجيدة
12. زراعة القدرة على تصحيح برامج Java وتنمية القدرة على تصحيح الأخطاء
المتطلبات الوظيفية للمشروع:
1. يمكن تشغيل تسجيل المستخدم ، وتعديل المعلومات الأساسية ، والحذف والاستعلام.
2. يمكن إضافة وحذف وتعديل والاستعلام عن المعلومات الأساسية للكتاب.
3. يمكنك ملء نموذج الشراء. يحتوي نموذج الشراء على معلومات شراء محددة متعددة. يجب أن تكون الكتب التي تم شراؤها متوفرة بالفعل في إدارة الكتب ؛ أثناء الشراء ، تعديل حجم المخزون للكتب المقابلة في المخزون.
4. يمكنك ملء نموذج المبيعات. يحتوي نموذج المبيعات على معلومات مبيعات محددة متعددة. يجب أن تكون الكتب المباعة بالفعل في إدارة الكتب ، ولا يمكن أن تتجاوز كمية المبيعات كمية المخزون الحالية ؛ أثناء البيع ، قم بتعديل حجم المخزون للكتب المقابلة في المخزون.
5. يمكنك عرض تفاصيل المخزون والعثور على قيمة المخزون للكتب المحددة وفقًا للشروط.
6. تبسيط الأذونات وتنفيذ التحكم في الإذن الثابت. ينقسم المستخدم إلى موظفين ذوي أذونات تشغيل مختلفة وفقًا للوحدة ، ويمكن لمستخدم المسؤول الخاص تشغيل جميع الوظائف.
تصميم المشروع الأساسي:
★ الإطار العام لتصميم الهندسة المعمارية ، قسم الوحدة: 5 وحدات: المستخدم ، الكتاب ، الشراء ، المبيعات والمخزون
★ تصميم الهيكل الوظيفي النظام وظيفية محددة لكل وحدة وظيفية
★ تصميم قاعدة البيانات تطبيق إطار مشروع: الوحدة النمطية ، الطبقة ، التعاقد من الباطن ، وإنشاء تطبيقات
1. إدارة المستخدم (user.txt)
ملاحظة: النوع هو نوع int ، والذي يستخدم لتمثيل نوع المشغل.
1 - يُشار إليه كمسؤول ، يمكن تنفيذ جميع العمليات
2-تم تمييزه كشخص يمكنه تشغيل وحدة الكتاب
3 - تم التعبير عنها كشخص يمكنه تشغيل وحدة الشراء
4 - تم التعبير عنها كشخص يمكنه تشغيل وحدات المبيعات
5 - تم التعبير عنها كشخص يمكنه تشغيل وحدات المخزون
2. إدارة الكتب (book.txt)
3. إدارة الشراء (inmain.txt)
4. إدارة تفاصيل الشراء (indetail.txt)
5. إدارة المبيعات (OutMain.txt)
6. إدارة تفاصيل المبيعات (Outtetail.txt)
7. إدارة المخزون (stock.txt)
مشروع العقد من الباطن
الطبقة الأولى: وحدة المستخدم (المستخدم) وفقًا للوحدة النمطية
كتب (كتب) ،
شراء (في) ،
المبيعات (خارج) ،
المخزون (متجر)
الطبقة الثانية: وفقًا لوضع الطبقة المكونة من ثلاث طبقات ، يتم تقسيمه إلى طبقة العرض (UI) ، وطبقة المنطق (الأعمال) وطبقة البيانات (DAO)
عادة ، يجب إضافة طبقة كائن القيمة (VO)
الطبقة الثالثة: تعتمد على الموقف المحدد وفقًا للانقسام داخل الطبقة. على سبيل المثال ، يجب أن يتم بناء الحزم الفرعية في شكل مثلث حديدي ، في حين لا تحتاج واجهة المستخدم و VO إلى تقسيمها إلى الحزم الفرعية).
أفكار التقسيم الطبقي للمشروع:
غير مثالي ، يرجى الاستمرار في الانتباه إلى هذه السلسلة (II)
ما يلي جزء من الكود: (فئة عامة في Util)
cn.hncu.bookstore.util
fileioutil.java:
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 () {}/** param ee (نوع العام الذي تم تمريره!) * RETURN RECORDS من جميع الجداول! */suppressWarnings ("Unchected") // Press Warning Public Static <E> List <E> readformfile (اسم ملف السلسلة ، e ee) {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 (اسم الملف الذي يتم كتابته إليه) * / public static void write2file (list <bount> list ، string filename) {objectoutputstream out = null ؛ حاول {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.user.vo ؛
USERMODEL.JAVA
package cn.hncu.bookstore.user.vo ؛/** * Author Chen Haoxiang * version 1.0 * * <br/> * كائن القيمة المستخدم لحفظ معلومات المستخدم <br/> * 1. رمز <br/> * 4. طريقة toString <br/> * 5. طريقة بناء المعلمة فارغة <br/> */الفئة العامة usermodel {private string uuid ؛ // user us us us us regly name private string ؛ // اسم المستخدم الخاص int type ؛ رمز التعريف الفريد*/ السلسلة العامة getUuid () {return uuid ؛ } / *** الوظيفة: قم بتعيين رمز التعريف الفريد uuid-user* param uuid-user معلمة نوع التعريف الفريد لسلسلة المعلمة* / public void setuuid (string uuid) {this.uuid = uuid ؛ } / *** الوظيفة: احصل على اسم المستخدم للمستخدم* @return-name-user name* / public string getName () {return name ؛ } / *** الوظيفة: احصل على اسم المستخدم للمستخدم* @return-name-user name* / public string getName () {return name ؛ } / *** الوظيفة: اضبط اسم المستخدم** param اسم-اسم المستخدم تعيين بواسطة المستخدم ، معلمة نوع السلسلة* / public void setName (اسم السلسلة) {this.name = name ؛ } / *** الوظيفة: احصل على نوع المستخدم:* 1 - يمثل المسؤول ، ويمكن تنفيذ جميع العمليات* 2 - الشخص الذي يمكنه تشغيل وحدة الكتب* 3 - يمثل الشخص الذي يمكنه تشغيل وحدة المشتريات* 4 - الشخص الذي يمكنه تشغيل وحدة المبيعات* 5― يمثل الشخص الذي يمكنه تشغيل نوع المخزون* @return type / int.) } / *** الوظيفة: تعيين نوع المستخدم:* 1-يمثل الشخص الذي يمكنه تشغيل وحدة الكتب* 2 2-الشخص الذي يمكنه تشغيل وحدة الكتب* 3-تم تحديده كشخص يمكنه تشغيل وحدة الشراء* 4- 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 "usermodel [uuid =" + uuid + "، name =" + name + "، type =" + type + "، pwd =" + pwd + "] ؛ }} بيانات استعلام المستخدم المغلفة:
cn.hncu.bookstore.user.vo ؛
userQueryModel.java
الحزمة cn.hncu.bookstore.user.vo ؛ فئة عامة userQueryModel يمتد usermodel {}على الرغم من أن هذا الفصل ليس لديه شيء ، إلا أنه يرث فقط UserModel ، إلا أنه لا يزال يتعين كتابته. هذه هي مواصفات كتابة جافا التي يلتزم بها الجميع!
المستخدم DAO (طبقة البيانات): (واجهة)
cn.hncu.bookstore.user.dao.dao ؛
userdao.java
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) ؛ / *** الوظيفة: حذف مستخدم** param uuid --- رمز التعريف الفريد للمستخدم ، لن يكون كل مستخدم هو نفسه* @RETURN --- يعني أن الحذف ناجح ، يعني خطأ أن الحذف فشل*/ حذف BOOLEAN العام (سلسلة uuid) ؛ / *** الوظيفة: تعديل بيانات المستخدم** param user --- اسم معلمة بيانات المستخدم الذي يجب تعديله* reverurn return-يشير إلى أن التعديل ناجح ، ويشير الإرجاع إلى أن التعديل قد فشل*/ تحديث Boolean العام (مستخدم usermodel) ؛ / *** الوظيفة: احصل على جميع بيانات المستخدم** @REGINT --- مجموعة USERMODEL ، أي بيانات المستخدم*/ قائمة عامة <SERMODEL> GETALL () ؛ /** * الوظيفة: ابحث وفقًا لشروط بحث معينة ، * <br/> * إرجاع بيانات المستخدم التي تلبي شروط البحث. ** param uqm --- شروط البحث المغطاة* @Regurn ---- مجموعة بيانات المستخدم التي تلبي شروط البحث*/ القائمة العامة <UserModel> getByCondition (userQueryModel UQM) ؛ / *** الوظيفة: احصل على بيانات مستخدم معينة** param uuid --- رمز التعريف الفريد من نوعه* @RETURN --- إرجاع بيانات المستخدم الموجودة وفقًا لرمز التعريف الفريد هذا*/ getingle usermodel العامة (سلسلة uuid) ؛}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.