Автоматизированная информационная система магазина мебели

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,91 Мб
  • Опубликовано:
    2012-10-26
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Автоматизированная информационная система магазина мебели

Введение


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

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

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

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

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

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

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

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

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

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

Администратор способен редактировать, добавлять и удалять записи. Пользователь может только сортировать и просматривать магазин, ничего изменять он не может.

В курсовой работе использовался Microsoft SQLServer 2008 Exspress для создания базы данных, а также Microsoft Visual Studio 2010 Express для создания приложения. Использовалась ASP.Net MVC 2 технология для разработки современного и надежного проекта.

программный автоматизация каталог данные

1. Техническое задание

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

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

Режим администратора должен включать помимо возможностей пользователя следующие функции:

добавление записей (продавцы, производители и другие сведения);

изменение записей;

удаление записей.

Для входа в режиме администратора предусмотреть ввод пароля.

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

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

Кроме того данный программный продукт должен предоставлять пользователю возможность просмотра помощи (help) - руководство пользователя по эксплуатации.

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

3. Разработка алгоритмов решения

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

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

При редактировании записи осуществляется изменение данных в таблице, которую выбрал пользователь. На рисунке 3.2 представлена блок-схема алгоритма изменения записи, а на рисунке 3.3 представлена блок-схема алгоритма поиска записи.


Рисунок 3.2 - Блок схема алгоритма редактирования записи

Рисунок 3.3 Блок схема алгоритма поиска записи

4. Выбор и обоснование средств реализации

Для написания базы данных использовалась система управления реляционными базами данных SQLServer 2008 Exspress. Для использования программного продукта необходимы следующие системные требования:

-       Microsoft Windows XP с пакетом обновления 2 (SP2) или более поздней версии или Windows 7;

-       RAM: 64 Мбайт (рекомендуется 128 Мбайт);

-       Память на жестком диске: не менее 185 Мбайт;

-       Video: 800x600 при 256-цветовой палитре (рекомендуется 16 битовый High color).

Для создания приложения использовался ASP.Net MVC 2. Для использования программного продукта необходимы следующие системные требования:

-       Microsoft Windows XP с пакетом обновления 2 (SP2) или более поздней версии или Windows 7;

-       .NET 3.5 /.NET 3.5 SP1;

-       Visual Studio 2008 / SP1, или Visual Web Developer 2008 / SP1, или более поздние версии.

5 Описание Процесса Реализации

База данных представляет собой 9 сущностей, схема данных представлена в приложении А.

Рассмотрим сущности, из которых состоит БД с указанием всех индексов.

Сущность «Items» содержит в себе информацию о мебели. Описание ее полей приведено в таблице 2.1. Вид сущности представлен на рисунке 2.1.

Таблица 2.1 - Поля сущности «Items»


В данной сущности представлен один индекс - ItemId- Primary.

На рисунке 2.1 представлена сущность «Items».

Рисунок 2.1 - Просмотр сущности «Items»

В таблице 2.2 представлена информация о сущности «FurnitureType».

Таблица 2.2 - «FurnitureType»


В данной сущности представлен один индекс - FurnitureTypeId - Primary.

На рисунке 2.2 представлена сущность «FurnitureTypeId».

Рисунок 2.2 - Просмотр сущности «FurnitureTypeId»

В таблице 2.3 представлена информация о сущности «Countries».

Таблица 2.3 - «Countries»


В данной сущности представлен один индекс - CountryId - Primary.

На рисунке 2.3 представлена сущность «CountryId».

Рисунок 2.3 - Просмотр сущности «CountryId»

В таблице 2.4 представлена информация о сущности «Producers».

Таблица 2.4 - «Producers»


В данной сущности представлен один индекс - ProducerId - Primary.

На рисунке 2.4 представлена сущность «Producers».

Рисунок 2.4 - Просмотр сущности «Producers»

В таблице 2.5 представлена информация о сущности «ProducerToFurnitureType».

Таблица 2.5 - «ProducerToFurnitureType»


В данной сущности нет ключа, так как она помогает организовать связь «много-ко-многим» между сущностями «Producers» и «FurnitureType».

На рисунке 2.5 представлена сущность «ProducerToFurnitureType».

Рисунок 2.5 - Просмотр сущности «ProducerToFurnitureType»

В таблице 2.6 представлена информация о сущности «Sellers».

Таблица 2.6 - «Sellers»


В данной сущности представлен один индекс - SellerId- Primary.

На рисунке 2.6 представлена сущность «Sellers».

Рисунок 2.6 - Просмотр сущности «Sellers»

В таблице 2.7 представлена информация о сущности «ProducersToSellers».

Таблица 2.7 - «ProducersToSellers»


