ระบบการจัดการร้านหนังสือ:
วัตถุประสงค์การออกกำลังกายโครงการ:
1. การวิเคราะห์พื้นฐานของแอปพลิเคชัน Java
2. ปลูกฝังแนวคิดพื้นฐานของการเขียนโปรแกรมเชิงวัตถุ
3. การประยุกต์ใช้รูปแบบการออกแบบ Java ขั้นพื้นฐานที่ครอบคลุม
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. การจัดการรายละเอียดการขาย (outdetail.txt)
7. การจัดการสินค้าคงคลัง (stock.txt)
ผู้รับเหมาช่วงโครงการ
เลเยอร์แรก: โมดูลผู้ใช้ (ผู้ใช้) ตามโมดูล
หนังสือ (หนังสือ),
ซื้อ (ใน)
ยอดขาย (ออก),
สินค้าคงคลัง (ร้านค้า)
เลเยอร์ที่สอง: ตามโหมดสามชั้นจะแบ่งออกเป็นเลเยอร์การนำเสนอ (UI), Logic Layer (ธุรกิจ) และ Data Layer (DAO)
โดยปกติจะต้องเพิ่มเลเยอร์วัตถุค่า (VO)
ชั้นที่สาม: ขึ้นอยู่กับสถานการณ์เฉพาะตามการแบ่งภายในชั้น ตัวอย่างเช่นแพคเกจย่อยจะต้องถูกสร้างขึ้นในรูปแบบของสามเหลี่ยมเหล็กในขณะที่ UI และ VO ไม่จำเป็นต้องแบ่งออกเป็นส่วนย่อย)
แนวคิดการแบ่งชั้นโครงการ:
ไม่สมบูรณ์โปรดให้ความสนใจกับซีรีส์นี้ต่อไป (II)
ต่อไปนี้เป็นส่วนหนึ่งของรหัส: (คลาสสาธารณะใน UTIL)
cn.hncu.bookstore.util
fileioutil.java:
แพ็คเกจ cn.hncu.bookstore.util; นำเข้า java.io.file; นำเข้า java.io.fileinputstream; นำเข้า java.io.filenotfoundexception นำเข้า Java.io.fileoutputstream; นำเข้า Java.io.ioException; java.util.arraylist; นำเข้า java.util.list; นำเข้า Javax.swing.joptionpane;/*** ข้อมูลสาธารณะผู้ใช้อ่านและเขียนคลาส* @author Chen Haoxiang** @version 1.0*/คลาสสาธารณะ fileioutil ตาราง) * @param ee (ประเภทของทั่วไปที่ผ่านมา!) * @return Records ของทุกตาราง! */@suppresswarnings ("ไม่ได้ตรวจสอบ") // กดคำเตือนสาธารณะคงที่ <e> รายการ <e> readFormFile (ชื่อไฟล์สตริง, e ee) {list <e> list = new ArrayList <e> (); ไฟล์ไฟล์สุดท้าย = ไฟล์ใหม่ (ชื่อไฟล์); ObjectInputStream ใน = null; if (! file.exists ()) {joptionpane.showMessageDialog (null, "ตารางข้อมูลไม่มีอยู่!"); รายการคืน; } ลอง {in = new ObjectInputStream (ใหม่ FileInputStream (ชื่อไฟล์)); ลอง {list = (รายการ <e>) in.readObject (); } catch (classnotFoundException e) {e.printStackTrace (); }} catch (filenotfoundException e) {e.printStackTrace (); } catch (ioexception e) {e.printstacktrace (); } ในที่สุด {ถ้า (ใน! = null) {ลอง {in.close (); } catch (ioexception e) {โยน runtimeException ใหม่ ("ปิดฐานข้อมูลล้มเหลว"); }}} รายการส่งคืน; } / ** * เขียนรายการรวบรวมรายการลงในไฟล์ชื่อไฟล์ข้อมูลชื่อ * * @param รายการ (การรวบรวมข้อมูลที่ต้องจัดเก็บ) * @param filename (ชื่อไฟล์ที่เขียนไฟล์) * / โมฆะสาธารณะ write2file ลอง {out = ใหม่ ObjectOutputStream (ใหม่ fileOutputStream (ชื่อไฟล์)); out.writeObject (รายการ); } catch (filenotfoundException e) {e.printStackTrace (); } catch (ioexception e) {e.printstacktrace (); } ในที่สุด {ถ้า (ออก! = null) {ลอง {out.close (); } catch (ioexception e) {โยน runtimeException ใหม่ ("ปิดฐานข้อมูลล้มเหลว!"); -ข้อมูลผู้ใช้ที่ห่อหุ้ม:
cn.hncu.bookstore.user.vo;
usermodel.java
แพ็คเกจ cn.hncu.bookstore.user.vo;/** * @author chen haoxiang * @version 1.0 * * <br/> * วัตถุค่าที่ใช้เพื่อบันทึกข้อมูลผู้ใช้ <br/> * 1. serialize <br/> * 2. รหัส <br/> * 4. วิธีการ toString <br/> * 5. วิธีการก่อสร้างพารามิเตอร์ว่าง <br/> */คลาสสาธารณะ USERMODEL {สตริงส่วนตัว uuid; // ผู้ใช้รหัสการระบุตัวตนที่ไม่ซ้ำกันชื่อสตริงส่วนตัว; // ชื่อผู้ใช้ส่วนตัวประเภท int; // ประเภทผู้ใช้สตริงส่วนตัว pwd; // รหัสผ่านผู้ใช้ UUID-USER รหัสประจำตัวที่ไม่ซ้ำกัน*/ สตริงสาธารณะ getUUID () {return UUID; } / *** ฟังก์ชั่น: SET UUID-USER รหัสประจำตัวที่ไม่ซ้ำกัน* @Param UUID-USER พารามิเตอร์ประเภทรหัสการระบุรหัสการระบุ* / โมฆะสาธารณะ setUUID (สตริง uuid) {this.uuid = uuid; } / *** ฟังก์ชั่น: รับชื่อผู้ใช้ของผู้ใช้* @return-ชื่อผู้ใช้ชื่อ* / สตริงสาธารณะ getName () {ชื่อคืน; } / *** ฟังก์ชั่น: รับชื่อผู้ใช้ของผู้ใช้* @return-ชื่อผู้ใช้ชื่อ* / สตริงสาธารณะ getName () {ชื่อคืน; } / *** ฟังก์ชั่น: ตั้งชื่อผู้ใช้** @param ชื่อ-ชื่อผู้ใช้ตั้งค่าโดยผู้ใช้พารามิเตอร์ประเภทสตริง* / โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } / *** ฟังก์ชั่น: รับประเภทผู้ใช้:* 1 - แสดงถึงผู้ดูแลระบบและการดำเนินการทั้งหมดสามารถทำได้* 2 - แสดงถึงบุคคลที่สามารถใช้งานโมดูลหนังสือ* 3 - แสดงถึงบุคคลที่สามารถใช้งานโมดูลการซื้อ* 4 - แสดงถึงบุคคลที่สามารถใช้งานโมดูลการขายได้ } / *** ฟังก์ชั่น: ตั้งค่าประเภทผู้ใช้:* 1-หมายถึงบุคคลที่สามารถใช้งานโมดูลหนังสือ* 2-แสดงถึงบุคคลที่สามารถใช้งานโมดูลหนังสือ* 3-ได้รับการยอมรับว่าเป็นบุคคลที่สามารถใช้งานโมดูลการซื้อ* 4-เป็นตัวเลือกประเภท พิมพ์) {this.type = type; } / ***ฟังก์ชั่น: รับรหัสผ่านของผู้ใช้*@return ประเภทสตริงรหัสผ่านของผู้ใช้* / สตริงสาธารณะ getpwd () {return pwd; } / ***ฟังก์ชั่น: ตั้งรหัสผ่านของผู้ใช้*@param pwd-พารามิเตอร์ประเภทสตริง* / โมฆะสาธารณะ setpwd (สตริง pwd) {this.pwd = pwd; } @Override สาธารณะ int hashCode () {สุดท้าย int prime = 31; int ผลลัพธ์ = 1; result = prime * result + ((uuid == null)? 0: uuid.hashCode ()); ผลการกลับมา; } @Override บูลีนสาธารณะเท่ากับ (Object obj) {ถ้า (this == obj) คืนค่าจริง; ถ้า (obj == null) ส่งคืนเท็จ; ถ้า (getClass ()! = obj.getClass ()) ส่งคืนเท็จ; usermodel อื่น ๆ = (usermodel) obj; if (uuid == null) {ถ้า (อื่น ๆ uuid! = null) return false; } อื่นถ้า (! uuid.equals (อื่น ๆ uuid)) ส่งคืนเท็จ; กลับมาจริง; } @Override สตริงสาธารณะ 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 แต่ก็ยังต้องเขียนอยู่ นี่คือข้อกำหนดการเขียน Java ที่ทุกคนปฏิบัติตาม!
ผู้ใช้ DAO (เลเยอร์ข้อมูล): (อินเทอร์เฟซ)
cn.hncu.bookstore.user.dao.dao;
userdao.java
แพ็คเกจ cn.hncu.bookstore.user.dao.dao; นำเข้า java.util.list; นำเข้า cn.hncu.bookstore.user.vo.usermodel; นำเข้า cn.hncu.bookstore.user.vo.userquerymodel; อินเตอร์เฟส userdao { / *** ฟังก์ชั่น: สร้างผู้ใช้** @param usermodel --- ข้อมูลผู้ใช้ที่จะสร้าง* @return-จริงหมายถึงการสร้างประสบความสำเร็จการสร้างเท็จ / *** ฟังก์ชั่น: ลบผู้ใช้** @param uuid --- รหัสประจำตัวที่ไม่ซ้ำกันของผู้ใช้ผู้ใช้แต่ละคนจะไม่เหมือนกัน* @return --- จริงหมายถึงการลบนั้นสำเร็จ / *** ฟังก์ชั่น: แก้ไขข้อมูลผู้ใช้** @param ผู้ใช้ --- ชื่อพารามิเตอร์ข้อมูลผู้ใช้ที่จำเป็นต้องแก้ไข* @return return true- ระบุว่าการปรับเปลี่ยนสำเร็จส่งคืน FALSE- ระบุว่าการปรับเปลี่ยนล้มเหลว*/ การอัปเดตบูลีนสาธารณะ (ผู้ใช้ USERMODEL); / *** ฟังก์ชั่น: รับข้อมูลผู้ใช้ทั้งหมด** @return --- คอลเลกชัน USERMODEL นั่นคือข้อมูลของผู้ใช้*/ รายการสาธารณะ <EserModel> getAll (); /** * ฟังก์ชั่น: ค้นหาตามเงื่อนไขการค้นหาบางอย่าง * <br/> * ส่งคืนข้อมูลผู้ใช้ที่ตรงกับเงื่อนไขการค้นหา ** @param uqm --- เงื่อนไขการค้นหาที่ห่อหุ้ม* @return ---- ชุดข้อมูลผู้ใช้ที่ตรงกับเงื่อนไขการค้นหา*/ รายการสาธารณะ <EserModel> getByCondition (UserQueryModel UQM); / *** ฟังก์ชั่น: รับข้อมูลผู้ใช้บางอย่าง** @param uuid --- รหัสการระบุตัวตนที่ไม่ซ้ำผู้ใช้* @return --- ส่งคืนข้อมูลผู้ใช้ที่พบตามรหัสประจำตัวที่ไม่ซ้ำกันนี้*/ USermodel สาธารณะ GetSingle (String UUID);}ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น