Проектирование и реализация базы данных «On-line магазин»

Автор работы: Пользователь скрыл имя, 17 Декабря 2014 в 21:32, курсовая работа

Описание работы

Магазин занимается продажей компьютерных дисков с играми через интернет с помощью платежной системы «WebMoney» с возможностью доставки покупателю наземной почтой, курьером или авиапочтой (каждый вид доставки имеет свою стоимость и скидки). Каждый покупатель имеет собственный аккаунт, где хранятся его ФИО, логин, пароль, адрес электронной почты, полный домашний адрес, номер счета WebMoney», размер накопительной скидки и контактный телефон. У каждого покупателя есть счета (номера счетов), которые содержат информацию о способе, стоимости и дате отправки купленного покупателем товара, а также скидку на доставку. У каждой продажи есть свой уникальный номер.

Файлы: 1 файл

online_magazin_kompyuternyh_igr_klientserver_prilozheniiserv.docx

— 1.18 Мб (Скачать файл)

 

Рисунок 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. Пример отчета по зарплате сотрудников.

 

    1. Листинг программы.

 

В данном разделе представлены части листинга приложения, отвечающие за основные функции работы с СУБД 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;

    }

}

 

  1. Заключение.

 

   В  данном курсовом проекте была  создана база данных «On-line магазин», которая содержит информацию о работе интернет-магазина. В ходе выполнения данного курсового проекта были выполнены все пункты задания для курсового проекта:

-  анализ предметной области;

- выделение сущностей и атрибутов;

-  установление связей между сущностями;

- проектирование логического и физического уровней, используя CASE-средство ERwin;

-  реализация базы данных в СУБД PostgreSQL;

- организация бизнес-логики посредством представлений, хранимых процедур, триггеров, а также заполнение и тестирование БД.

- создание клиентского приложения, работающего с базой данных.

В ходе проектирования и реализации БД были получены знания об основах работы с СУБД PostgreSQL, написании подпрограмм на языке plpgSQL, получен практический опыт самостоятельного проектирования и реализации баз данных в архитектуре «клиент-сервер» на языке высокого уровня Java.

 

  1. Список литературы.

 

1. Дорофеев, A.С. Методические указания к выполнению курсового проекта по дисциплинам базы данных, управление данными: учебное пособие / А.С. Дорофеев. – Иркутск: Издательство Иркутского государственного технического университета, 2007 г..

Информация о работе Проектирование и реализация базы данных «On-line магазин»