Java Bookstoreシステムプロジェクトの機能要件:
1。ユーザー登録を操作し、基本情報を変更し、削除してクエリを行うことができます。
2。本の基本情報を追加、削除、変更、クエリすることができます。
3.購入フォームに記入できます。購入フォームには、複数の特定の購入情報が含まれています。購入した本は、本管理ですでに入手可能でなければなりません。購入中、在庫内の対応する本の在庫量を変更します。
4.販売フォームに記入できます。販売フォームには、複数の特定の販売情報が含まれています。販売された書籍はすでに本管理に含まれている必要があり、販売数量は現在の在庫量を超えることはできません。販売中は、在庫内の対応する本の在庫量を変更してください。
5.在庫の詳細を表示し、条件に応じて特定の本の在庫値を見つけることができます。
6.権限を簡素化し、固定許可制御を実装します。ユーザーは、モジュールに応じて異なる操作権限を持つ担当者に分割され、特別な管理者ユーザーはすべての機能を操作できます。
基本的なプロジェクトデザイン:
★建築設計:
全体的なフレームワークとモジュール部門:5モジュール:ユーザー、ブック、購入、販売、在庫
★システム機能構造設計:
各機能モジュールの特定の機能サブモジュール★データベース設計:
プロジェクトフレームワークの実装:モジュール、階層化、下請け、およびビルディングアプリケーションコアフレームワークに分割されます - 各インターフェイスの変換を実現
パッケージcn.hncu.bookstore; Import cn.hncu.bookstore.login.ui.login;/** * *@著者<a href = "mailto:[email protected]"> xzm </a> */public class bookstoreappがjavax.swing.swing.swing.swing.swing.swing.swing.swing.swing.swing.swing.jframeを拡張します。 / **新しいform bookstoreapp*/ public bookstoreapp(){initcomponents(); this.setContentPane(new Login(this)); // login interface this.validate(); getContentPane()。setLocation(150、50); } // gen-begin:initcomponents // <editor fold defaultstate = "collapsed" desc = "generated code"> 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( "save"); filemenu.add(savemenuitem); saveasmenuitem.settext( "save as ..."); filemenu.add(saveasmenuitem); 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( "copy"); editmenu.add(copymenuitem); pastemenuitem.settext( "Paste"); editmenu.add(pastemenuitem); deletemenuitem.settext( "delete"); editmenu.add(deletemenuitem); menubar.add(editmenu); helpmenu.settext( "help"); contentsmenuitem.settext( "contents"); helpmenu.add(contentsmenuitem); aboutmenuitem.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 evt){//ログインインターフェイスに切り替えて、5つのインターフェイスに切り替える関数メニューを破壊し、menuitembook.setEnabled(false); menuiteminmain.setEnabled(false); menuitemoutmain.setEnabled(false); menuitemstock.setEnabled(false); menuitemuser.setEnabled(false); this.setContentPane(new Login(this)); this.validate(); } void menuitemstockactionperformed(java.awt.event.actionevent evt){//インベントリモジュールthis.setcontentpane(new cn.hncu.bookstore.store.ui.listpanel(this)); this.validate(); } void menuitemoutmainactionperformed(java.awt.event.actionevent evt){//販売モジュールthis.setcontentpane(new cn.hncu.bookstore.out.ui.listpanel(this)); this.validate(); } 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){// book module this.setcontentpane(new cn.hncu.bookstore.book.ui.listpanel(this)); this.validate(); } private void menuitemuseractionperformed(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 getMenuiteminmin(){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(){setvisible(); } // gen -begin:変数//変数宣言 - プライベートjavax.swing.jmenuitem menuitemoutmainを変更しないでください。プライベート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 menuiteminmin; 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; import java.text.dateformat; Import java.text.parseexception; Import java.text.simpledateFormat; Import java.util.date; public class dateutils { /*** ddd ddd ddddddddd dd dd ds HH:MM:ss: "* @param t*(long-type)変換する時間* @return* string in the date format*/ public static string longtostring(long t){date d = new date(); dateformat df = new SimpledateFormat( "yyyyy year mm month dd date hh:mm:ss:"); df.format(d)を返します。 } / ** *文字列を日付形式で変換します "yyyy-mm-dd-hh:mm:mm:ss:" ss: "to long-type time * @param str * @return * @return * long-type time * @throws parseexception * / public static lingtolong(string str)throws parseexcept SimpleDateFormat( "yyyy-mm-dd-hh:mm:ss:");日付d = df.parse(str); 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.objectinutinutinputtream; Importinutinutinuttram; Importiontinutinputttream; java.util.arraylist; import java.util.list; public class fileioutil { / *** constructor privatization* / private fileioutil(){} / *** @param filename* fileアドレス* @return* @return* return set of type* / public sticic <E filename){// generic file file = new file(filename); //任意の読み取りファイルを定義すると、ファイルを使用してチャネルを開くのが最善です(!file.exists()){//ファイルが存在せず、空のセットを返します。 new arrayList <e>()を返します。 } objectInputStream in = null; try {in = new ObjectInputStream(new FileInputStream(file)); @suppresswarnings( "unchecked")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){new runtimeexception( "データファイルの閉じが失敗した"、e); }}} new arrayList <e>()を返します。 } / ** *ストレージ:ディレクトリファイル名にデータを読み取る * @paramリスト *保存するデータのコレクション * @param filename * file dresder * @return *ストレージが成功した場合はtrueを返します。 try {out = new objectOutputStream(new FileOutputStream(filename)); out.writeObject(list); trueを返します。 } catch(filenotfoundexception e){e.printstacktrace(); } catch(ioexception e){e.printstacktrace(); }最後に{if(out!= null){try {out.close(); } catch(ioException e){new runtimeexception( "データファイルの閉じが失敗した"、e); }}} falseを返します。 }}パブリック機能:
パッケージcn.hncu.bookstore.common; public enum uuidmodelconstance { / ** *列挙:5種類のユーザーUsermodel、bookmodel、inmainmodel、indetailmodel、outmainmodel、autsetailmodel、cotmodel * / user(usermodel ")、book)、book) in_main( "inmainmodel")、in_detail( "indetailmodel")、out_main( "outmainmodel")、out_detail( "outdetailmodel")、stock( "stockmodel");プライベート最終文字列名; private uuidmodelconstance(string name){this.name = name; } public string getname(){return name; }}パッケージcn.hncu.bookstore.common.uuid.vo; Import java.io.serializable; public class uuidmodelはシリアル化可能{ / *** uuid番号を自動的に生成しますuuidモデル* uuidをカプセル化する、uuid* / private static final long serialimuid = 1l;プライベートストリングモデル名; // usermodel、bookmodel、inmainmodel、indetailmodel、outmainmodel、outsetailmodel、ctockmodel private int currentnum; // Modelnameの現在のuuid uuidmodel(){} // set、public string getmodelname(){} // set; } 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 other =(uuidmodel)obj; if(modelname == null){if(other.modelname!= null)return false; } else if(!modelname.equals(other.modelname))return false; trueを返します。 }}パッケージcn.hncu.bookstore.common.uuid.dao.ebi; Import cn.hncu.bookstore.common.uuidmodelconstance; public interface uuiddao { /*** uuid数を自動的に生成します。 (usermodel、bookmodel、inmainmodel、indetailmodel、outmainmodel、outsetailmodel、stockmodel) * @return *対応するタイプのuuid */ 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.uiddao; Import; cn.hhncu.bookstore.common.uuid.vo.uuidmodel; Import cn.hncu.bookstore.utils.fileioutil; public class uuidebo emblates uuiddao {private final static string file_name = "uuid.txt" ;/ getnextnum(uuidmodelconstance umc){string modelname = umc.getname(); //ユーザータイプリスト<uuidmodel> list = fileioutil.readfromfile(file_name); //生成されたユーザータイプのすべてのデータをFILE(UUIDMODEL um:リスト){ if(um.getModelName()。equals(modelname.trim())){//ファイルにモデル名が存在する場合、このタイプの次の番号を返しますuuid int res = um.getcurrentnum(); um.setcurrentnum(res+1); fileioutil.writeTofile(list、file_name); //更新されたuuidデータをフォルダーに保存します ""+res; }} // forループが見つからない場合、モデル名が最初であることを意味し、番号1 //このタイプのオブジェクトは、フォルダーuuidmodel um = new uuidmodel()に保存します。 um.setModelName(ModelName); um.setcurrentnum(2); list.add(um); fileioutil.writeTofile(list、file_name); return "" +1; }}パッケージcn.hncu.bookstore.common.uuid.dao.factory; Import cn.hncu.bookstore.common.uuid.dao.ebi.uuiddao; Import cn.cu.bookstore.common.uuid.dao.ebo.uuidebo; privatebotor uuiddaofactory(){} / ** * interface uuiddao * @return * uuiddao * / public static uuiddao getuuiddao(){return new uuidebo(); }}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。