Автоматизированная информационная система магазина мебели
Разработка программного обеспечения для автоматизации каталога мебели с использованием SQLServer, 2008 Exspress. Алгоритмы, реализующие определенные операции с базой данных. Создание системы запросов для добавления, удаления и изменения данных в таблицах.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 14.12.2012 |
Размер файла | 2,9 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Введение
Банк данных - автоматизированная информационная система централизованного хранения и коллективного использования данных. В состав банка данных входят одна или несколько баз данных, справочник баз данных, СУБД, а также библиотеки запросов и прикладных программ.
База данных - это совокупность сведений о конкретных объектах реального мира в какой-либо предметной области. Под предметной областью принято понимать часть реального мира, подлежащего изучению для организации управления и, в конечном счете, автоматизации, например предприятие, вуз и т д.
Создавая базу данных, пользователь стремится упорядочить информацию по различным признакам и быстро извлекать выборку с произвольным сочетанием признаков. Сделать это возможно, только если данные структурированы.
В современной технологии баз данных предполагается, что создание базы данных, ее поддержка и обеспечение доступа пользователей к ней осуществляются централизованно с помощью специального программного инструментария -- системы управления базами данных.
Система управления базами данных (СУБД) -- это комплекс программных и языковых средств, необходимых для создания баз данных, поддержания их в актуальном состоянии и организации поиска в них необходимой информации.
Централизованный характер управления данными в базе данных предполагает необходимость существования некоторого лица (группы лиц), на которое возлагаются функции администрирования данными, хранимыми в базе. СУБД обеспечивают - набор средств для поддержки таблиц и отношений между связанными таблицами - развитый пользовательский интерфейс, который позволяет вводить и модифицировать информацию, выполнять поиск и представлять информацию в графическом или текстовом режиме - средства программирования высокого уровня, с помощью которых можно создавать собственные приложения.
На сегодняшний день существует множество всевозможных СУБД, которые отличаются между собой различными алгоритмами обработки данных.
Задачей данного курсового проекта является разработка интернет магазина мебели. Интернет магазин может являться удобным справочным средством для пользователей и для специальных справочных служб. В нем можно увидеть перечень мебели.
На данный момент в сети Интернет можно увидеть много магазинов мебели, найти их сайты или получить их контакты. Выбрать лучшую мебель, для удобства в вашем доме, становится для клиента сложной задачей. Данный интернет магазин объединяет всю интересующую пользователя информацию для быстрого поиска мебели. На этом основании можно считать работу актуальной.
Данная работа должна содержать в себе функцию для поиска и просмотра сведений об интересующей мебели.
Администратор способен редактировать, добавлять и удалять записи. Пользователь может только сортировать и просматривать магазин, ничего изменять он не может.
В курсовой работе использовался 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. Руководство к пользованию
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;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Security.Principal;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using System.Web.Security;
using FurnitureCatalog.Models;
namespace FurnitureCatalog.Controllers
{
[HandleError]
public class AccountController: Controller
{
protected DataManager _dataManager;
public AccountController(DataManager dataManager)
{
_dataManager = dataManager;
}
public IFormsAuthenticationService FormsService { get; set; }
public IMembershipService MembershipService { get; set; }
protected override void Initialize(RequestContext requestContext)
{
if (FormsService == null) { FormsService = new FormsAuthenticationService(); }
if (MembershipService == null) { MembershipService = new AccountMembershipService(); }
base.Initialize(requestContext);
}
// **************************************
// URL: /Account/LogOn
// **************************************
public ActionResult LogOn()
{
return View();
}
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (MembershipService.ValidateUser(model.UserName, model.Password))
{
FormsService.SignIn(model.UserName, model.RememberMe);
if (!String.IsNullOrEmpty(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError("", "Имя пользователя или пароль указаны неверно.");
}
}
// Появление этого сообщения означает наличие ошибки; повторное отображение формы
return View(model);
}
// **************************************
// URL: /Account/LogOff
// **************************************
public ActionResult LogOff()
{
FormsService.SignOut();
return RedirectToAction("Index", "Home");
}
// **************************************
// URL: /Account/Register
// **************************************
public ActionResult Register()
{
ViewData["PasswordLength"] = MembershipService.MinPasswordLength;
return View();
}
[HttpPost]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
// Попытка зарегистрировать пользователя
MembershipCreateStatus createStatus = MembershipService.CreateUser(model.UserName, model.Password, model.Email);
if (createStatus == MembershipCreateStatus.Success)
{
FormsService.SignIn(model.UserName, false /* createPersistentCookie */);
return RedirectToAction("Index", "Home");
}
else
{
ModelState.AddModelError("", AccountValidation.ErrorCodeToString(createStatus));
}
}
// Появление этого сообщения означает наличие ошибки; повторное отображение формы
ViewData["PasswordLength"] = MembershipService.MinPasswordLength;
return View(model);
}
// **************************************
// URL: /Account/ChangePassword
// **************************************
[Authorize]
public ActionResult ChangePassword()
{
ViewData["PasswordLength"] = MembershipService.MinPasswordLength;
return View();
}
[Authorize]
[HttpPost]
public ActionResult ChangePassword(ChangePasswordModel model)
{
if (ModelState.IsValid)
{
if (MembershipService.ChangePassword(User.Identity.Name, model.OldPassword, model.NewPassword))
{
return RedirectToAction("ChangePasswordSuccess");
}
else
{
ModelState.AddModelError("", "Неправильный текущий пароль или недопустимый новый пароль.");
}
}
// Появление этого сообщения означает наличие ошибки; повторное отображение формы
ViewData["PasswordLength"] = MembershipService.MinPasswordLength;
return View(model);
}
// **************************************
// URL: /Account/ChangePasswordSuccess
// **************************************
public ActionResult ChangePasswordSuccess()
{
return View();
}
}
}
Контроллер для «Товаров»
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using FurnitureCatalog.Models;
namespace FurnitureCatalog.Controllers
{
public class ItemController: Controller
{
private DataManager _dataManager;
public ItemController(DataManager dataManager)
{
_dataManager = dataManager;
}
//
// GET: /Item/
public ActionResult Item(int id)
{
ViewData["Title"] = "Список товаров";
ViewData["Items"] = _dataManager.Items.GetItemsNotSort();
ViewData.Model = _dataManager.Items.GetItem(id);
return View();
}
public ActionResult Delete(int id)
{
_dataManager.Items.DeleteItem(id);
return RedirectToAction("Index", "Home");
}
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Edit(int id)
{
Items s = _dataManager.Items.GetItem(id);
ViewData.Model = s;
SetEditLists(s);
return View();
}
private void SetEditLists(Items s)
{
ViewData["Sellers"] = new SelectList(_dataManager.Sellers.GetSellers(), "SellerId", "SellerName", s.SellerId);
ViewData["States"] = new SelectList(_dataManager.States.GetStates(), "StateId", "StateName", s.StateId);
ViewData["Producers"] = new SelectList(_dataManager.Producers.GetProducers(), "ProducerId", "ProducerName", s.ProducerId);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, Items s)
{
if (s.ItemName.Length < 3) ModelState.AddModelError("ItemName", "Имя производителя должно быть больше 2 символов!");
if (s.Description != null && s.Description.Length < 3) ModelState.AddModelError("Description", "Описание должно быть больше 2 символов!");
SetEditLists(s);
if (ModelState.IsValid)
{
s.ItemId = id;
_dataManager.Items.UpdateItem(s);
//return RedirectToAction("Item", new {id = s.ItemId});
return RedirectToAction("Item", "Item", new {id = s.ItemId});
}
return View();
}
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Add()
{
ViewData["Sellers"] = new SelectList(_dataManager.Sellers.GetSellers(), "SellerId", "SellerName");
ViewData["Items"] = _dataManager.Items.GetItemsNotSort();
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Add(string itemName, string description, string contacts)
{
if (itemName == null && itemName.Length < 3) ModelState.AddModelError("ItemName", "Имя производителя должно быть больше 2 символов!");
if (description == null && description.Length < 3) ModelState.AddModelError("Description", "Описание должно быть больше 2 символов!");
if(ModelState.IsValid)
{
Items i = _dataManager.Items.CreateItem(itemName, description);
return RedirectToAction("Edit", new {id = i.ItemId});
}
return View();
}
}
}
Контроллер для производителей
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using FurnitureCatalog.Models;
namespace FurnitureCatalog.Controllers
{
public class ProducerController: Controller
{
private DataManager _dataManager;
public ProducerController(DataManager dataManager)
{
_dataManager = dataManager;
}
//
// GET: /Producer/
public ActionResult List()
{
ViewData["Title"] = "Список производителей";
ViewData["Producers"] = _dataManager.Producers.GetProducers();
ViewData["ProducersReverse"] = _dataManager.Producers.GetProducersReverse();
return View();
}
public ActionResult List2()
{
ViewData["Title"] = "Список производителей";
ViewData["Producers"] = _dataManager.Producers.GetProducers();
ViewData["ProducersReverse"] = _dataManager.Producers.GetProducersReverse();
return View();
}
public ActionResult Producer(int id)
{
ViewData.Model = _dataManager.Producers.GetProducer(id);
return View();
}
public ActionResult Delete(int id)
{
_dataManager.Producers.DeleteProducer(id);
return RedirectToAction("List");
}
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Edit(int id)
{
Producers s = _dataManager.Producers.GetProducer(id);
ViewData.Model = s;
SetEditLists(s);
return View();
}
private void SetEditLists(Producers s)
{
ViewData["Countries"] = new SelectList(_dataManager.Countries.GetCountries(), "CountryId", "CountryName", s.CountryId);
ViewData["FurnitureTypes"] = new SelectList(_dataManager.BusinessTypes.GetBusinessTypes(), "BusinessTypeId", "BusinessTypeName",
s.FurnitureTypeId);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, Producers s)
{
if (s.ProducerName.Length < 3) ModelState.AddModelError("ProducerName", "Имя производителя должно быть больше 2 символов!");
if (s.Description != null && s.Description.Length < 3) ModelState.AddModelError("Description", "Описание должно быть больше 2 символов!");
if (ModelState.IsValid)
{
s.ProducerId = id;
_dataManager.Producers.UpdateProducer(s);
return RedirectToAction("List");
}
SetEditLists(s);
return View();
}
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Add()
{
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Add(string producerName, string description, string contacts)
{
if (producerName == null && producerName.Length < 3) ModelState.AddModelError("ProducerName", "Имя производителя должно быть больше 2 символов!");
if (description == null && description.Length < 3) ModelState.AddModelError("Description", "Описание должно быть больше 2 символов!");
if(ModelState.IsValid)
{
_dataManager.Producers.CreateProducer(producerName, description, contacts);
return RedirectToAction("List");
}
return View();
}
}
}
Контроллер для «Продавцов»
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using FurnitureCatalog.Models;
namespace FurnitureCatalog.Controllers
{
public class SellerController: Controller
{
private DataManager _dataManager;
public SellerController(DataManager dataManager)
{
_dataManager = dataManager;
}
//
// GET: /Seller/
public ActionResult List()
{
ViewData["Title"] = "Список продавцов";
ViewData["Sellers"] = _dataManager.Sellers.GetSellers();
ViewData["SellersReverse"] = _dataManager.Sellers.GetSellersReverse();
return View();
}
public ActionResult List2()
{
ViewData["Title"] = "Список продавцов";
ViewData["Sellers"] = _dataManager.Sellers.GetSellers();
ViewData["SellersReverse"] = _dataManager.Sellers.GetSellersReverse();
return View();
}
public ActionResult Seller(int id)
{
ViewData.Model = _dataManager.Sellers.GetSeller(id);
return View();
}
public ActionResult Delete(int id)
{
_dataManager.Sellers.DeleteSeller(id);
return RedirectToAction("List");
}
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Edit(int id)
{
Sellers s = _dataManager.Sellers.GetSeller(id);
ViewData.Model = s;
SetEditLists(s);
return View();
}
private void SetEditLists(Sellers s)
{
ViewData["Countries"] = new SelectList(_dataManager.Countries.GetCountries(), "CountryId", "CountryName", s.CountryId);
ViewData["BusinessTypes"] = new SelectList(_dataManager.BusinessTypes.GetBusinessTypes(), "BusinessTypeId", "BusinessTypeName",
s.BusinessTypeId);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, Sellers s)
{
if (s.SellerName.Length < 3) ModelState.AddModelError("SellerName", "Имя продавца должно быть больше 2 символов!");
if (s.Description != null && s.Description.Length < 3) ModelState.AddModelError("Description", "Описание должно быть больше 2 символов!");
if (ModelState.IsValid)
{
s.SellerId = id;
_dataManager.Sellers.UpdateSeller(s);
return RedirectToAction("List");
}
SetEditLists(s);
return View();
}
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Add()
{
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
[Authorize(Roles = "Administrator")]
public ActionResult Add(string sellerName, string description, string contacts)
{
if (sellerName == null && sellerName.Length < 3) ModelState.AddModelError("SellerName", "Имя продавца должно быть больше 2 символов!");
if (description == null && description.Length < 3) ModelState.AddModelError("Description", "Описание должно быть больше 2 символов!");
if(ModelState.IsValid)
{
_dataManager.Sellers.CreateSeller(sellerName, description, contacts);
return RedirectToAction("List");
}
return View();
}
}
}
Контроллер для «Помощи и поиска»
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using FurnitureCatalog.Models;
namespace FurnitureCatalog.Controllers
{
[HandleError]
public class HomeController: Controller
{
private DataManager _dataManager;
public HomeController(DataManager dataManager)
{
_dataManager = dataManager;
}
public ActionResult Index()
{
ViewData["Message"] = "Добро пожаловать в электронный каталог мебели!";
ViewData["Sellers"] = new SelectList(_dataManager.Sellers.GetSellers(), "SellerId", "SellerName");
ViewData["States"] = new SelectList(_dataManager.States.GetStates(), "StateId", "StateName");
ViewData["Producers"] = new SelectList(_dataManager.Producers.GetProducers(), "ProducerId", "ProducerName");
return View();
}
[HttpPost]
public ActionResult About(string itemName)
{
ViewData["SimpleSearchResults"] = _dataManager.Items.GetItems().Where(x => x.ItemName.Contains(itemName));
ViewData["Message"] = "Добро пожаловать в электронный каталог мебели!";
ViewData["Sellers"] = new SelectList(_dataManager.Sellers.GetSellers(), "SellerId", "SellerName");
ViewData["States"] = new SelectList(_dataManager.States.GetStates(), "StateId", "StateName");
ViewData["Producers"] = new SelectList(_dataManager.Producers.GetProducers(), "ProducerId", "ProducerName");
return View();
}
public ActionResult About()
{
ViewData["Message"] = "Добро пожаловать в электронный каталог мебели!";
ViewData["Sellers"] = new SelectList(_dataManager.Sellers.GetSellers(), "SellerId", "SellerName");
ViewData["States"] = new SelectList(_dataManager.States.GetStates(), "StateId", "StateName");
ViewData["Producers"] = new SelectList(_dataManager.Producers.GetProducers(), "ProducerId", "ProducerName");
return View();
}
[HttpPost]
public ActionResult AboutExtended(string itemName, int producerid, int stateId)
{
ViewData["Sellers"] = new SelectList(_dataManager.Sellers.GetSellers(), "SellerId", "SellerName");
ViewData["States"] = new SelectList(_dataManager.States.GetStates(), "StateId", "StateName");
ViewData["Producers"] = new SelectList(_dataManager.Producers.GetProducers(), "ProducerId", "ProducerName");
ViewData["SimpleSearchResults"] =
_dataManager.Items.GetItems().Where(x => x.ItemName.Contains(itemName) && x.States.StateId == stateId && x.Producers.ProducerId == producerid);
ViewData["Message"] = "Добро пожаловать в электронный каталог мебели!";
return View();
}
public ActionResult AboutExtended()
{
ViewData["Message"] = "Добро пожаловать в электронный каталог мебели!";
ViewData["Sellers"] = new SelectList(_dataManager.Sellers.GetSellers(), "SellerId", "SellerName");
ViewData["States"] = new SelectList(_dataManager.States.GetStates(), "StateId", "StateName");
ViewData["Producers"] = new SelectList(_dataManager.Producers.GetProducers(), "ProducerId", "ProducerName");
return View();
}
public ActionResult Item(int id)
{
ViewData["Title"] = "Список товаров";
ViewData["Items"] = _dataManager.Items.GetItemsNotSort();
ViewData.Model = _dataManager.Items.GetItem(id);
return View();
}
}
}
Репозитории для товаров
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace FurnitureCatalog.Models
{
public class ItemsRepository
{
private FurnitureModelDataContext _datacontext;
public ItemsRepository(FurnitureModelDataContext datacontext)
{
_datacontext = datacontext;
}
public IEnumerable<Items> GetItems()
{
return _datacontext.Items.OrderBy(c => c.ItemName);
}
public IEnumerable<Items> GetItemsNotSort()
{
return _datacontext.Items.OrderBy(c => c.ItemId);
}
public Items GetItem(int itemId)
{
return _datacontext.Items.SingleOrDefault(s => s.ItemId == itemId);
}
public Items CreateItem(string itemName, string description)
{
Items S = new Items { ItemName = itemName, Description = description};
_datacontext.Items.InsertOnSubmit(S);
_datacontext.SubmitChanges();
return S;
}
public void UpdateItem(Items s)
{
Items dbItem = GetItem(s.ItemId);
dbItem.ItemName = s.ItemName;
dbItem.SellerId = s.SellerId;
dbItem.ProducerId = s.ProducerId;
dbItem.StateId = s.StateId;
dbItem.Description = s.Description;
_datacontext.SubmitChanges();
}
public void DeleteItem(int ItemId)
{
Items s = GetItem(ItemId);
_datacontext.Items.DeleteOnSubmit(s);
}
}
}
Репозитории для продавцов
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace FurnitureCatalog.Models
{
public class SellersRepository
{
private FurnitureModelDataContext _datacontext;
public SellersRepository(FurnitureModelDataContext datacontext)
{
_datacontext = datacontext;
}
public IEnumerable<Sellers> GetSellers()
{
return _datacontext.Sellers.OrderBy(c => c.SellerName);
}
public IEnumerable<Sellers> GetSellersReverse()
{
return _datacontext.Sellers.OrderByDescending(c => c.SellerName);
}
public Sellers GetSeller(int sellerId)
{
return _datacontext.Sellers.SingleOrDefault(s => s.SellerId == sellerId);
}
public Sellers CreateSeller(string sellerName, string description, string contacts)
{
Sellers S = new Sellers {SellerName = sellerName, Description = description, Contacts = contacts, CountryId = 1, BusinessTypeId = 1, ProducerId = 1};
_datacontext.Sellers.InsertOnSubmit(S);
_datacontext.SubmitChanges();
return S;
}
public void UpdateSeller(Sellers s)
{
Sellers dbSeller = GetSeller(s.SellerId);
dbSeller.SellerName = s.SellerName;
dbSeller.BusinessTypeId = s.BusinessTypeId;
dbSeller.Contacts = s.Contacts;
dbSeller.CountryId = s.CountryId;
dbSeller.Description = s.Description;
_datacontext.SubmitChanges();
}
public void DeleteSeller(int sellerId)
{
Sellers s = GetSeller(sellerId);
_datacontext.Sellers.DeleteOnSubmit(s);
_datacontext.SubmitChanges();
}
}
}
Репозитории для производителей
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace FurnitureCatalog.Models.Repositories
{
public class ProducersRepository
{
private FurnitureModelDataContext _datacontext;
public ProducersRepository(FurnitureModelDataContext datacontext)
{
_datacontext = datacontext;
}
public IEnumerable<Producers> GetProducers()
{
return _datacontext.Producers.OrderBy(c => c.ProducerName);
}
public IEnumerable<Producers> GetProducersReverse()
{
return _datacontext.Producers.OrderByDescending(c => c.ProducerName);
}
public Producers GetProducer(int producerId)
{
return _datacontext.Producers.SingleOrDefault(s => s.ProducerId == producerId);
}
public Producers CreateProducer(string producerName, string description, string contacts)
{
Producers S = new Producers {ProducerName = producerName, Description = description, Contacts = contacts, CountryId = 1, FurnitureTypeId = 1};
_datacontext.Producers.InsertOnSubmit(S);
_datacontext.SubmitChanges();
return S;
}
public void UpdateProducer(Producers s)
{
Producers dbProducer = GetProducer(s.ProducerId);
dbProducer.ProducerName = s.ProducerName;
dbProducer.FurnitureTypeId = s.FurnitureTypeId;
dbProducer.Contacts = s.Contacts;
dbProducer.CountryId = s.CountryId;
dbProducer.Description = s.Description;
_datacontext.SubmitChanges();
}
public void DeleteProducer(int producerId)
{
Producers s = GetProducer(producerId);
_datacontext.Producers.DeleteOnSubmit(s);
_datacontext.SubmitChanges();
}
}
}
Общий класс DataManager
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using FurnitureCatalog.Models.Repositories;
namespace FurnitureCatalog.Models
{
public class DataManager
{
private FurnitureModelDataContext _datacontext;
//public DataManager()
//{
// _datacontext = new FurnitureModelDataContext();
//}
public DataManager(string connectionString)
{
_datacontext = new FurnitureModelDataContext(connectionString);
}
private MembershipRepository _membershipRepository;
public MembershipRepository Membership
{
get
{
if (_membershipRepository == null)
_membershipRepository = new MembershipRepository();
return _membershipRepository;
}
}
private ItemsRepository _itemsRepository;
public ItemsRepository Items
{
get
{
if (_itemsRepository == null)
_itemsRepository = new ItemsRepository(_datacontext);
return _itemsRepository;
}
}
private SellersRepository _sellersRepository;
public SellersRepository Sellers
{
get
{
if (_sellersRepository == null)
_sellersRepository = new SellersRepository(_datacontext);
return _sellersRepository;
}
}
private CountriesRepository _countriesRepository;
public CountriesRepository Countries
{
get
{
if (_countriesRepository == null)
_countriesRepository = new CountriesRepository(_datacontext);
return _countriesRepository;
}
}
private StatesRepository _statesRepository;
public StatesRepository States
{
get
{
if (_statesRepository == null)
_statesRepository = new StatesRepository(_datacontext);
return _statesRepository;
}
}
private BusinessTypesRepository _businesstypesRepository;
public BusinessTypesRepository BusinessTypes
{
get
{
if (_businesstypesRepository == null)
_businesstypesRepository = new BusinessTypesRepository(_datacontext);
return _businesstypesRepository;
}
}
private ProducersRepository _producersRepository;
public ProducersRepository Producers
{
get
{
if (_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 class="editor-label">
<%: Html.LabelFor(model => model.ProducerName) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.ProducerName) %>
<%: Html.ValidationMessageFor(model => model.ProducerName) %>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.Description) %>
</div>
<div class="editor-field">
<%: Html.TextAreaFor(model => model.Description) %>
<%: Html.ValidationMessageFor(model => model.Description) %>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.Contacts) %>
</div>
<div class="editor-field">
<%: Html.TextAreaFor(model => model.Contacts) %>
<%: Html.ValidationMessageFor(model => model.Contacts) %>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.CountryId) %>
</div>
<div class="editor-field">
<%: 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>
<%=Html.ActionLink("Добавить производителя", "Add")%>
</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 class="editor-label">
<%: Html.LabelFor(model => model.ItemName) %>
</div>
<div class="editor-field">
<%: Html.TextAreaFor(model => model.ItemName) %>
<%: Html.ValidationMessageFor(model => model.ItemName) %>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.Producers.ProducerName) %>
</div>
<div class="editor-field">
<%: Html.DropDownListFor(model => model.Producers.ProducerId, (IEnumerable<SelectListItem>)ViewData["Producers"])%>
<%: Html.ValidationMessageFor(model => model.Producers.ProducerName) %>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.Description) %>
</div>
<div class="editor-field">
<%: Html.TextAreaFor(model => model.Description) %>
<%: Html.ValidationMessageFor(model => model.Description) %>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.Sellers.SellerName) %>
</div>
<div class="editor-field">
<%: Html.DropDownListFor(model => model.Sellers.SellerId, (IEnumerable<SelectListItem>)ViewData["Sellers"])%>
<%: Html.ValidationMessageFor(model => model.Sellers.SellerName) %>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.States.StateName) %>
</div>
<div class="editor-field">
<%: Html.DropDownListFor(model => model.States.StateId, (IEnumerable<SelectListItem>)ViewData["States"])%>
<%: Html.ValidationMessageFor(model => model.States.StateName) %>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.Year) %>
</div>
<div class="editor-field">
<!-- <%: 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>
Размещено на Allbest.ru
Подобные документы
Разработка модуля автоматизации продажи автозапчастей. Проектирование информационной системы на основе базы данных в среде Microsoft SQL Server 2008. Структуры диалога и программного обеспечения. Описание запросов и отчетов к БД. Создание средств защиты.
курсовая работа [1,1 M], добавлен 10.12.2014Обоснование необходимости систем управления базами данных на предприятиях. Особенности разработки программного обеспечения по управлению базой данных, обеспечивающего просмотр, редактирование, вставку записей базы данных, формирование запросов и отчетов.
курсовая работа [1,5 M], добавлен 23.01.2010Создание программ, позволяющих создавать базы данных. Создание таблицы базы данных. Создание схемы данных. Создание форм, отчетов, запросов. Увеличение объема и структурной сложности хранимых данных. Характеристика системы управления базой данных Access.
курсовая работа [2,1 M], добавлен 17.06.2013Разработка информационной системы "Салон портьер" для автоматизации деятельности менеджера фирмы, занимающейся пошивом портьер на заказ. Создание и обоснование проекта базы данных. Создание запросов, форм, отчетов. Тестирование программного приложения.
курсовая работа [4,6 M], добавлен 07.02.2016Разработка программного обеспечения для автоматизации деятельности работников книжного магазина. Проектирование информационной системы с использованием базы данных Access. Методы хранения данных. Средства защиты данных от несанкционированного доступа.
контрольная работа [664,9 K], добавлен 13.06.2014Разработка программного приложения Windows Forms для работы с базой данных на языке высокого уровня в автономном режиме с использованием ADO.NET. Создание консольных приложений (варианты метода Main), выполнение запросов к SQL серверу и листинг программ.
курсовая работа [2,4 M], добавлен 16.06.2014Создание программного приложения для осуществления основных функций по заказу мебели, регистрации клиентов, сотрудничеству с поставщиками. Разработка интерфейса прикладной программы. Логическое проектирование базы данных и SQL-скрипт генерации таблиц.
курсовая работа [2,4 M], добавлен 11.02.2013Предметная область предприятия по производству мебели: изучение и диагностический анализ структуры предприятия, его деятельности и существующей системы обработки информации. Проектирование моделей, форм входных и выходных документов предприятия.
курсовая работа [545,7 K], добавлен 30.01.2013Информационная система на базе компьютера. Основное отличие системы с базой данных от традиционной файловой системы. Построение концептуальной модели, реляционной модели. Нормализация. Проектирование базы данных в ACCESS. Создание SQL запросов.
курсовая работа [38,5 K], добавлен 06.11.2008Постановка задачи, система автоматизации операций. Проектирование, создание и управление Базой данных, формы для запросов, кнопочная форма. Работа запроса и отчета. Схема данных, создание новой группы, товара. Технологическая инструкция пользователя.
курсовая работа [1,9 M], добавлен 14.02.2010