В данной сущности нет ключа, так как она помогает организовать связь «много-ко-многим» между сущностями «Producers» и «Sellers».

На рисунке 2.7 представлена сущность «ProducersToSellers».

Рисунок 2.7 - Просмотр сущности «ProducersToSellers»

В таблице 2.8 представлена информация о сущности «BusinessTypes».

Таблица 2.8 - «BusinessTypes»


В данной сущности представлен индекс - BusinessTypeId - Primary.

На рисунке 2.8 представлена сущность «BusinessTypes».

Рисунок 2.8 - Просмотр сущности «BusinessTypes»

В таблице 2.9 представлена информация о сущности «States».

Таблица 2.9 - «States»


В данной сущности представлен один индекс - StateId - Primary.

На рисунке 2.9 представлена сущность «States».

Рисунок 2.9 - Просмотр сущности «States»

Все сущности связаны между собой по ключевым полям. Сущность «FurnitureType» связана с сущностью «ProducerToFurnitureType» по ключевому полю «FurnitureTypeId», связь между сущностями - один ко многим. Связь между сущностями «Producers» и «ProducerToFurnitureType» - один ко многим - осуществляется по полю «ProducerId». Таким образом, между сущностями «FurnitureType» и «ProducerId» связь много ко многим.

Сущность «Producers» связана с сущностью «Items» по ключевому полю «ProducerId», связь - один ко многим.

Сущность «Sellers» связана с сущностью «ProducersToSellers» по ключевому полю «SellerId», связь между сущностями - один ко многим. Связь сущности «Producers» с сущностью «ProducersToSellers» по ключевому полю «ProducerId» один ко многим. С помощью сущности «ProducersToSellers» организована связь много ко многим между сущностями «Sellers» и «Producers».

Сущность «Sellers» связана с сущностью «Items» по ключевому полю «SellerId», связь - один ко многим.

Сущность «States» связана с сущностью «Items» по ключевому полю «StateId», связь между сущностями - один ко многим.

Сущность «BusinessTypes» связана с сущностью «Sellers» по ключевому полю «BusinessTypeId», связь - один ко многим.

Сущность «Countries» связана с сущностью «Sellers» по ключевому полю «CountrieId», связь - один ко многим.

Сущность «Countries» связана с сущностью «Producers» по ключевому полю «CountrieId», связь - один ко многим.

При проектировании базы данных все таблицы сведены к третьей нормальной форме.

Листинг программы приведен в приложении Б.

6. Руководство к пользованию

.1 Вход

Для входа необходимо запустить проект. В браузере отобразится главная форма согласно рисунку 6.1.

Рисунок 6.1 - Главная форма

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

После перехода на вкладку «Фабрики» отображается форма как на рисунке 6.2.

Рисунок 6.2 - Вкладка «Фабрики»

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

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

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

Рисунок 6.3 - Отображение информации о производителе с помощью ссылки «Подробнее…»

"Режим администратора" включает более широкие возможности. Доступен выбор активных ссылок «Отредактировать», «Добавить», «Удалить», которые позволяют редактировать, удалять и создавать новые записи.

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

Обычным пользователям будет предложено зарегистрироваться. Форма авторизации изображена на рисунке 6.4 и рисунке 6.5.

Рисунок 6.4 - Форма для входа

Рисунок 6.5 - Форма для регистрации

6.3 Изменение записей


Изменение записей возможно только в режиме администратора. Для этого режима нужно войти под именем администратора в форме входа. Необходимо выбрать рядом с редактируемой записью ссылку «Отредактировать».

Появится форма редактирования, как показано на рисунке 6.6. Изменения не будут сохранены, пока не будет нажата кнопка «Save». После нажатия этой кнопки будут сохранены изменения и выполнен переход к списку производителя.

Рисунок 6.6 - Форма редактирования

Если изменения решено не сохранять, предусмотрена ссылка «Вернуться к списку», которая выполнит переход на вкладку «Фабрики». При этом изменения сохранены не будут.

6.4 Удаление записей


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

6.5 Добавление записей


Создать новую запись может только администратор. Для этого режима нужно войти под именем администратора в форме входа. Чтобы создать новую запись на форме «Фабрики», над списком производителей мебели расположена ссылка «Добавить производителя». При ее активации выполнится переход на форму создания новой записи, как показано на рисунке 6.7.

Рисунок 6.7 - Форма создания новой записи

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

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

6.6 Поиск записи


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

Также можно ввести искомые данные в соответствующие поля и выполнится поиск подходящей мебели. Реализован частичный поиск, по части названия и т.п.

6.7 Другие вкладки

На главной форме также можно видеть вкладки «Товары», «Продавцы». Данные вкладки предназначены для ознакомительного просмотра. Они отображают объем информации, охватываемый данным интернет магазином.

