Тематические "онлайн-магазины"

 

Оглавление


ВВЕДЕНИЕ

. АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ

.1Анализ существующих аналогов

.1.1 интернет-портал «onliner.by»

.1.2 интернет-магазин «ebay.com»

.1.3 интернет-магазин «eda.by»

. РАЗРАБОТКА ПРОГРАММНОГО СРЕДСТВА И БАЗЫ ДАННЫХ

.1 Спецификация требований

.1.1 Варианты использования ПС и БД

.2 Архитектурное решение проекта

.3 Обоснование выбора информационных технологий

. ИНФОЛОГИЧЕСКАЯ МОДЕЛЬ БАЗЫ ДАННЫХ

.1 Разработка модели базы данных

.2 Схема базы данных на языке SQL

. РУКОВОДСТВО ПО ЭКСПЛУАТАЦИИ

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

ПРИЛОЖЕНИЕ А

ПРИЛОЖЕНИЕ Б

ПРИЛОЖЕНИЕ В


ВВЕДЕНИЕ


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

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

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

Эти проблемы в большей части исчезли после введения прослойки между представлением данных на диске и данными в программе. Решением стали базы данных и системы управления базами данных. В зависимости от разработчика или конкретных настроек СУБД определяет, как и где ей хранить данные. Помимо этого, все СУБД предоставляют механизм для получения этих данных в удобной для дальнейшего использования форме - «запросы». С их помощью можно указать критерии выбора данных, отсортировать данные в нужном порядке, сгруппировать, как того требует задание, и т.п. Помимо этого, большинство СУБД поддерживает механизм разграничения прав доступа, т.е. достаточно указать, какие данные какому пользователю можно или нельзя получать, а все остальное возьмет на себя СУБД.

Существуют различные модели организации данных. Вот некоторые из них:

-иерархическая;

-сетевая;

-реляционная;

-объектная и объектно-ориентированная <#"justify">Наиболее широко используются реляционные, так как они универсальны. В реляционных базах данных данные собраны в таблицы, которые в свою очередь состоят из столбцов и строк, на пересечении которых расположены ячейки. Запросы к таким базам данных возвращает таблицу, которая повторно может участвовать в следующем запросе. Данные в одних таблицах, как правило, связаны с данными других таблиц, откуда и произошло название "реляционные".

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

1. АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ


1.1Анализ существующих аналогов


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

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

Встречаются различные типы интернет-магазинов:

-Интернет-магазины бытовой техники;

-Сервисы доставки еды на дом;

-Сервисы доставки продуктов на дом;

-Интернет-магазины электронной техники;

-Интернет-магазины одежды и обуви.


1.1.1 интернет-портал «onliner.by»

Один из самых популярных белорусских порталов. Данный портал обладает следующими достоинствами:

-Большой выбор электронной техники;

-Обзор различных новинок в технологической сфере;

-возможность сравнения цен от различных продавцов;

-Форум, на котором зарегестрированные пользователи могут общаться на различные тематики.

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

1.1.2 интернет-магазин «ebay.com»

Отличный интернет-магазин,содержащий огромное разнообразие товаров из разных стран. Данный интернет-магазин обладает следующими достоинствами:

-Огромный выбор из предоставляемых товаров;

-возможность заказа почтовой посылкой;

-подробное описание товаров;

-различные виды оплаты;

-поддержка скидок;

-наличие онлайн-аукциона;

интернет магазин тематический база

1.1.3 интернет-магазин«eda.by»

Интернет-магазин с возможностью доставки продуктов на дом на территории Минска.Интернет-магазин обладает следующими достоинствами:

-большой выбор продуктов и готовых блюд;

-круглосуточная доставка.

К недостаткам данного сайта относятся:

-невозможность заказов для остальной территории.


1.2 Постановка задачи


Как показал анализ существующих аналогов, им присущи следующие недостатки:

-сложность навигации по каталогам и результатам поиска;

-отсутствие возможностей оставлять комментарии.

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

-удобный пользовательский дизайн;

-возможность ограничения функциональности пользователя в зависимости от роли;

-легкость в освоении сайта;

-простота регистрации;

