Funktionale Anforderungen des Java -Buchhandels -Systemprojekts:
1. kann die Benutzerregistrierung bedienen, grundlegende Informationen ändern, löschen und abfragen.
2. kann die grundlegenden Informationen des Buches hinzufügen, löschen, ändern und abfragen.
3. Sie können das Kaufformular ausfüllen. Ein Kaufformular enthält mehrere spezifische Kaufinformationen. Die gekauften Bücher müssen bereits in der Buchverwaltung erhältlich sein. Beim Kauf ändern Sie das Bestandsvolumen der entsprechenden Bücher im Inventar.
4. Sie können das Verkaufsformular ausfüllen. Ein Verkaufsformular enthält mehrere spezifische Verkaufsinformationen. Die verkauften Bücher müssen bereits im Buchmanagement enthalten sein, und die Verkaufsmenge darf die aktuelle Bestandsmenge nicht überschreiten. Ändern Sie beim Verkauf das Bestandsvolumen der entsprechenden Bücher im Inventar.
5. Sie können die Bestandsdetails anzeigen und den Bestandswert bestimmter Bücher gemäß den Bedingungen finden.
6. Vereinfachen Sie die Berechtigungen und implementieren Sie feste Berechtigungssteuerung. Der Benutzer ist in Personal mit unterschiedlichen Betriebsberechtigungen gemäß dem Modul unterteilt, und ein spezieller Administrator -Benutzer kann alle Funktionen bedienen.
Grundes Projektdesign:
★ Architektonisches Design:
Gesamtrahmen- und Modulabteilung: 5 Module: Benutzer, Buch, Kauf, Verkauf und Inventar
★ Systemfunktionalstruktur Design:
Spezifische funktionale Submodule jedes Funktionsmoduls ★ Datenbankdesign:
Implementierung des Projekts Framework: Unterteilt in Module, Layering, Subkontrahieren und Erstellen von Anwendungskern-Framework-Implementieren Sie die Transformation jeder Schnittstelle
Paket cn.hncu.bookstore; importieren cn.hncu.bookstore.login.ui.login;/** * *@autor <a href = "mailto: [email protected]"> xzm </a> */Public Class bookSeApp Extends Javax.swing / ** Erstellt ein neues Formular BookstoreApp*/ public bookstoreApp () {initComponents (); this.setContentPane (neuer Login (this)); // Anmeldesteueroberfläche this.validate (); getContentPane (). setLocation (150, 50); } // gen-Begin: initComponents // <editor-fold defaultState = "Collapsed" Desc = "generierter 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 (); übermenuitem = 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 ("Datei"); 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) {exitMenuitemactionemactionemActionPerformed (evt);}}); filemenu.add (exitMenuitem); Menubar.Add (Filemenu); editMenu.setText ("bearbeiten"); 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 ("Hilfe"); contentsMenuitem.setText ("Inhalt"); helpMenu.add (ContentsMenuitem); übermenuitem.setText ("über"); helpMenu.add (überMenuitem); Menubar.Add (Helpmenu); JMenu1.SetText ("Menü"); 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 (falsch); Menuitemuser.AddactionListener (New Java.awt.event.ActionListener () {public void ActionPerformed (java.awt.event.actionEvent evt) {MenuitemUSerAction -Peraction -Peract -Peracterformed (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) {MenuitembookActionPerform (evt);}}); jmenu1.add (Menuitembook); Menuiteminmain.Setaccelerator (javax.swing.keystroke.getkeystroke (java.awt.event.keevent.vk_i, java.awt.event.inputevent.ctrl_mask)); MenuiteminMain.setText ("/u8fdb/u8d27/u6a21/u5757"); Menuiteminmain.SetEnabled (falsch); Menuiteminmain.AddactionListener (new Java.awt.event.ActionListener () {public void actionPerformed (java.awt.event.ActionEvent evt) {MenuiteminmainAction -Peractioned (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 (falsch); 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) {MenuitemLoginaction -Peractioned (evt);}}); jmenu1.add (Menuitemlogin); Menubar.Add (JMenu1); setjmenubar (Menubar); Pack(); } // </editor-fold> // gen-end: initcomponents private void MenuitemlogInaction-Performed (java.awt.event.ActionEvent evt) {// zur Anmeldeschnittstelle und zerstören Sie das Funktionsmenü, das zu FIFT-Schnittstellenmenuitembook.Setenabled (false) wechselt. Menuiteminmain.SetEnabled (falsch); MenuitemoutMain.SetEnabled (falsch); Menuitemstock.setenabled (false); Menuitemuser.SetEnabled (falsch); this.setContentPane (neues Login (this)); this.validate (); } void MenuitemStockActionPerformed (java.awt.event.ActionEvent evt) {// zum Inventarmodul this.setContentPane (neuer cn.hncu.bookstore.store.ui.ListPanel (this)); this.validate (); } void MenuitemoutMainActionPerformed (java.awt.event.actionEvent evt) {// Wechsel zum Verkaufsmodul this.setContentPane (neue cn.hncu.bookstore.out.Ui.Listpanel (this)); this.validate (); } void MenuiteminmainActionperformed (java.awt.event.ActionEvent evt) {// Ummodul zu kaufen. this.validate (); } void MenuitemBookAtationPerformed (java.awt.event.actionEvent evt) {// zum Buchmodul this.setContentPane (neuer cn.hncu.bookstore.book.ui.Listpanel (this)); this.validate (); } private void MenuitemUSerActionPerformed (java.awt.event.ActionEvent evt) {// Um zum Benutzermodul this.setContentPane (neuer cn.hncu.bookstore.user.Ui.ListPanel (this)) zu wechseln; 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) {// genirst: event_exitMenuitemactionPerformed System.exit (0); } // Gen-Last: event_exitMenuitemactionperformed/** * @param args die Befehlszeilenargumente */public static void main (String args []) {java.awt.eventqueue.invokelater (new Runnable () {public void run () {) new boBoreApp (). } // gen -Begin: Variablen // Variablen Deklaration - MODIFT NICHT private javax.swing.jmenuitem MenuitemoutMain; private javax.swing.jmenuitem überMenuitem; 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 Savemenuitem; // Ende der Variablen Deklaration // Gen-end: Variablen}
Toolkit:
Paket cn.hncu.bookstore HH: MM: SS: "* @param t* (Long-Type) Zeit, die konvertiert werden soll DateFormat df = new SimpledateFormat ("Yyyyyy Year Mm Monat DD DATUM HH: MM: SS:"); return df.format (d); } / ** * Konvertieren Sie die Zeichenfolge im Datumsformat. SimpleDateFormat ("yyyy-mm-dd-hh: mm: ss:"); Datum d = df.Parse (str); return d.getTime (); }} Paket cn.Hncu.Bookstore.utils; import Java.io.file; import Java.io.fileinputStream; Import Java.io.FilenotFoundException; Import Java.io.fileOutputStream; ImportputStream importieren java.io.ioioutputStream; java.util.arrayList; importieren java.util.list; public class FileEoutil {/*** Konstruktor -Privatisierung*/private FileOutil () {}/*** Lesen Sie die Daten im Verzeichnis filename* @param Dateiname* @Return zurück. Die generische Datei Datei = neue Datei (Dateiname); // Für jede Lesedatei ist es am besten, Datei zum Öffnen des Kanals if (! file.exists ()) {// Die Datei existiert nicht und gibt einen leeren Satz zurück. NeuarrayList <E> () zurückgeben; } ObjectInputStream in = null; try {in = new ObjectInputStream (neuer FileInputStream (Datei)); @SuppressWarnings ("deaktiviert") list <e> list = (list <e>) in.readObject (); Rückgabeliste; } catch (FilenotFoundException e) {e.printstacktrace (); } catch (ioException e) {e.printstacktrace (); } catch (classNotFoundException e) {e.printstacktrace (); } endlich {if (in! = null) {try {in.close (); } catch (ioException e) {neue runTimeexception ("Datendatei schließen fehlgeschlagen", e); }}} NeuarrayList <E> () zurückgeben; } / ** * Speicher: Daten in den Verzeichnis Dateinamen * @paramliste * Sammlung von Daten, die gespeichert werden sollen try {out = new ObjectOutputStream (neuer FileOutputStream (Dateiname)); out.WriteObject (Liste); zurückkehren; } catch (FilenotFoundException e) {e.printstacktrace (); } catch (ioException e) {e.printstacktrace (); } endlich {if (out! = null) {try {out.close (); } catch (ioException e) {neue runTimeexception ("Datendatei schließen fehlgeschlagen", e); }}} return false; }} Öffentliche Funktionen:
package cn.hncu.bookStore.common;public enum uuidModelConstance { /** * Enumeration: enumerate the five types of user UserModel, BookModel, InMainModel, InDetailModel, OutMainModel, OutDetailModel, StockModel */ User("UserModel"), Book("BookModel"), In_main ("InmainModel"), in_detail ("indetailModel"), out_main ("outmainmodel"), out_detail ("OutdetailModel"), Stock ("StockModel"); private endgültige Zeichenfolge Name; private uUidModelConstance (String -Name) {this.name = name; } public String getName () {return name; }} Paket cn.hncu.bookstore.common.uuid.vo; import Java.io.Serializable; öffentliche Klasse uUidmodel implementiert serialisierbar { / *** automatisch generieren uUid uUid uUid number mit Abstimmungsmodell* capscaps uUid, generieren Sie UUID* / private statische endgültige long serialversionuid = 1l; Private String modelName; // Geben Sie UsModel, Bookmodel, InmainModel, IndetailModel, OutmainModel, OutdetailModel, StockModel Private int CurrentNum an; // ModelName's Current Uuid Number Public Uuidmodel () {{} // set, Get Public String GetModelName () {Return -Modellname; } 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 ()); Rückgabeergebnis; } @Override public boolean Equals (Objekt obj) {if (this == obj) return true; if (obj == null) return false; if (getClass ()! = obj.getClass ()) return false; uUidmodel Andere = (uUidmodel) obj; if (modelName == null) {if (other.modelname! = null) return false; } else if (! modelName.equals (other.modelname)) return false; zurückkehren; }} Paket cn.hncu.bookstore.common.uuid.dao.ebi; importieren cn.hncu.bookstore.common.uuidmodelConstance; öffentliche Schnittstelle uUiddao { /*** automatisch generiert uUid nummer mit stimmen-ssing-model* @param umc* typern, die automatisch generiert werden müssen, die automatisch generiert werden müssen, die automatisch erzeugt werden müssen, die automatisch generiert werden müssen (UsModel, Bookmodel, InmainModel, IndetailModel, OutmainModel, OutdetailModel, StockModel) * @Return * Generieren Sie die Anzahl der entsprechenden Typen uUid */ public String getNextnum (UuidmodelConstance UMC);} Paket 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; importieren cn.hncu.bookstore GetNextNum (uUidModelConstance Umc) {String modelName = Umc.getName (); // Die Benutzertypliste <UUidModel> list = fileOutil.readfromFile (File_Name); // Alle Daten der generierten Benutzer typen uuid aus der Datei für (uUidmodel) lesen {uUidmodel) {uUidmodel) if (um.getModelname (). Equals (modelName.trim ()) {// if modelName in der Datei existiert, geben Sie die nächste Anzahl dieser Typen zurück. Um.SetCurrentnum (Res+1); DateiEoutil.Writetofile (Liste, Datei_Name); // Speichern Sie die aktualisierten UUID -Daten in den Ordner return ""+res; }} // Wenn die für die Schleife nicht gefunden wird, bedeutet dies, dass ModelName der erste ist, nummeriert 1 // neu ein Objekt dieses Typs, speichern Sie ihn in den Ordner uUidmodel um = new Uuidmodel (); Um.SetModelname (ModelName); Um.SetCurrentnum (2); list.add (um); DateiEoutil.Writetofile (Liste, File_Name); zurück "" +1; }} Paket cn.hncu.bookstore.common.uuid.dao.factory; uUiddaofactory () {} / ** * Schnittstelle uUiddao * @return * uUiddao * / public static uUiddao getuuiddao () {return New uuidebo (); }} Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.