На вкладках также реализованы возможности добавления, редактирования и удаления записей. Это позволяет администратору быстро пополнять и расширять базу данных. Также возможен просмотр дополнительных сведений. На рисунке 6.8 показана вкладка «Продавцы» как пример оформления других вкладок.

Рисунок 6.8 - Вкладка «Продавцы»

6.8 Справочная служба


При выборе на главной форме вкладки «Помощь» в браузере открывается файл помощи для пользователя, вид которого представлен на рисунке 6.9.

Рисунок 6.9 - Помощь

ЗАКЛЮЧЕНИЕ

В ходе выполнения курсового проекта был реализован интернет магазин мебели.

Данный продукт позволяет упростить поиск необходимой мебели, узнать ее контактный телефон, адрес, цену. База данных позволяет хранить большой объем информации. Достаточно просто расширять базу данных с течением времени, наполнять ее дополнительной информацией. Реализованы основные опции для работы с базой данных: визуальное отображение, возможность добавления, удаления, редактирования записей, поиск и т.п.

Данная программа может размещаться в сети Интернет.

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

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

[1] Microsoft® SQL Server™ 2005.Реализация и обслуживание. Учебный курс Microsoft.- М.: «Питер», 2007. - С. 767.

[2] Майо Д. Самоучитель Microsoft Visual Studio 2010. - C.: «БХВ-Петербург», 2010. - С. 464.

[3] М. Мак-Дональд, М. Шпушта Microsoft ASP.NET 3.5 с примерами на C# 2008 и Silverlight 2 для профессионалов. - 3-е издание. - М.: «Вильямс», 2009. - С. 1408.

[4] Роб Камерон, Дэйл Михалк ASP.NET 3.5, компоненты AJAX и серверные элементы управления для профессионалов. - М.: «Вильямс», 2009. - С. 608.

[5] Лабораторный практикум по курсу «Базы и банки данных» для студентов специальности 53 01 02 “Автоматизированные системы обработки информации” дневн. и дистанц. форм обуч. / О.В. Герман. - Мн.: БГУИР, 2006. - 62 с.

[6] Батин, Н.В., Слуянова Т.В. Лабораторный практикум по курсу «Основы автоматизированного управления» для студентов специальности «Автоматизированные системы обработки информации» дневной и дистанционной форм обучения / Н.В. Батин, Т.В. Слуянова. - Мн.: БГУИР, 2004. - 49 с.

Приложение A

(справочное)

Схема данных



Приложение Б

(справочное)

 

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


Контроллер для авторизации:

using System;System.Collections.Generic;System.Diagnostics.CodeAnalysis;System.Linq;System.Security.Principal;System.Web;System.Web.Mvc;System.Web.Routing;System.Web.Security;FurnitureCatalog.Models;

FurnitureCatalog.Controllers

{

[HandleError]class AccountController: Controller

{DataManager _dataManager;

AccountController(DataManager dataManager)

{

_dataManager = dataManager;

}IFormsAuthenticationService FormsService { get; set; }IMembershipService MembershipService { get; set; }

override void Initialize(RequestContext requestContext)

{(FormsService == null) { FormsService = new FormsAuthenticationService(); }(MembershipService == null) { MembershipService = new AccountMembershipService(); }

.Initialize(requestContext);

}

// **************************************

// URL: /Account/LogOn

// **************************************

ActionResult LogOn()

{View();

}

[HttpPost]ActionResult LogOn(LogOnModel model, string returnUrl)

{(ModelState.IsValid)

{(MembershipService.ValidateUser(model.UserName, model.Password))

{.SignIn(model.UserName, model.RememberMe);(!String.IsNullOrEmpty(returnUrl))

{Redirect(returnUrl);

}

{RedirectToAction("Index", "Home");

}

}

{.AddModelError("", "Имя пользователя или пароль указаны неверно.");

}

}

// Появление этого сообщения означает наличие ошибки; повторное отображение формы

return View(model);

}

// **************************************

// URL: /Account/LogOff

// **************************************

ActionResult LogOff()

{.SignOut();

RedirectToAction("Index", "Home");

}

// **************************************

// URL: /Account/Register

// **************************************

ActionResult Register()

{["PasswordLength"] = MembershipService.MinPasswordLength;View();

}

[HttpPost]ActionResult Register(RegisterModel model)

{(ModelState.IsValid)

{

// Попытка зарегистрировать пользователя

MembershipCreateStatus createStatus = MembershipService.CreateUser(model.UserName, model.Password, model.Email);

(createStatus == MembershipCreateStatus.Success)

{.SignIn(model.UserName, false /* createPersistentCookie */);RedirectToAction("Index", "Home");

}

{.AddModelError("", AccountValidation.ErrorCodeToString(createStatus));

}

}

// Появление этого сообщения означает наличие ошибки; повторное отображение формы

ViewData["PasswordLength"] = MembershipService.MinPasswordLength;View(model);

}

// **************************************

// URL: /Account/ChangePassword

// **************************************

[Authorize]ActionResult ChangePassword()

{["PasswordLength"] = MembershipService.MinPasswordLength;View();

}

[Authorize]

[HttpPost]ActionResult ChangePassword(ChangePasswordModel model)

{(ModelState.IsValid)

{(MembershipService.ChangePassword(User.Identity.Name, model.OldPassword, model.NewPassword))

{RedirectToAction("ChangePasswordSuccess");

}

{.AddModelError("", "Неправильный текущий пароль или недопустимый новый пароль.");

}

}

// Появление этого сообщения означает наличие ошибки; повторное отображение формы

ViewData["PasswordLength"] = MembershipService.MinPasswordLength;View(model);

}

// **************************************

// URL: /Account/ChangePasswordSuccess

// **************************************

ActionResult ChangePasswordSuccess()

{

return View();

}

}

}