-простота навигации по сайту;

-простота управления сайтом для администратора.

2. РАЗРАБОТКА ПРОГРАММНОГО СРЕДСТВА И БАЗЫ ДАННЫХ


2.1 Спецификация требований


.1.1 Варианты использования ПС и БД

В разрабатываемом программном средстве должно быть реализовано следующее:

  • интуитивно понятный интерфейс;
  • проверка вводимых данных для всех полей ввода;
  • легкость в освоении сайта;
  • простота регистрации;
  • различные способы оплаты для оформления заказа.

2.2 Архитектурное решение проекта


Архитектурное решение проекта представлено в приложении Б.

Класс CarRepository - основной класс для администрирования салона. Содержит метод AddCar для добавления автомобиля в каталог с панели администратора.Класс содержит методы GetCarByIdиGetAllCars. Метод GetCarByIdвозвращает конкретнуюмодель поидентификатору автомобиля. Метод GetAllCarsвозвращает список всех доступных автомобилей для вывода их в удобном для пользователя виде. Метод CarsToTableпривязывает полученные данные из метода CarsToTableк GridView для вывода необходимых полей записей в табличном представлении

Класс ManRepository - выполняет основные операции для сущности Man. Метод GetAllMen возвращает полный список людей(клиентов, сотрудников, покупателей. Метод GetManInfoвозвращает информацию о заданном человеке в формате «Фамилия-имя-тип-контактная информация»,.Метод GetContactInfo -возвращает номер телефона и адресс человека по его идентификатору.

Класс ClientRepository - выполняет основные операции для сущности Client. Метод GetClientInfo - возвращает полную информацию о клиенте и о заказанном автомобиле. Метод GetAllClientsвозвращает список всех клиентов автосалона.

Класс BuyerRepository - выполняет основные операции над сущностью Buyer. Метод GetBuyerInfo - возвращает информацию о покупателе по его идентификатору. Полученные данные содержат краткую информацию о покупателе, способ оплаты, идентификатор на купленный автомобиль.

Класс OfficialRepository - выполняет основные операции над сущностью Official. Метод GetAllOfficials - возвращает список всех сотрудников. МетодGetOfficialInfo - возвращает информацию о заданном сотруднике: фамилию, имя, должность, заработную плату, контактную информацию.

Класс DistrRepository - выполняет основные операции над сущностью «Distr»Метод GetDistrByCarIdвозвращает информацию о поставщике по идентификатору автомобиля.

Класс CheckOut- выполняет операции поиска автомобиля среди записей. Метод CheckByIdвозвращает информацию об автомобиле с указанным идентификатором. Метод CheckByCriteriesвозвращает список автомобилей с таким же описанием.


2.3 Обоснование выбора информационных технологий


Данный программный продукт написан на языке C# в среде VisualStudio 2012. Данный язык был выбран по следующим причинам:

-В состав C# входит "сборщик мусора", который освобождает ресурсы. Таким образом, приложения защищены от утечки памяти и от необходимости освобождать ресурсы. Это делает программирование более легким и более безопасным;

-Приложения .NET используют метаданные, что позволяет им не пользоваться системным реестром Windows;

Приложение написано на платформеASP.NETMVC.MVC представляет собой стандартный шаблон разработки, знакомый многим специалистам. Некоторые типы веб-приложений имеют преимущества при создании на платформе asp.NET. В состав платформы входят следующие компоненты:

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

-В небольших приложениях эта модель подразумевает концептуальное, а не физическое разделение. Например, если приложение только считывает набор данных и отправляет его в представление, то физический слой модели и связанных классов отсутствует. В этом случае набор данных принимает роль объекта модели;

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

-Контроллеры. Контроллеры осуществляют взаимодействие с пользователем, работу с моделью, а также выбор представления, отображающего пользовательский интерфейс. В приложении asp.NET представления только отображают данные, а контроллер обрабатывает вводимые данные и отвечает на действия пользователя.

Шаблон asp.NET позволяет создавать приложения, различные аспекты которых (логика ввода, бизнес-логика и логика интерфейса) разделены, но достаточно тесно взаимодействуют друг с другом. Пользовательский интерфейс располагается в представлении. Логика ввода располагается в контроллере. Бизнес-логика находится в модели. Это разделение позволяет работать со сложными структурами при создании приложения, так как обеспечивает одновременную реализацию только одного аспекта. Например, разработчик может сконцентрироваться на создании представления отдельно от бизнес-логики. Связь между основными компонентами приложения MVC также облегчает параллельную разработку. Например, один разработчик может создавать представление, другой - логику контроллера, а третий - бизнес-логику модели.

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

-Экономия трафика. Использование Ajax позволяет значительно сократить трафик при работе с веб-приложением благодаря тому, что часто вместо загрузки всей страницы достаточно загрузить только изменившуюся часть, как правило, довольно небольшую;

-Уменьшение нагрузки на сервер. Ajax позволяет несколько снизить нагрузку на сервер. К примеру, на странице работы с почтой, когда вы отмечаете прочитанные письма, серверу достаточно внести изменения в базу данных и отправить клиентскому скрипту сообщение об успешном выполнении операции без необходимости повторно создавать страницу и передавать её клиенту;

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

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

Используя же внедрение зависимости, объект просто предоставляет свойство, которое в состоянии хранить ссылку на нужный тип сервиса; и когда объект создается, ссылка на реализацию нужного типа сервиса автоматически вставляется в это свойство (поле), используя средства среды. Внедрение зависимости более гибко, потому что становится легче создавать альтернативные реализации данного типа сервиса, а потом указывать, какая именно реализация должна быть использована в, например, конфигурационном файле, без изменений в объектах, которые этот сервис используют. Это особенно полезно в юнит-тестировании, потому что вставить реализацию «заглушки» сервиса в тестируемый объект очень просто.


Рисунок 2.3 - Схема обработки запроса поиска автомобиля в каталоге


Модель содержит в себе информацию об автомобиле. Из модели можно получить название модели автомобиля,цвет,год выпуска, стоимость.Результат выполнения запроса- вывод списка автомобилей, описание которых совпадает с введенными критериями

3. ИНФОЛОГИЧЕСКАЯ МОДЕЛЬ БАЗЫ ДАННЫХ


3.1 Разработка модели базы данных


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

Ниже приведено описание основных таблиц:

.таблица «table_car» используется для хранения информации об автомобилях:

-ID(bigint) -первичный ключ таблицы, идентификатор автомобиля;

-Model(varchar(100)) - полное название модели;

-Color(varchar(100)) -цвет кузова;

-Price (varchar(50)) - стоимость автомобиля;

-Sale Date(datetime) -датаоформления заказа;

-Stat (varchar(100)) - состояние(в салоне/оформлен заказ);

-Buyerid (bigint) -идентификатор покупателя.

-Release Date(int) - годвыпуска.

2.таблица «table_mod» используется для хранения дополнительной информации о выбранном автомобиле:

-ID(bigint) -первичный ключ таблицы, идентификатор модели автомобиля;

-CarID (bigint) - идентификатор автомобиля;

-Seatsnumber(int) -количество пассажирских мест;

-fuel(varchar(10)) - тип используемого топлива;

-Fuelrate (int) - расход топлива в литрах на 100 км.

.таблица «table_stat» используется для хранения информации о состоянии автомобиля(находится в салоне/ продано):

-ID(bigint) -первичный ключ таблицы, идентификатор состояния;

-Stat(varchar(100)) - состояние автомобиля;

.таблица «table_distr» используется для хранения информации о поставщике:

-ID(bigint) -первичный ключ таблицы, идентификатор поставщика;

-CarID(bigint) - идентификатор автомобиля

-Contact Information (varchar(100)) - контактнаяинформация.

-DistrName (varchar(100)) - название поставщика.

.таблица «table_man» используется для хранения информации о человеке, тк он может являться работником или покупателем:

-ID(bigint) -первичный ключ таблицы, идентификатор человека;

-Surname(varchar(50)) - фамилия;

-Name(varchar(50)) -имя;

.таблица «table_contact» используется для хранения информации о контактной инофрмации работника/покупателя:!!!!!!!!!!!!!!!!!!!!!!!!(прод)

-ID(bigint) -первичный ключ таблицы, идентификатор контактной информации;

-ManID (bigint) - идентификатор;

-Phone(nvarchar(100)) -номер телефона;

-Adress(varchar(100)) -адрес;

.таблица «table_client» используется для хранения информации о клиентах:

-ID(bigint) -первичный ключ таблицы, идентификатор клиента;

-ManID (bigint) - Идентификатор человека;

-CarID(bigint) -идентификатор автомобиля;

.таблица «table_buyer» используется для хранения информации о покупателях:

-ID(bigint) -первичный ключ таблицы, идентификатор покупателя;

-ManID(bigint) - идентификатор человека;

-CarID(bigint) - идентификатор автомобиля;

-OfficialID (bigint) - идентификатор сотрудника;

-Payment (bigint) - идентификатор способа оплаты.

9.таблица «table_payment» используется для хранения информации о способах оплаты:

-ID (bigint) - первичный ключ таблицы, идентификатор способа оплаты;

-Payment(varchar(50)) - способ оплаты;

10.таблица «table_official» используется для хранения информации о сотрудниках:

-ID (bigint) - первичный ключ таблицы, идентификатор сотрудника;

-ManID (bigint) - идентификатор человека;

-Post (varchar(50))- занимаемая должность;

-Reward (int) - заработная плата;

.таблица «table_post» используется для хранения информации о занимаемых должностях:

-ID (bigint) - первичный ключ таблицы, идентификатор должности;

-Post(varchar(50) - занимаемая должность;

Каждый автомобиль связан со своеймодификацией через таблицу car_mod. В данной таблице используется составной первичный ключ (состоит из идентификатора автомобиля и идентификатора модификации).

У каждого автомобиля может быть несколько модификаций. Например, в салоне может находиться два одинаковых автомобиля, отличающихся каким-либо параметром модификации(цвет, год выпуска и т.д.).

Структура клиентов-сотрудников заключена в таблицы table_man, table_buyerи table_official. Длясвязитаблицпотипуtable_man - table_officialиtable_man - table_buyerвтаблицеtable_manиспользуется первичный ключ man_id, который используется для связи в двух других таблицах.

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

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

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


3.2 Схема базы данных на языке SQL


CREATE TABLE [dbo].[Club]([Id] [bigint] IDENTITY(1,1) NOT NULL,[Name] [varchar](100) NOT NULL,

[CreationDate] [datetime] NOT NULL,[Owner] [varchar](50) NOT NULL,[PK_Club] PRIMARY KEY CLUSTERED ([Id] ASC)(PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]ANSI_PADDING OFFANSI_NULLS ONQUOTED_IDENTIFIER ONSET ANSI_PADDING ONTABLE [dbo].[aspnet_WebEvent_Events](

[EventId] [char](32) NOT NULL,

[EventTimeUtc] [datetime] NOT NULL,

[EventTime] [datetime] NOT NULL,

[EventType] [nvarchar](256) NOT NULL,

[EventSequence] [decimal](19, 0) NOT NULL,

[EventOccurrence] [decimal](19, 0) NOT NULL,

[EventCode] [int] NOT NULL,

[EventDetailCode] [int] NOT NULL,

[Message] [nvarchar](1024) NULL,

[ApplicationPath] [nvarchar](256) NULL,

[ApplicationVirtualPath] [nvarchar](256) NULL,

[MachineName] [nvarchar](256) NOT NULL,

[RequestUrl] [nvarchar](1024) NULL,

[ExceptionType] [nvarchar](256) NULL,

[Details] [ntext] NULL,KEY CLUSTERED

(

[EventId] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]ANSI_PADDING OFFANSI_NULLS ONQUOTED_IDENTIFIER ONANSI_PADDING ONTABLE [dbo].[Footballer](

[Id] [bigint] IDENTITY(1,1) NOT NULL,

[Name] [varchar](100) NOT NULL,

[Surname] [varchar](100) NOT NULL,

[Position] [varchar](50) NOT NULL,

[DateOfBirth] [datetime] NOT NULL,

[Nationality] [varchar](100) NOT NULL,

[Sex] [varchar](10) NOT NULL,[PK_Footballer] PRIMARY KEY CLUSTERED

(

[Id] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]ANSI_PADDING OFFANSI_NULLS ONQUOTED_IDENTIFIER ONANSI_PADDING ONTABLE [dbo].[Trophy](

[Id] [bigint] IDENTITY(1,1) NOT NULL,

[Name] [varchar](50) NOT NULL,[PK_Trophy] PRIMARY KEY CLUSTERED

(

[Id] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY] GOANSI_PADDING OFF

/****** Object: Table [dbo].[Stadium] Script Date: 12/08/2012 21:17:54 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONANSI_PADDING ONTABLE [dbo].[Stadium](

[Id] [bigint] IDENTITY(1,1) NOT NULL,

[Name] [varchar](50) NOT NULL,

[Location] [varchar](50) NOT NULL,

[Capacity] [bigint] NOT NULL,[PK_Stadium] PRIMARY KEY CLUSTERED

(

[Id] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]ANSI_PADDING OFF

/****** Object: Table [dbo].[Referee] Script Date: 12/08/2012 21:17:54 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONANSI_PADDING ONTABLE [dbo].[Referee](

[Id] [bigint] IDENTITY(1,1) NOT NULL,

[Name] [varchar](100) NOT NULL,

[Surname] [varchar](100) NOT NULL,

[DateOfBirth] [datetime] NOT NULL,

[Nationality] [varchar](100) NOT NULL,

[Sex] [varchar](10) NOT NULL,

[StartCareerDate] [datetime] NOT NULL,[PK_Referee] PRIMARY KEY CLUSTERED

(

[Id] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]ANSI_PADDING OFF

/****** Object: Table [dbo].[News] Script Date: 12/08/2012 21:17:54 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONANSI_PADDING ONTABLE [dbo].[News](

[Id] [bigint] IDENTITY(1,1) NOT NULL,

[Body] [nvarchar](max) NOT NULL,

[Header] [nvarchar](max) NOT NULL,

[Picture] [varchar](500) NULL,

[Time] [datetime] NULL,[PK_News] PRIMARY KEY CLUSTERED

(

[Id] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]ANSI_PADDING OFF

/****** Object: Table [dbo].[aspnet_SchemaVersions] Script Date: 12/08/2012 21:17:54 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONTABLE [dbo].[aspnet_SchemaVersions](

[Feature] [nvarchar](128) NOT NULL,

[CompatibleSchemaVersion] [nvarchar](128) NOT NULL,

[IsCurrentVersion] [bit] NOT NULL,KEY CLUSTERED

(

[Feature] ASC,

[CompatibleSchemaVersion] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

/****** Object: Table [dbo].[aspnet_Applications] Script Date: 12/08/2012 21:17:54 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONTABLE [dbo].[aspnet_Applications](

[ApplicationName] [nvarchar](256) NOT NULL,

[LoweredApplicationName] [nvarchar](256) NOT NULL,

[ApplicationId] [uniqueidentifier] NOT NULL,

[Description] [nvarchar](256) NULL,KEY NONCLUSTERED

(

[ApplicationId] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],NONCLUSTERED

(

[LoweredApplicationName] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],NONCLUSTERED

(

[ApplicationName] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

/****** Object: Table [dbo].[Coach] Script Date: 12/08/2012 21:17:54 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONANSI_PADDING ONTABLE [dbo].[Coach](

[Id] [bigint] IDENTITY(1,1) NOT NULL,

[Name] [varchar](100) NOT NULL,

[Surname] [varchar](100) NOT NULL,

[DateOfBirth] [datetime] NOT NULL,

[Nationality] [varchar](100) NOT NULL,

[Sex] [varchar](10) NOT NULL,

[StartCareerDate] [datetime] NOT NULL,[PK_Coach] PRIMARY KEY CLUSTERED

(

[Id] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]ANSI_PADDING OFF

/****** Object: Table [dbo].[Footballer_Club] Script Date: 12/08/2012 21:17:54 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONTABLE [dbo].[Footballer_Club](

[FootballerId] [bigint] NOT NULL,

[ClubId] [bigint] NOT NULL,[PK_Footballer_Club] PRIMARY KEY CLUSTERED

(

[FootballerId] ASC,

[ClubId] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

/****** Object: Table [dbo].[Coach_Club] Script Date: 12/08/2012 21:17:54 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONTABLE [dbo].[Coach_Club](

[Id] [bigint] IDENTITY(1,1) NOT NULL,

[ClubId] [bigint] NOT NULL,

[CoachId] [bigint] NOT NULL,

[StartCooperation] [datetime] NOT NULL,

[EndCooperation] [datetime] NULL,[PK_Coach_Club] PRIMARY KEY CLUSTERED

(

[Id] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

/****** Object: Table [dbo].[Club_Tropy] Script Date: 12/08/2012 21:17:54 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONTABLE [dbo].[Club_Tropy](

[ClubId] [bigint] NOT NULL,

[TrophyId] [bigint] NOT NULL,

[DateVictory] [datetime] NOT NULL,[PK_Club_Tropy] PRIMARY KEY CLUSTERED

(

[ClubId] ASC,

[TrophyId] ASC,

[DateVictory] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

/****** Object: Table [dbo].[aspnet_Paths] Script Date: 12/08/2012 21:17:54 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONTABLE [dbo].[aspnet_Paths](

[ApplicationId] [uniqueidentifier] NOT NULL,

[PathId] [uniqueidentifier] NOT NULL,

[Path] [nvarchar](256) NOT NULL,

[LoweredPath] [nvarchar](256) NOT NULL,KEY NONCLUSTERED

(

[PathId] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

/****** Object: Table [dbo].[aspnet_Users] Script Date: 12/08/2012 21:17:54 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONTABLE [dbo].[aspnet_Users](

[ApplicationId] [uniqueidentifier] NOT NULL,

[UserId] [uniqueidentifier] NOT NULL,

[UserName] [nvarchar](256) NOT NULL,

[LoweredUserName] [nvarchar](256) NOT NULL,

[MobileAlias] [nvarchar](16) NULL,

[IsAnonymous] [bit] NOT NULL,

[LastActivityDate] [datetime] NOT NULL,KEY NONCLUSTERED

(

[UserId] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

/****** Object: Table [dbo].[aspnet_Roles] Script Date: 12/08/2012 21:17:54 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONTABLE [dbo].[aspnet_Roles](

[ApplicationId] [uniqueidentifier] NOT NULL,

[RoleId] [uniqueidentifier] NOT NULL,

[RoleName] [nvarchar](256) NOT NULL,

[LoweredRoleName] [nvarchar](256) NOT NULL,

[Description] [nvarchar](256) NULL,KEY NONCLUSTERED

(

[RoleId] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

/****** Object: Table [dbo].[Match] Script Date: 12/08/2012 21:17:54 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONTABLE [dbo].[Match](

[Id] [bigint] IDENTITY(1,1) NOT NULL,

[DateOfMatch] [datetime] NULL,

[StadiumId] [bigint] NOT NULL,

[RefereeId] [bigint] NOT NULL,

[ClubId_1] [bigint] NOT NULL,

[ClubId_2] [bigint] NOT NULL,

[Goals_1] [bigint] NOT NULL,

[Goals_2] [bigint] NOT NULL,[PK_Match] PRIMARY KEY CLUSTERED

(

[Id] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

/****** Object: Table [dbo].[Goal] Script Date: 12/08/2012 21:17:54 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONTABLE [dbo].[Goal](

[Id] [bigint] IDENTITY(1,1) NOT NULL,

[MatchId] [bigint] NOT NULL,

[FootballerId] [bigint] NOT NULL,

[NumberOfGoals] [bigint] NOT NULL,

[GoalTime] [bigint] NOT NULL,[PK_Goal] PRIMARY KEY CLUSTERED

(

[Id] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

/****** Object: Table [dbo].[Comment] Script Date: 12/08/2012 21:17:54 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONTABLE [dbo].[Comment](

[Id] [bigint] IDENTITY(1,1) NOT NULL,

[Time] [datetime] NULL,

[Body] [nvarchar](max) NOT NULL,

[NewsId] [bigint] NOT NULL,

[LoginId] [uniqueidentifier] NOT NULL,[PK_Comment] PRIMARY KEY CLUSTERED

(

[Id] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

/****** Object: Table [dbo].[aspnet_UsersInRoles] Script Date: 12/08/2012 21:17:54 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONTABLE [dbo].[aspnet_UsersInRoles](

[UserId] [uniqueidentifier] NOT NULL,

[RoleId] [uniqueidentifier] NOT NULL,KEY CLUSTERED

(

[UserId] ASC,

[RoleId] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

/****** Object: Table [dbo].[aspnet_Profile] Script Date: 12/08/2012 21:17:54 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONTABLE [dbo].[aspnet_Profile](

[UserId] [uniqueidentifier] NOT NULL,

[PropertyNames] [ntext] NOT NULL,

[PropertyValuesString] [ntext] NOT NULL,

[PropertyValuesBinary] [image] NOT NULL,

[LastUpdatedDate] [datetime] NOT NULL,KEY CLUSTERED

(

[UserId] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

/****** Object: Table [dbo].[aspnet_PersonalizationPerUser] Script Date: 12/08/2012 21:17:54 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONTABLE [dbo].[aspnet_PersonalizationPerUser](

[Id] [uniqueidentifier] NOT NULL,

[PathId] [uniqueidentifier] NULL,

[UserId] [uniqueidentifier] NULL,

[PageSettings] [image] NOT NULL,

[LastUpdatedDate] [datetime] NOT NULL,KEY NONCLUSTERED

(

[Id] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

/****** Object: Table [dbo].[aspnet_PersonalizationAllUsers] Script Date: 12/08/2012 21:17:54 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONTABLE [dbo].[aspnet_PersonalizationAllUsers](

[PathId] [uniqueidentifier] NOT NULL,

[PageSettings] [image] NOT NULL,

[LastUpdatedDate] [datetime] NOT NULL,KEY CLUSTERED

(

[PathId] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

/****** Object: Table [dbo].[aspnet_Membership] Script Date: 12/08/2012 21:17:54 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONTABLE [dbo].[aspnet_Membership](

[ApplicationId] [uniqueidentifier] NOT NULL,

[UserId] [uniqueidentifier] NOT NULL,

[Password] [nvarchar](128) NOT NULL,

[PasswordFormat] [int] NOT NULL,

[PasswordSalt] [nvarchar](128) NOT NULL,

[MobilePIN] [nvarchar](16) NULL,

[Email] [nvarchar](256) NULL,

[LoweredEmail] [nvarchar](256) NULL,

[PasswordQuestion] [nvarchar](256) NULL,

[PasswordAnswer] [nvarchar](128) NULL,

[IsApproved] [bit] NOT NULL,

[IsLockedOut] [bit] NOT NULL,

[CreateDate] [datetime] NOT NULL,

[LastLoginDate] [datetime] NOT NULL,

[LastPasswordChangedDate] [datetime] NOT NULL,

[LastLockoutDate] [datetime] NOT NULL,

[FailedPasswordAttemptCount] [int] NOT NULL,

[FailedPasswordAttemptWindowStart] [datetime] NOT NULL,

[FailedPasswordAnswerAttemptCount] [int] NOT NULL,

[FailedPasswordAnswerAttemptWindowStart] [datetime] NOT NULL,

[Comment] [ntext] NULL,KEY NONCLUSTERED

(

4. РУКОВОДСТВО ПО ЭКСПЛУАТАЦИИ


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

Стартовая страница портала выглядит следующим образом:


Рисунок 4.1 -Стартовая страница автосалона


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

Перейдём на страницу входа в учётную запись пользователя:


Рисунок 4.2-Страница входа в учётную запись


На странице входа отображается форма для ввода информации об уже зарегистрированном пользователе. Если пользователь ещё не зарегистрирован, то необходимо перейти, щёлкнув по ссылке Register. В этом случае появится окно для регистрации пользователя (необходимо будет ввести логин, пароль, адрес электронной почты).


Рисунок 4.3-Окно регистрации нового пользователя

Если пользователь не заполнит какое-либо из полей, либо введенные данные в полях «EnterPassword»и «ConfirmPassword» будет выведена информация о неправильном заполнении формы регистрации.


Рисунок 4.4-Предупреждения о неправильности заполнения формы регистрации


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


Рисунок 4.5-раздел «Autos»


Выбрав пункт меню «ClientBase» на экране появится таблица, содержащая информацию обо всех клиентах автосалона.

Перейдем к пункту меню «CkeckOut». Здесь пользователь может оформить свой заказ, ему будет предоставлена таблица доступных автомобилей, кликнув по нужному пункту, он перейдет к оформлению заказа

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


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

Внизу расположены две кнопки «Yes» и «No». В зависимости от выбора пользователя будет оформлен заказ или возврат на предыдущую страницу.

ЗАКЛЮЧЕНИЕ


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

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

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

ПРИЛОЖЕНИЕ А


(рекомендуемое)

Программный модуль административных операций

usingSystem;.Collections.Generic;.Linq;.Web;.Web.Mvc;.Web.Security;.Data.Entities.EntityFramework;.Data.Repositories.Interfaces;.Web.Constants;.Web.Helpers;.Web.Helpers.Enums;.Web.Models.Account;.Web.Models.Admin;.Web.Controllers

{

[Authorize(Roles = "Admin")]class AdminController : Controller

{_adminRepository;(IAdminRepositoryadminRepository)

{

_adminRepository = adminRepository;

}

[HttpGet]Index()

{View();

}

#region User actions

[HttpGet]Users()

{model = new EditModel {Users = _adminRepository.Users(), RegisterModel = new RegisterModel()};View(model);

}

[HttpPost](string login)

{

{= Membership.DeleteUser(login);(!isSuccess)

{new JsonResult

{Data = new {status = UserOperationStatus.Failure, message = "Can't delete user!"}};

}

}(Exception ex)

{new JsonResult {Data = new {status = UserOperationStatus.Failure, message = ex.Message}};

}new JsonResult {Data = new {status = UserOperationStatus.Success, message = ""}};

}


[HttpPost](string login)

{user = _adminRepository.GetUser(login);= Roles.GetRolesForUser(login)[0];new JsonResult {Data = new {login = user.UserName, email = user.Email, role = userRole}};

}

[HttpGet]()

{("_AdminRegisterTemplate");

}

[HttpPost]

[ValidateInput(false)](RegisterModel user, string role)

{

_adminRepository.CreateUser(user.Login, user.Password, user.Email, role);("Users", "Admin");

}

[HttpPost](string login)

{= (login != HttpUtility.HtmlEncode(login));(isLoginContainsHtml)

{new JsonResult {Data = new {status = UserOperationStatus.Failure, message = "Login must be without html tags!"}};

}user = _adminRepository.GetUser(login);user == null

? newJsonResult { Data = new { status = UserOperationStatus.Success, message = "" } }

: newJsonResult { Data = new { status = UserOperationStatus.Failure, message = "Current login already exists!" } };

}

[HttpPost](string login, string oldRole, string newRole)

{

{.RemoveUserFromRole(login, oldRole);.AddUserToRole(login, newRole);

}(Exception ex)

{new JsonResult {Data = new {status = UserOperationStatus.Failure, message = ex.Message}};

}new JsonResult {Data = new {status = UserOperationStatus.Success, message = ""}};

}

#endregion

#region News actions

[HttpGet]News()

{= _adminRepository.News();models = new List<NewsCommentsModel>(allNews.Count());(var news in allNews)

{= _adminRepository.GetCommentsCount(news.Id);.Add(new NewsCommentsModel {News = news, CommentsCount = commentsCount});

}View(models);

}

#endregion

ПРИЛОЖЕНИЕ Б


Диаграмма классов проекта


ПРИЛОЖЕНИЕВ


Схема базы данных


Оглавление ВВЕДЕНИЕ . АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ .1Анализ существующих аналогов .1.1 интернет-портал «onliner.by» .1.2 интернет-мага

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