المتطلبات الوظيفية لمشروع نظام Java Bookstore:
1. يمكن تشغيل تسجيل المستخدم ، وتعديل المعلومات الأساسية ، والحذف والاستعلام.
2. يمكن إضافة وحذف وتعديل والاستعلام عن المعلومات الأساسية للكتاب.
3. يمكنك ملء نموذج الشراء. يحتوي نموذج الشراء على معلومات شراء محددة متعددة. يجب أن تكون الكتب التي تم شراؤها متوفرة بالفعل في إدارة الكتب ؛ أثناء الشراء ، تعديل حجم المخزون للكتب المقابلة في المخزون.
4. يمكنك ملء نموذج المبيعات. يحتوي نموذج المبيعات على معلومات مبيعات محددة متعددة. يجب أن تكون الكتب المباعة بالفعل في إدارة الكتب ، ولا يمكن أن تتجاوز كمية المبيعات كمية المخزون الحالية ؛ أثناء البيع ، قم بتعديل حجم المخزون للكتب المقابلة في المخزون.
5. يمكنك عرض تفاصيل المخزون والعثور على قيمة المخزون للكتب المحددة وفقًا للشروط.
6. تبسيط الأذونات وتنفيذ التحكم في الإذن الثابت. ينقسم المستخدم إلى موظفين ذوي أذونات تشغيل مختلفة وفقًا للوحدة ، ويمكن لمستخدم المسؤول الخاص تشغيل جميع الوظائف.
تصميم المشروع الأساسي:
★ التصميم المعماري:
إطار الإطار العام والوحدة النمطية: 5 وحدات: المستخدم ، الكتاب ، الشراء ، المبيعات والمخزون
★ تصميم الهيكل الوظيفي للنظام:
عارضات فرعية وظيفية محددة لكل وحدة وظيفية ★ تصميم قاعدة البيانات:
تطبيق إطار المشروع: مقسمة إلى وحدات ، طبقات ، التعاقد من الباطن ، وبناء إطار العمل الأساسي-قم بتنفيذ تحويل كل واجهة
حزمة cn.hncu.bookstore ؛ استيراد cn.hncu.bookstore.login.ui.login ؛/** * * *@المؤلف <a href = "mailto: 2402201666666666666666666"> xzm </a> */public class bookstoreapp يمتد javax.swing.jframe / ** إنشاء نموذج جديد bookstoreapp*/ public bookstoreapp () {initComponents () ؛ this.setContentPane (تسجيل الدخول الجديد (هذا)) ؛ // إضافة واجهة تسجيل الدخول this.validate () ؛ getContentPane (). setlocation (150 ، 50) ؛ } // gen-begin: initComponents // <editor-fold defaultState = "Glapsed" desc = "code regended"> private void initComponents () {menubar = new javax.swing.jmenubar () ؛ fileMenu = new javax.swing.jmenu () ؛ OpenMenuitem = 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 () ؛ 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 () ؛ jmenu1 = new javax.swing.jmenuitem () ؛ menuitemuser = new javax.swing.jmenuitem () ؛ menuitembook = new javax.swing.jmenuitem () ؛ menuiteminmain = new javax.swing.jmenuitem () ؛ menuitemoutmain = new javax.swing.jmenuitem () ؛ menuitemstock = new javax.swing.jmenuitem () ؛ menuitemlogin = new javax.swing.jmenuitem () ؛ setDefaultCloseOperation (javax.swing.windowconstants.exit_on_close) ؛ setMinimumSize (New Java.Awt.Dimension (800 ، 600)) ؛ getContentPane (). setLayout (null) ؛ 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) ؛ jmenu1.settext ("القائمة") ؛ menuitemuser.setaccelerator (javax.swing.keysstroke.getkeysstroke (java.awt.event.keyevent.vk_u ، java.awt.event.inputevent.ctrl_mask)) ؛ menuitemuser.settext ("/u7528/u6237/u6a21/u5757") ؛ menuitemuser.setEnabled (false) ؛ menuitemuser.addActionListener (new java.awt.event.ActionListener () {public void actionperformed (java.awt.event.actionevent evt) {menuitemuserActionPerformed (evt) ؛}}) ؛ jmenu1.add (menuitemuser) ؛ menuitembook.setaccelerator (javax.swing.keysstroke.getkeysstroke (java.awt.event.keyevent.vk_b ، java.awt.event.inputevent.ctrl_mask)) ؛ menuitembook.settext ("/u56fe/u4e66/u6a21/u5757") ؛ menuitembook.setEnabled (false) ؛ menuitembook.addActionListener (new java.awt.event.actionListener () {public void actionperformed (java.awt.event.actionevent evt) {menuitembookActionPerformed (evt) ؛}}) ؛ JMenu1.Add (Menuitembook) ؛ menuiteminmain.setaccelerator (javax.swing.keysstroke.getkeysstroke (java.awt.event.keyevent.vk_i ، java.awt.event.inputevent.ctrl_mask)) ؛ menuiteminmain.settext ("/u8fdb/u8d27/u6a21/u5757") ؛ menuiteminmain.setEnabled (false) ؛ menuiteminmain.addActionListener (new java.awt.event.actionListener () {public void actionperformed (java.awt.event.actionevent evt) {menuiteminMainActionPerformed (evt) ؛}}) ؛ jmenu1.add (menuiteminmain) ؛ menuitemoutmain.setaccelerator (javax.swing.keysstroke.getkeysstroke (java.awt.event.keyevent.vk_o ، java.awt.event.inputevent.ctrl_mask)) ؛ menuitemoutmain.settext ("/u9500/u552e/u6a21/u5757") ؛ menuitemoutmain.setEnabled (false) ؛ menuitemoutmain.addActionListener (new java.awt.event.ActionListener () {public void actionperformed (java.awt.event.actionevent evt) {menuitmainActionPerformed (evt) ؛}}) ؛ jmenu1.Add (menuitemoutmain) ؛ menuitemstock.setaccelerator (javax.swing.keysstroke.getKeyStroke (java.awt.event.keyevent.vk_s ، java.awt.event.inputevent.ctrl_mask)) ؛ menuitemstock.settext ("/u5e93/u5b58/u6a21/u5757") ؛ menuitemstock.setEnabled (false) ؛ menuitemstock.addActionListener (new java.awt.event.ActionListener () {public void actionperformed (java.awt.event.actionevent evt) {menuitemstockActionPerformed (evt) ؛}}) ؛ jmenu1.add (menuitemstock) ؛ menuitemlogin.setaccelerator (javax.swing.keysstroke.getkeysstroke (java.awt.event.keyevent.vk_l ، java.awt.event.inputevent.ctrl_mask)) ؛ menuitemlogin.settext ("/u6ce8/u9500") ؛ menuitemlogin.addActionListener (new java.awt.event.actionListener () {public void actionperformed (java.awt.event.actionevent evt) {menuitemloginActionPerformed (evt) ؛}}) ؛ jmenu1.add (menuitemlogin) ؛ menubar.add (jmenu1) ؛ setjmenubar (مينوبار) ؛ علية()؛ } // </editor-fold> // gen-end: initComponents private void menuitemloginActionPerforforded (java.awt.event.actionevent evt) {// switch to the login wrongface وتدمير قائمة الوظائف التي تحول إلى خمس واجهات menuitembook.setenabled (false) ؛ menuiteminmain.setEnabled (false) ؛ menuitemoutmain.setEnabled (false) ؛ menuitemstock.setEnabled (false) ؛ menuitemuser.setEnabled (false) ؛ this.setContentPane (تسجيل الدخول الجديد (هذا)) ؛ this.validate () ؛ } void menuitemstockActionPerformed (java.awt.event.actionevent evt) {// switch to jodule this.setContentPane (new cn.hncu.bookstore.store.ui.listpanel (this)) ؛ this.validate () ؛ } void menuitemoutMainActionPerformed (java.awt.event.actionevent evt) {// التبديل إلى وحدة المبيعات this.setContentPane (cn.hncu.bookstore.out.ui.listpanel (this)) ؛ this.validate () ؛ } void menuiteMinMainActionPerformed (java.awt.event.actionevent evt) {// switch لشراء الوحدة النمطية this.setContentPane (cn.hncu.bookstore.in.ui.listpanel (this)) ؛ this.validate () ؛ } void menuitembookActionPerforforded (java.awt.event.actionevent evt) {// switch to book this.setContentPane (cn.hncu.bookstore.book.ui.listpanel (this)) ؛ this.validate () ؛ } private void menuiteMuserActionPerformed (java.awt.event.actionevent evt) {// switch to user to this.setContentPane (cn.hncu.bookstore.user.ui.listpanel (this)) ؛ this.validate () ؛ } public javax.swing.jmenuitem getMenuitEmoutMain () {return menuitemoutmain ؛ } public javax.swing.jmenuitem getMenuitembook () {return menuitembook ؛ } public javax.swing.jmenuitem getMenuiteminMain () {return menuiteminmain ؛ } public javax.swing.jmenuitem getMenuitemstock () {return menuitemstock ؛ } public javax.swing.jmenuitem getMenuitemuser () {return menuitemstock ؛ } public javax.swing.jmenuitem getMenuitemuser () {return menuitemuser ؛ } private void exitmenuitemactionperformed (java.awt.event.actionevent evt) {// gen-first: event_exitmenuitemactionperformed 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 bookstoreapp (). } // gen -begin: متغيرات / /إعلان المتغيرات - لا تعدل javax.swing.jmenuitem menuitemoutmain ؛ private 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.jmenu editmenu ؛ الخاص javax.swing.jmenuitem exitmenuitem ؛ الخاص javax.swing.jmenu filemenu ؛ private javax.swing.jmenu helpmenu ؛ الخاص javax.swing.jmenu jmenu1 ؛ الخاص javax.swing.jmenubar menubar ؛ private javax.swing.jmenuitem menuitembook ؛ الخاص javax.swing.jmenuitem menuiteminmain ؛ الخاص javax.swing.jmenuitem menuitemlogin ؛ الخاص javax.swing.jmenuitem menuitemstock ؛ الخاص javax.swing.jmenuitem menuitemuser ؛ الخاص javax.swing.jmenuitem openmenuitem ؛ الخاص javax.swing.jmenuitem pastemenuitem ؛ private javax.swing.jmenuitem saveasmenuitem ؛ private javax.swing.jmenuitem savemenuitem ؛ // نهاية إعلان المتغيرات // gen-end: المتغيرات} مجموعة الأدوات:
package cn.hncu.bookstore.utils ؛ import java.text.dateformat ؛ استيراد java.text.parseexception ؛ استيراد java.text.simpledateformat ؛ استيراد java.util. HH: mm: ss: "* param t* (type-type) الوقت المراد تحويله* regurn* string في تنسيق التاريخ*/ السلسلة الثابتة العامة longtoString (long t) {date d = new date () ؛ DateFormat df = new SimplEdateFormat ("Yyyyy Year Mm Month DD DATE HH: MM: SS:") ؛ إرجاع df.format (d) ؛ ستر SimpleDateFormat ("Yyyy-MM-DD-HH: MM: SS:") ؛ تاريخ d = df.parse (str) ؛ إرجاع D.GetTime () ؛ }} package cn.hncu.bookstore.utils ؛ import java.io java.util.arraylist ؛ import java.util.list ؛ public class fileioutil {/*** privatization*/private fileioutil () {}/*** اقرأ البيانات في الدليل في filename* @param filenam ملف الملف العام = ملف جديد (filename) ؛ // لأي ملف قراءة ، من الأفضل استخدام الملف لفتح القناة if (! file.exists ()) {// الملف غير موجود ويعيد مجموعة فارغة. إرجاع ArrayList جديد <e> () ؛ } ObjectInputStream في = null ؛ حاول {في = new ObjectInputStream (FileInputStream (ملف جديد)) ؛ suppressWarnings ("غير محدد") قائمة <e> list = (list <e>) in.ReadObject () ؛ قائمة العودة } catch (fileNotFoundException e) {e.printStackTrace () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ } catch (classNotFoundException e) {E.PrintStackTrace () ؛ } أخيرًا {if (in! = null) {try {in.close () ؛ } catch (ioException e) {رمي new RunTimeException ("فشل إغلاق ملف البيانات" ، e) ؛ }}} إرجاع ArrayList جديد <e> () ؛ } / ** * التخزين: اقرأ البيانات في اسم ملف الدليل * param قائمة * مجموعة البيانات المراد تخزينها * @param عنوان الملف * @RETURN * return true إذا كان التخزين ناجحًا ، وإلا ، فإن إرجاع false * / static public <e> boolean writeTofile (list <e> 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 ("فشل إغلاق ملف البيانات" ، e) ؛ }}} return false ؛ }} الوظائف العامة:
package cn.hncu.bookstore.common ؛ public uuidModelConstance { / ** * التعداد: تعداد الأنواع الخمسة من المستخدم usermodel ، bookmodel ، inmainmodel ، indetailmodel ، outmainmodel ، outstailmodel ، stockmodel * / user ("usermodel") in_main ("inmainmodel") ، in_detail ("indetailmodel") ، out_main ("outmainmodel") ، out_detail ("OutsitailModel") ، stock ("stockmodel") ؛ اسم السلسلة النهائية الخاصة ؛ uuidModelConstance الخاص (اسم السلسلة) {this.name = name ؛ } السلسلة العامة getName () {return name ؛ }} package cn.hncu.bookstore.common.uuid.vo ؛ استيراد java.io.serializable ؛ الطبقة العامة uuidmodel تنفذ تسلسل { / *** توليد رقم UUID تلقائيًا مع نموذج Sing Sing* string string modelName ؛ // تشير إلى usermodel ، bookmodel ، inmainmodel ، indetailmodel ، outMainModel ، OutsetailModel ، StockModel private int currentnum ؛ // modelName number uuid public uuidmodel () {}/set ، الحصول على سلسلة getModelname () } public void setModelName (string modelName) {this.modelName = modelName ؛ } public int getCurrentNum () {return CurrentNum ؛ } public void setCurrentNum (int currentNum) {this.currentNum = currentNum ؛ } Override public int hashcode () {Final int prime = 31 ؛ int النتيجة = 1 ؛ النتيجة = prime * result + ((modelName == null)؟ 0: modelName.hashCode ()) ؛ نتيجة العودة } Override Public Boolean يساوي (كائن OBJ) {if (this == obj) إرجاع true ؛ إذا (OBJ == NULL) عودة خطأ ؛ if (getClass ()! = obj.getClass ()) return false ؛ uuidmodel أخرى = (uuidmodel) obj ؛ if (modelName == null) {if (other.modelName! = null) إرجاع false ؛ } آخر إذا (! modelName.equals (other.modelName)) إرجاع خطأ ؛ العودة صحيح. }} package cn.hncu.bookstore.common.uuid.dao.ebi ؛ import cn.hncu.bookstore.common.uuidmodelconstance ؛ واجهة عامة uuiddao { /** (Usermodel ، Bookmodel ، inmainmodel ، indetailmodel ، outMainModel ، OutsitailModel ، StockModel) * RETURN * قم بإنشاء عدد النوع المقابل UUID */ السلسلة العامة package cn.hncu.bookstore.common.uuid.dao.ebo ؛ import java.util.list ؛ import cn.hncu.bookstore.common.uuidmodelconstance ؛ import cn.hncu.bookstore.common.uuid.dao.ebi.uuiddao ؛ cn.hncu.bookstore.common.uuid.vo.uuidmodel ؛ استيراد cn.hncu.bookstore.utils.fileioutil ؛ الطبقة العامة uuidebo تنفذ uuiddao getNextNum (uuidModelConstance UMC) {String modelName = umc.getName () ؛ // احصل على قائمة نوع المستخدم <UuidModel> list = fileioutil.readfromfile (file_name) if (um.getModelName (). equals (modelName.trim ())) {// إذا كان اسم النموذج موجود في الملف ، فأرجع الرقم التالي من هذا النوع uuid int res = um.getCurrentNum () ؛ um.setCurrentNum (res+1) ؛ fileioutil.writetofile (قائمة ، file_name) ؛ // حفظ بيانات UUID المحدثة في إرجاع المجلد ""+res ؛ }} // إذا لم يتم العثور على حلقة for ، فهذا يعني أن اسم النموذج هو الأول ، مرقمة 1 // كائن من هذا النوع ، احفظه في المجلد uuidmodel um = new uuidmodel () ؛ um.setModelName (modelName) ؛ um.setCurrentNum (2) ؛ list.add (um) ؛ fileioutil.writetofile (list ، file_name) ؛ العودة "" +1 ؛ }} package cn.hncu.bookstore.common.uuid.dao.factory ؛ استيراد cn.hncu.bookstore.common.uuid.dao.ebi.uuiddao ؛ public uuidda uuiddaofactory () {} / ** * الحصول على واجهة uuiddao * return * uuiddao * / public static uuiddao getuuiddao () {return new uuidebo () ؛ }} ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.