Контроллер для «Товаров»

using System;System.Collections.Generic;System.Linq;System.Web;System.Web.Mvc;FurnitureCatalog.Models;

FurnitureCatalog.Controllers

{class ItemController: Controller

{DataManager _dataManager;

ItemController(DataManager dataManager)

{

_dataManager = dataManager;

}

//

// GET: /Item/

ActionResult Item(int id)

{["Title"] = "Список товаров";["Items"] = _dataManager.Items.GetItemsNotSort();.Model = _dataManager.Items.GetItem(id);View();

}

ActionResult Delete(int id)

{

_dataManager.Items.DeleteItem(id);RedirectToAction("Index", "Home");

}

[AcceptVerbs(HttpVerbs.Get)]ActionResult Edit(int id)

{s = _dataManager.Items.GetItem(id);

.Model = s;(s);View();

}

void SetEditLists(Items s)

{["Sellers"] = new SelectList(_dataManager.Sellers.GetSellers(), "SellerId", "SellerName", s.SellerId);["States"] = new SelectList(_dataManager.States.GetStates(), "StateId", "StateName", s.StateId);["Producers"] = new SelectList(_dataManager.Producers.GetProducers(), "ProducerId", "ProducerName", s.ProducerId);

}

[AcceptVerbs(HttpVerbs.Post)]ActionResult Edit(int id, Items s)

{

(s.ItemName.Length < 3) ModelState.AddModelError("ItemName", "Имя производителя должно быть больше 2 символов!");(s.Description != null && s.Description.Length < 3) ModelState.AddModelError("Description", "Описание должно быть больше 2 символов!");(s);(ModelState.IsValid)

{.ItemId = id;

_dataManager.Items.UpdateItem(s);

//return RedirectToAction("Item", new {id = s.ItemId});RedirectToAction("Item", "Item", new {id = s.ItemId});

}

View();

}

[AcceptVerbs(HttpVerbs.Get)]ActionResult Add()

{["Sellers"] = new SelectList(_dataManager.Sellers.GetSellers(), "SellerId", "SellerName");["Items"] = _dataManager.Items.GetItemsNotSort();View();

}

[AcceptVerbs(HttpVerbs.Post)]ActionResult Add(string itemName, string description, string contacts)

{(itemName == null && itemName.Length < 3) ModelState.AddModelError("ItemName", "Имя производителя должно быть больше 2 символов!");(description == null && description.Length < 3) ModelState.AddModelError("Description", "Описание должно быть больше 2 символов!");

(ModelState.IsValid)

{i = _dataManager.Items.CreateItem(itemName, description);RedirectToAction("Edit", new {id = i.ItemId});

}View();

}

}

}

Контроллер для производителейSystem;

using System.Collections.Generic;System.Linq;System.Web;System.Web.Mvc;FurnitureCatalog.Models;

FurnitureCatalog.Controllers

