Бизнес-план интренет-магазина

Автор работы: Пользователь скрыл имя, 17 Мая 2013 в 10:12, дипломная работа

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

Целью данного дипломного проекта является создание web-приложения, представляющего собой интернет – магазин по продаже музыкальных CD и DVD дисков, которое позволит продавцу размещать в Интернет информацию о продукции и принимать заказы покупателей. А покупатели соответственно смогут просматривать каталог и заказывать музыкальную продукцию, доставка которой будет осуществляться через систему почтовой связи.
В качестве ОС для разработки была выбрана Windows XP Professional. В качестве технологии разработки будет использоваться ASP.NET 2.0. Информационная система будет представлять собой реляционную базу данных под управлением СУБД SQL Server 2000.

Содержание работы

Перечень сокращений………………………………………………………………………………9
Введение……………………………………………………………………………………………10
1 Исследование предметной области…………………………………………………………….11
1.1 Актуальность систем электронной коммерции……………………………………...11
1.2 Требования к системе………………………………………………………………….11
1.3 Сравнение с аналогами………………………………………………………………..12
1.4 Описание способов оплаты……………………………………………………….…...14
1.5 Решения по реализации………………………………………………………………..15
1.5.1 Выбор технологии для разработки………………………………………….15
1.5.2 Основные особенности технологии ASP.NET……………………………..17
1.5.3 Выбор ОС и web-сервера………………………………………………...….18
1.5.4 Выбор языка программирования для разработки………………………….19
1.5.5 Выбор информационной системы…………………………………………..20
1.5.6 Выбор среды разработки…………………………………………………….21
1.6 Обработка страниц на web-сервере и модель событий ASP.NET………………..…22
2 Проектирование БД…………………………………………………………………………...…25
2.1 Физическая модель БД………………………………………………………………...25
2.2 Описание таблиц БД……………………………………………………………….….27
3 Взаимодействие с БД………………………………………………………………………...….30
3.1 Архитектура ADO.NET……………………………………………………………..…30
3.2 Компоненты доступа к данным…………………………………………………….....31
3.3 Привязка данных……………………………………………………………………....34
3.4 Пример взаимодействия с БД………………………………………………………...35
4 Разработка компонентов web-приложения…………………………………………………....38
4.1 Общая структура web-приложения……………………………………………….….38
4.1.1 Структура каталогов…………………………………………………………38
4.1.2 Файла конфигурации web-приложения web.config………………………..43
4.2 Компоновка и оформление web-страниц…………………………………………….46
4.2.1 Мастер-страницы………………………………………………………….....46
4.2.2 Пользовательские элементы управления…………………………………...49
4.2.3 Каскадные таблицы стилей и темы оформления…………………………..50
4.3 Элементы управления проверкой достоверности……………………………….…..52
4.4 Класс web-страницы с возможностью отслеживания обновления………………....53
4.5 Аутентификация и авторизация пользователей……………………………………..58
4.5.1 Описание и настройка интерфейса Membership API………………………58
4.5.2 Аутентификация форм………………………………………………………60
4.5.3 Авторизация и настройка интерфейса Roles API………………………….63
4.6 Описание профилей пользователей………………………………………………….68
4.7 Основные элементы интерфейса покупатель музыкального Интернет-магазина...72
4.7.1 Регистрация нового покупателя…………………………………………….72
4.7.2 Личные данные покупателя…………………………………………………74
4.7.3 Каталог продукции…………………………………………………………..75
4.7.4 Страница подробностей о продукции………………………………………76
4.7.5 Отзывы о продукции………………………………………………………...77
4.7.6 Корзина покупателя………………………………………………………….79
4.7.7 Оформление заказа…………………………………………………………..80
4.7.8 История заказов……………………………………………………………...81
4.7.9 Страница вопросов покупателей……………………………………………82
4.8 Основные элементы интерфейса администратора музыкального Интернет-магазина…………………………………………………………………………………………….84
4.8.1 Управление каталогом товаров……………………………………………..84
4.8.2 Управление заказами………………………………………….......................87
4.8.3 Страница для ответов на вопросы покупателей…………….......................88
5 Производительность и масштабируемость web-приложения………………………………..89
5.1 Способы повышения производительности и масштабируемости………………....89
5.2 Применение механизма кэширования……………………………….........................90
5.2.1 Кэширование вывода………………………………………………………..90
5.2.2 Кэширование данных…………………………………………………….....91
5.3 Настраиваемое разбиение на страницы с помощью ObjectDataSource…………93
6 Развёртывание web-приложения и модели компиляции……………………………………..98
6.1 Развёртывание web-приложения……………………………………………………..98
6.2 Модели компиляции………………………………………………………………......99
7 Разработка бизнес-плана……………………………………………………………………….101
7.1 Резюме………………………………………………………………………………...101
7.2 Анализ положения дел в отрасли……………………………………………………101
7.3 Суть разрабатываемого проекта……………………………………………………..102
7.3.1 Назначение…………………………………………………………………..102
7.3.2 Форма реализации…………………………………………………………..102
7.3.3 Преимущества перед аналогами…………………………………………..103
7.4 План маркетинга……………………………………………………………………..103
7.4.1 Анализ конкурентоспособности товара………………………………….103
7.4.2 Анализ рынка сбыта……………………………………….........................104
7.4.3 Разработка стратегии ценообразования и стратегии продвижения товара……………………………………………………………………………………………..105
7.5 Производственный план…………………………………………………………….105
7.6 Планирование разработки и определение себестоимости программного обеспечения………………………………………………………………………………………106
7.6.1 Планирование разработки…………………………………………………106
7.6.2 Определение себестоимости программного обеспечения………………107
7.7 Оценка экономической эффективности инвестиционного проекта.......................109
7.7.1 Критерии эффективности коммерческих инв

