Система управления книжным магазином:
Цели упражнения проекта:
1. Основной анализ приложений Java
2. Развивайте основные идеи объектно-ориентированного программирования
3. Комплексное применение базовых моделей проектирования Java
4. Осветите базовый дизайн наслоения и интерфейсов
5. Создайте разумную структуру пакета приложений Java
6. Знания, изученные всесторонним применением JSE
7. Используйте рациональную структуру сбора в приложении
8. Комплексное использование общих компонентов свинга в приложениях
9. Механизм реализации основного уровня производительности
10. Основные операции потоков и файлов IO
11. Разработать хорошие привычки программирования Java
12. Развивать способность отладки программ Java и развивать способность исправлять ошибки
Функциональные требования к проекту:
1. может использовать регистрацию пользователей, изменить основную информацию, удалить и запросить.
2. Можно добавить, удалить, изменить и запрашивать основную информацию книги.
3. Вы можете заполнить форму покупки. Форма покупки содержит несколько конкретных информации о покупке. Приобретенные книги уже должны быть доступны в управлении книгами; При покупке, изменение объема инвентаря соответствующих книг в инвентаре.
4. Вы можете заполнить форму продаж. Форма продаж содержит несколько конкретных информации о продажах. Проданные книги уже должны быть в управлении книгами, и количество продаж не может превышать текущее количество запасов; Во время продажи измените объем запасов соответствующих книг в инвентаре.
5. Вы можете просмотреть детали запасов и найти значение инвентаризации конкретных книг в соответствии с условиями.
6. Упростите разрешения и реализуйте фиксированное управление разрешением. Пользователь разделен на персонал с различными рабочими разрешениями в соответствии с модулем, и специальный пользователь администратора может выполнять все функции.
Основной дизайн проекта:
★ Общая структура дизайна архитектуры, подразделение модулей: 5 модулей: пользователь, книга, покупка, продажи и инвентарь
★ Проектирование функциональной структуры системы Специфические функциональные подмодулы каждого функционального модуля
★ Проект базы данных Реализация проекта. Реализация: модуль, уровень, субподряд и приложения
1. Управление пользователями (user.txt)
Примечание. Тип - это тип int, который используется для представления типа оператора.
1 - обозначен как администратор, все операции могут быть выполнены
2-разоблаченный как человек, который может управлять книжным модулем
3 - выраженное как лицо, которое может управлять модулем покупки
4 - выражены как человек, который может управлять модулями продаж
5 - выраженное как человек, который может управлять модулями инвентаризации
2. Управление книгами (book.txt)
3. Управление покупкой (inmain.txt)
4. Управление сведениями о покупке (indetail.txt)
5. Управление продажами (Outmain.txt)
6. Управление деталями продаж (OutdetAil.txt)
7. Управление запасами (stock.txt)
Субподряд проекта
Первый уровень: пользовательский модуль (пользователь) в соответствии с модулем
Книги (книги),
Покупка (в),
Продажи (Out),
Инвентарь (магазин)
Второй уровень: в соответствии с трехслойным режимом, он разделен на уровень презентации (UI), логический уровень (бизнес) и уровня данных (DAO)
Обычно необходимо добавить слой объекта значения (VO)
Третий слой: зависит от конкретной ситуации в соответствии с разделением в слое. Например, подпакинги должны быть построены в форме железного треугольника, в то время как пользовательский интерфейс и Vo не должны быть разделены на суб-пакеты).
Идеи стратификации проекта:
Не совершенствуется, пожалуйста, продолжайте обращать внимание на эту серию (II)
Ниже приводится часть кода: (публичный класс в UTIL)
cn.hncu.bookstore.util
Fileioutil.java:
Пакет cn.hncu.bookstore.util; import java.io.file; import java.io.fileinputstream; import java.io.filenotfoundexception; импорт java.io.fileoutputstream; импорт java.io.ioexception; импорт java.io.objectiNputstream; import.io.ioexception; импорт java.io.objectiNputstream; import.io.ioexception; импорт. java.util.arraylist; import java.util.list; import javax.swing.joptionpane;/*** Пользовательский общедоступный класс данных. * @param ee (тип пройденных общих!) * @return Records всех таблиц! */@Suppresswarnings ("unchecked") // Нажмите Warning Public Static <e> list <e> readformfile (string filename, e ee) {list <e> list = new ArrayList <e> (); окончательный файл файла = новый файл (имя файла); ObjectInputStream in = null; if (! file.exists ()) {joptionpane.showmessageDialog (null, «Таблица данных не существует!»); вернуть список; } try {in = new ObjectInputStream (new FileInputStream (имя файла)); try {list = (list <e>) in.readobject (); } catch (classnotfoundexception e) {e.printstacktrace (); }} catch (filenotfoundexception e) {e.printstacktrace (); } catch (ioException e) {e.printstackTrace (); } наконец {if (in! = null) {try {in.close (); } catch (ioException e) {бросить новое runtimeexception ("Закрытие базы данных не удалось"); }}} return List; } / ** * Запишите сбор списков в имя файла файла данных * * @param List (сбор данных, который необходимо сохранен) * @param filename (имя файла, на которое написан файл) * / public static void write2file (list> list, string filename) {objectUtputStream = null; 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 ("Закрытие базы данных не удалось!"); }}}}}}}}}Инкапсулированные пользовательские данные:
cn.hncu.bookstore.user.vo;
Usermodel.java
Пакет cn.hncu.bookstore.user.vo;/** * @author chen haoxiang * @version 1.0 * * <br/> * Объект значения, используемый для сохранения информации пользователя <br/> * 1. Serialize <br/> * 2. Приватизируйте все элементы переменных и метод сборов. Code <br/> * 4. Метод ToString <br/> * 5. Пустой метод построения параметров <br/> */public class usermodel {private string uuid; // Пользовательский уникальный код идентификации уникальный идентификатор уникальный идентификационный код*/ public String getUuId () {return uuid; } / *** Функция: установить UUID-USER Уникальный идентификационный код* @param UUID-USER Уникальный идентификационный код-стринг параметр* / public void setUuid (string uuid) {this.uuid = uuid; } / *** Функция: Получить имя пользователя* @return-name-user name* / public String getName () {return name; } / *** Функция: Получить имя пользователя* @return-name-user name* / public String getName () {return name; } / *** Функция: Установите имя пользователя** @param name-Имя пользователя, установленное пользователем, параметр типа строки* / public void setname (string name) {this.name = name; } / *** Функция: Получите тип пользователя:* 1 - представляет администратора, и все операции могут быть выполнены* 2 - представляет человека, который может управлять модулем книги* 3 - представляет человека, который может управлять модулем покупки* 4 - представляет человека, который может управлять модулем продаж* 5 реализует тип ratement* @return. } / *** Функция: Установите тип пользователя:* 1-представляет человека, который может управлять книжным модулем* 2-представляет человека, который может управлять модулем книги* 3-врожден как человека, который может управлять модулем покупки* 4-Denotot как человек, который может управлять модулем продаж* settype (int type) {this.type = type; } / ***Функция: Получить пароль пользователя*@return String Type, пароль пользователя* / public String getPwd () {return pwd; } / ***Функция: Установите пароль пользователя*@param pwd-Параметр типа String* / public void setpwd (String pwd) {this.pwd = pwd; } @Override public int hashcode () {final int prime = 31; int result = 1; result = prime * result + ((uuid == null)? 0: uuid.hashcode ()); результат возврата; } @Override public boolean equals (Object obj) {if (this == obj) вернуть true; if (obj == null) вернуть false; if (getClass ()! = obj.getClass ()) вернуть false; USERMODEL Другое = (USERMODEL) OBJ; if (uuid == null) {if (shry.uuid! = null) вернуть false; } else if (! uuid.equals (ore.uuid)) вернуть false; вернуть истину; } @Override public String toString () {return "usermodel [uuid =" + uuid + ", name =" + name + ", type =" + type + ", pwd =" + pwd + "]"; }} Инкапсулированные данные запроса пользователя:
cn.hncu.bookstore.user.vo;
Userquerymodel.java
Пакет cn.hncu.bookstore.user.vo; открытый класс userQueryModel расширяет usermodel {}Хотя у этого класса ничего нет, он просто наследует пользователь, он все равно должен быть написан. Это спецификация письма Java, по которой все пребывают!
Пользователь DAO (уровень данных): (интерфейс)
cn.hncu.bookstore.user.dao.dao;
Userdao.java
Пакет cn.hncu.bookstore.user.dao.dao; import java.util.list; import cn.hncu.bookstore.user.vo.usermodel; импорт cn.hncu.bookstore.user.vo.userquerymodel;/** * * @aauthor chen * @@aresionmodel;/** * * @aauthor chen * @@aresion.0 Module*/public interface userdao {/*** Функция: создать пользователя** @param usermodel --- Пользовательские данные, которые будут созданы* @return-true / *** Функция: Удалить пользователя** @param uuid --- Уникальный идентификационный код пользователя, каждый пользователь не будет одинаковым* @return --- Истина означает, что удаление является успешным, false означает, что удаление не удалось*/ public boolean delete (string uuid); / *** Функция: изменить пользовательские данные** @param Пользователь --- Имя параметра пользовательских данных, которое необходимо изменить* @return return true-указывает на то, что модификация успешно, возвращает false-указывает на то, что модификация не удалась*/ public boolean update (usermodel user); / *** Функция: Получить все пользовательские данные** @return --- Коллекция usermodel, то есть данные пользователя*/ public <sermodel> getall (); /** * Функция: Поиск в соответствии с определенными условиями поиска, * <br/> * возвращает пользовательские данные, которые соответствуют условиям поиска. ** @param uqm --- Инкапсулированные условия поиска* @return ---- Набор пользовательских данных, который соответствует условиям поиска*/ public <usermodel> getByCondition (userQueryModel UQM); / *** Функция: Получите определенные пользовательские данные** @param Uuid --- Уникальный идентификационный код пользователя* @return --- вернуть пользовательские данные, найденные в соответствии с этим уникальным идентификационным кодом*/ public usermodel getinggle (String uuid);}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.