{class ProducerController: Controller

{DataManager _dataManager;

ProducerController(DataManager dataManager)

{

_dataManager = dataManager;

}

//

// GET: /Producer/

ActionResult List()

{["Title"] = "Список производителей";["Producers"] = _dataManager.Producers.GetProducers();["ProducersReverse"] = _dataManager.Producers.GetProducersReverse();

View();

}

ActionResult List2()

{["Title"] = "Список производителей";["Producers"] = _dataManager.Producers.GetProducers();["ProducersReverse"] = _dataManager.Producers.GetProducersReverse();

View();

}

ActionResult Producer(int id)

{

.Model = _dataManager.Producers.GetProducer(id);View();

}

ActionResult Delete(int id)

{

_dataManager.Producers.DeleteProducer(id);RedirectToAction("List");

}

[AcceptVerbs(HttpVerbs.Get)]ActionResult Edit(int id)

{s = _dataManager.Producers.GetProducer(id);

.Model = s;(s);View();

}

void SetEditLists(Producers s)

{["Countries"] = new SelectList(_dataManager.Countries.GetCountries(), "CountryId", "CountryName", s.CountryId);["FurnitureTypes"] = new SelectList(_dataManager.BusinessTypes.GetBusinessTypes(), "BusinessTypeId", "BusinessTypeName",.FurnitureTypeId);

}

[AcceptVerbs(HttpVerbs.Post)]ActionResult Edit(int id, Producers s)

{

(s.ProducerName.Length < 3) ModelState.AddModelError("ProducerName", "Имя производителя должно быть больше 2 символов!");(s.Description != null && s.Description.Length < 3) ModelState.AddModelError("Description", "Описание должно быть больше 2 символов!");

(ModelState.IsValid)

{.ProducerId = id;

}

(s);View();

}

[AcceptVerbs(HttpVerbs.Get)]ActionResult Add()

{View();

}

[AcceptVerbs(HttpVerbs.Post)]ActionResult Add(string producerName, string description, string contacts)

{(producerName == null && producerName.Length < 3) ModelState.AddModelError("ProducerName", "Имя производителя должно быть больше 2 символов!");(description == null && description.Length < 3) ModelState.AddModelError("Description", "Описание должно быть больше 2 символов!");

(ModelState.IsValid)

{

_dataManager.Producers.CreateProducer(producerName, description, contacts);RedirectToAction("List");

}View();

}

}

}

Контроллер для «Продавцов»System;

using System.Collections.Generic;System.Linq;System.Web;System.Web.Mvc;FurnitureCatalog.Models;

FurnitureCatalog.Controllers

{class SellerController: Controller

{DataManager _dataManager;

SellerController(DataManager dataManager)

{

_dataManager = dataManager;

}

//

// GET: /Seller/

ActionResult List()

{["Title"] = "Список продавцов";["Sellers"] = _dataManager.Sellers.GetSellers();["SellersReverse"] = _dataManager.Sellers.GetSellersReverse();View();

}

ActionResult List2()

{["Title"] = "Список продавцов";["Sellers"] = _dataManager.Sellers.GetSellers();["SellersReverse"] = _dataManager.Sellers.GetSellersReverse();View();

}

ActionResult Seller(int id)

{

.Model = _dataManager.Sellers.GetSeller(id);View();

}

ActionResult Delete(int id)

{

_dataManager.Sellers.DeleteSeller(id);RedirectToAction("List");

}

[AcceptVerbs(HttpVerbs.Get)]ActionResult Edit(int id)

{s = _dataManager.Sellers.GetSeller(id);

.Model = s;(s);View();

}

void SetEditLists(Sellers s)

{["Countries"] = new SelectList(_dataManager.Countries.GetCountries(), "CountryId", "CountryName", s.CountryId);["BusinessTypes"] = new SelectList(_dataManager.BusinessTypes.GetBusinessTypes(), "BusinessTypeId", "BusinessTypeName",.BusinessTypeId);

}

[AcceptVerbs(HttpVerbs.Post)]ActionResult Edit(int id, Sellers s)

{

(s.SellerName.Length < 3) ModelState.AddModelError("SellerName", "Имя продавца должно быть больше 2 символов!");(s.Description != null && s.Description.Length < 3) ModelState.AddModelError("Description", "Описание должно быть больше 2 символов!");

(ModelState.IsValid)

{.SellerId = id;

_dataManager.Sellers.UpdateSeller(s);RedirectToAction("List");

}

(s);View();

}

[AcceptVerbs(HttpVerbs.Get)]ActionResult Add()

{View();

}

[AcceptVerbs(HttpVerbs.Post)]

[Authorize(Roles = "Administrator")]ActionResult Add(string sellerName, string description, string contacts)

{(sellerName == null && sellerName.Length < 3) ModelState.AddModelError("SellerName", "Имя продавца должно быть больше 2 символов!");(description == null && description.Length < 3) ModelState.AddModelError("Description", "Описание должно быть больше 2 символов!");

(ModelState.IsValid)

{

_dataManager.Sellers.CreateSeller(sellerName, description, contacts);RedirectToAction("List");

}View();

}

}

}

Контроллер для «Помощи и поиска»

using System;System.Collections.Generic;System.Linq;System.Web;System.Web.Mvc;FurnitureCatalog.Models;

FurnitureCatalog.Controllers

