Автор работы: Пользователь скрыл имя, 17 Декабря 2014 в 21:32, курсовая работа
Магазин занимается продажей компьютерных дисков с играми через интернет с помощью платежной системы «WebMoney» с возможностью доставки покупателю наземной почтой, курьером или авиапочтой (каждый вид доставки имеет свою стоимость и скидки). Каждый покупатель имеет собственный аккаунт, где хранятся его ФИО, логин, пароль, адрес электронной почты, полный домашний адрес, номер счета WebMoney», размер накопительной скидки и контактный телефон. У каждого покупателя есть счета (номера счетов), которые содержат информацию о способе, стоимости и дате отправки купленного покупателем товара, а также скидку на доставку. У каждой продажи есть свой уникальный номер.
Рисунок 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. Пример отчета по зарплате сотрудников.
В данном разделе представлены части листинга приложения, отвечающие за основные функции работы с СУБД 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")).
String login = request.getParameter("Rlogin")
String pass = request.getParameter("Rpass");
String cpass = request.getParameter("RCpass")
String email = request.getParameter("email");
String lastname = request.getParameter("
String firstname = request.getParameter("
String thirdname = request.getParameter("
String webmoney = request.getParameter("
String address = request.getParameter("
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_
"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(-
request.setAttribute("answer", s);
RequestDispatcher dispatcher = sc.getRequestDispatcher("/
try {
dispatcher.forward(request, response);
} catch (ServletException e) {
e.printStackTrace();
}
((JDBCConnectionPool) sc.getAttribute("ConPool")).
}
}
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")).
String login = request.getParameter("Rlogin")
String pass = request.getParameter("Rpass");
String email = request.getParameter("email");
String lastname = request.getParameter("
String firstname = request.getParameter("
String cpass = request.getParameter("RCpass")
String thirdname = request.getParameter("
String webmoney = request.getParameter("
String address = request.getParameter("
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(-
}
} else
s = "<center><h3>Заполенены не все поля!</h3><p><p>
<a href=\"javascript:history.go(-
request.setAttribute("answer", s);
RequestDispatcher dispatcher = sc.getRequestDispatcher("/
try {
dispatcher.forward(request, response);
} catch (ServletException e) {
e.printStackTrace();
}
((JDBCConnectionPool) sc.getAttribute("ConPool")).
}
}
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")).
Statement stmt = c.createStatement();
s = FindBadGoods(stmt, session);
((JDBCConnectionPool) sc.getAttribute("ConPool")).
} catch (SQLException e) {
e.printStackTrace();
}
if (session.getAttribute("role") != null)
request.setAttribute("succ", true);
request.setAttribute("search", s);
RequestDispatcher dispatcher = sc.getRequestDispatcher("/
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").
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><
rs.close();
System.out.println();
} catch (SQLException e) {
sb.delete(0, sb.length() - 1);
sb.append("Ошибка! В БД отсутствуют запрашиваемые
данные!<p><p><center><a href=\"javascript:history.go(-
}
} else
sb.append("<h3>Для осуществления данной операции
Вам необходимо войти на сайт или зарегестрироваться.</h3></
return sb.toString();
}
public String getURL() {
return null;
}
}
В данном курсовом проекте была создана база данных «On-line магазин», которая содержит информацию о работе интернет-магазина. В ходе выполнения данного курсового проекта были выполнены все пункты задания для курсового проекта:
- анализ предметной области;
- выделение сущностей и атрибутов;
- установление связей между сущностями;
- проектирование логического и физического уровней, используя CASE-средство ERwin;
- реализация базы данных в СУБД PostgreSQL;
- организация бизнес-логики посредством представлений, хранимых процедур, триггеров, а также заполнение и тестирование БД.
- создание клиентского приложения, работающего с базой данных.
В ходе проектирования и реализации БД были получены знания об основах работы с СУБД PostgreSQL, написании подпрограмм на языке plpgSQL, получен практический опыт самостоятельного проектирования и реализации баз данных в архитектуре «клиент-сервер» на языке высокого уровня Java.
1. Дорофеев, A.С. Методические указания к выполнению курсового проекта по дисциплинам базы данных, управление данными: учебное пособие / А.С. Дорофеев. – Иркутск: Издательство Иркутского государственного технического университета, 2007 г..
Информация о работе Проектирование и реализация базы данных «On-line магазин»