Проектирование и реализация базы данных "On-line магазин"
Особенности проектирования логического и физического уровней с помощью CASE-средства Erwin. Разработка клиент-серверного приложения, возможности для покупателей, продавцов и администратора. Листинг программы м вывод на экран истории заказов клиента.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 25.02.2012 |
Размер файла | 3,4 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
При разработке приложения были использованы технологии: JDBC, XML, JSP и Ajax (JQuery), а также паттерны: MVC, Command Factory, Singlton и Object Pool.
Подключение всех пользователей к БД осуществляется с полными правами к БД, а разграничение доступа для разных пользователей реализовано на уровне приложения (ограничение использования паттерна Object Pool).
Возможности приложения:
· Регистрация покупателей (для новых пользователей)
· Редактирование персональных данных покупателя (для покупателей)
· Поиск игр по названию/издателю/разработчику (для всех пользователей)
· Осуществление покупок (для покупателей)
· Добавление новых товаров (для продавцов и администратора)
· Вывод на экран истории заказов (для покупателей)
· Вывод на экран зарплаты сотрудников (для администратора)
· Вывод на экран невостребованных больше месяца товаров (для продавцов и администратора)
Рисунок 7.1. Главная страница разработанного web-приложения.
7.1 Руководство пользователя
7.1.1 Регистрация
Незарегистрированные пользователи имеют доступ к функции регистрации и поиска товара.
Для регистрации нового пользователя, пройдите по ссылке «Регистрация» и заполните все поля, затем нажмите на кнопку «Зарегистрироваться» - рис. 7.1. В случае успешной регистрации, Вы сможете войти на сайт под своим логином и паролем.
Рисунок 7.1. Регистрация нового пользователя.
7.1.2 Поиск
Поиск по каталогу товаров может осуществлять любой пользователь магазина. Для осуществления поиска введите в соответствующее поле ввода искомый текст и нажмите на кнопку «Искать» - рис. 7.2. Если в поле ввода текста ничего не ввести и нажать на кнопку «Искать», то будет выведен на экран весь список товаров в каталоге, которые есть в наличии на текущий день.
Рисунок 7.2. Поиск товара.
7.1.3 Авторизация и деавторизация
Если Вы являетесь зарегистрированным пользователем, то для авторизации введите свой логии и пароль в соответствующие поля и нажмите «Войти» - рис. 7.3.
Рисунок 7.3. Авторизация.
Для деавторизации достаточно нажать на кнопку «Выйти», которая появляется, после успешной авторизации на месте полей ввода логина и пароля - рис. 7.4.
Рисунок 7.4. Деавторизация.
В случае успешной авторизации, в зависимости от Вашей роли в магазине (покупатель, продавец, администратор), смотрите соответствующий раздел данного руководства пользователя.
7.1.4 Возможности для покупателей
Покупатель может выполнять следующие действия: редактировать свой профиль, совершать покупки, а также просматривать историю своих заказов.
Для просмотра истории своих заказов, нажмите на соответствующую кнопку в меню покупателя - рис. 7.5.
Рисунок 7.5. Меню покупателя.
Пример истории заказов представлен на рисунке 7.6.
Рисунок 7.6. Пример истории заказов.
Для редактирования своего профиля, нажмите на соответствующую кнопку в меню покупателя - рис. 7.5. Вы увидите ваши регистрационные данные с возможностью их изменить. Для сохранения результатов нажмите на кнопку «Сохранить изменения» - рис. 7.7.
Рисунок 7.7. Редактирование профиля.
Чтобы совершить покупку, с помощью функции поиска (раздел 7.1.2) найдите интересующий Вас товар, а затем в колонке «Купить» нажмите на ссылку с изображением корзины напротив интересующего Вас товара - рис 7.8.
Рисунок 7.8. Осуществление покупки.
После перехода по ссылке Вы увидите страницу оформления заказа, где можете ввести количество покупаемого товара - рис. 7.9. Для осуществления покупки нажмите на кнопку «Купить».
Рисунок 7.9. Страница оформления заказа.
7.1.5 Возможности для продавцов
Продавец с помощью меню продавца может выполнять следующие действия: добавлять в каталог новые товары, а также узнавать о невостребованном товаре в каталоге магазина (товар, который не продавался больше месяца) - рис. 7.10.
Рисунок 7.10. Меню продавца.
Чтобы добавить новый товар, нажмите на кнопку «Добавить новый товар», а затем после перехода на страницу добавления товара, заполните все поля и нажмите на кнопку «Добавить товар» - рис. 7.11.
Рисунок 7.11. Страница добавления нового товара.
Чтобы посмотреть невостребованный товар, нажмите на соответствующую кнопку в меню продавца - рис. 7.10.
Пример результата поиска невостребованного товара представлен на рисунке 7.12.
Рисунок 7.12. Пример результата поиска невостребованного товара.
7.1.6 Возможности для администратора
Администратор может выполнять следующие действия: добавлять новый товар, просматривать невостребованный товар, а также просматривать зарплату сотрудников магазина. Добавление товара и просмотр невостребованного товара осуществляется аналогично с данными действиями для продавцов (раздел 7.1.5), только из меню администратора - рис. 7.13.
Рисунок 7.13. Меню администратора.
Для просмотра зарплаты сотрудников, нажмите на соответствующую кнопку в меню администратора.
Пример отчета по зарплате сотрудников представлен на рисунке 7.14.
Рисунок 7.14. Пример отчета по зарплате сотрудников.
7.2 Листинг программы
В данном разделе представлены части листинга приложения, отвечающие за основные функции работы с СУБД PostgreSQL 8.4. Остальные функции приложения, связанные с работой с СУБД, реализованы аналогично ниже представленным.
7.2.1 Регистрация нового покупателя
public class Registration implements Command {
public void execute(HttpServletRequest request, HttpServletResponse response, ServletContext sc, HttpSession session) throws IOException {
String s = "";
Connection c = ((JDBCConnectionPool) sc.getAttribute("ConPool")).checkOut();
String login = request.getParameter("Rlogin");
String pass = request.getParameter("Rpass");
String cpass = request.getParameter("RCpass");
String email = request.getParameter("email");
String lastname = request.getParameter("Rlastname");
String firstname = request.getParameter("Rfirstname");
String thirdname = request.getParameter("Rthirdname");
String webmoney = request.getParameter("Rwebmoney");
String address = request.getParameter("Raddress");
String phone = request.getParameter("Rphone");
if (!phone.equals("") && !cpass.equals("") && !email.equals("") && !login.equals("") && !pass.equals("") && !lastname.equals("") && !firstname.equals("") && !thirdname.equals("") && !webmoney.equals("") && !address.equals("")){
try {
Statement stmt = c.createStatement();
stmt.executeUpdate("INSERT INTO buyers (last_name,first_name,third_name,login, password, email, webmoney_account_number,home_address, phone) " +
"VALUES ('" + lastname + "','" + firstname + "','" + thirdname + "','" + login + "','" + pass + "','" + email + "','" + webmoney + "','" + address + "','" + phone + "');");
s = "Регистрация прошла успешно. Теперь Вы можете войти на сайт под своим логином и паролем.";
} catch (SQLException e) {
s = "К сожалению регистрация невозможна!";
}
}else
s = "<center><h3>Заполенены не все поля!</h3><p><p> <a href=\"javascript:history.go(-1)\" class=\"link\">Назад</a></center>";
request.setAttribute("answer", s);
RequestDispatcher dispatcher = sc.getRequestDispatcher("/index.jsp");
try {
dispatcher.forward(request, response);
} catch (ServletException e) {
e.printStackTrace();
}
((JDBCConnectionPool) sc.getAttribute("ConPool")).checkIn(c);
}
}
7.2.2 Редактирование профиля покупателя
public class EditBuyerProfile implements Command {
public void execute(HttpServletRequest request, HttpServletResponse response, ServletContext sc, HttpSession session) throws IOException {
String s = "";
Connection c = ((JDBCConnectionPool)
sc.getAttribute("ConPool")).checkOut();
String login = request.getParameter("Rlogin");
String pass = request.getParameter("Rpass");
String email = request.getParameter("email");
String lastname = request.getParameter("Rlastname");
String firstname = request.getParameter("Rfirstname");
String cpass = request.getParameter("RCpass");
String thirdname = request.getParameter("Rthirdname");
String webmoney = request.getParameter("Rwebmoney");
String address = request.getParameter("Raddress");
String phone = request.getParameter("Rphone");
int b_id = (Integer) session.getAttribute("id");
if (session.getAttribute("role") != null)
request.setAttribute("succ", true);
if (!phone.equals("") && !cpass.equals("") && !email.equals("") && !login.equals("") && !pass.equals("") && !lastname.equals("") && !firstname.equals("") && !thirdname.equals("")
&& !webmoney.equals("") && !address.equals("")) {
try {
Statement stmt = c.createStatement();
stmt.executeUpdate("UPDATE buyers SET last_name='" + lastname + "',first_name='" + firstname + "',third_name='" + thirdname + "',login='" + login + "', password='" + pass + "', email='" + email + "', webmoney_account_number='" + webmoney + "',home_address='" + address + "', phone='" + phone + "' " +
" WHERE buyers.buyer_id=" + b_id + ";");
s = "Данные успешно изменены!";
} catch (SQLException e) {
s = "<center><h3>К сожалению данные изменить невозможно!</h3><p><p> <a href=\"javascript:history.go(-1)\" class=\"link\">Назад</a></center>";
}
} else
s = "<center><h3>Заполенены не все поля!</h3><p><p> <a href=\"javascript:history.go(-1)\" class=\"link\">Назад</a></center>";
request.setAttribute("answer", s);
RequestDispatcher dispatcher = sc.getRequestDispatcher("/index.jsp");
try {
dispatcher.forward(request, response);
} catch (ServletException e) {
e.printStackTrace();
}
((JDBCConnectionPool) sc.getAttribute("ConPool")).checkIn(c);
}
}
7.2.3 Вывод на экран истории заказов клиента
public class OrdersHistory implements Command {
public void execute(HttpServletRequest request, HttpServletResponse response, ServletContext sc, HttpSession session) throws IOException {
String s = "";
try {
Connection c = ((JDBCConnectionPool) sc.getAttribute("ConPool")).checkOut();
Statement stmt = c.createStatement();
s = FindBadGoods(stmt, session);
((JDBCConnectionPool) sc.getAttribute("ConPool")).checkIn(c);
} catch (SQLException e) {
e.printStackTrace();
}
if (session.getAttribute("role") != null)
request.setAttribute("succ", true);
request.setAttribute("search", s);
RequestDispatcher dispatcher = sc.getRequestDispatcher("/index.jsp");
try {
dispatcher.forward(request, response);
} catch (ServletException e) {
e.printStackTrace();
}
}
private String FindBadGoods(Statement stmt, HttpSession session) {
ResultSet rs;
String Name;
int Count;
Date DateOfReteil;
StringBuffer sb = new StringBuffer();
Integer b_id;
b_id = (Integer) session.getAttribute("id");
if (b_id != null && (session.getAttribute("role").equals("buyer"))) {
sb.append("<table border=\"1\">\n" +
" <tr>\n" +
" <td><b>Название</b></td>\n" +
" <td><b>Куплено штук</b></td>\n" +
" <td><b>Дата покупки</b></td>\n" +
" </tr>\n");
try {
rs = stmt.executeQuery("SELECT * FROM \"OrdersHistory\"('" + b_id + "');");
while (rs.next()) {
Name = rs.getString(1);
Count = rs.getInt(2);
DateOfReteil = rs.getDate(3);
SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy");
String formattedDate = formatter.format(DateOfReteil);
sb.append("<tr>\n" +
" <td align=\"center\">" + Name + "</td>\n" +
" <td align=\"center\">" + Count + "</td>\n" +
" <td align=\"center\">" + formattedDate + "</td>\n" +
" </tr>\n");
}
sb.append("</table><p><p><center><a href=\"javascript:history.go(-1)\" class=\"link\">Назад</a></center>");
rs.close();
System.out.println();
} catch (SQLException e) {
sb.delete(0, sb.length() - 1);
sb.append("Ошибка! В БД отсутствуют запрашиваемые данные!<p><p><center><a href=\"javascript:history.go(-1)\" class=\"link\">Назад</a></center>");
}
} else
sb.append("<h3>Для осуществления данной операции Вам необходимо войти на сайт или зарегестрироваться.</h3></center><p><p><center><a href=\"javascript:history.go(-1)\" class=\"link\">Назад</a></center>");
return sb.toString();
}
public String getURL() {
return null;
}
}
Заключение
В данном курсовом проекте была создана база данных «On-line магазин», которая содержит информацию о работе интернет-магазина. В ходе выполнения данного курсового проекта были выполнены все пункты задания для курсового проекта:
- анализ предметной области;
- выделение сущностей и атрибутов;
- установление связей между сущностями;
- проектирование логического и физического уровней, используя CASE-средство ERwin;
- реализация базы данных в СУБД PostgreSQL;
- организация бизнес-логики посредством представлений, хранимых процедур, триггеров, а также заполнение и тестирование БД.
- создание клиентского приложения, работающего с базой данных.
В ходе проектирования и реализации БД были получены знания об основах работы с СУБД PostgreSQL, написании подпрограмм на языке plpgSQL, получен практический опыт самостоятельного проектирования и реализации баз данных в архитектуре «клиент-сервер» на языке высокого уровня Java.
Список литературы
1. Дорофеев, A.С. Методические указания к выполнению курсового проекта по дисциплинам базы данных, управление данными: учебное пособие / А.С. Дорофеев. - Иркутск: Издательство Иркутского государственного технического университета, 2007 г..
2. Трипутина, В.В. Проектирование баз данных с помощью Case-средства ErWin. Методические указания к выполнению лабораторных работ: учебное пособие / В.В. Трипутина. - Иркутск: Издательство Иркутского государственного технического университета.
3. Кренке, Д. Теория и практика построения баз данных / Д. Кренке. - СПб: ПИТЕР, 2005 г.
4. Википедия - Свободная энциклопедия [электронный ресурс]. - Режим доступа: ru.wikipedia.org
Размещено на Allbest.ru
Подобные документы
Специфика создания базы данных "On-line магазин", содержащей информацию о работе интернет-магазина. Проектирование логического и физического уровней с использованием CASE-средства Erwin. Реализация базы данных в архитектуре "клиент-сервер" на языке Java.
курсовая работа [1,2 M], добавлен 26.06.2012Возможности программы DBDesigner. Проектирование и реализация информационно-поисковой системы с помощью CASE-средства DBDesigner в среде Intranet. Этапы проектирования базы данных, установление соединения с базой данных на сервере, синхронизация.
лабораторная работа [1,5 M], добавлен 18.08.2009Сетевое программное обеспечение: общее понятие, содержание, функции. Этапы развития теории компьютерных сетей. Проектирование в среде программирования Borland Builder C++ клиент серверного приложения с использованием сокетов, листинг данной программы.
курсовая работа [191,5 K], добавлен 07.01.2015Описание предметной области разрабатываемой базы данных для теннисного клуба. Обоснование выбора CASE-средства Erwin 8 и MS Access для проектирования базы данных. Построение инфологической модели и логической структуры базы данных, разработка интерфейса.
курсовая работа [3,8 M], добавлен 02.02.2014Разработка клиент-серверного приложения, позволяющего взаимодействовать друг с другом с использованием доступа к базам данных. Проектирование связи сервера с базой данных с помощью технологии ODBC. Разработка интерфейса программы, ее тестирование.
курсовая работа [352,0 K], добавлен 24.08.2016Изучение истории достижений корпорации Oracle. Разработка клиент-серверного приложения на языке Delphi XE, реализующего возможность управления персоналом на предприятии. Основные структуры данных. Создание инструкции работы с приложением "Отдел кадров".
дипломная работа [974,7 K], добавлен 08.06.2013Реализация приложения "Книжный магазин" средствами систем управления базами данных. Проектирование структуры базы данных, определение сущности и атрибутов. Логическое проектирование базы данных и реализация базы данных в СУБД Microsoft Office Access.
курсовая работа [7,8 M], добавлен 13.02.2023Особенности физического и инфологического проектирования баз данных. Этапы и специфика создания электронного каталога для учета пропусков учащихся. Анализ области систематизации информации. Разработка программы-клиент для взаимодействия с базой данных.
дипломная работа [484,9 K], добавлен 14.07.2014Угрозы безопасности баз данных. Политика информационной безопасности предприятия в области использования сетевых ресурсов. Разработка и введение в эксплуатацию защищенного клиент-серверного приложения. Средства аутентификации объектов базы данных.
дипломная работа [4,6 M], добавлен 21.02.2013Возможности программы DBDesigner. Моделирование, сопровождения информационных систем. Проектирование базы данных. Кодирование, установление соединения с базой данных на серввере. Синхронизация, запросы для внесения изменений и операций над данными.
лабораторная работа [1,4 M], добавлен 26.08.2009