ข้อกำหนดการทำงานของโครงการระบบร้านหนังสือ Java:
1. สามารถดำเนินการลงทะเบียนผู้ใช้แก้ไขข้อมูลพื้นฐานลบและสอบถาม
2. สามารถเพิ่มลบแก้ไขและสอบถามข้อมูลพื้นฐานของหนังสือ
3. คุณสามารถกรอกแบบฟอร์มการซื้อ แบบฟอร์มการซื้อมีข้อมูลการซื้อเฉพาะหลายรายการ หนังสือที่ซื้อจะต้องมีอยู่แล้วในการจัดการหนังสือ ในขณะที่ซื้อการปรับเปลี่ยนปริมาณสินค้าคงคลังของหนังสือที่เกี่ยวข้องในสินค้าคงคลัง
4. คุณสามารถกรอกแบบฟอร์มการขาย แบบฟอร์มการขายมีข้อมูลการขายเฉพาะหลายรายการ หนังสือที่ขายจะต้องอยู่ในการจัดการหนังสือและปริมาณการขายไม่เกินปริมาณสินค้าคงคลังในปัจจุบัน ในขณะที่ขายให้ปรับเปลี่ยนปริมาณสินค้าคงคลังของหนังสือที่เกี่ยวข้องในสินค้าคงคลัง
5. คุณสามารถดูรายละเอียดสินค้าคงคลังและค้นหามูลค่าสินค้าคงคลังของหนังสือเฉพาะตามเงื่อนไข
6. ทำให้การอนุญาตง่ายขึ้นและใช้การควบคุมการอนุญาตคงที่ ผู้ใช้ถูกแบ่งออกเป็นบุคลากรที่มีสิทธิ์ในการดำเนินงานที่แตกต่างกันตามโมดูลและผู้ดูแลระบบพิเศษสามารถใช้งานฟังก์ชั่นทั้งหมดได้
การออกแบบโครงการขั้นพื้นฐาน:
★การออกแบบสถาปัตยกรรม:
เฟรมเวิร์กและโมดูลโดยรวม: 5 โมดูล: ผู้ใช้, หนังสือ, การซื้อ, การซื้อ, การขายและสินค้าคงคลัง
★การออกแบบโครงสร้างการทำงานของระบบ:
submodules การทำงานเฉพาะของแต่ละโมดูลการทำงาน★การออกแบบฐานข้อมูล:
การใช้งานกรอบโครงการ: แบ่งออกเป็นโมดูลการเลเยอร์การรับเหมาช่วงและการสร้างเฟรมเวิร์กแกนแอปพลิเคชัน-นำการเปลี่ยนแปลงของแต่ละอินเตอร์เฟส
แพ็คเกจ cn.hncu.bookstore; นำเข้า cn.hncu.bookstore.login.ui.login;/** * * *@ผู้แต่ง <a href = "mailto: [email protected]"> xzm </a> */ชั้นเรียนสาธารณะ / ** สร้างรูปแบบใหม่ BookstoreApp*/ Public BookstoreApp () {initcomponents (); this.setContentPane (เข้าสู่ระบบใหม่ (นี้)); // เพิ่มอินเตอร์เฟสเข้าสู่ระบบ this.validate (); getContentPane (). setLocation (150, 50); } // gen-begin: initcomponents // <editor-fold defaultState = "collapsed" desc = "รหัสที่สร้างขึ้น"> โมฆะส่วนตัว 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 (); เกี่ยวกับ menuitem = new Javax.swing.jmenuitem (); JMENU1 = ใหม่ 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 (Java.awt.Dimension ใหม่ (800, 600)); getContentPane (). setlayout (null); filemenu.settext ("ไฟล์"); OpenMenuitem.settext ("Open"); filemenu.add (OpenMenuitem); SaveMenuitem.settext ("บันทึก"); filemenu.add (Savemenuitem); Saveasmenuitem.settext ("บันทึกเป็น ... "); filemenu.add (Saveasmenuitem); Exitmenuitem.settext ("Exit"); exitmenuitem.addactionListener (ใหม่ java.awt.event.actionListener () {โมฆะสาธารณะ actionperformed (java.awt.event.actionEvent evt) {ExitMenuitEmactionPerformed (EVT);}}); filemenu.add (exitmenuitem); Menubar.add (Filemenu); editmenu.settext ("แก้ไข"); cutmenuitem.settext ("cut"); editmenu.add (cutmenuitem); copymenuitem.settext ("คัดลอก"); editmenu.add (copymenuitem); Pastemenuitem.settext ("Paste"); editmenu.add (Pastemenuitem); deletemenuitem.settext ("ลบ"); editmenu.add (deletemenuitem); menubar.add (editmenu); HelpMenu.Settext ("Help"); CONTENTSMENUITEM.SETTEXT ("เนื้อหา"); HelpMenu.add (ContentsMenuitem); Aboutmenuitem.settext ("เกี่ยวกับ"); HelpMenu.add (เกี่ยวกับ Menuitem); menubar.add (Helpmenu); JMENU1.SETTEXT ("เมนู"); menuitemuser.setAccelerator (javax.swing.keystroke.getkeystroke (java.awt.event.keyevent.vk_u, java.awt.event.inputevent.ctrl_mask); menuitemuser.settext ("/U7528/U6237/U6A21/U5757"); menuitemuser.setenabled (เท็จ); menuitemuser.addactionListener (ใหม่ java.awt.event.actionListener () {โมฆะสาธารณะ actionperformed (java.awt.event.actionEvent evt) {menuitemuseractionerformed (evt);}}); jmenu1.add (Menuitemuser); menuitembook.setaccelerator (javax.swing.keystroke.getkeystroke (java.awt.event.keyevent.vk_b, java.awt.event.inputevent.ctrl_mask); menuitembook.settext ("/u56fe/u4e66/u6a21/u5757"); menuitembook.setenabled (เท็จ); menuitembook.addactionListener (ใหม่ java.awt.event.actionListener () {โมฆะสาธารณะ actionperformed (java.awt.event.actionevent evt) {menuitembookationformed (evt);}}); jmenu1.add (menuitembook); menuiteminmain.setAccelerator (javax.swing.keystroke.getkeystroke (java.awt.event.keyevent.vk_i, java.awt.event.inputevent.ctrl_mask); menuiteminmain.settext ("/U8FDB/U8D27/U6A21/U5757"); menuiteminmain.setenabled (เท็จ); menuiteminmain.addactionListener (ใหม่ java.awt.event.actionListener () {โมฆะสาธารณะ actionperformed (java.awt.event.actionEvent evt) {menuiteminmainactionperformed (evt);}}); jmenu1.add (menuiteminmain); menuitemoutmain.setaccelerator (javax.swing.keystroke.getkeystroke (java.awt.event.keyevent.vk_o, java.awt.event.inputevent.ctrl_mask); menuitemoutmain.settext ("/U9500/U552E/U6A21/U5757"); menuitemoutmain.setenabled (เท็จ); menuitemoutmain.addactionListener (ใหม่ java.awt.event.actionListener () {โมฆะสาธารณะ actionperformed (java.awt.event.actionEvent evt) {menuitemoutMainActionPerformed (evt);}}); jmenu1.add (menuitemoutmain); menuitemstock.setaccelerator (javax.swing.keystroke.getkeystroke (java.awt.event.keyevent.vk_s, java.awt.event.inputevent.ctrl_mask); menuitemstock.settext ("/U5E93/U5B58/U6A21/U5757"); menuitemstock.setenabled (เท็จ); menuitemstock.addactionListener (ใหม่ java.awt.event.actionListener () {โมฆะสาธารณะ actionperformed (java.awt.event.actionEvent evt) {menuitemstockactionerformed (evt);}}); jmenu1.add (menuitemstock); menuitemlogin.setAccelerator (javax.swing.keystroke.getkeystroke (java.awt.event.keyevent.vk_l, java.awt.event.inputevent.ctrl_mask); menuitemlogin.settext ("/u6ce8/u9500"); menuitemlogin.addactionListener (ใหม่ java.awt.event.actionListener () {โมฆะสาธารณะ actionperformed (java.awt.event.actionEvent evt) {menuitemloginactionperformed (evt);}}); jmenu1.add (menuitemlogin); Menubar.add (JMENU1); Setjmenubar (Menubar); หีบห่อ(); } // </ditor-fold> // gen-end: initcomponents โมฆะส่วนตัว menuitemloginactionerformed (java.awt.event.actionEvent evt) {// สลับไปที่อินเทอร์เฟซเข้าสู่ระบบและทำลายเมนูฟังก์ชั่น menuiteminmain.setenabled (เท็จ); menuitemoutmain.setenabled (เท็จ); menuitemstock.setenabled (เท็จ); menuitemuser.setenabled (เท็จ); this.setContentPane (เข้าสู่ระบบใหม่ (นี้)); this.validate (); } void menuitemstockactionperformed (java.awt.event.actionEvent evt) {// เปลี่ยนไปใช้โมดูลสินค้าคงคลัง this.setContentPane (ใหม่ cn.hncu.bookstore.store.ui.listpanel (นี้)); this.validate (); } void menuitemoutmainactionperformed (java.awt.event.actionEvent evt) {// เปลี่ยนไปใช้โมดูลการขาย this.setContentPane (ใหม่ cn.hncu.bookstore.out.ui.listpanel (นี้)); this.validate (); } void menuiteminMainActionPerformed (java.awt.event.actionEvent evt) {// เปลี่ยนไปซื้อโมดูล this.setContentPane (ใหม่ cn.hncu.bookstore.in.ui.listpanel (นี้)); this.validate (); } void menuitembookActionPerformed (java.awt.event.actionEvent evt) {// เปลี่ยนไปใช้โมดูลหนังสือ this.setContentPane (ใหม่ cn.hncu.bookstore.book.ui.listpanel (นี้)); this.validate (); } โมฆะส่วนตัว menuitemuseractionperformed (java.awt.event.actionEvent evt) {// เปลี่ยนไปใช้โมดูลผู้ใช้ this.setContentPane (ใหม่ cn.hncu.bookstore.user.ui.listpanel (นี่)); this.validate (); } สาธารณะ javax.swing.jmenuitem getMenuitemoutmain () {return menuitemoutmain; } สาธารณะ javax.swing.jmenuitem getMenuitembook () {return menuitembook; } สาธารณะ javax.swing.jmenuitem getmenuiteminmain () {return menuiteminmain; } สาธารณะ javax.swing.jmenuitem getMenuitemstock () {return menuitemstock; } สาธารณะ javax.swing.jmenuitem getMenuitemuser () {return menuitemstock; } สาธารณะ javax.swing.jmenuitem getMenuitemuser () {return menuitemuser; } โมฆะส่วนตัว ExitMenuitEmactionPerformed (java.awt.event.actionEvent evt) {// gen-first: event_exitmenuitemactionperformed system.exit (0); } // gen-last: event_exitmenuitemactionperformed/** * @param args ข้อโต้แย้งบรรทัดคำสั่ง */โมฆะสาธารณะคงที่หลัก (สตริง args []) {java.awt.eventqueue.invokelater } // gen -begin: ตัวแปร // ตัวแปรประกาศ - อย่าแก้ไข javax.swing.jmenuitem menuitemoutmain ส่วนตัว; private javax.swing.jmenuitem เกี่ยวกับ menuitem; private javax.swing.jmenuitem contentsmenuitem; private javax.swing.jmenuitem copymenuitem; private javax.swing.jmenuitem cutmenuitem; private javax.swing.jmenuitem deletemenuitem; private javax.swing.jmenu editmenu; private javax.swing.jmenuitem exitmenuitem; private javax.swing.jmenu filemenu; Private Javax.swing.jmenu Helpmenu; private javax.swing.jmenu jmenu1; private javax.swing.jmenubar menubar; private javax.swing.jmenuitem menuitembook; private javax.swing.jmenuitem menuiteminmain; private javax.swing.jmenuitem menuitemlogin; private javax.swing.jmenuitem menuitemstock; private javax.swing.jmenuitem menuitemuser; private javax.swing.jmenuitem OpenMenuitem; private javax.swing.jmenuitem pastemenuitem; private javax.swing.jmenuitem saveasmenuitem; private javax.swing.jmenuitem savemenuitem; // สิ้นสุดการประกาศตัวแปร // gen-end: ตัวแปร}
ชุดเครื่องมือ:
แพ็คเกจ cn.hncu.bookstore.utils; นำเข้า java.text.dateformat; นำเข้า java.text.parseException; นำเข้า java.text.simpledateFormat; นำเข้า Java.util.date; วันที่ชั้นเรียนสาธารณะ { /** ** ** ** ** ** ** ** ** ** ** ** @param t * (ประเภทยาว) เวลาที่จะถูกแปลง * @return * สตริงในรูปแบบวันที่ */ สตริงคงที่สาธารณะ longtoString (ยาว t) {วันที่ d = วันที่ใหม่ (); DateFormat DF = New SimpledateFormat ("Yyyyy Year Mm เดือน DD วันที่ HH: MM: SS:"); ส่งคืน df.format (d); } / ** * แปลงสตริงในรูปแบบวันที่ "yyyy-mm-dd-hh: mm: ss:" เป็นเวลานาน * @param str * สตริงวันที่จะแปลง * @return * เวลาประเภท * @throws parsexception * / public Stringtolong SimpledateFormat ("YYYY-MM-DD-HH: MM: SS:"); วันที่ d = df.parse (str); return d.getTime (); - แพ็คเกจ cn.hncu.bookstore.utils; นำเข้า java.io.file; นำเข้า java.io.fileinputstream; นำเข้า java.io.filenotfoundException; นำเข้า Java.io.fileoutputstream; นำเข้า Java.io.ioException; java.util.arraylist; นำเข้า java.util.list; คลาสสาธารณะ fileioutil { / *** การแปรรูป constructor* / private fileioutil () {} / *** อ่านข้อมูลในชื่อ filename <@param filename* @return ชื่อไฟล์) {// กำหนดไฟล์ไฟล์ทั่วไป = ไฟล์ใหม่ (ชื่อไฟล์); // สำหรับไฟล์การอ่านใด ๆ ที่ดีที่สุดคือใช้ไฟล์เพื่อเปิดช่องถ้า (! file.exists ()) {// ไฟล์ไม่มีอยู่และส่งคืนชุดว่างเปล่า ส่งคืน ArrayList ใหม่ <E> (); } ObjectInputStream ใน = null; ลอง {in = new ObjectInputStream (ใหม่ FileInputStream (ไฟล์)); @suppresswarnings ("ไม่ได้ตรวจสอบ") รายการ <e> list = (รายการ <e>) in.readObject (); รายการคืน; } catch (filenotfoundException e) {e.printStackTrace (); } catch (ioexception e) {e.printstacktrace (); } catch (classnotFoundException e) {e.printStackTrace (); } ในที่สุด {ถ้า (ใน! = null) {ลอง {in.close (); } catch (ioexception e) {โยน runtimeException ใหม่ ("การปิดไฟล์ข้อมูลล้มเหลว", e); }}} ส่งคืน ArrayList ใหม่ <E> (); } / ** * ที่เก็บข้อมูล: อ่านข้อมูลลงในชื่อไฟล์ไดเรกทอรี * @param list * การรวบรวมข้อมูลที่จะเก็บไว้ * @param filename * ที่อยู่ไฟล์ * @return * ส่งคืนจริงถ้าการจัดเก็บสำเร็จไม่เช่นนั้นให้ส่งคืน false * / สาธารณะคงที่ <e> boolean writetofile ลอง {out = ใหม่ ObjectOutputStream (ใหม่ fileOutputStream (ชื่อไฟล์)); out.writeObject (รายการ); กลับมาจริง; } catch (filenotfoundException e) {e.printStackTrace (); } catch (ioexception e) {e.printstacktrace (); } ในที่สุด {ถ้า (ออก! = null) {ลอง {out.close (); } catch (ioexception e) {โยน runtimeException ใหม่ ("การปิดไฟล์ข้อมูลล้มเหลว", e); }}} return false; - ฟังก์ชั่นสาธารณะ:
แพ็คเกจ cn.hncu.bookstore.Common; enum สาธารณะ uuidmodelconstance { / ** * การแจงนับ: แจกแจงผู้ใช้ห้าประเภท Usermodel, Bookmodel, InmainModel, IndetailModel, OutMainModel, Outdetailmodel in_main ("inmainmodel"), in_detail ("indetailmodel"), out_main ("outmainmodel"), out_detail ("outdetailmodel"), หุ้น ("Stockmodel"); ชื่อสตริงสุดท้ายส่วนตัว; ส่วนตัว uuidModelConstance (ชื่อสตริง) {this.name = name; } สตริงสาธารณะ getName () {ชื่อคืน; - แพ็คเกจ cn.hncu.bookstore.common.uuid.vo; นำเข้า java.io.serializable; คลาสสาธารณะ uuidmodel ใช้ serializable { / *** สร้างหมายเลข UUID โดยอัตโนมัติด้วยโมเดลการลงคะแนน Private String ModelName; // ระบุ usermodel, bookmodel, inmainmodel, indetailmodel, outmainmodel, outdetailmodel, stockmodel private int currentnum; // modelname หมายเลข UUID ของ UUIDModel () {} {} // } โมฆะสาธารณะ setModelName (String modelName) {this.modelName = modelName; } public int getCurrentNum () {return currentNum; } โมฆะสาธารณะ setCurrentNum (int currentNum) {this.currentNum = currentNum; } @Override สาธารณะ int hashCode () {สุดท้าย int prime = 31; int ผลลัพธ์ = 1; result = prime * result + ((modelName == null)? 0: modelName.hashCode ()); ผลการกลับมา; } @Override บูลีนสาธารณะเท่ากับ (Object obj) {ถ้า (this == obj) คืนค่าจริง; ถ้า (obj == null) ส่งคืนเท็จ; ถ้า (getClass ()! = obj.getClass ()) ส่งคืนเท็จ; uuidModel อื่น ๆ = (UUIDMODEL) OBJ; if (modelName == null) {ถ้า (อื่น ๆ modelName! = null) return false; } อื่นถ้า (! modelName.equals (อื่น ๆ modelName)) return false; กลับมาจริง; - แพ็คเกจ cn.hncu.bookstore.common.uuid.dao.ebi; นำเข้า cn.hncu.bookstore.common.uuidmodelconstance; อินเทอร์เฟซสาธารณะ uuiddao { /*** สร้างจำนวน UUID โดยอัตโนมัติ (USERMODEL, BookModel, InmainModel, IndetailModel, OutMainModel, OutdetailModel, StockModel) * @return * สร้างจำนวนประเภทที่สอดคล้องกัน */ สตริงสาธารณะ getNextNum (UUIDMODELCONSTANCE UMC); แพ็คเกจ cn.hncu.bookstore.common.uuid.dao.ebo; นำเข้า java.util.list; นำเข้า cn.hncu.bookstore.common.uuidmodelconstance; นำเข้า cn.hncu.bookstore.common.uuid.dao.bi.ebi.ebi. cn.hncu.bookstore.common.uuid.vo.uuidmodel; นำเข้า cn.hncu.bookstore.utils.fileioutil; คลาสสาธารณะ uuidebo ใช้ uuiddao {สตริงสตริงคงสุดท้ายส่วนตัวหรือ "uuid.txt"; getNextNum (UUIDMODELCONSTANCE UMC) {String modelName = umc.getName (); // รับรายการประเภทผู้ใช้ <uuidModel> list = fileIoutil.readFromFile (file_name); // อ่านข้อมูลทั้งหมดของประเภทผู้ใช้ที่สร้างขึ้นจากไฟล์ if (um.getModelName (). เท่ากับ (modelName.trim ())) {// ถ้า modelName มีอยู่ในไฟล์ให้ส่งคืนจำนวนถัดไปของประเภทนี้ uuid int res = um.getCurrentNum (); um.setCurrentNum (res+1); fileioutil.writeTofile (list, file_name); // บันทึกข้อมูล UUID ที่อัปเดตลงในโฟลเดอร์ return ""+res; }} // หากไม่พบลูปสำหรับการวนซ้ำนั่นหมายความว่า ModelName เป็นชื่อแรกที่มีหมายเลข 1 // ใหม่วัตถุประเภทนี้ให้บันทึกลงในโฟลเดอร์ UUIDMODEL UM = ใหม่ UUIDMODEL (); um.setModelName (ModelName); um.setCurrentNum (2); list.add (um); fileioutil.writeTofile (list, file_name); กลับ "" +1; - แพ็คเกจ cn.hncu.bookstore.common.uuid.dao.factory; นำเข้า cn.hncu.bookstore.common.uuid.dao.ebi.uuiddao; นำเข้า cn.hncu.bookstore.Common.uuid.dao.ebiatureda uuiddaofactory () {} / ** * รับอินเตอร์เฟส uuiddao * @return * uuiddao * / สาธารณะ uuiddao getuuiddao () {ส่งคืน uuidebo ใหม่ (); - ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น