Функциональные требования проекта системы книжного магазина Java:
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 extends javax.swing.jframe {private static static long seritairsior winal visal visal vesitior vesitior winal vesitior visiation vision / ** Создает новую форму bookstoreapp*/ public bookstoreapp () {initComponents (); this.setContentPane (новый логин (this)); // добавить интерфейс входа в систему this.validate (); getContentPane (). SetLocation (150, 50); } // gen-begin: initComponents // <editor-fold defaultState = "couplapsed" 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 (); Содержимое menuitem = 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 ("Сохранить как ..."); 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 ("копия"); editmenu.add (copymenuitem); pastemenuitem.settext ("paste"); editmenu.add (pastemenuitem); deletemenuitem.settext ("delete"); editmenu.add (deletemenuitem); menubar.add (editmenu); helpmenu.settext («Помогите»); contentsmenuitem.settext ("Содержимое"); holdmenu.add (contentsmenuitem); aboutmenuitem.settext («О»); holdmenu.add (About Menuitem); menubar.add (holdmenu); 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) {// переключаться на интерфейс входа в систему и уничтожить меню функций, которое переключается на пять интерфейсов menuitembook.setenabled (false); menuiteminmain.setEnabled (false); Menuitemoutmain.setEnabled (false); menuitemstock.setEnabled (false); menuitemuser.setenabled (false); this.setContentPane (новый вход (это)); this.validate (); } void menuitemStockActionPerformed (java.awt.event.actionevent evt) {// переключаться на инвентаризацию модуля this.setContentPane (новый cn.hncu.bookstore.store.ui.listpanel (this)); this.validate (); } void menuiteMoutMainActionPerformed (java.awt.event.actionevent evt) {// переключиться на модуль продаж This.setContentPane (новый cn.hncu.bookstore.out.ui.listpanel (this)); this.validate (); } void menuiteMinmainActionPerformed (java.awt.event.actionevent evt) {// переключить на модуль покупки this.setContentPane (новый cn.hncu.bookstore.in.ui.listpanel (this)); this.validate (); } void menuitemBookActionPerformed (java.awt.event.actionevent evt) {// переключиться на книжный модуль this.setContentPane (новый cn.hncu.bookstore.book.ui.listpanel (this)); this.validate (); } private void menuitemuserActionPerformed (java.awt.event.actionevent evt) {// переключиться на пользовательский модуль this.setContentPane (новый 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 eSitmenuitEmactionPerformed (java.awt.event.actionevent evt) {// gen-first: event_exitmenuitemactionperformed system.exit (0); } // Gen-last: Event_ExitMenuitEmactionPerformed/** * @param аргументы командной строки */public static void main (string args []) {java.awt.eventqueue.invokelater (new Runnable () {public void run () {new bookstoreppepp (). Setvisible (true); } // 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; Частный javax.swing.jmenu editmenu; private javax.swing.jmenuitem exitmenuitem; Частный javax.swing.jmenu filemenu; Частный javax.swing.jmenu Helpmenu; Частный javax.swing.jmenu jmenu1; Частный javax.swing.jmenubar menubar; Private javax.swing.jmenuitem Menuitembook; private javax.swing.jmenuitem menuiteminmain; Частный 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; импорт java.util.date; открытый класс DateUtils { /*** Конвертируйте время дату HH: MM: SS: "* @param t* (длинный тип) Время, которое должно быть преобразовано* @return* String в формате даты*/ public static String longtostring (long t) {date d = new Date (); DateFormat df = new SimpleDateFormat ("yyyyy Year Mm Month DD DATE HH: MM: SS:"); return df.format (d); } / ** * преобразовать строку в формат даты "yyyy-mm-dd-hh: mm: ss:" в длительное время * @param str * string date, которая должна быть преобразована * @return * Dlon-Type Time * @Throws parseExcept 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; импорт java.io.filenotfoundexception; импорт java.io.fileoutputstream; import.io.ioexception; импорт java.io.objectiNputstream; import.io.ioexception; импорт java.io.objectiNputstream; java.io.ioexception; импорт. java.util.arraylist; import java.util.list; public class fileioutil {/*** constructor privatization*/private fileioutil () {}/*** Прочтите данные в файле файла каталога* @param fileName* witch filefrom generic file file = new File (filename); // Для любого файла чтения лучше всего использовать файл для открытия канала if (! file.exists ()) {// Файл не существует и возвращает пустой набор. Вернуть новый 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) {бросить новое runtimeexception ("Закрытие файла данных не удалось", e); }}} вернуть новый ArrayList <e> (); } / **! try {out = new objectOutputStream (new FileOutputStream (имя файла)); out.writeobject (список); вернуть истину; } catch (filenotFoundException e) {e.printstackTrace (); } catch (ioException e) {e.printstackTrace (); } наконец {if (out! = null) {try {out.close (); } catch (ioException e) {бросить новое runtimeexception ("Закрытие файла данных не удалось", e); }}} вернуть false; }} Публичные функции:
Пакет cn.hncu.bookstore.common; public enum uuidmodelconstance { / ** * Перечисление: перечисление пяти типов пользователя usermodel, bookmodel, inmainmodel, indetailmodel, utmainmodel, stuleailmodel, stockmodel * / user ("usermodel") In_main ("inmainmodel"), in_detail ("indetailmodel"), out_main ("utmainmodel"), out_detail ("stareTailModel"), Stock ("StockModel"); частное имя финальной строки; private UuidModelConstance (String name) {this.name = name; } public String getName () {return name; }} Пакет cn.hncu.bookstore.common.uuid.vo; import java.io.serializable; открытый класс Uuidmodel реализует сериализуемые { / *** Автоматическое генерирование числа Uuid с помощью модели голосования* incapled Uuid, автоматически генерировать Uuid* / private static final serialversionuid = 1L; Private String ModelName; // Укажите USERMODEL, Bookmodel, InmainModel, IndetailModel, OutmainModel, OutdetailModel, Stockmodel Private Int CurrentNum; // Современный uuid -номер ModelNam } 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) вернуть true; if (obj == null) вернуть false; if (getClass ()! = obj.getClass ()) вернуть false; uuidmodel Другое = (uuidmodel) obj; if (modelname == null) {if (shere.modelname! = null) вернуть false; } else if (! modelname.equals (ore.modelname)) вернуть false; вернуть истину; }} Пакет cn.hncu.bookstore.common.uuid.dao.ebi; import cn.hncu.bookstore.common.uuidmodelconstance; общественный интерфейс uuiddao { /*** Автоматически генерируйте номер Uuid с моделью голосования* @param* (Usermodel, Bookmodel, Inmainmodel, IndetailModel, OutmainModel, OutdetailModel, Stockmodel) * @return * Сгенерировать номер соответствующего типа uuid */ public String getNextnum (uuidmodelConstance umc);} Пакет cn.hncu.bookstore.common.uuid.dao.ebo; импорт java.util.list; import cn.hncu.bookstore.common.uuidmodelConstance; импорт cn.hncu.bookstore.common.uuid.dao.ebi.uuiddao; cn.hncu.bookStore.common.uuid.vo.uuidModel;import cn.hncu.bookStore.utils.FileIOUtil;public class uuidEbo implements uuidDAO { private final static String FILE_NAME="uuid.txt";//Storage the data in the uuid.txt file, or read @Override public String getNextNum (uuidModelConstance umc) {string modelname = umc.getName (); // Получить список типов пользователя if (um.getModelName (). equals (modelname.trim ())) {// Если в файле существует модель, верните следующий номер этого типа uuid int res = um.getCurrentNum (); um.setcurrentnum (res+1); Fileioutil.writetofile (list, file_name); // Сохранить обновленные данные UUID в папку return ""+res; }} // Если для цикла не найдена цикла, это означает, что ModelName - это первое, пронумерованное 1 // новый объект этого типа, сохраните его в папке 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.factory; import cn.hncu.bookstore.common.uuid.dao.ebi.uuiddao; import cn.hncu.bookstore.common.uuid.dao.ebo.uuidebo; uuiddaOfactory () {} / ** * Get интерфейс uuiddao * @return * uuiddao * / public static uuiddao getuuiddao () {return new uuidebo (); }} Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.