Файлы: 1 файл

Диплом.doc

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

font-size: 14pt;

color: Red;

}

Это правило можно применить  для форматирования текста элемента управления ASP.NET или HTML-дескриптора:

<div class=”HeaderSpanFont”>Текст </div>

…………………………………………….

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

В отличие от каскадных таблиц стилей темы основаны на элементах управления, а не на HTML-дескрипторах. Ниже приведён фрагмент файла темы SkinFile.skin, в котором  определяется внешний вид элемента управления GridView:

<asp:GridView runat="server" SkinID="GridViewStyle" BorderWidth="1" BorderColor="#dbdbc6">

<HeaderStyle BackColor="#A52A2A" Font-Names="Times New Roman" Font-Size="12" ForeColor="White" />

     <RowStyle BackColor="#F5F5DC" Font-Names="Times New Roman" Font-Size="12" HorizontalAlign="Center" />

     <AlternatingRowStyle BackColor="#dbdbc6" Font-Names="Times New Roman" …………………………………………………………..

     <FooterStyle BackColor="Aqua" HorizontalAlign="Left" Font-Names="Times New Roman" Font-Size="10" Font-Bold="true" />

     ………………………………………………….

     <PagerStyle HorizontalAlign="Center" Font-Names="Times New Roman" Font-Size="12" BackColor="#A52A2A" Font-Bold="true" ForeColor="White" />

</asp:GridView>

 

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

 

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

 

4.3 Элементы управления  проверкой достоверности

 

На некоторых страницах web-приложения от пользователя требуется ввести определённую информацию, например, регистрация  нового покупателя или добавление альбома в каталог. В данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы.  Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении. Для этого используется встроенный клиентский JavaScript-код. Однако проверка выполняется и на стороне сервера. Это необходимо, чтобы избежать возможных ошибок в случае вмешательства в JavaScript-код на стороне клиента. Эти элементы запускаются после загрузки страницы, но перед любыми другими событиями.

Ниже приведён пример использования  элементов управления проверкой  достоверности при разработке дипломного проекта:

<asp:TextBox ID="Email" runat="server" MaxLength="50"></asp:TextBox>                   <asp:RequiredFieldValidator ID="EmailRequired" runat="server" ControlToValidate="Email"                                                ErrorMessage="Вы забыли указать E-mail" ToolTip="E-mail is required."

 …….. ……………………………………………………………………

<asp:RegularExpressionValidator ID="EmailRegular" runat="server" ValidationGroup="CreateUserWizard1" ErrorMessage="Недопустимый формат E-mail" ControlToValidate="Email" ValidationExpression="\S+@\S+\.\S+">*</asp:RegularExpressionValidator>

 

