Persyaratan Fungsional Proyek Sistem Toko Buku Java:
1. Dapat mengoperasikan pendaftaran pengguna, memodifikasi informasi dasar, menghapus dan meminta.
2. Dapat menambah, menghapus, memodifikasi, dan meminta informasi dasar buku ini.
3. Anda dapat mengisi formulir pembelian. Formulir pembelian berisi beberapa informasi pembelian spesifik. Buku yang dibeli harus sudah tersedia dalam manajemen buku; Saat membeli, memodifikasi volume inventaris buku yang sesuai dalam inventaris.
4. Anda dapat mengisi formulir penjualan. Formulir penjualan berisi beberapa informasi penjualan spesifik. Buku -buku yang dijual harus sudah ada dalam manajemen buku, dan jumlah penjualan tidak dapat melebihi jumlah inventaris saat ini; Saat menjual, ubah volume inventaris buku yang sesuai dalam inventaris.
5. Anda dapat melihat detail inventaris dan menemukan nilai inventaris buku -buku tertentu sesuai dengan kondisi.
6. Sederhanakan izin dan terapkan kontrol izin tetap. Pengguna dibagi menjadi personel dengan izin operasi yang berbeda sesuai dengan modul, dan pengguna admin khusus dapat mengoperasikan semua fungsi.
Desain Proyek Dasar:
★ Desain Arsitektur:
Divisi Kerangka dan Modul Keseluruhan: 5 Modul: Pengguna, Buku, Pembelian, Penjualan dan Inventaris
★ Desain Struktur Fungsional Sistem:
Submodul fungsional spesifik dari masing -masing modul fungsional ★ Desain Basis Data:
Implementasi Kerangka Proyek: Dibagi Menjadi Modul, Lapisan, Subkontrak, dan Membangun Kerangka Kerja Inti Aplikasi-Mengimplementasikan Transformasi Setiap Antarmuka
package cn.hncu.bookStore;import cn.hncu.bookStore.login.ui.Login;/** * *@author<a href="mailto:[email protected]">xzm</a> */public class bookStoreApp extends javax.swing.JFrame { private static final long serialVersionUID = 1L; / ** Membuat BookStoreApp*baru/ BookStoreApp () {initComponents (); this.setContentPane (login baru (ini)); // Tambahkan antarmuka login this.validate (); getContentPane (). SetLocation (150, 50); } // gen-begin: initComponents // <editor-fold defaultState = "collapsed" desc = "code yang dihasilkan"> 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 = javax.swing.jMenuitem baru (); copyMenuitem = new javax.swing.jMenuitem (); pastemenuitem = javax.swing.jMenuitem baru (); deleteMenuitem = new javax.swing.jMenuitem (); HelpMenu = new javax.swing.jmenuitem (); ContentSMenuitem = new javax.swing.jMenuitem (); tentangMenuitem = 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 = baru javax.swing.jMenuitem (); menuitemlogin = new javax.swing.jMenuitem (); setDefaultCloseOperation (javax.swing.windowconstants.exit_on_close); setMinimumSize (java.awt.dimension baru (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 (baru 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 ("pasta"); editmenu.add (pastemenuitem); deleteMenuitem.setText ("delete"); editmenu.add (deleteMenuitem); menubar.add (editmenu); HelpMenu.setText ("Help"); ContentSMenuitem.setText ("Contents"); HelpMenu.add (ContentSMenuitem); tentangMenuitem.setText ("Tentang"); HelpMenu.add (tentangMenuitem); menubar.add (helpmenu); jmenu1.setText ("menu"); 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 (java.awt.event.actionListener baru () {public void actionPerformed (java.awt.event.actionEvent evt) {MenuUteMuseractionPerformed (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 (baru 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 (java.awt.event.actionListener baru () {public void actionPerformed (java.awt.event.actionevent evt) {MenuitemInmAnactionPerformed (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 (baru 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 (java.awt.event.actionListener baru () {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 (java.awt.event.actionListener baru () {public void actionPerformed (java.awt.event.actionevent evt) {menuitemloginactionPerformed (evt);}}); jmenu1.add (Menuitemlogin); menubar.add (jmenu1); setjmenubar (Menubar); mengemas(); } // </editor-fold> // gen-end: initcomponents pribadi void menuitemloginactionPerformed (java.awt.event.actionevent evt) {// beralih ke antarmuka login dan hancurkan menu fungsi yang beralih ke lima antarmuka menuUtemBook.setEnabled (false); menuiteminmain.setenabled (false); Menuitemoutmain.setenabled (false); Menuitemstock.setenabled (false); Menuitemuser.setenabled (false); this.setContentPane (login baru (ini)); this.validate (); } void MenuitemStockActionPerformed (java.awt.event.actionevent evt) {// beralih ke modul inventaris this.setContentPane (cn.hncu.bookstore.store.ui.listpanel (this) baru); this.validate (); } void MenuUteMoutMainActionPerformed (java.awt.event.actionevent evt) {// beralih ke modul penjualan this.setContentPane (cn.hncu.bookstore.out.ui.listpanel (this)) baru; this.validate (); } void MenuitemInmAnactionPerformed (java.awt.event.actionevent evt) {// beralih ke modul pembelian this.setContentPane (cn.hncu.bookstore.in.ui.listpanel (this)) baru; this.validate (); } void MenuitemBookActionPerformed (java.awt.event.actionevent evt) {// beralih ke modul buku this.setContentPane (cn.hncu.bookstore.book.ui.listpanel (this)) baru; this.validate (); } private void MenuUteMuserActionPerformed (java.awt.event.actionevent evt) {// beralih ke modul pengguna this.setContentPane (cn.hncu.bookstore.user.Ui.listpanel (this) baru); 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 exitMenuitemactionPerformed (java.awt.event.actionevent evt) {// gen-first: event_exitMenuitemactionPerformed system.exit (0); } // gen-last: event_exitMenuitemactionPerformed/** * @param args argumen baris perintah */public static void main (string args []) {java.awt.eventqueue.invokelater (runnable baru () {public void run () {new BookStoreApped (). } // Gen -begin: Variabel // Deklarasi Variabel - Jangan memodifikasi javax.swing.jmenuitem Private MenuitemoutMain; private javax.swing.jmenuitem tentangmenuitem; pribadi javax.swing.jmenuitem ContentSmenuitem; private javax.swing.jmenuitem copyMenuitem; private javax.swing.jmenuitem cutmenuitem; private javax.swing.jmenuitem deleteMenuitem; Prajurit javax.swing.jmenu Editmenu; private javax.swing.jmenuitem ExitMenuitem; pribadi javax.swing.jmenu filemenu; pribadi javax.swing.jmenu helpmenu; private javax.swing.jmenu jmenu1; Private Javax.Swing.jmenubar Menubar; Private Javax.Swing.JMenuitem MenuitemBook; pribadi javax.swing.jmenuitem MenuiteminMain; pribadi javax.swing.jmenuitem menuitemlogin; pribadi javax.swing.jmenuitem Menuitemstock; pribadi javax.swing.jmenuitem Menuitemuser; pribadi javax.swing.jmenuitem OpenMenuitem; private javax.swing.jmenuitem pastemenuitem; pribadi javax.swing.jmenuitem saveasMenuitem; pribadi javax.swing.jmenuitem savemenuitem; // Akhir Deklarasi Variabel // Gen-end: Variabel}
Toolkit:
package cn.hncu.bookStore.utils;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class DateUtils { /** * Convert long-type time to a string in the date format "yyyyy year MM month dd date Hh: mm: ss: "* @param t* (tipe panjang) Waktu untuk dikonversi* @return* string dalam format tanggal*/ string statis publik longtoString (long t) {date d = new date (); DateFormat df = new SimpleDateFormat ("yyyyy tahun mm bulan dd tanggal hh: mm: ss:"); return df.format (d); } /** * Convert the string in the date format "yyyy-MM-dd-HH:mm:ss:" to a long-type time* @param str * Date string to be converted * @return * long-type time* @throws ParseException */ public static long stringToLong(String str) throws ParseException{ DateFormat df=new SimpleDateFormat ("yyyy-mm-dd-hh: mm: ss:"); Tanggal d = df.parse (str); return d.getTime (); }} Paket cn.hncu.bookstore.utils; import java.io.file; impor java.io.fileInputStream; impor java.io.filenotfoundException; impor java.oBjectStream; import java.ioException; impor java.objileOutputStream; java.util.arraylist; import java.util.list; kelas publik fileoutil { / *** privatisasi konstruktor* / private fileioutil () {} / *** Bacalah data dalam nama file direktori* @param filename* @Return* Kembalikan set yang sesuai dari jenis file* / public public <param; FileName) {// Tentukan file generik file = file baru (fileName); // Untuk file bacaan apa pun, yang terbaik adalah menggunakan file untuk membuka saluran jika (! File.exists ()) {// File tersebut tidak ada dan mengembalikan set kosong. Return new ArrayList <E> (); } ObjectInputStream in = null; coba {in = new ObjectInputStream (FileInputStream baru (file)); @SuppressWarnings ("Uncecked") Daftar <E> Daftar = (Daftar <E>) di.readObject (); daftar pengembalian; } catch (FileNotFoundException e) {e.printstacktrace (); } catch (ioException e) {e.printstacktrace (); } catch (ClassNotFoundException e) {E.PrintStackTrace (); } akhirnya {if (in! = null) {coba {in.close (); } catch (ioException e) {throw runimeException baru ("Penutupan File Data Gagal", e); }}} return new ArrayList <E> (); } / ** * Penyimpanan: Baca data ke nama file direktori * @param List * Kumpulan data yang akan disimpan * @param fileName * Alamat file * @return * Return true jika penyimpanan berhasil, jika tidak, kembalikan false * / public static <e> Boolean writeToFile (daftar <e> Daftar, string filename) {ObjectoutSputStream out = null = null; null; null; null; coba {out = new ObjectOutputStream (FileOutputStream baru (fileName)); out.writeObject (daftar); Kembali Benar; } catch (FileNotFoundException e) {e.printstacktrace (); } catch (ioException e) {e.printstacktrace (); } akhirnya {if (out! = null) {coba {out.close (); } catch (ioException e) {throw runimeException baru ("Penutupan File Data Gagal", e); }}} return false; }} Fungsi Publik:
Paket cn.hncu.bookstore.Common; Publik enum uuidmodelconstance { / ** * enumeration: menghitung lima jenis pengguna USERModel, bookmodel, inmainmodel, indetailmodel, outmainmodel, outdetailModel, "stockmodel * / userm (" USEDMED, "USEDED)," USEDED), "USOLMED," USERMODEL, "USERMODEL," OUTDetailModel, "OUSDetailModel (" In_main ("inmainmodel"), in_detail ("indetailModel"), out_main ("outmainmodel"), out_detail ("outdetailmodel"), saham ("stockmodel"); nama string final pribadi; private uuidmodelconstance (nama string) {this.name = name; } public string getName () {return name; }} Paket cn.hncu.bookstore.common.uuid.vo; impor java.io.serializable; kelas publik UUIDModel mengimplementasikan serial { / *** secara otomatis menghasilkan nomor UUID dengan model pemilihan singel* yang merangkum uuid, secara otomatis menghasilkan uuid* / private static long voling final votifing = uuid = secara otomatis menghasilkan uuid* / private static long voling final voundversion = private long vonsion = uuid = otomatis; private String modelName;// Indicate UserModel,BookModel,InMainModel,InDetailModel,OutMainModel,OutDetailModel,StockModel private int currentNum;//modelName's current uuid number public uuidModel(){ } //set,get public String getModelName() { return 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; Hasil int = 1; result = prime * hasil + ((modelname == null)? 0: modelname.hashcode ()); hasil pengembalian; } @Override public boolean sama (objek obj) {if (this == obj) mengembalikan true; if (obj == null) mengembalikan false; if (getClass ()! = obj.getClass ()) mengembalikan false; uuidmodel lain = (uuidmodel) obj; if (modelName == null) {if (Other.ModelName! = null) Return false; } lain jika (! ModelName.Equals (Other.ModelName)) Return False; Kembali Benar; }} Paket cn.hncu.bookstore.common.uuid.dao.ebi; impor cn.hncu.bookstore.common.uuidmodelconstance; antarmuka publik uuiddao { /*** secara otomatis menghasilkan nomor uuid dengan model sing suara* @param umc* yang diperlukan untuk kebutuhan secara otomatis (Usermodel, Bookmodel, InmainModel, IndetailModel, OutmainModel, OutDetailModel, StockModel) * @return * Hasilkan jumlah UUID tipe yang sesuai Paket cn.hncu.bookstore.common.uuid.dao.ebo; impor java.util.list; impor cn.hncu.bookstore.common.uuidmodelconstance; impor cn.hncu.bookstore.common.uuid.dao.ebi.uuiddddddddddddddd; cn.hncu.bookstore.common.uuid.vo.uuidmodel; import cn.hncu.bookstore.utils.fileioutil; kelas publik uuidebo mengimplementasikan uuiddao {private final string file_name = "uuid.tx"; // penyimpanan data di uu uuid. getNextNum (UUIDMODELCONSTANCE UMC) {String ModelName = UMC.GetName (); // Dapatkan Daftar Jenis Pengguna <uuidmodel> Daftar = FileIoutil.readfromFile (file_name); // Baca semua data dari jenis pengguna yang dihasilkan dari file untuk (uuidmodel); if (uM.getModelName (). Equals (modelName.trim ())) {// Jika ModelName ada dalam file, kembalikan nomor berikutnya dari tipe ini uuid int res = uM.getCurrentNum (); uM.setCurrentNum (res+1); FileOutil.WriteToFile (Daftar, File_Name); // Simpan data UUID yang diperbarui ke dalam folder return ""+res; }} // Jika loop untuk tidak ditemukan, itu berarti bahwa ModelName adalah yang pertama, bernomor 1 // baru objek jenis ini, simpan ke folder uuidmodel um = uuidmodel baru (); Um.setModelName (ModelName); Um.setCurrentNum (2); list.add (um); Fileoutil.writetofile (daftar, file_name); mengembalikan "" +1; }} Paket cn.hncu.bookstore.common.uuid.dao.factory; impor cn.hncu.bookstore.common.uuid.dao.ebi.uuiddao; import cn.hncu.bookstore.common.uuid.dao.eBo.uuidBoIrbo; uuiddaofactory () {} / ** * Dapatkan antarmuka uuiddao * @return * uuiddao * / public static uuiddao getuuiddao () {return new uuidebo (); }} Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.