Проектирование и реализация базы данных "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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.