{

[HandleError]class HomeController: Controller

{ DataManager _dataManager;

HomeController(DataManager dataManager)

{

_dataManager = dataManager;

}

ActionResult Index()

{["Message"] = "Добро пожаловать в электронный каталог мебели!";["Sellers"] = new SelectList(_dataManager.Sellers.GetSellers(), "SellerId", "SellerName");["States"] = new SelectList(_dataManager.States.GetStates(), "StateId", "StateName");["Producers"] = new SelectList(_dataManager.Producers.GetProducers(), "ProducerId", "ProducerName");

View();

}

[HttpPost]ActionResult About(string itemName)

{["SimpleSearchResults"] = _dataManager.Items.GetItems().Where(x => x.ItemName.Contains(itemName));

ViewData["Message"] = "Добро пожаловать в электронный каталог мебели!";

ViewData["Sellers"] = new SelectList(_dataManager.Sellers.GetSellers(), "SellerId", "SellerName");["States"] = new SelectList(_dataManager.States.GetStates(), "StateId", "StateName");["Producers"] = new SelectList(_dataManager.Producers.GetProducers(), "ProducerId", "ProducerName");View();

}

ActionResult About()

{["Message"] = "Добро пожаловать в электронный каталог мебели!";

ViewData["Sellers"] = new SelectList(_dataManager.Sellers.GetSellers(), "SellerId", "SellerName");["States"] = new SelectList(_dataManager.States.GetStates(), "StateId", "StateName");["Producers"] = new SelectList(_dataManager.Producers.GetProducers(), "ProducerId", "ProducerName");View();

}

[HttpPost]ActionResult AboutExtended(string itemName, int producerid, int stateId)

{["Sellers"] = new SelectList(_dataManager.Sellers.GetSellers(), "SellerId", "SellerName");["States"] = new SelectList(_dataManager.States.GetStates(), "StateId", "StateName");["Producers"] = new SelectList(_dataManager.Producers.GetProducers(), "ProducerId", "ProducerName");["SimpleSearchResults"] =

_dataManager.Items.GetItems().Where(x => x.ItemName.Contains(itemName) && x.States.StateId == stateId && x.Producers.ProducerId == producerid);

ViewData["Message"] = "Добро пожаловать в электронный каталог мебели!";

return View();

}

ActionResult AboutExtended()

{["Message"] = "Добро пожаловать в электронный каталог мебели!";

ViewData["Sellers"] = new SelectList(_dataManager.Sellers.GetSellers(), "SellerId", "SellerName");["States"] = new SelectList(_dataManager.States.GetStates(), "StateId", "StateName");["Producers"] = new SelectList(_dataManager.Producers.GetProducers(), "ProducerId", "ProducerName");View();

}ActionResult Item(int id)

{["Title"] = "Список товаров";["Items"] = _dataManager.Items.GetItemsNotSort();.Model = _dataManager.Items.GetItem(id);View();

}

}

}

Репозитории для товаровSystem;System.Collections.Generic;System.Linq;System.Web;

FurnitureCatalog.Models

{class ItemsRepository

{FurnitureModelDataContext _datacontext;

ItemsRepository(FurnitureModelDataContext datacontext)

{

_datacontext = datacontext;

}

IEnumerable<Items> GetItems()

{_datacontext.Items.OrderBy(c => c.ItemName);

}

IEnumerable<Items> GetItemsNotSort()

{_datacontext.Items.OrderBy(c => c.ItemId);

}

Items GetItem(int itemId)

{_datacontext.Items.SingleOrDefault(s => s.ItemId == itemId);

}

Items CreateItem(string itemName, string description)

{S = new Items { ItemName = itemName, Description = description};

_datacontext.Items.InsertOnSubmit(S);

_datacontext.SubmitChanges();S;

}

void UpdateItem(Items s)

{dbItem = GetItem(s.ItemId);.ItemName = s.ItemName;.SellerId = s.SellerId;.ProducerId = s.ProducerId;.StateId = s.StateId;.Description = s.Description;

_datacontext.SubmitChanges();

}

void DeleteItem(int ItemId)

{s = GetItem(ItemId);

_datacontext.Items.DeleteOnSubmit(s);

}

}

}

Репозитории для продавцовSystem;

using System.Collections.Generic;System.Linq;System.Web;

FurnitureCatalog.Models