<asp:ValidationSummary HeaderText="Неправильно заполненные поля:" ………………………………………………………………………… ValidationGroup="CreateUserWizard1" runat="server" />

 

RequiredFieldValidator проверяет, чтобы пользователь не забыл ввести адрес электронной почты.

RegularExpressionValidator проверяет, чтобы  введённый адрес соответствовал  определённому формату, который  определён с помощью регулярного  выражения.

ValidationSummary отображает итоговую информацию об ошибках.

 

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

 

4.4 Класс web-страницы с возможностью отслеживания обновления

 

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

При этом среда ASP.NET не может отличить обратный вызов, например при нажатии кнопки на web-страницы, от обновления. Иногда такое поведение может нарушить логику работы программы и исказить данные.

Например, в разработанном web-приложении покупатель может удалять товары из покупательской корзины, при этом он ставит галочку напротив этого товара и нажимает кнопку удалить. В данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы.  Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении. Таким образом, при обновлении страницы после операции удаления существует вероятность удалить ещё одну товар. Естественно, что такое поведение недопустимо. Для того чтобы обойти исправить такое поведение, необходимо отличать обновление страницы от обратной отсылки после нажатия кнопки.

Для этого используется новый класс web-страницы RefreshPage, унаследованный от класса System.Web.UI.Page, в котором добавлена возможность распознавания обновления. Для этого используется HTTP-модуль, осуществляющий предварительную обработку страницы. Далее рассмотрен алгоритм распознавания обновления страницы.

Для каждого запроса, обслуживаемого в контексте сеанса, выдается уникальный и возрастающий номер. Страница ASP.NET создает билет непосредственно перед созданием ответа и сохраняет его в специальном скрытом поле, которое передаётся в браузер. Когда пользователь передает новый запрос скрытое поле (если оно существует) автоматически добавляется к запросу на сервер.

На веб-сервере новый HTTP-модуль проверки перехватывает событие AcquireSessionState(этот метод вызывается перед тем, как для клиента будет получена информация, специфичная для сеанса, использована для заполнения коллекции Session), получает текущий билет из скрытого поля, а затем сравнивает его с кэшированным последним выданным билетом. Последний выданный билет сохраняется в состоянии сеанса. Если номер текущего билета больше, чем последний выданный номер, или оба они равны нулю, то это обычный запроc. Больше модуль проверки обновления не выполняет никаких действий и пропускает запросы в неизмененном виде.

Если последний выданный билет больше или равен текущему билету, то запрос определяется как обновление страницы. В данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы.  Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении. Срок жизни этих данных совпадает со сроком запроса; поэтому любые данные удаляются при создании ответа. Используя статическое свойство HttpContext.Current можно получить доступ к контексту обрабатываемого запроса из любого класса, вовлеченного в этот процесс.

Http-модуль проверки обновления  создает новую запись IsPageRefreshed в коллекции Items. Эта логическая переменная обозначает, запрашивалась ли страница с помощью обычного запроса или с помощью обновления. В следующем примере показана реализация http-модуля проверки обновления:

public class RefreshModule : IHttpModule

{

public void Init(HttpApplication app)

    {

          app.AcquireRequestState += new EventHandler(OnAcquireRequestState);

    }

    …………………………………………………..

{

             HttpApplication app = (HttpApplication) sender;

             …………………………..

//Проверить на обновление

             RefreshAction.Check(ctx);

             return;

          }

   }  

Класс RefreshAction содержит логику, определяющую, является ли текущий запрос обновлением страницы. Если он распознаётся как обновление, то в коллекции Items объекта HttpContext появляется новая запись IsPageRefreshed, которой присваивается значение true.

public static void Check(HttpContext ctx)

{

 EnsureRefreshTicket(ctx);

   //Получение предыдущего  номера из объекта Session

     int lastTicket = GetLastRefreshTicket(ctx);

   ……………………………………………………..

     int thisTicket = GetCurrentRefreshTicket(ctx);

 

   // Сравнение номеров

   if (thisTicket > lastTicket || (thisTicket==lastTicket && thisTicket==0))

   {

       UpdateLastRefreshTicket(ctx, thisTicket);

       ………………………………………….

   }

   else

  {

       ctx.Items[PageRefreshEntry] = true;

   }

}

 

