Java 서점 시스템 프로젝트의 기능 요구 사항 :
1. 사용자 등록을 작동하고 기본 정보를 수정하고 삭제 및 쿼리 할 수 있습니다.
2. 책의 기본 정보를 추가, 삭제, 수정 및 쿼리 할 수 있습니다.
3. 구매 양식을 작성할 수 있습니다. 구매 양식에는 여러 특정 구매 정보가 포함됩니다. 구매 한 책은 이미 책 관리에서 구입할 수 있어야합니다. 구매 중에 인벤토리에서 해당 책의 재고량을 수정합니다.
4. 판매 양식을 작성할 수 있습니다. 판매 양식에는 여러 특정 판매 정보가 포함됩니다. 판매 된 책은 이미 책 관리에 있어야하며 판매량은 현재 재고 수량을 초과 할 수 없습니다. 판매하는 동안 인벤토리에서 해당 책의 재고량을 수정하십시오.
5. 재고 세부 사항을보고 조건에 따라 특정 책의 재고 값을 찾을 수 있습니다.
6. 권한을 단순화하고 고정 권한 제어를 구현하십시오. 사용자는 모듈에 따라 운영 권한이 다른 인력으로 나뉘며 특수 관리자 사용자는 모든 기능을 작동 할 수 있습니다.
기본 프로젝트 설계 :
★ 건축 설계 :
전체 프레임 워크 및 모듈 부서 : 5 모듈 : 사용자, 예약, 구매, 판매 및 인벤토리
★ 시스템 기능 구조 설계 :
각 기능 모듈의 특정 기능 하위 모듈 ★ 데이터베이스 설계 :
프로젝트 프레임 워크 구현 : 모듈, 계층화, 하청 계약 및 구축 응용 프로그램 핵심 프레임 워크로 나뉘어져 있습니다.
패키지 cn.hncu.bookstore; import cn.hncu.bookstore.login.ui.login;/** * *@author <a href = "mailto : [email protected]"> xzm </a> */public class bookstoreapp가 javax.swing.jframe {private intatic serial serial verior and whine hintor and a href = "mailto : [email protected]"> xzm </a>; / ** 새로운 양식 BookStoreapp*/ public bookstoreapp () {initcomponents (); this.setContentPane (새 로그인 (this)); // 로그인 인터페이스 추가 this.validate (); getContentPane (). setLocation (150, 50); } // gen-begin : initcomponents // <editor-fold defaultstate = "붕괴 된"desc = "생성 코드"> 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 (); contentmenuitem = new javax.swing.jmenuitem (); 정보 menuitem = 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); setMinIumbsize (new java.awt.dimension (800, 600)); getContentPane (). setLayout (null); filemenu.settext ( "파일"); OpenMenuitem.settext ( "Open"); filemenu.add (OpenMenuitem); Savemenuitem.settext ( "저장"); filemenu.add (Sevemenuitem); Saveasmenuitem.settext ( "저장 ..."); filemenu.add (Saveasmenuitem); exitmenuitem.settext ( "종료"); 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 ( "컷"); editmenu.add (cutmenuitem); copymenuitem.settext ( "copy"); editmenu.add (copymenuitem); pastemenuitem.settext ( "페이스트"); editmenu.add (pastemenuitem); deletemenuitem.settext ( "delete"); editmenu.add (deletemenuitem); menubar.add (editmenu); helpmenu.settext ( "도움말"); contentmenuitem.settext ( "내용"); helpmenu.add (contentmenuitem); 정보 menuitem.settext ( "about"); helpmenu.add (AboutMenuitem); 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 (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.keystroke.getkeystroke (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.keystroke.getkeystroke (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.keystroke.getkeystroke (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) {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 (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.keystroke.getkeystroke (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 (menubar); 팩(); } // </editor-fold> // gen-end : initcomponents private void menuitemloginactionperformed (java.awt.event.actionevent.actionevent evt) {// 로그인 인터페이스로 전환하고 5 개의 인터페이스 menuitembook.setenabled (false)로 전환하는 기능 메뉴를 파괴합니다. menuiteminmain.setenabled (false); menuitemoutmain.setenabled (false); menuitemstock.setenabled (false); menuitemuser.setenabled (false); this.setContentPane (새 로그인 (this)); this.validate (); } void void menuitemStockactionPerferformed (java.awt.event.actionEvent evt) {// 인벤토리 모듈로 전환 this.setContentPane (new Cn.hncu.bookStore.Store.ui.listpanel (this)); this.validate (); } void void menuitemoutMainActionPerformed (java.awt.event.actionEvent evt) {// 판매 모듈로 전환 this.setContentPane (new Cn.hncu.bookStore.out.ui.listpanel (this)); this.validate (); } void void menuitemInmainActionPerformed (java.awt.event.actionEvent evt) {// 구매 모듈로 전환 this.setContentPane (new Cn.hncu.bookStore.in.ui.listpanel (this)); this.validate (); } void menuitemBookActionPerformed (java.awt.event.actionEvent evt) {// 책 모듈로 전환 this.setContentPane (new Cn.hncu.bookstore.book.ui.listpanel (this)); this.validate (); } private void menuiteMuserActionPerferferformed (java.awt.event.actionEvent evt) {// 사용자 모듈로 전환 this.setContentPane (new 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 exitMenuitemActionPerferferformed (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 () {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; 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 sevemenuitem; // 변수 종료 선언 // gen-end : 변수}
툴킷 :
패키지 cn.hncu.bookstore.utils; import java.text.dateformat; import java.text.parseexception; import java.text.simpledateformat; import java.util.date; public class dateutils { /*** 날짜 형식으로 긴 시간을 전환 "yyyy year mm mall mm month mm month mm month dd HH : MM : SS : "* @param t* (long-type) 변환 시간* @return* 날짜 형식*/ public static string longtoString (long t) {date d = new Date (); dateformat df = new simpledateformat ( "yyyyy 년 mm 달 dd 날짜 hh : mm : ss :"); 반환 df.format (d); } / ** * 날짜 형식 "yyyy-mm-dd-hh : mm : ss :"long-type time으로 문자열을 변환 * @param str * 날짜 문자열을 변환 할 날짜 문자열 * @return * long-type time * @throws parseexception * / public static long stringtolong (문자열 str) parsexception {date format df = New simpledateformat ( "yyyy-mm-dd-hh : mm : ss :"); 날짜 d = df.parse (str); return d.gettime (); }} 패키지 cn.hncu.bookstore.utils; import java.io.file; import java.io.fileinputStream; import java.io.filenotfoundException; import java.io.fileoutputStream; import java.io.ioexception; import java.io.objectStream; import java.io.ova.io.ovectoutputstream; java.util.arraylist; import java.util.list; public class fileioutil { / *** 생성자 민영화* / private fileioutil () {} / *** 디렉토리 파일 이름에서 데이터를 읽으십시오* @param filename* @return* 해당 세트* / public static <e> list <e> readfrile (readfromfile) filename) {// generic file file = new File (filename)을 정의합니다. // 모든 읽기 파일의 경우 파일을 사용하여 (! file.exists ()) {// 파일이 존재하지 않으며 빈 세트를 반환하는 것이 가장 좋습니다. 새로운 ArrayList <e> ()를 반환합니다. } objectInputStream in = null; try {in = new ObjectInputStream (new FileInputStream (file)); @SuppressWarnings ( "확인되지 않은") List <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) {throw new runtimeexception ( "데이터 파일 폐쇄 실패", e); }}} return new arrayList <e> (); } / ** * 스토리지 : 디렉토리 파일 이름 * @param 목록에 데이터를 읽습니다. try {out = new ObjectOutputStream (new FileOutputStream (filename)); out.writeObject (list); 진실을 반환하십시오. } catch (filenotfoundException e) {e.printstacktrace (); } catch (ioexception e) {e.printstacktrace (); } 마침내 {if (out! = null) {try {out.close (); } catch (ioexception e) {throw new runtimeexception ( "데이터 파일 폐쇄 실패", e); }}} 거짓을 반환합니다. }} 공공 기능 :
PACKED CN.HHNCU.BOOKSTORE.COMMON; PUBLIC ENUM UUIDMODELCONSTANCE { / ** * 열거 : 5 가지 유형의 사용자 usermodel, BookModel, InmainModel, IndetailModel, OutMainModel, OutDetailModel, StockModel * / user ( "Usermodel"), Book Model "), BookModel"), in_main ( "inmainmodel"), in_detail ( "indetailmodel"), out_main ( "outMainModel"), out_detail ( "OutDetailModel"), Stock ( "StockModel"); 개인 최종 문자열 이름; private uuidmodelconstance (문자열 이름) {this.name = name; } public String getName () {return name; }} PACKED CN.HNCU.BOOKSTORE.COMMON.UUID.VO; import java.io.serializable; Public Class UUIDModel 구현 시리얼이 가능 { / *** 투표 모델을 사용하여 UUID 번호를 자동으로 생성* UUID* / Private STATIC FINST LONG SERIALUIDIONUID = 1L; 개인 문자열 모델 이름; // usermodel, bookmodel, inmainmodel, indetailmodel, outmainModel, outDetailModel, stockModel private int currentNum; // modelName의 현재 UUID 번호 public uuidModel () {} // set, public string get modelname () get modelname을 나타냅니다. } 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 result = 1; result = prime * result + ((modelname == null)? 0 : modelname.hashcode ()); 반환 결과; } @override public boolean equals (Object obj) {if (this == obj) return true; if (obj == null) false를 반환합니다. if (getClass ()! = obj.getClass ()) false를 반환합니다. uuidmodel 기타 = (uuidmodel) obj; if (modelname == null) {if (eloge.modelName! = null) false를 반환합니다. } else if (! modelname.equals (기타 .modelName)) retud false; 진실을 반환하십시오. }} 패키지 cn.hncu.bookstore.common.uuid.dao.ebi; import cn.hncu.bookstore.common.uuidmodelconstance; public interface uuiddao { /*** 투표 모델을 사용하여 자동 생성* @param umc* 자동 생성 해야하는 유형을 자동으로 생성합니다. (Usermodel, BookModel, InmainModel, IndetailModel, outMainModel, OutDetailModel, StockModel) * @return * 해당 유형의 수를 생성하십시오 */ public String getNextNum (uuidModelConstance UMC); 패키지 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; import cn.hncu.bookstore.utils.fileioutil; public class uuidebo emplications uuiddao {private final string file_name = "uuid.txt"; // uuid.txt string에 데이터 스토리지 또는 읽기 @override. getnextnum (uuidmodelconstance umc) {String modelname = umc.getname (); // 사용자 유형 목록 가져 오기 <uuidmodel> list = fileioutil.readfromfile (file_name); // (uuidmodel um : list) e (uuidmodel um : list)의 모든 데이터를 읽습니다. if (um.getModelName (). equals (modelname.trim ())) {// modelName이 파일에 존재하는 경우 uuid int res = um.getCurrentNum ()의 다음 번호를 반환합니다. um.setcurrentnum (res+1); fileioutil.writetofile (list, file_name); // 업데이트 된 UUID 데이터를 폴더에 저장 ""+res; }} // for loop을 찾을 수없는 경우 ModelName이 첫 번째, Number New이 유형의 객체 인 폴더 UUIDMODEL UM = NEW UUIDMODEL ()에 저장 함을 의미합니다. um.setmodelname (modelname); um.setcurrentnum (2); list.add (um); fileioutil.writetofile (list, file_name); 반환 ""+1; }} 패키지 cn.hncu.bookstore.common.uuid.dao.dao.dao.dao.dao.dao.dao.dao.dao.dao.dao.ebi.uuiddao; import cn.hncu.bookstore.common.uuid.dao.ebo.uuidebo; public uuiddaofactory { /* { /* apructory { /* { /* evitial* / uuiddaofactory em. uuiddaofactory () {} / ** * 인터페이스 uuiddao * @return * uuiddao * / public static uuiddao getuuiddao () {return new uuidebo (); }} 위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.