{class SellersRepository

{FurnitureModelDataContext _datacontext;

SellersRepository(FurnitureModelDataContext datacontext)

{

_datacontext = datacontext;

}

IEnumerable<Sellers> GetSellers()

{_datacontext.Sellers.OrderBy(c => c.SellerName);

}

IEnumerable<Sellers> GetSellersReverse()

{_datacontext.Sellers.OrderByDescending(c => c.SellerName);

}

Sellers GetSeller(int sellerId)

{_datacontext.Sellers.SingleOrDefault(s => s.SellerId == sellerId);

}

Sellers CreateSeller(string sellerName, string description, string contacts)

{S = new Sellers {SellerName = sellerName, Description = description, Contacts = contacts, CountryId = 1, BusinessTypeId = 1, ProducerId = 1};

_datacontext.Sellers.InsertOnSubmit(S);

_datacontext.SubmitChanges();S;

}

void UpdateSeller(Sellers s)

{dbSeller = GetSeller(s.SellerId);.SellerName = s.SellerName;

dbSeller.BusinessTypeId = s.BusinessTypeId;.Contacts = s.Contacts;.CountryId = s.CountryId;.Description = s.Description;

_datacontext.SubmitChanges();

}

void DeleteSeller(int sellerId)

{s = GetSeller(sellerId);

_datacontext.Sellers.DeleteOnSubmit(s);

_datacontext.SubmitChanges();

}

}

}

Репозитории для производителейSystem;System.Collections.Generic;System.Linq;System.Web;

FurnitureCatalog.Models.Repositories

{class ProducersRepository

{FurnitureModelDataContext _datacontext;

ProducersRepository(FurnitureModelDataContext datacontext)

{

_datacontext = datacontext;

}

IEnumerable<Producers> GetProducers()

{_datacontext.Producers.OrderBy(c => c.ProducerName);

}

IEnumerable<Producers> GetProducersReverse()

{_datacontext.Producers.OrderByDescending(c => c.ProducerName);

}

Producers GetProducer(int producerId)

{_datacontext.Producers.SingleOrDefault(s => s.ProducerId == producerId);

}

Producers CreateProducer(string producerName, string description, string contacts)

{S = new Producers {ProducerName = producerName, Description = description, Contacts = contacts, CountryId = 1, FurnitureTypeId = 1};

_datacontext.Producers.InsertOnSubmit(S);

_datacontext.SubmitChanges();S;

}

void UpdateProducer(Producers s)

{dbProducer = GetProducer(s.ProducerId);.ProducerName = s.ProducerName;.FurnitureTypeId = s.FurnitureTypeId;.Contacts = s.Contacts;.CountryId = s.CountryId;.Description = s.Description;

_datacontext.SubmitChanges();

}

void DeleteProducer(int producerId)

{s = GetProducer(producerId);

_datacontext.Producers.DeleteOnSubmit(s);

_datacontext.SubmitChanges();

}

}

}

Общий класс DataManagerSystem;System.Collections.Generic;System.Linq;System.Web;FurnitureCatalog.Models.Repositories;

FurnitureCatalog.Models

{class DataManager

{FurnitureModelDataContext _datacontext;

//public DataManager()

//{

// _datacontext = new FurnitureModelDataContext();

//}

DataManager(string connectionString)

{

_datacontext = new FurnitureModelDataContext(connectionString);

}

MembershipRepository _membershipRepository;MembershipRepository Membership

{

{(_membershipRepository == null)

_membershipRepository = new MembershipRepository();_membershipRepository;

}

}

ItemsRepository _itemsRepository;ItemsRepository Items

{

{(_itemsRepository == null)

_itemsRepository = new ItemsRepository(_datacontext);_itemsRepository;

}

}

SellersRepository _sellersRepository;SellersRepository Sellers

{

{(_sellersRepository == null)

_sellersRepository = new SellersRepository(_datacontext);_sellersRepository;

}

}

CountriesRepository _countriesRepository;CountriesRepository Countries

{

{(_countriesRepository == null)

_countriesRepository = new CountriesRepository(_datacontext);_countriesRepository;

}

}

StatesRepository _statesRepository;StatesRepository States

{

{(_statesRepository == null)

_statesRepository = new StatesRepository(_datacontext);_statesRepository;

}

}

BusinessTypesRepository _businesstypesRepository;BusinessTypesRepository BusinessTypes

{

{(_businesstypesRepository == null)

_businesstypesRepository = new BusinessTypesRepository(_datacontext);_businesstypesRepository;

}

}

ProducersRepository _producersRepository;ProducersRepository Producers

{

{(_producersRepository == null)

_producersRepository = new ProducersRepository(_datacontext);

return _producersRepository;

}

}

}

}

Представление для «Производителя» - «Редактировать запись»

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<FurnitureCatalog.Models.Producers>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">

Редактирование производителя

</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2>Редактирование производителя</h2>