Класс RefreshPage содержит свойство IsPageRefresh:

public bool IsPageRefresh

{

   get {

     object o = HttpContext.Current.Items[RefreshAction.PageRefreshEntry];

     if (o == null)

{

         return false;

}

     return (bool) o;

         }

}

Наследую класс web-страниц от класса RefreshPage можно использовать это свойство и определять обновление страницы. Таким образом, можно отслеживать  обновление web-страницы при удалении товаров из покупательской корзины. Соответственно, если обнаружено обновление страницы, то товар не удаляется. Код обработчика представлен ниже:

 

protected void UpdateButton_Click(object sender, EventArgs e)

    {

        if(!IsPageRefresh && IsValid)

        {

            int numDeleted = 0;

            …………………………………………………………………

            {

                if (((CheckBox)(row.FindControl("DeleteCheck"))).Checked)

                {

                    Profile.Cart.RemoveAt(row.RowIndex - numDeleted);

                    ……………….

                    continue;

                }

                string regular = "[^0-9]";

                string text = ((TextBox)(row.FindControl("TextBoxQuantity"))).Text;

                ………………………………………………

                if ((collect.Count != 0) || (text.Length == 0))

                {

                    continue;

                }

                Profile.Cart[row.RowIndex - numDeleted].Quantity = Convert.ToInt32(((TextBox)(row.FindControl("TextBoxQuantity"))).Text);

            }

            Profile.Save();

            Session["IsUpdateCart"] = true;

        }

 

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

Рис. 10 «Диаграмма классов, используемых для отслеживания обновления

web-страниц»

 

 

 

4.5 Аутентификация и  авторизация пользователей

 

4.5.1 Описание и настройка интерфейса Membership API

 

Как уже было сказано в пункте 4.1.1, разработанное web-приложение содержит страницы, доступ к которым должен быть ограничен со стороны не аутентифицированных  пользователей, либо аутентифицированных, но не обладающих необходимыми правами доступа.

Аутентификация – это процесс  определения личности пользователя.

Авторизация – это процесс определения  прав и ограничений, назначенных  аутентифицированному пользователю. В данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы.  Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении. В данном пункте рассмотрен интерфейс Membership API и его применение при разработке дипломного проекта. Интерфейс Roles API описан в пункте 4.5.3.

Интерфейс Membership API предоставляет  полный набор функций для хранения информации о пользователях и управления ею.

При разработке дипломного проекта  использовались следующие классы, предоставляемые  интерфейсом Membership API:

  • Membership – предоставляет методы для управления пользователями;
  • MembershipUser – предоставляет отдельного пользователя, записанного в хранилище данных. Этот объект содержит всю информацию о данном пользователе и возвращается несколькими методами класса Membership;

Также Membership API содержит набор элементов  управления безопасность, предназначенных  для создания web-страниц регистрации, входа в систему, смены и восстановления пароля. Все эти элементы полностью настраиваемы и расширяемы. По умолчанию каждый элемент работает на основе Membership API и аутентификации форм, но при необходимости любые события можно переопределить. Аутентификация форм рассмотрена в пункте 4.5.2.

Для того чтобы использовать интерфейс Membership API необходимо создать хранилище  данных и настроить его на работу с ним. Для хранения удостоверений  пользователей в базе данных web-приложения с помощью программы aspnet_regsql.exe, поставляющейся вместе с .NET Framework 2.0, были созданы специальные таблицы: aspnet_Membership, aspnet_Users и aspnet_Applications, а также хранимые процедуры для доступа к ним. Далее необходимо настроить поставщик Membership API, для обеспечения доступа к хранилищу данных. Это делается с помощью файла конфигурации web-приложения web.config:

   <membership defaultProvider="MyMembershipProvider">

      <providers>

        <add name="MyMembershipProvider"

         type="System.Web.Security.SqlMembershipProvider"

          ………………………………………….

          applicationName="/MusicInternetShop"

          enablePasswordRetrieval="true"

          enablePasswordReset="true"

          maxInvalidPasswordAttempts="5"

          ………………………………….

          requiresUniqueEmail="true"

Информация о работе Бизнес-план интренет-магазина