Java-Single-Player เวอร์ชันของระบบการจัดการร้านหนังสือ (โมดูลการออกแบบฝึกซ้อมและความคิด _Series 1): //www.vevb.com/article/91004.htm
แนะนำ
เคล็ดลับ: มีไดเรกทอรีที่จุดด้านบนซึ่งสามารถค้นหาคลาสที่คุณต้องการได้อย่างรวดเร็ว
วันนี้มีการปรับเปลี่ยนรหัสก่อนหน้านี้เล็กน้อยเพื่อให้รหัสสมบูรณ์แบบมากขึ้น
สำหรับรหัสประจำตัวที่ไม่ซ้ำกันของผู้ใช้ UUID จะถูกปรับเปลี่ยนให้สร้างขึ้นภายในในโปรแกรมในอนาคต
UUID ปัจจุบันยังคงถูกตั้งค่าโดยผู้ใช้
วันนี้สำหรับโปรแกรมนี้เราได้เพิ่มส่วนหนึ่งของเลเยอร์การนำเสนอของส่วนต่อประสานผู้ใช้และเพิ่มการแจงนับระดับสาธารณะ
ด้านล่างคือการโพสต์ของรหัสทั้งหมดสำหรับโปรแกรมที่ฉันเขียน: ฉันจะค่อยๆเขียนโปรแกรมนี้เสร็จโปรดมั่นใจได้! (ฟังก์ชั่นที่จำเป็นต้องใช้สามารถพบได้ในชุดของระบบการจัดการร้านหนังสือฉันได้จัดประเภทบทความสำหรับซีรีส์นี้เพื่อให้ทุกคนสามารถค้นหาได้)
บล็อกชุดนี้จะไม่ถูกขัดจังหวะ
ตอนนี้รหัสถูกเลเยอร์:
รูปภาพหลังจากโปรแกรมกำลังทำงาน:
ฉันโพสต์รหัสตามลำดับจากด้านบนถึงด้านล่างของไดเรกทอรี:
โปรดทราบ! คำสั่งซื้อรหัสนี้ไม่ใช่คำสั่งที่ฉันเขียนรหัส!
หากคุณต้องการอ้างถึงการเขียนของฉันโปรดอย่าทำตามลำดับของรหัสที่ฉันโพสต์
คุณควรเขียนชั้นเรียนสาธารณะและคลาสเครื่องมือก่อน
อีกครั้ง: คลาส Layer Data -> คลาสเลเยอร์โลจิคัล -> คลาสเลเยอร์การนำเสนอ
รูปภาพบางส่วนหลังจากโปรแกรมกำลังทำงาน:
คลาส UserTypeenum:
cn.hncu.bookstore.Common;
คลาส UserTypeenum:
แพ็คเกจ cn.hncu.bookstore.Common;/*** ฟังก์ชั่น: การแจงนับประเภทผู้ใช้! <br/> * กำหนดไว้ในโมดูลสาธารณะ <br/> * ตัวแปร: <br/> * ผู้ดูแลระบบ (1, "ผู้ดูแลระบบซุปเปอร์"), <br/> * หนังสือ (2, "บรรณารักษ์"), <br/> * ใน (3, "ผู้ดูแลระบบซื้อ"), <br/> * ออก (4, "ผู้ดูแลการขาย"), <br/> * stock (5, "ผู้ดูแลระบบสินค้าคงคลัง" ผู้ดูแลระบบ (1, "ผู้ดูแลระบบซุปเปอร์"), หนังสือ (2, "บรรณารักษ์"), ใน (3, "ผู้ดูแลระบบซื้อ"), ออก (4, "ผู้ดูแลการขาย"), หุ้น (5, "ผู้ดูแลสินค้าคงคลัง"); ประเภท int สุดท้ายส่วนตัว; ชื่อสตริงสุดท้ายส่วนตัว; / *** เริ่มต้นชื่อตัวแปรการแจงนับ* @param type --- หมายเลขจำนวนเต็มที่สอดคล้องกับตัวแปรการแจงนับ* @param ชื่อ --- ชื่อประเภทสตริงที่สอดคล้องกับตัวแปรการแจงนับ*/ ผู้ใช้ส่วนตัว (ประเภท int, ชื่อสตริง) {this.type = type; this.name = ชื่อ; } / *** รับจำนวนตัวแปรการแจงนับปัจจุบัน* @return --- ประเภทหมายเลข* / public int getType () {type return; } / *** รับชื่อภาษาจีนของตัวแปรการแจงนับปัจจุบัน* @return --- ชื่อชื่อจีน* / สตริงสาธารณะ getName () {ชื่อคืน; } /*** รับชื่อภาษาจีนของตัวแปรการแจงนับที่สอดคล้องกับหมายเลขตามหมายเลข int* @param ประเภท --- พารามิเตอร์ int ที่จำเป็นต้องส่งผ่าน* @return --- หากมีตัวแปรการแจกแจงที่สอดคล้องกับตัวเลขดังกล่าว * <br/>-หากไม่มีตัวแปรการแจงนับที่สอดคล้องกับตัวเลขดังกล่าวข้อความข้อยกเว้นจะถูกโยนทิ้ง */ สตริงคงที่สาธารณะ getNameByType (ประเภท int) {สำหรับ (userTypeenum userType: userTypeenum.Values ()) {ถ้า (userTyType.getType () == ประเภท) {return userType.getName (); }} โยน unledalargumentException ใหม่ ("ไม่มีประเภทผู้ใช้ที่สอดคล้องกันในการแจงนับ:"+ประเภท); }/** * รับประเภท int ของตัวแปรการแจงนับที่สอดคล้องกับชื่อตามชื่อภาษาจีนของตัวแปรการแจงนับ * @param ชื่อ --- ชื่อประเภทสตริงที่ต้องส่งผ่านใน * @return --- หากมีตัวแปรการแจงนับที่สอดคล้องกับชื่อ int int getTypeByName (ชื่อสตริง) {สำหรับ (userTypeenum userType: userTypeenum.Values ()) {ถ้า (userTytype.getName (). เท่ากับ (ชื่อ)) {return userType.getType (); }} โยน unledalargumentException ใหม่ ("ไม่มีประเภทผู้ใช้ที่สอดคล้องกันในการแจงนับ:"+ชื่อ); -อินเตอร์เฟส userebi:
cn.hncu.bookstore.user.business.ebi;
อินเตอร์เฟส userebi:
แพ็คเกจ cn.hncu.bookstore.user.business.ebi; นำเข้า java.util.list; นำเข้า cn.hncu.bookstore.user.vo.usermodel; นำเข้า cn.hncu.bookstore.user.vo.userquerymodel; { / *** ฟังก์ชั่น: สร้างผู้ใช้** @param usermodel --- ข้อมูลผู้ใช้ที่จะสร้าง* @return --- จริงหมายถึงการสร้างประสบความสำเร็จการสร้างเท็จหมายถึงการสร้างล้มเหลว* / บูลีนสาธารณะสร้าง (ผู้ใช้ USERMODEL); / ** * ฟังก์ชั่น: ลบผู้ใช้ตามรหัสประจำตัวที่ไม่ซ้ำกันของผู้ใช้ UUID * * @Param UUID --- รหัสบัตรประจำตัวที่ไม่ซ้ำกันของผู้ใช้ผู้ใช้แต่ละคนจะไม่เหมือนกัน * @return --- จริงหมายถึงการลบนั้นสำเร็จ / *** ฟังก์ชั่น: แก้ไขข้อมูลข้อมูลของผู้ใช้** @param ผู้ใช้ --- ชื่อพารามิเตอร์ข้อมูลผู้ใช้ที่ต้องแก้ไข* @return ส่งคืนจริง-บ่งชี้ว่าการปรับเปลี่ยนนั้นสำเร็จส่งคืนเท็จ-บ่งชี้ว่าการปรับเปลี่ยนล้มเหลว*/ การอัปเดตบูลีนสาธารณะ / *** ฟังก์ชั่น: รับข้อมูลผู้ใช้ทั้งหมด** @return --- คอลเลกชัน USERMODEL นั่นคือข้อมูลของผู้ใช้*/ รายการสาธารณะ <EserModel> getAll (); /** * ฟังก์ชั่น: ค้นหาตามเงื่อนไขการค้นหาบางอย่าง * <br/> * ส่งคืนข้อมูลผู้ใช้ที่ตรงกับเงื่อนไขการค้นหา ** @param uqm --- เงื่อนไขการค้นหาที่ห่อหุ้ม* @return ---- ชุดข้อมูลผู้ใช้ที่ตรงกับเงื่อนไขการค้นหา*/ รายการสาธารณะ <EserModel> getByCondition (UserQueryModel UQM); / *** ฟังก์ชั่น: รับข้อมูลผู้ใช้บางอย่าง** @param uuid --- รหัสการระบุตัวตนที่ไม่ซ้ำผู้ใช้* @return --- ส่งคืนข้อมูลผู้ใช้ที่พบตามรหัสประจำตัวที่ไม่ซ้ำกันนี้*/ USermodel สาธารณะ GetSingle (String UUID);}ชั้นเรียน USEREBO:
cn.hncu.bookstore.user.business.ebo;
ชั้นเรียน USEREBO:
แพ็คเกจ cn.hncu.bookstore.user.business.ebo; นำเข้า java.util.list; นำเข้า cn.hncu.bookstore.user.business.ebi.userebi; นำเข้า cn.hncu.bookstore.user.dao.dao.userdao; cn.hncu.bookstore.user.dao.factory.userdaofactory; นำเข้า cn.hncu.bookstore.user.vo.usermodel; นำเข้า cn.hncu.bookstore.user.vo.userquerymodel; @Override บูลีนสาธารณะสร้าง (USERMODEL USER) {return dao.create (ผู้ใช้); } @Override บูลีนสาธารณะลบ (สตริง uuid) {return dao.delete (uuid); } @Override การอัปเดตบูลีนสาธารณะ (ผู้ใช้ USERMODEL) {return dao.update (ผู้ใช้); } @Override รายชื่อสาธารณะ <SuserModel> getAll () {return dao.getall (); } @Override รายการสาธารณะ <EserModel> getByCondition (UserQueryModel UQM) {// วิธีการที่สร้างขึ้นอัตโนมัติ todo stub return null; } @Override Public UserModel GetSingle (String UUID) {return dao.getsingle (uuid); -ชั้นเรียน userebifactory:
cn.hncu.bookstore.user.business.factory;
ชั้นเรียน userebifactory:
แพ็คเกจ 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:
แพ็คเกจ 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-จริงหมายถึงการสร้างประสบความสำเร็จการสร้างเท็จ / ** * ฟังก์ชั่น: ลบผู้ใช้ตามรหัสประจำตัวที่ไม่ซ้ำกันของผู้ใช้ UUID * * @Param UUID --- รหัสบัตรประจำตัวที่ไม่ซ้ำกันของผู้ใช้ผู้ใช้แต่ละคนจะไม่เหมือนกัน * @return --- จริงหมายถึงการลบนั้นสำเร็จ / *** ฟังก์ชั่น: แก้ไขข้อมูลข้อมูลของผู้ใช้** @param user --- ชื่อพารามิเตอร์ข้อมูลผู้ใช้ที่ต้องแก้ไข* @return ส่งคืนจริง-หมายถึงการปรับเปลี่ยนจะสำเร็จส่งคืนเท็จ-หมายถึงการปรับเปลี่ยนล้มเหลว*/ การอัปเดตบูลีนสาธารณะ / *** ฟังก์ชั่น: รับข้อมูลผู้ใช้ทั้งหมด** @return --- คอลเลกชัน USERMODEL นั่นคือข้อมูลของผู้ใช้*/ รายการสาธารณะ <EserModel> getAll (); /** * ฟังก์ชั่น: ค้นหาตามเงื่อนไขการค้นหาบางอย่าง * <br/> * ส่งคืนข้อมูลผู้ใช้ที่ตรงกับเงื่อนไขการค้นหา ** @param uqm --- เงื่อนไขการค้นหาที่ห่อหุ้ม* @return ---- ชุดข้อมูลผู้ใช้ที่ตรงกับเงื่อนไขการค้นหา*/ รายการสาธารณะ <EserModel> getByCondition (UserQueryModel UQM); / *** ฟังก์ชั่น: รับข้อมูลผู้ใช้บางอย่าง** @param uuid --- รหัสการระบุตัวตนที่ไม่ซ้ำผู้ใช้* @return --- ส่งคืนข้อมูลผู้ใช้ที่พบตามรหัสประจำตัวที่ไม่ซ้ำกันนี้*/ USermodel สาธารณะ GetSingle (String UUID);}คลาส UserDaofactory:
cn.hncu.bookstore.user.dao.factory;
คลาส UserDaofactory:
แพ็คเกจ cn.hncu.bookstore.user.dao.factory; นำเข้า cn.hncu.bookstore.user.dao.dao.userdao; นำเข้า cn.hncu.bookstore.user.dao.impl.userdaoserimpl; */คลาสสาธารณะ UserDaofactory {สาธารณะ userdao getUserdao () {ส่งคืน userDaoserImpl ใหม่ (); -คลาส UserDaoserimpl:
cn.hncu.bookstore.user.dao.impl;
คลาส UserDaoserimpl:
แพ็คเกจ cn.hncu.bookstore.user.dao.impl; นำเข้า java.util.arraylist; นำเข้า java.util.list; นำเข้า cn.hncu.bookstore.user.dao.dao.userdao; cn.hncu.bookstore.user.vo.userQueryModel; นำเข้า cn.hncu.bookstore.util.fileioutil;/** * <br/> * คลาสการใช้งานเฉพาะสำหรับการประมวลผลข้อมูลผู้ใช้ file_name = "user.txt"; @Override Public Boolean Create (USERMODEL USER) {// 1 DESERIALIZE (อ่าน) รายการข้อมูลที่มีอยู่ <EserModel> list = fileIoutil.ReadFormFile (file_name); // 2 พิจารณาว่าผู้ใช้มีอยู่แล้วหรือไม่จากนั้นตัดสินใจว่าจะสร้าง (USERMODEL USERMODEL: รายการ) {// ถ้า UUIDS ของผู้ใช้ทั้งสองมีค่าเท่ากันผู้ใช้จะเหมือนกันถ้า (userModel.getUUID () fileioutil.write2file (รายการ, file_name); ส่งคืน true; // สร้างสำเร็จให้ส่งคืน true} @Override บูลีนสาธารณะลบ (สตริง uuid) {// 1 deserialize แรก (อ่าน) รายการข้อมูลที่มีอยู่ <usermodel> list = fileioutil.readformfile (file_name); // 2 พิจารณาว่าผู้ใช้มีอยู่แล้วหรือไม่จากนั้นตัดสินใจว่าจะลบ // สำหรับ (int i = 0; i <list.size (); i ++) {// ถ้า (list.get (i) .getUuid (). เท่ากับ (uuid)) {// list.remove (i); // fileioutil.write2file (รายการ, file_name); // return true; //} //} สำหรับ (usermodel usermodel: list) {// ถ้า uuids ของผู้ใช้ 2 คนเท่ากันผู้ใช้จะเหมือนกันถ้า (usermodel.getuuid (). เท่ากับ (uuid)) {list.romove (usermodel); fileioutil.write2file (รายการ, file_name); // ลบสำเร็จส่งคืนกลับจริงจริง; }} // 3 ผู้ใช้ไม่มีอยู่ // ลบล้มเหลวส่งคืนการส่งคืนเท็จเท็จ; } @Override Public Boolean Update (USERMODEL USER) {// 1 deserialize (อ่าน) รายการข้อมูลที่มีอยู่รายการแรก <EserModel> list = fileIoutil.ReadFormFile (file_name); // 2 พิจารณาว่าผู้ใช้มีอยู่แล้วหรือไม่จากนั้นตัดสินใจว่าจะสร้าง (int i = 0; i <list.size (); i ++) {// uuid ไม่สามารถเปลี่ยนแปลงได้ ค้นหาข้อมูลผู้ใช้ผ่าน UUID และแก้ไขมันจะโอเคถ้า (list.get (i) .getUuid (). เท่ากับ (user.getUuid ())) {// แก้ไขผู้ใช้ที่พบในรายการผู้ใช้ set (i, ผู้ใช้); fileioutil.write2file (รายการ, file_name); // ค้นหาผู้ใช้และส่งคืนกลับจริงจริง; }} // 3 หากไม่มีผู้ใช้การดัดแปลงไม่สามารถส่งคืนเท็จได้ } @Override รายการสาธารณะ <EserModel> getAll () {return fileIoutil.ReadFormFile (file_name); } @Override รายการสาธารณะ <EserModel> getByCondition (UserQueryModel UQM) {// วิธีการที่สร้างขึ้นอัตโนมัติ todo stub return null; } @Override สาธารณะ USERMODEL GETSINGLE (String UUID) {// 1 deserialize (อ่าน) รายการข้อมูลที่มีอยู่รายการแรก <EserModel> list = fileIoutil.ReadFormFile (file_name); // 2 พิจารณาว่าผู้ใช้มีอยู่แล้วหรือไม่และถ้ามีอยู่ให้ส่งคืนผู้ใช้สำหรับ (int i = 0; i <list.size (); i ++) {ถ้า (list.get (i) .getUuid (). เท่ากับ (uuid)) {return list.get.get (i); }} // 3 หากไม่มีผู้ใช้ให้ส่งคืนค่า null ส่งคืน null; -คลาส Addpanel:
cn.hncu.bookstore.user.ui;
คลาส Addpanel:
/ * * addpanel.java * * สร้างขึ้นบน __date__, __time__ */แพ็คเกจ cn.hncu.bookstore.user.ui; นำเข้า Javax.swing.jframe; นำเข้า Javax.swing.joptionpane; cn.hncu.bookstore.user.business.ebi.userebi; นำเข้า cn.hncu.bookstore.user.business.factory.userebifactory; นำเข้า cn.hncu.bookstore.user.vo.usermodel; คลาส AddPanel ขยาย javax.swing.jpanel {mainframe jframe ส่วนตัว = null; / ** สร้างแบบฟอร์มใหม่ addPanel*/ Public AddPanel (JFrame MainFrame) {this.mainFrame = MainFrame; initcomponents (); myinitdata (); } โมฆะส่วนตัว myInitData () {สำหรับ (userTypeenum ประเภท: userTypeenum.values ()) {combtype.additem (type.getName ()); }} /** วิธีนี้เรียกจากภายในคอนสตรัคเตอร์ถึง* เริ่มต้นฟอร์ม * คำเตือน: อย่าแก้ไขรหัสนี้ เนื้อหาของวิธีนี้คือ * สร้างใหม่โดยตัวแก้ไขแบบฟอร์มเสมอ */// gen-begin: initcomponents // <editor-fold defaultState = "collapsed" desc = "รหัสที่สร้างขึ้น"> โมฆะส่วนตัว 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 = ใหม่ javax.swing.jlabel (); tfdpwd2 = new Javax.swing.jpasswordfield (); jlabel5 = new Javax.swing.jlabel (); jlabel6 = ใหม่ javax.swing.jlabel (); combtype = new Javax.swing.jcombobox (); tfdpwd = new Javax.swing.jpasswordfield (); btnadd = new Javax.swing.jbutton (); btnback = new Javax.swing.jbutton (); SetMinimumsize (Java.awt.Dimension ใหม่ (800, 600)); setlayout (null); jlabel1.setfont (ใหม่ java.awt.font ("Microsoft Yahei", 1, 48)); jlabel1.Setforeground (ใหม่ java.awt.Color (204, 0, 0)); jlabel1.settext ("/U6DFB/U52A0/U7528/U6237"); เพิ่ม (Jlabel1); Jlabel1.SetBounds (270, 30, 230, 80); jlabel2.setfont (ใหม่ java.awt.font ("Microsoft Yahei", 0, 18)); Jlabel2.Settext ("/U7528/U6237/U7C7B/U578B:"); เพิ่ม (Jlabel2); Jlabel2.setBounds (40, 310, 90, 30); tfdname.setFont (ใหม่ java.awt.font ("กล่องโต้ตอบ", 1, 18)); tfdname.setautoscrolls (เท็จ); เพิ่ม (tfdname); tfdname.setBounds (420, 160, 120, 30); Jlabel3.SetFont (Java.awt.Font ใหม่ ("Microsoft Yahei", 0, 18)); jlabel3.settext ("uuid:"); เพิ่ม (Jlabel3); Jlabel3.SetBounds (70, 160, 50, 30); tfduuid.setfont (ใหม่ java.awt.font ("กล่องโต้ตอบ", 0, 11)); เพิ่ม (tfduuid); tfduuid.setbounds (140, 160, 110, 30); jlabel4.setFont (ใหม่ 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 (Java.awt.Font ใหม่ ("Microsoft Yahei", 0, 18)); Jlabel5.Settext ("/U5BC6/U7801:"); เพิ่ม (Jlabel5); Jlabel5.SetBounds (70, 240, 50, 30); jlabel6.setfont (ใหม่ java.awt.font ("Microsoft Yahei", 0, 18)); jlabel6.settext ("/U786E/U8BA4/U5BC6/U7801:"); เพิ่ม (Jlabel6); Jlabel6.setbounds (330, 240, 90, 30); combtype.setfont (ใหม่ java.awt.font ("กล่องโต้ตอบ", 1, 18)); combtype.setforeground (Java.awt.Color ใหม่ (51, 51, 255)); combtype.setModel (ใหม่ javax.swing.defaultcomboBoxModel (สตริงใหม่ [] {"โปรดเลือก ... "})); เพิ่ม (combtype); combtype.setbounds (140, 310, 160, 30); tfdpwd.setfont (ใหม่ java.awt.font ("安一", 1, 18)); เพิ่ม (tfdpwd); tfdpwd.setbounds (140, 240, 160, 30); btnadd.setFont (ใหม่ java.awt.font ("กล่องโต้ตอบ", 1, 24)); btnadd.setforeground (ใหม่ java.awt.color (0, 204, 204)); btnadd.settext ("/u6dfb/u52a0"); btnadd.addactionListener (ใหม่ java.awt.event.actionListener () {โมฆะสาธารณะ actionperformed (java.awt.event.actionEvent evt) {btnaddactionperformed (evt);}}); เพิ่ม (btnadd); btnadd.setbounds (140, 430, 120, 60); btnback.setfont (java.awt.font ใหม่ ("กล่องโต้ตอบ", 1, 24)); btnback.setforeground (Java.awt.Color ใหม่ (0, 204, 204)); btnback.settext ("/u8fd4/u56de"); btnback.addactionListener (ใหม่ java.awt.event.actionListener () {โมฆะสาธารณะ actionperformed (java.awt.event.actionEvent evt) {btnbackactionerformed (evt);}}); เพิ่ม (btnback); btnback.setbounds (470, 430, 120, 60); } // </ditor-fold> // gen-end: initcomponents ส่วนตัวโมฆะกลับ () {mainframe.setContentPane (ใหม่ ListPanel (เมนเฟรม)); mainframe.validate (); } / ***ฟังปุ่มย้อนกลับ*@param คลิกฟังปุ่มส่งคืน* / โมฆะส่วนตัว btnbackactionperformed (java.awt.event.actionEvent evt) {back (); } โมฆะส่วนตัว btnaddactionperformed (java.awt.event.actionEvent evt) {// 1 รวบรวมพารามิเตอร์สตริง uuid = tfduuid.getText (); ชื่อสตริง = tfdName.getText (); สตริง pwd = สตริงใหม่ (tfdpwd.getpassword ()); สตริง pwd2 = สตริงใหม่ (tfdpwd2.getpassword ()); if (! pwd.equals (pwd2)) {joptionpane.showmessagedialog (null, "อินพุตรหัสผ่านไม่สอดคล้องกันสองครั้งโปรดกลับเข้ามาอีกครั้ง!"); กลับ; } int type = 0; ลอง {type = usertypeenum.getTypeByName (combtype.getSelectedItem () .toString ()); } catch (Exception e) {joptionpane.showMessageDialog (null, "โปรดระบุประเภทผู้ใช้!"); กลับ; } // 2 จัดระเบียบพารามิเตอร์ USERMODEL ผู้ใช้ = ใหม่ USERMODEL (); user.setName (ชื่อ); user.setpwd (PWD); user.setType (ประเภท); user.setUUID (UUID); // 3 โทรหาเลเยอร์ลอจิก userebi ebi = userebifactory.getUserebi (); // 4direct ไปยังหน้าต่างๆตามผลลัพธ์ที่ส่งคืนโดยการโทรหาก (ebi.create (ผู้ใช้)) {back (); } else {joptionpane.showMessageDialog (null, "ผู้ใช้รายนี้มีอยู่แล้ว!"); }} // gen -begin: ตัวแปร // ตัวแปรประกาศ - อย่าแก้ไข javax.swing.jbutton btnadd ส่วนตัว; private javax.swing.jbutton btnback; private javax.swing.jcombobox combtype; private javax.swing.jlabel jlabel1; private javax.swing.jlabel jlabel2; private javax.swing.jlabel jlabel3; private javax.swing.jlabel jlabel4; private javax.swing.jlabel jlabel5; private javax.swing.jlabel jlabel6; private javax.swing.jtextfield tfdname; private javax.swing.jpasswordfield tfdpwd; private javax.swing.jpasswordfield tfdpwd2; private javax.swing.jtextfield tfduuid; // สิ้นสุดการประกาศตัวแปร // gen-end: ตัวแปร}ListPanel class:
cn.hncu.bookstore.user.ui;
ListPanel class:
/ * * listpanel.java * * สร้างขึ้นบน __date__, __time__ */แพ็คเกจ cn.hncu.bookstore.user.ui; นำเข้า java.util.list; นำเข้า Javax.swing.jframe; นำเข้า cn.hncu.bookstore.user.business cn.hncu.bookstore.user.business.factory.userebifactory; นำเข้า cn.hncu.bookstore.user.vo.usermodel;/*** Presentation Layer-user List Panel** @author Chen Haoxiang* @ersion / ** สร้างแบบฟอร์มใหม่ ListPanel*/ Public ListPanel (JFrame MainFrame) {this.mainFrame = MainFrame; initcomponents (); myinitdata (); } / *** อ่านผู้ใช้ทั้งหมดและเพิ่มลงในรายการ* / โมฆะส่วนตัว myinitData () {userebi user = userebifactory.getUserebi (); รายการ <USERMODEL> list = user.getAll (); userlists.setListData (list.toarray ()); } /** วิธีนี้เรียกจากภายในคอนสตรัคเตอร์เพื่อ* เริ่มต้นฟอร์ม * คำเตือน: อย่าแก้ไขรหัสนี้ เนื้อหาของวิธีนี้คือ * สร้างใหม่โดยตัวแก้ไขแบบฟอร์มเสมอ */// gen-begin: initcomponents // <editor-fold defaultState = "collapsed" desc = "รหัสที่สร้างขึ้น"> โมฆะส่วนตัว initcomponents () {jscrollpane1 = javax.swing.jscrollpane (); userlists = new Javax.swing.jlist (); jlabel1 = new Javax.swing.jlabel (); btntoadd = new Javax.swing.jbutton (); SetMinimumsize (Java.awt.Dimension ใหม่ (800, 600)); setlayout (null); userlists.setModel (ใหม่ javax.swing.abstractlistmodel () {string [] strings = {""}; int สาธารณะได้รับ () {return strings.length;} วัตถุสาธารณะ Getelementat (int i) {return strings [i];}}); JSCrollPane1.SetViewPortView (ผู้ใช้รายการ); เพิ่ม (jscrollpane1); JSCrollPane1.SetBounds (150, 150, 480, 230); jlabel1.setfont (ใหม่ java.awt.font ("Tahoma", 1, 48)); Jlabel1.Setforeground (Java.awt.Color ใหม่ (204, 0, 51)); jlabel1.settext ("ผู้ใช้"); jlabel1.settext ("ผู้ใช้"); Jlabel1.Setforeground (Java.awt.Color ใหม่ (204, 0, 51)); jlabel1.settext ("ผู้ใช้"); รายการ "); เพิ่ม (Jlabel1); jlabel1.setbounds (270, 30, 260, 80); btntoadd.setfont (ใหม่ java.awt.font (" กล่องโต้ตอบ ", 1, 18)); btntoadd.settext ("/u6dfb/u52a0 btntoadd.addactionListener (ใหม่ java.awt.event.actionListener () {โมฆะสาธารณะ actionperformed (java.awt.event.actionevent evt) {btntoaddactionerformed (evt);}}); </editor-fold> // gen-end: initcomponents เป็นโมฆะส่วนตัว btntoaddactionperformed (java.awt.event.actionevent evt) {mainframe.setcontentpane (Addpanel ใหม่ (เมนเฟรม); javax.swing.jbutton btntoadd;คลาส USERMODEL:
cn.hncu.bookstore.user.vo;
คลาส USERMODEL:
โมดูลวัตถุค่าผู้ใช้:
แพ็คเกจ cn.hncu.bookstore.user.vo; นำเข้า java.io.serializable; นำเข้า cn.hncu.bookstore.common.usertypeenum;/** * @author Chen Haoxiang * @version 1.0 * * <br/> เมธอด setter-getters <br/> * 3. การเขียนเท่ากับและวิธีการ HashCode --- ใช้รหัสหลัก (UUID) รหัสประจำตัวที่ไม่ซ้ำกัน <br/> * 4. วิธีการ toString <br/> * 5. วิธีการก่อสร้างพารามิเตอร์ที่ว่างเปล่า <br/> */คลาสสาธารณะ pwd; // รหัสผ่านผู้ใช้ public public usermodel () {}/*** ฟังก์ชั่น: รับรหัสประจำตัว UUID-user ที่ไม่ซ้ำใคร** @return return uuid-user รหัสประจำตัวที่ไม่ซ้ำกัน*/สตริงสาธารณะ getUuid () {return uuid; } / *** ฟังก์ชั่น: SET UUID-USER รหัสประจำตัวที่ไม่ซ้ำกัน* @Param UUID-USER พารามิเตอร์ประเภทรหัสการระบุรหัสการระบุ* / โมฆะสาธารณะ setUUID (สตริง uuid) {this.uuid = uuid; } / *** ฟังก์ชั่น: รับชื่อผู้ใช้ของผู้ใช้* @return --- ชื่อผู้ใช้ชื่อ* / สตริงสาธารณะ getName () {ชื่อคืน; } / *** ฟังก์ชั่น: ตั้งชื่อผู้ใช้ชื่อผู้ใช้** @param ชื่อ-ชื่อ USERNAME ตั้งค่าโดยผู้ใช้พารามิเตอร์ประเภทสตริง* / โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } / *** ฟังก์ชั่น: รับประเภทของผู้ใช้:* 1 - หมายถึงผู้ดูแลระบบและการดำเนินการทั้งหมดสามารถทำได้* 2 - แสดงถึงบุคคลที่สามารถใช้งานโมดูลหนังสือ* 3 - แสดงถึงบุคคลที่สามารถใช้งานโมดูลการซื้อ* 4 - แสดงถึงบุคคลที่สามารถใช้งานโมดูลการขายได้ } / *** ฟังก์ชั่น: ตั้งค่าประเภทของผู้ใช้:* 1 - แสดงว่าเป็นผู้ดูแลระบบการดำเนินการทั้งหมดสามารถทำได้* 2 - แสดงว่าเป็นคนที่สามารถใช้งานโมดูลหนังสือ* 3 - แสดงว่าเป็นบุคคลที่สามารถใช้งานโมดูลซื้อได้ {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 uuid + "," + name + "," + usertypeenum.getNameByType (ประเภท); -คลาส UserQueryModel:
cn.hncu.bookstore.user.vo;
คลาส UserQueryModel:
แม้ว่าจะไม่มีรหัส แต่ก็ไม่สามารถเพิกเฉยได้! นี่คือสิ่งที่คุณต้องการเมื่อมองหาผู้ใช้
ฉันเขียนเหตุผลในซีรีส์
แพ็คเกจ cn.hncu.bookstore.user.vo;/** * * @author chen haoxiang * * @version 1.0 */คลาสสาธารณะ userQueryModel ขยาย USERMODEL {}คลาส FileIoutil:
cn.hncu.bookstore.util;
คลาส FileIoutil:
แพ็คเกจ 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 ตารางข้อมูล) * @return บันทึกทุกตาราง! */@suppresswarnings ("ไม่ได้ตรวจสอบ") // กดคำเตือนสาธารณะคงที่ <e> รายการ <e> readFormFile (ชื่อไฟล์สตริง) {รายการ <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 (ชื่อไฟล์ที่เขียนไฟล์) * / สาธารณะคงที่ <e> void write2file (รายการ <e> รายการ ลอง {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;
ชั้นเรียนหนังสือ:
วิธีหลักของโมดูลผู้ใช้อยู่ในคลาสนี้:
/ * * bookstore.java * * สร้างขึ้นบน __date__, __time__ */แพ็คเกจ cn.hncu.bookstore; นำเข้า cn.hncu.bookstore.user.ui.listpanel;/** * * @author Chen Haoxiang */public Class initcomponents (); this.setContentPane (ใหม่ ListPanel (นี่)); this.setResizable (false); // this.setDefaultCloseOperation (exit_on_close); } /** วิธีนี้เรียกจากภายในคอนสตรัคเตอร์เพื่อ* เริ่มต้นฟอร์ม * คำเตือน: อย่าแก้ไขรหัสนี้ เนื้อหาของวิธีนี้คือ * สร้างใหม่โดยตัวแก้ไขแบบฟอร์มเสมอ */// gen-begin: initcomponents // <editor-fold defaultState = "collapsed" desc = "รหัสที่สร้างขึ้น"> โมฆะส่วนตัว 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 (); เกี่ยวกับ menuitem = new Javax.swing.jmenuitem (); SetDefaultCloseoperation (Javax.swing.windowConstants.exit_on_close); SetMinimumsize (Java.awt.Dimension ใหม่ (800, 600)); 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); Setjmenubar (Menubar); javax.swing.grouplayout layout = new Javax.swing.grouplayout (getContentPane ()); getContentPane (). setLayout (เลย์เอาต์); layout.SethorizontalGroup (layout.createparallelgroup (javax.swing.grouplayout.alignment.leading) .addGap (0, 400, short.max_value)); layout.setverticalgroup (layout.createparallelgroup (javax.swing.grouplayout.alignment.leading) .addgap (0, 279, short.max_value)); หีบห่อ(); } // </ditor-fold> // gen-end: initcomponents ส่วนตัวโมฆะ exitmenuitemactionperformed (java.awt.event.actionEvent evt) {// gen-first: event_exitmenuitemactionerformed system.exit (0); } // gen-last: event_exitmenuitemactionperformed/** * @param args ข้อโต้แย้งบรรทัดคำสั่ง */โมฆะสาธารณะคงที่หลัก (สตริง args []) {java.awt.eventqueue.invokelater } // gen -begin: ตัวแปร // การประกาศตัวแปร - อย่าแก้ไข 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.jmenuitem exitmenuitem; private javax.swing.jmenu filemenu; Private Javax.swing.jmenu Helpmenu; private javax.swing.jmenubar menubar; private javax.swing.jmenuitem OpenMenuitem; private javax.swing.jmenuitem pastemenuitem; private javax.swing.jmenuitem saveasmenuitem; private javax.swing.jmenuitem savemenuitem; // สิ้นสุดการประกาศตัวแปร // gen-end: ตัวแปร} นั่นคือทั้งหมดสำหรับวันนี้ที่จะดำเนินการต่อ - -
มีข้อผิดพลาดเล็กน้อยในการเพิ่มปัจจุบันซึ่งเมื่อเพิ่มผู้ใช้คุณจะไม่ป้อนอะไรเลย
เลือกประเภทผู้ใช้เท่านั้นและคุณสามารถสร้างได้! ฉันจะแก้ไขในครั้งต่อไป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น