Разработка информационной подсистемы учета заявок покупателей на автомобильные комплектующие для индивидуального предпринимателя Ворончихина Н.П.

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



хранено и восстановлена при повторной загрузке страницы.

На рисунке 2.3 можно заметить заполнение контейнера ViewState данными приложения, которые не будут заново запрошены до тех пор, пока не изменятся потребности клиента.

Рисунок 2.3 - Просмотр кода страницы приложения в браузере

2.3.3 Разработка страниц ориентированных на клиентов

Из десяти страниц приложения шесть являются клиент-ориентированными: default.aspx, catalog.aspx, order.aspx, about.aspx, manufacturer.aspx, showpdf.aspx.

Все они являются контентными для базового MasterPage и реализуют функционал приложения, направленный на обеспечение функционирования системы приема заявок и популяризацию фирмы.

Особенностью всех клиент-ориентированных страниц является забота о защите приложения от непреднамеренной и преднамеренной порчи, или кражи информации. В рамках такой политики была реализована защита от SQL-инъекций посредством замены всех запросов к базе данных на параметризованные. Такой подход лишает механизм выполнения запросов некоторой гибкости, но не позволит злоумышленнику внедрить вредоносный код в запрос [11].

Разработка каталога комплектующих. Каталог призван предоставить клиентам возможность в свободном режиме ознакомиться с полным списком товара, предлагаемого предпринимателем. Все функциональные особенности его реализации направлены на повышение эффективности такого ознакомления.

Ключевым управляющим элементом каталога является полнофункциональное дерево категорий. Запасные части сгруппированы в дерево категорий, динамически выстраиваемое в виде элемента TreeView на основе данных таблицы categories, в которой хранятся узлы дерева
с указанием родительских узлов. Построение древа реализуется функцией
BuildTree(DataTable ToBuild), которая также обеспечивает корректное именование узлов, отображающее пользователю понятные названия категорий, сохраняя значения кодов категорий. Таким образом, после построения дерева таблица его образующая удаляется при перезагрузке страницы и уже не запрашивается из базы, что существенно сокращает последующее время загрузок страницы при активной работе, в то время как состояние элемента управления сохраняется в переменной состояния ViewState [12].

При работе с деревом необходимо позволить клиентам выбирать как дочерние узлы, так и родительские, чтобы сузить или наоборот расширить область поиска. При выборе узла приближенного к корню осуществляется рекурсивный обход всех дочерних узлов и загружаются детали соответствующие каждой из подкатегорий до тех пор, пока не будет заполнена вся родительская категория.

Еще одной важной задачей являлось создание активного списка товара принадлежащего выбранной категории. Поскольку элемент управления GridView напрямую не поддерживает обработку нажатий на строки таблицы и не вызывает отправку страницы на сервер было решено переопределять все строки таблицы при их создании. Для этого был перегружен обработчик события OnRowDataBound, добавляющий на строки таблицы Java-скрипты, исполняемые на стороне клиента. С их помощью стало возможным отслеживание кликов по строчкам таблицы и изменение стиля при наведения курсора на ячейки без использования специальных управляющих кнопок в дополнительных столбцах GridView. При выборе какой-либо позиции управление передается серверу с указанием позиции. Активная таблица товаров отражена на рисунке 2.4.

Рисунок 2.4 - Управляемая скриптами таблица товара

В функциональное назначение каталога также входит начальное создание корзины покупателя, если она еще не создана и добавление товаров в нее. Данная система необходима для учета заявок незарегистрированных пользователей, поскольку приложение работает без регистрации пользователей

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

Для слежения за активными корзинами пользователя страница использует контейнер cookie браузера. Посредством этого механизма на сторону клиентской программы внедряется информации об идентификаторе созданного заказа, чтобы возобновлять работу с ним, если пользователь покинул сайт, а также чтобы отслеживать новых пользователей.

Для предоставления потенциальным клиентам инструментария редактирования товаров заказа потребовалось также переопределять набор строк табличного элемента управления. Ячейки столбца, содержащего количество товара, потребовалось динамически заменять во время компиляции страницы на текстовые поля TextBox с серверными идентификаторами для последующего обхода при изменении количества оформляемого на продажу товара. Аналогичным способом добавлен столбец кнопок, предназначенных для удаления товаром из корзины. Преимуществом такого подхода является полная независимость от коллекции столбцов таблицы, подключаемой в GridView. Управляемый список товаров в корзине представлен на рисунке 2.5.

Рисунок 2.5 - Список товара с интегрированными элементами управления

2.3.4 Разработка страниц, организующих управление содержимым сайта

Данная группа страниц предназначения для использования администратором сайта и не обладает механизмами защиты от порчи содержимого кроме запроса прав доступа на просмотр и редактирование контента приложения. В противовес этому повыша