<% using (Html.BeginForm()) {%>

<%: Html.ValidationSummary(true) %>

<fieldset>

<legend>Fields</legend>

<div>

<%: Html.LabelFor(model => model.ProducerName) %>

</div>

<div>

<%: Html.TextBoxFor(model => model.ProducerName) %>

<%: Html.ValidationMessageFor(model => model.ProducerName) %>

</div>

<div>

<%: Html.LabelFor(model => model.Description) %>

</div>

<div>

<%: Html.TextAreaFor(model => model.Description) %>

<%: Html.ValidationMessageFor(model => model.Description) %>

</div>

<div>

<%: Html.LabelFor(model => model.Contacts) %>

</div>

<div>

<%: Html.TextAreaFor(model => model.Contacts) %>

<%: Html.ValidationMessageFor(model => model.Contacts) %>

</div>

<div>

<%: Html.LabelFor(model => model.CountryId) %>

</div>

<div>

<%: Html.DropDownListFor(model => model.Countries.CountryId, (IEnumerable<SelectListItem>)ViewData["Countries"])%>

<%: Html.ValidationMessageFor(model => model.CountryId) %>

</div>

<p>

<input type="submit" value="Save" />

</p>

</fieldset>

<% } %>

<div>

<%: Html.ActionLink("Вернуться к списку", "List") %>

</div>

</asp:Content>

Представление для «Производителя» - «Список»

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

<%@ Import Namespace="FurnitureCatalog.Models" %>


<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">

<%= ViewData["Title"] %>

</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2><%= ViewData["Title"] %></h2>

<table>

<tr>

<td>

Производитель

</td>

<td>

Страна

</td>

<td>

</td>

</tr>

<% foreach (Producers s in (IEnumerable<Producers>)ViewData["Producers"])

{ %>

<tr>

<td>

<%= s.ProducerName%>

</td>

<td>

<%= s.Countries.CountryName%>

</td>

<td>

<%= Html.ActionLink("Подробнее...", "Producer", new { id = s.ProducerId}) %>

</td>

</tr>

<% } %>

<div>

<%=Html.ActionLink("Сортировать", "List2")%>

</div>

<% if (HttpContext.Current.User.Identity.IsAuthenticated)

{%>

<div>

</div>

<%

}%>

</table>

</asp:Content>

Представление для «Товаров» - «Редактирование»

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<FurnitureCatalog.Models.Items>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">

Редактирование товара

</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2>Редактирование товара</h2>

<% using (Html.BeginForm()) {%>

<%: Html.ValidationSummary(true) %>

<fieldset>

<legend>Fields</legend>

<div>

<%: Html.LabelFor(model => model.ItemName) %>

</div>

<div>

<%: Html.TextAreaFor(model => model.ItemName) %>

<%: Html.ValidationMessageFor(model => model.ItemName) %>

</div>

<div>

<%: Html.LabelFor(model => model.Producers.ProducerName) %>

</div>

<div>

<%: Html.DropDownListFor(model => model.Producers.ProducerId, (IEnumerable<SelectListItem>)ViewData["Producers"])%>

<%: Html.ValidationMessageFor(model => model.Producers.ProducerName) %>

</div>

<div>

<%: Html.LabelFor(model => model.Description) %>

</div>

<div>

<%: Html.TextAreaFor(model => model.Description) %>

<%: Html.ValidationMessageFor(model => model.Description) %>

</div>

<div>

<%: Html.LabelFor(model => model.Sellers.SellerName) %>

</div>

<div>

<%: Html.DropDownListFor(model => model.Sellers.SellerId, (IEnumerable<SelectListItem>)ViewData["Sellers"])%>

<%: Html.ValidationMessageFor(model => model.Sellers.SellerName) %>

</div>

<div>

<%: Html.LabelFor(model => model.States.StateName) %>

</div>

<div>

<%: Html.DropDownListFor(model => model.States.StateId, (IEnumerable<SelectListItem>)ViewData["States"])%>

<%: Html.ValidationMessageFor(model => model.States.StateName) %>

</div>

<div>

<%: Html.LabelFor(model => model.Year) %>

</div>

<div>

<!-- <%: Html.TextBoxFor(model => model.Year) %> -->

<%: Html.TextBoxFor(model => model.Year)%>

<%: Html.ValidationMessageFor(model => model.Year) %>

</div>

<div>

<label> Внимание! Убедитесь, что в каталоге с программой присутствует изображение <%= Model.ItemId.ToString()%>.jpg</label>

</div>

<p>

<input type="submit" value="Сохранить" />

</p>

</fieldset>

<% } %>

</asp:Content>

Для организации поиска и всплывающей панели:

<script type="text/javascript">

$('.filter-area').toggle();

$("#showFilters").click(function () {

$('.filter-area').toggle('slow');

});

</script>

Похожие работы на - Автоматизированная информационная система магазина мебели

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!