Разработка АИС "Автосервис"

 

Оглавление


Введение

Общая характеристика работы

Глава 1. Построение логической модели

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

.2 Описание предметной области

.3 Описание логической структуры таблиц базы данных

.4 Связи в таблицах

.5 Описание программного обеспечения, используемого в работе

.6 Система меню

Глава 2. Состав отдельных модулей

.1 Хранимые процедуры

.2 Класс связующий информацию сайта с базой данной

.3 Класс, выполняющий операции над данными в базе

.4 Страница сайта, отображающая информацию с базы данных Newsletters.aspx

.5 Страница сайта, отображающая информацию с базы данных Newsletters.cs

.6 Страница добавления (изменения) информации из базы данных AddeditNewsletters.cs

Заключение

Список использованных источников


Введение

сайт web asp net

Многие программисты, работающие с базами данных на платформах Microsoft, могли оценить простоту и удобство технологии ADO - ActiveX Data Objects.

Интутитивно-понятный интерфейс и логичный набор объектов вместе с простотой программирования заслуженно получили признание программистов.

Несмотря на это, вместе с новой платформой NET Microsoft представляет и новое поколение средств доступа к базам данных - ADO.NET.

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

Непредсказуемый рост числа клиентов Интернет сайтов заставляет разработчиков переходить от клиент-серверной к three-tier архитектуре, что часто порождает непреодолимые проблемы.

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

Брандмауэры могут препятствовать передаче двоичных данных между узлами.

ADO.NET призвано решить эти и другие проблемы и вместе с тем сохранить удобство и простоту программирования.

Преимущества и нововведения в ADO.NET

Использование разъединенной модели доступа к данным.

Преимущество технологии ASP.NET перед остальными в высокой степени абстракции, построенной над стандартным HTML кодом: использование объектно-ориентированной парадигмы, поддержку нескольких языков программирования, наличие универсального основания, содержащего тысячи уже готовых для использования в проектах решений - Microsoft NET Framework.

Кроме расширения возможностей использования Web в качестве пользовательского интерфейса, технология ASP.NET решает сразу несколько проблем, с которыми традиционно сталкиваются разработчики Web-приложений. Во-первых, ASP.NET решает задачу сохранения информации о состоянии приложения. Традиционная модель протокола НТГР предполагает, что взаимодействие между клиентом и сервером происходит по принципу независимых транзакций. Клиент посылает серверу запрос, сервер возвращает клиенту ответ. Все HTTP-транзакции не зависят друг от друга. В такой модели есть свои преимущества - она позволяет серверу не хранить данные о пользователях в перерывах между транзакциями, в результате чего производительность HTTP-серверов оказывается выше, чем производительность, например, FTP-серверов. Однако у этой модели есть и недостатки. Главный из них заключается в том, что в рамках протокола HTTP трудно реализовать интерактивное взаимодействие между клиентом и сервером, состоящее из нескольких транзакций (ведь для этого сервер должен хранить информацию о клиенте в перерывах между транзакциями). Было найдено несколько решений этой проблемы, но на сегодняшний день технология ASP.NET предлагает наиболее удачное решение. Другая проблема связана с динамическим обновлением сайтов. ASP.NET позволяет заменять различные компоненты сайта, не приостанавливая его работу. Эта задача решается благодаря кэшированию элементов приложения.[7]

Повышенная надежность

Защита от утечек памяти, взаимоблокирования и сбоев: ASP.NET автоматически обнаруживает и исправляет такие ошибки, как взаимное блокирование и утечки памяти, что обеспечивает постоянную доступность приложения. Например, при обнаружении утечки памяти ASP.NET автоматически запустит новую копию рабочего процесса ASP.NET и направит все новые запросы в новый процесс. После выполнения старым рабочим процессом всех незавершенных запросов производится корректное завершение процесса и освобождение памяти.[8]

Простое развертывание

Развертывание приложений в режиме "без вмешательства": С помощью ASP.NET можно развернуть целое приложение, скопировав его на сервер. Параметры конфигурации хранятся в XML-файле внутри приложения.

Динамическое обновление выполняемого приложения: ASP.NET позволяет обновлять скомпилированные компоненты без перезапуска веб-сервера. В отличие от классических компонентов COM, для которых требуется перезапуск веб-сервера вручную, чтобы обновления вступили в силу, ASP.NET автоматически отслеживает изменения и производит запуск с использованием нового кода.

Простой путь миграции. ASP.NET может работать в IIS параллельно с приложениями классической платформы ASP в Microsoft Windows 2000, Windows XP и операционных системах семейства Windows Server 2003. Можно выполнять миграцию приложения целиком или по отдельным страницам. ASP.NET позволяет использовать даже существующие классические компоненты COM для бизнеса.[8]

Модели новых приложений

Веб-службы XML: Веб-службы XML позволяют приложениям взаимодействовать и совместно использовать данные в Интернете независимо от операционной системы или языка программирования. ASP.NET упрощает вызов веб-служб XML.

Поддержка мобильных веб-устройств. Мобильные элементы управления ASP.NET позволяют управлять более чем 80 мобильными веб-устройствами. Приложение создается один раз, а мобильные элементы управления автоматически создают страницы для запрашивающего устройства.[8]

Производительность разработчика

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

Гибкие языковые возможности. ASP.NET поддерживает не только Microsoft Visual Basic Scripting Edition (VBScript) и Microsoft JScript, но и более 25 языков .NET, а также включает встроенную поддержку для Visual Basic .NET, Microsoft C# и JScript .NET.

Богатые возможности классов. Библиотека классов .NET Framework включает более 4500 классов, обладающих разнообразной функциональностью. Поддерживаются XML, доступ к данным, отгрузка файлов, регулярные выражения, создание изображений, наблюдение за производительностью и ведение журналов, транзакции, очереди сообщений и почта SMTP.[8]


Общая характеристика работы


Актуальность темы курсовой работы. Использование сетевой базы данных в сайте кафедры теорий функций, функционального анализа и прикладной математики является необходимостью. Применение для разработки данного сайта современных технологий ADO.NET и ASP.NET делает его не только удобным для пользователей и администраторов, но и позволяет осуществить политику безопасности от несанкционированного доступа к базам данным сайта.

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

Методы исследования. Методами исследования является технология ADO.NET - сетевая база данных Microsoft SQL Server 2005 и технология ASP.NET - Microsoft Visual Studio 2010, язык программирования C#.

Цели и задачи курсовой работы. Целью работы является разработка web-приложения сайта кафедры теорий функций, функционального анализа и прикладной математики. Для достижения этой цели поставлены следующие задачи:

·разработать базу данных для web-приложения, используя сетевую базу данных SQL server 2005, технологию ADO.NET;

·составить логическую структуру базы данных и сформировать связи между ними;

·подключить базу данных к сайту, используя технологию ASP.NET;

·составить хранимые процедуры и SQL-запросы для отображения, добавления, изменения и удаления информации из таблиц базы;

·разработать классы, связующие информацию сайта с базой данной

·разработать классы, выполняющие операции над данными в базе;

·разработать систему поиска на страницах web-приложения;

·разработать модули форумов, статей, опросов общественного мнения;

·разработать модуль новостей с возможностью их рассылки на электронную почту подписчикам;

·разработать модуль администрирования, для управления данными;

·настроить станицы сайта для отображения, добавления, изменения и удаления данных из базы с учетом ролей пользователя, который будет производить данные операции;

·разработать пользовательские элементы (controls), необходимые для работы сайта, его визуализации;

·разработать темы дизайна сайта.

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

В первой главе приводится построение логической модели проектирования. Она состоит из шести пунктов: «Постановка задачи»; «Описание предметной области», приводиться та деятельность кафедры, которую необходимо отобразить в web-приложении; «Описание логической структуры таблиц базы данных», приводится перечень таблиц базы со всеми полями и их описанием; «Связи в таблицах»; «Описание программного обеспечения, используемого в работе; «Система меню»- перечень пунктов вертикального меню пользовательского элемента MenuBox.ascx, часть, когда панели «хлебные крошки», листинг файла web.Sitemap.

Во второй главе «Состав отдельных модулей», которая состоит из шести пунктов («Хранимые процедуры»; «Класс связующий информацию сайта с базой данной»; «Класс, выполняющий операции над данными в базе»; «Страница сайта, отображающая информацию с базы данных Newsletters.aspx»; «Страница сайта, отображающая информацию с базы данных Newsletters.cs»; «Страница добавления (изменения) информации из базы данных AddEditNewsletters.cs», непосредственно приводится взаимодействие технологий: ASP.NET - страниц сайта с технологией ADO.NET - базой данных. Данная взаимосвязь рассматривается на примере связи таблицы «tbh_Newsletters» (Новости) с сайтом, посредством написания хранимых процедур в базе, и необходимых классов в проекте сайта.

Приложения содержат в себе схему данных всех таблиц базы данных и некоторые снимки экрана страниц, а именно:

страница «Сотрудники» в обычном (гостевом) сеансе,

страница «O сотруднике» в режиме администратора,

страница просмотра всех новостей в обычном (гостевом) сеансе и в администраторском,

приводится снимок экрана редактирования новости,

страницы «Студенты», «Публикации кафедры» и страницы «Администрирование».


Глава 1. Построение логической модели


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


Разработать web-приложение сайт кафедры теорий функций, функционального анализа и прикладной математики


1.2 Описание предметной области


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

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

Также в базе данных предусмотрена таблица (страница сайта) с размещением в ней информации: о истории кафедры, направлением научных исследований кафедры, сотрудничества кафедры и др.

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

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


1.3 Описание логической структуры таблиц базы данных


Таблица. 1.1. Описание полей в таблице базы данных tbh_Persons (Члены кафедры).

Имя столбцаТипРазмерДопускает значения NULLОписаниеPerconlD (Идентификатор члена)int - РК4НетУникальный идентификатор для члена кафедрыName_persons (Имя члена)nvarchar256НетИмя, фамилия, отчество члена кафедры

Таблица. 1.2. Описание полей в таблице базы данных tbh_Publications (Публикации).

Имя столбцаТипРазмерДопускает значения NULLОписаниеPublicationsID (Идентификатор публикации)int - РК4НетУникальный идентификатор для публикации PerconlD (Идентификатор члена)int -FK4НетЧлен кафедрыName_publication (Название публикации)nTextНетПолное название публикацииDate_publication (Дата публикации)datetimeДаДата публикацииTypePublicationsID (Тип публикации)int-FKНетТип публикации

Таблица. 1.3. Описание полей в таблице базы данных tbh_Collaborators(Сотрудники).

Имя столбцаТипРазмерДопускает значения NULLОписаниеCollaboratorsID (Идентификатор сотрудника)int - РК4НетУникальный идентификатор для сотрудника PerconlD (Идентификатор члена)int -FK4НетЧлен кафедрыRank_job_title (Звание, должность)nTextНетЗвание, должность сотрудникаBiographical_data (Данные биографии)nTextНетДанные биографии сотрудникаPhoto (фото)nvarchar256ДаURL-адрес изображения, представляющего фотографию сотрудника

Таблица. 1.4. Описание полей в таблице базы данных tbh_Students(Студенты).

Имя столбцаТипРазмерДопускает значения NULLОписаниеStudentID (Идентификатор студента)int - РК4НетУникальный идентификатор для студента PerconlD (Идентификатор члена)int -FK4НетЧлен кафедрыYear_of_the_arrival (Год поступления)nvarchar4ДаГод поступления студента в университетCurrent_course (Текущий курс)smallintДаТекущий курс студентаYear_of_the_completion (Год окончания)nvarchar4ДаГод окончания учебы студента в университет

Таблица. 1.5. Описание полей в таблице базы данных tbh_Aspirants(Аспиранты).

Имя столбцаТипРазмерДопускает значения NULLОписаниеAspirantID (Идентификатор аспиранта)int - РК4НетУникальный идентификатор для аспиранта PerconlD (Идентификатор члена)int -FK4НетЧлен кафедрыYear_of_the_arrival (Год поступления)nvarchar4ДаГод поступления аспиранта в аспирантуруYear_of_the_completion (Год окончания)nvarchar4ДаГод окончания аспирантуры аспирантом

Таблица. 1.6. Описание полей в таблице базы данных tbh_MasterStudents(Магистранты).

Имя столбцаТипРазмерДопускает значения NULLОписаниеMasterStudentID (Идентификатор магистранта)int - РК4НетУникальный идентификатор для магистрантаPerconlD (Идентификатор члена)int -FK4НетЧлен кафедрыYear_of_the_arrival (Год поступления)nvarchar4ДаГод поступления магистранта в магистратуруYear_of_the_completion (Год окончания)nvarchar4ДаГод окончания магистратуры магистрантом

Таблица. 1.7. Описание полей в таблице базы данных tbh_Cousre_and_degree_work(Курсовые и дипломные работы).

Имя столбцаТипРазмерДопускает значения NULLОписаниеWorkID (Идентификатор работы)int - РК4НетУникальный идентификатор для работы студентаCollaboratorlD (Идентификатор сотрудника)int -FK4ДаСотрудник(преподаватель), являющийся руководителем студента при написании им курсовой, дипломной работыStudentlD (Идентификатор студента)int -FK4НетСтудент, пишущий данную курсовую, дипломную работуSubject_of_the_work (Тема работы)textНетТема работы курсовой, дипломной работыYear_of_the_protection (Год защиты)nvarchar4ДаГод, в котором работа была написана (защищена) TypeWorkID (тип работы)int-FKintНетТип работыManager (научный руководитель)nvarchar255ДаНаучный руководитель не являющийся сотрудником кафедры

Таблица. 1.8. Описание полей в таблице базы данных tbh_MagisterThesis(Магистерские диссертации).

Имя столбцаТипРазмерДопускает значения NULLОписаниеMagisterThesisID (Идентификатор диссертации)int - РК4НетУникальный идентификатор для магистерской диссертацииCollaboratorlD (Идентификатор сотрудника)int -FK4НетСотрудник(преподаватель), являющийся руководителем магистранта при написании им магистерской диссертацииMasterStudentlD (Идентификатор магистранта)int -FK4НетМагистрант, пишущий диссертациюSubjectThesis (Тема диссертации)textНетТема магистерской диссертацииYear_of_the_protection (Год защиты)nvarchar4ДаГод, в котором диссертация была написана (защищена) TypeWorkID (тип работы)int-FKintНетТип работыManager (научный руководитель)nvarchar255ДаНаучный руководитель не являющийся сотрудником кафедры

Таблица. 1.9. Описание полей в таблице базы данных tbh_CandidateThesis(Кандидатские диссертации).

Имя столбцаТипРазмерДопускает значения NULLОписаниеCandidateThesisID (Идентификатор диссертации)int - РК4НетУникальный идентификатор для кандидатской диссертацииCollaboratorlD (Идентификатор сотрудника)int -FK4НетСотрудник(преподаватель), являющийся руководителем аспиранта при написании им кандидатской диссертацииAspirantlD (Идентификатор аспиранта)int -FK4НетAспирант, пишущий диссертациюSubjectThesis (Тема диссертации)textНетТема кандидатской диссертацииYear_of_the_protection (Год защиты)nvarchar4ДаГод, в котором диссертация была написана (защищена) TypeWorkID (тип работы)int-FKintНетТип работыManager (научный руководитель)nvarchar255ДаНаучный руководитель не являющийся сотрудником кафедры

Таблица. 1.10. Описание полей в таблице базы данных tbh_Disciplines(Дисциплины).

Имя столбцаТипРазмерДопускает значения NULLОписаниеDisciplinesID (Идентификатор дисциплины)int - РК4НетУникальный идентификатор дисциплиныName_disciplines (Название дисциплины)nvarchar256НетНазвание дисциплины читаемой на кафедреProfession (специальность)nvarchar256ДаСпециальность, на которой данная дисциплина читаетсяCourses (курсы)nvarchar50ДаКурсы, на которых данная дисциплина читается

Таблица. 1.11. Описание полей в таблице базы данных tbh_Type_occupation(Тип преподавания).

Имя столбцаТипРазмерДопускает значения NULLОписаниеTypeOccupation ID (Идентификатор типа преподования)int - РК4НетУникальный идентификатор дисциплиныName_TypeOccupation (Тип преподавания)nvarchar50НетТип преподавания: чтение лекций, лабораторные занятий, и т.д.

Таблица. 1.12. Описание полей в таблице базы данных tbh_Reading_of_disciplene (Чтение дисциплин).

Имя столбцаТипРазмерДопускает значения NULLОписаниеReading_of_disciplene ID (Идентификатор чтения)int - РК4НетУникальный идентификатор для чтения сотрудником дисциплиныCollaboratorlD (Идентификатор сотрудника)int -FK4НетСотрудник(преподаватель), являющийся руководителем аспиранта при написании им кандидатской диссертацииDisciplineslD (Идентификатор дисциплины)int -FK4НетДисциплина, которую преподает сотрудникTypeOccupationlD (Идентификатор типа преподавания)int -FK4НетТип преподавания данной дисциплины, данным сотрудником

Таблица. 1.13. Описание полей в таблице базы данных tbh_PublicationOsn (Общие публикации кафедры).

Имя столбцаТипРазмерДопускает значения NULLОписаниеPublicationsOsnID (Идентификатор публикации)int - РК4НетУникальный идентификатор для публикации Name_publicationOsn (Название публикации)nTextНетПолное название публикацииDatePublicationOsn (Дата публикации)datetimeДаДата публикацииTypePublicationsID (Тип публикации)int-FK4НетТип публикации

Таблица. 1.14. Описание полей в таблице базы данных tbh_Type_Publications (Типы публикаций).

Имя столбцаТипРазмерДопускает значения NULLОписаниеTypePublicationsID (Идентификатор типа публикации)int-PK4НетУникальный идентификатор типа публикацииNameTypePublications (название типа публикации)nvarcharmaxДаНазвание типа публикации

Таблица. 1.15. Описание полей в таблице базы данных tbh_TypeScientificWork (Типы научных работ (студентов, магистрантов, аспирантов)).

Имя столбцаТипРазмерДопускает значения NULLОписаниеTypeWorkID (Идентификатор типа работы)int-PK4НетУникальный идентификатор типа работыType_work (Типа работы)nvarcharmaxДаНазвание типа работы

Таблица. 1.16. Описание полей в таблице базы данных tbh_Doc (документы).

Имя столбцаТипРазмерДопускает значения NULLОписаниеDocID (Идентификатор документа)int - РК4НетУникальный идентификатор документаTypeDocID (идентификатор типа документа)int4НетИдентификатор типа документа NameDoc (название документа)nvarcharmaxНетНазвание документаDocHyperLink (ссылка на документ)nvarcharmaxНетСсылка на документ

Таблица. 1.17. Описание полей в таблице базы данных tbh_DocDiscip (документы по дисциплинам).

Имя столбцаТипРазмерДопускает значения NULLОписаниеDocDiscipID (Идентификатор документа)int - РК4НетУникальный идентификатор документаDisciplinesID (Идентификатор дисциплины)int - РК4НетИдентификатор дисциплиныTypeDocID (идентификатор типа документа)int4НетИдентификатор типа документаNameDocDiscip (название документа)nvarcharmaxНетНазвание документаDocDiscipHyperLink (ссылка на документ)nvarcharmaxНетСсылка на документ

Таблица. 1.18. Описание полей в таблице базы данных tbh_TypeDoc (тип документа).

Имя столбцаТипРазмерДопускает значения NULLОписаниеTypeDocID (идентификатор типа документа)int4НетУникальный идентификатор типа документаNameTypeDoc (название типадокумента)nvarcharmaxНетНазвание типа документа

Таблица. 1.19. Описание полей в таблице базы данных tbh_PageSite(Страница сайта).

Имя столбцаТипРазмерДопускает значения NULLОписаниеPageSiteID (Идентификатор страницы)int - РК4НетУникальный идентификатор текста страницы на сайте Name_PageSite (Название страницы)nvarchar50НетНазвание страницыBody (текст на странице)nTextНетСодержимое страницы (полная версия).Таблица. 1.20. Описание полей в таблице базы данных tbh_Newsletters (Новости).

Имя столбцаТипРазмерДопускает значения NULLОписаниеNewsletterID (Идентификатор новости)int - РК4НетУникальный идентификатор для новости.AddedDate (Дата добавления)datetime8НетДата и время добавления новости.AddedBy (Добавлен)nvarchar256НетИмя пользователя, который добавил новость.Subject (заголовок)nvarchar256НетТекст заголовка новостиHtmlBody (html текст)textДаHtml текст новостиNewsletterSend (новость отправлена)bitДаПоказывает, отправлена или нет новость подписчикам

Таблица. 1.21. Описание полей в таблице базы данных tbh_Articles (Статьи).

Имя столбцаТипРазмерДопускает Значения NULLОписаниеArticlelD (Идентификатор статьи)int - РК4НетУникальный идентификатор для статьи.AddedDate (Дата добавления)datetime8НетДата и время добавления статьи.AddedBy (Добавлена)nvarchar256НетИмя пользователя, который создал статью.CategorylD (Идентификатор категории)int-FK4НетНазвание статьи.Title (Название)nvarchar256НетНазвание категорииAbstract (Краткое содержание)nvarchar4000ДаКраткое содержание (краткое резюме), которое должно отображаться на странице, где перечислена эта статья, а также в RSS- ленте.Body (Тело)nTextНетСодержимое статьи (полная версия).Country (Страна)nvarchar256ДаСтрана, к которой имеет отношение статья (концерт/событие).State (Штат)nvarchar256ДаШтат/область, к которой имеет отношение статья.City (Город)nvarchar8ДаГород, к которому имеет отношение статьяReleaseDate (Дата выпуска)datetime8ДаДата и время, когда статья станет доступной всем для прочтения.ExpireDate (Дата истечения срока)datetime1ДаДата и время, когда статья будет удалена и перестанет быть доступной для прочтения.Approved (Одобрена)bit1НетОдобренный статус статьи. Если здесь содержится значение false, значит, статью должен одобрить администратор или редактор, прежде чем она будет фактически опубликована и станет доступной для читателей.Listed (Включена в список)bit1НетУказывает, перечислена ли данная статья на странице со списком статей (т.е. проиндексирована ли она). Если здесь содержится значение false, статья не будет присутствовать в общем списке статей, но будет все равно доступной, если пользователь введет правильный URL-адрес или если будет существовать прямая ссылка на нее.Comment Enabled (С комментариями)bit1НетУказывает, может ли пользователь оставлять общедоступные комментарии по этой статье.OnlyForMembers (Только для членов)bit1НетУказывает, доступна ли эта статья только зарегистрированным и прошедшим аутентификацию пользователям или всем остальных пользователям тоже.ViewCount (Количество просмотров)int4НетКоличество раз, которое эта статья была просмотрена.Votes (Количество голосов)int4НетКоличество голосов, которое получила эта статься.TotalRating (Общий рейтинг)int4НетОбщий рейтинг, который получила эта статья. Представляет собой сумму всех опубликованных пользователями рейтингов.

Таблица. 1.22. Описание полей в таблице базы данных tbhCategories (Категории статей).

Имя столбцаТипРазмерДопускает значения NULLОписаниеCategorylD (Идентификатор категории)int - РК4НетУникальный идентификатор для категории.AddedDate (Дата добавления)datetime8НетДата и время создания категории.AddedBy (Добавлена)nvarchar256НетИмя пользователя, который создал категорию.Title (Название)nvarchar256НетНазвание категории.Importance (Важность)int4НетСтепень важности категории. Используется для сортировки категории в специальном порядке, не по имени и не по дате.Description (Описание)nvarchar4000ДаОписание категории.ImageUrl (URL-адрес изображенияnvarchar256ДаURL-адрес изображения, представляющего категорию в графическом виде.

Таблица. 1.23. Описание полей в таблице базы данных tbh_Comments (Комментарии).

Имя столбцаТипРазмерДопускает значения NULLОписаниеCommentID (Идентификатор комментария)int - РК4НетУникальный идентификатор для комментария.AddedDate (Дата добавленияdatetime8НетДата и время добавления комментария.AddedBy (Добавлен)nvarchar256НетИмя пользователя, который написал комментарий.AddedByEmail (Добавлен по электронному адресу)nvarchar256НетАдрес электронной почты пользователя.AddedBy IP (Добавлен по IP-адресу)nchar15НетIP-адрес пользователяArticlelD (Идентификатор статьи)int4НетСтатья, к которой относится этот комментарий.Body (Тело)ntextНетТекст комментария.

Таблица. 1.24. Описание полей в таблице базы данных tbh_Forums (Форумы)

Имя столбцаТипРазмерДопускает значения NULLОписаниеForumID (Идентификатор форума)int - РК4НетУникальный идентификатор для форума.AddedDate (Дата добавленияdatetime8НетДата и время добавления комментария.AddedBy (Добавлен)nvarchar256НетИмя пользователя, который написал комментарий.Title (Название)nvarchar256НетНазвание форума.Importance (Важность)int4НетСтепень важности форума. Используется для сортировки категории в специальном порядке, не по имени и не по дате.Description (Описание)nvarchar4000ДаОписание форума.ImageUrl (URL-адрес изображенияnvarchar256ДаURL-адрес изображения, представляющего форума в графическом виде.

Таблица. 1.25. Описание полей в таблице базы данных tbh_Posts (Сообщения).

Имя столбцаТипРазмерДопускает значения NULLОписаниеPostID (Идентификатор сообщения)int - РК4НетУникальный идентификатор для сообщения.AddedDate (Дата добавленияdatetime8НетДата и время добавления комментария.AddedBy (Добавлен)nvarchar256НетИмя пользователя, который написал комментарий.AddedByIP (IP-адрес пользователя)Nchar16НетIP-адрес пользователя, автора сообщенияForumID (идентификатор форума)Int4НетФорум, к которому относится данное сообщениеParentPostID (родительское сообщение)Int4НетЦелое число, представляющее другую запись той же таблицы, которое описывает первое сообщение цепочки. Если оно равно 0, то это первое сообщениеTitle (Заголовок)nvarchar256НетЗаголовок сообщения.Body (Текст)ntextНетТекст сообщенияApproved (Одобрена)bit1НетОдобренный статус сообщения. Если здесь содержится значение false, значит, статью должен одобрить администратор или редактор, прежде чем оно будет фактически опубликовано и станет доступной для читателей.Closed (закрыта)bit1НетЭто поле используется только для сообщений цепочки , и его булевское значение говорит о том, что цепочка закрыта, и более никаких реплик в нее добавляться не может.ViewCount (количество прочтений)Int4НетКоличество прочтений цепочки, если запись представляет реплику, то значение 0 ReplyCount (количество комментариев)Int4НетКоличество комментариев (сообщений) к темеLastPostBy (имя последнего члена)Nvarchar256НетИмя члена, который последним написал сообщение в цепочкеLastPostDate (последнии дата и время)datetime НетДата и время последнего сообщения в цепочке

Таблица. 1.26. Описание полей в таблице базы данных tbh_Polls (Опросы).

Имя столбцаТипРазмерДопускает значения NULLОписаниеPollID (Идентификатор опроса)int - РК4НетУникальный идентификатор для опроса.AddedDate (Дата добавления)datetime8НетДата и время добавления опроса.AddedBy (Добавлен)nvarchar256НетИмя пользователя, который написал опрос.QuestionText (вопрос опроса)nvarchar256НетТекст вопроса опросаIsCurrent (текущий опрос)bit1НетПоказывает, является ли опрос текущимIsArchived (опрос в архиве)bit1НетПоказывает, находится ли опрос в архивеArchivedDate (дата переноса опроса в архив)datetime ДаДата переноса опроса в архив

Таблица. 1.27. Описание полей в таблице базы данных tbh_PollOptions (Опции опросов).

Имя столбцаТипРазмерДопускает значения NULLОписаниеOptionID (Идентификатор опции опроса)int - РК4НетУникальный идентификатор для опции (варианта ответа) опроса.AddedDate (Дата добавления)datetime8НетДата и время добавления опции.AddedBy (Добавлен)nvarchar256НетИмя пользователя, который написал опцию опроса.PollID (идентификатор опроса)int4НетОпрос, которому принадлежит опцияOptionText (текст опции)nvarchar256НетТекст варианта ответа на вопрос опросаVotes (опрос в архиве)int4НетКоличество проголосовавших

1.4.Связи в таблицах


Таблица. 1.28. Связи в таблицах.

Название таблицыПолеНазвание таблицыПолеТип связиtbh_PersonsPersonIDtbh_PublicationsPersonIDодин ко многимtbh_PersonsPersonIDtbh_CollaboratorsPersonIDодин ко многимtbh_PersonsPersonIDtbh_StudentsPersonIDодин ко многимtbh_PersonsPersonIDtbh_AspirantsPersonIDодин ко многимtbh_PersonsPersonIDtbh_MasterStudentsPersonIDодин ко многимtbh_CollaboratorsCollaboratorIDtbh_Course_and_ degree_workCollaboratorIDодин ко многимtbh_CollaboratorsCollaboratorIDtbh_MagisterThesisCollaboratorIDодин ко многимtbh_CollaboratorsCollaboratorIDtbh_ CandidateThesisCollaboratorIDодин ко многимtbh_CollaboratorsCollaboratorIDtbh_Reading_ of_disciplineCollaboratorIDодин ко многимtbh_DisciplinesDisciplinesIDtbh_Reading_ of_disciplineDisciplinesIDодин ко многимtbh_StudentsStudentIDtbh_Course_and_ degree_workStudentIDодин ко многимtbh_MasterStudentsMagisterStudentIDtbh_MagisterThesisMagisterStudentIDодин ко многимtbh_AspirantsAspirantIDtbh_ CandidateThesisAspirantIDодин ко многимtbh_ScientificWorkTypeWorkIDtbh_Course_and_ degree_workTypeWorkIDодин ко многимtbh_ScientificWorkTypeWorkIDtbh_MagisterThesisTypeWorkIDодин ко многимtbh_ScientificWorkTypeWorkIDtbh_ CandidateThesisTypeWorkIDодин ко многимtbh_Type_occupationType_occupationIDtbh_Reading_of_disciplineType_occupationIDодин ко многимtbh_Type_PublicationsTypePublicationsIDtbh_PublicationsTypePublicationsIDодин ко многимtbh_Type_PublicationsTypePublicationsIDtbh_PublicationOsnTypePublicationsIDодин ко многимtbh_ArticlesArticlesIDtbh_CommentArticlesIDодин ко многимtbh_CategoriesCategoryIDtbh_ArticlesCategoryIDодин ко многимtbh_ForumsForumIDtbh_PostsForumIDодин ко многимtbh_PollsPollIDtbh_PollOptionPollIDодин ко многимtbh_TypeDocTypeDocIDtbh_DocDiscipTypeDocIDодин ко многимtbh_DisciplinesDisciplinesIDtbh_DocDiscipDisciplinesIDодин ко многимtbh_TypeDocTypeDocIDtbh_DocTypeDocIDодин ко многим

1.5 Описание программного обеспечения, используемого в работе


1) Microsoft Visual Studio - линейка продуктов компании Майкрософт, включающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств. Данные продукты позволяют разрабатывать как консольные приложения, так и приложения с графическим интерфейсом, в том числе с поддержкой технологии Windows Forms, а также веб-сайты, веб-приложения, веб-службы как в родном, так и в управляемом кодах для всех платформ, поддерживаемых Microsoft Windows, Windows Mobile, Windows CE, .NET Framework, .NET Compact Framework и Microsoft Silverlight.Studio включает в себя редактор исходного кода с поддержкой технологии IntelliSense и возможностью простейшего рефакторинга кода. Встроенный отладчик может работать как отладчик уровня исходного кода, так и как отладчик машинного уровня. Остальные встраиваемые инструменты включают в себя редактор форм для упрощения создания графического интерфейса приложения, веб-редактор, дизайнер классов и дизайнер схемы базы данных.Studio позволяет создавать и подключать сторонние дополнения (плагины) для расширения функциональности практически на каждом уровне, включая добавление поддержки систем контроля версий исходного кода (как например, Subversion и Visual SourceSafe), добавление новых наборов инструментов (например, для редактирования и визуального проектирования кода на предметно-ориентированных языках программирования или инструментов для прочих аспектов цикла разработки программного обеспечения (например, клиент Team Explorer для работы с Team Foundation Server).[9]

При написании сайта, была использована Visual Studio 2010 (кодовое имя Hawaii, для Ultimate - Rosario; внутренняя версия 10.0) - выпущена 12 апреля 2010 года вместе с .NET Framework 4.0. Visual Studio включает поддержку языков C# 4.0 и Visual Basic .NET 10.0, а также языка F#, отсутствовавшего в предыдущих версиях.

1) C#- объектно-ориентированный <#"justify">1.6 Система меню


В web-приложении используется мастер страница (Template.master) в которой определена панель «хлебные крошки»


<div id="breadcrumb">

<asp:SiteMapPath ID="SiteMapPath1" runat="server" > </asp:SiteMapPath> </div>

<asp:SiteMapDataSource ID="SiteMapDataSource1" ShowStartingNode="false" runat="server" />


И вертикальное меню для всего сайта, которое представляет собой разработанный control MenuBox.ascx.

Пункты меню MenuBox.ascx:

1.О кафедре

2.Научная работа

2.1.Сотрудничество

2.2.Направления научных исследований

.3.Студенты

2.3.1.Курсовые (дипломные) работы студентов

2.3.2.Публикации студентов

2.4.Магистратура

2.4.1.Магистранты

2.4.1.1.Научные работы магистрантов

2.4.1.2.Публикации магистрантов

2.5.Аспирантура

2.5.1.Аспиранты

2.5.2.Научные работы аспирантов

.5.3.Публикации аспирантов

3.Публикации кафедры

4.Сотрудники кафедры

4.1.Преподавательская деятельность сотрудников

4.2.Публикации сотрудников

5.Дисциплины

6.История кафедры

.Документы

.Статьи

.Контакты

.Форумы

.Новости

.Администратор

Листинг файла web.Sitemap:


<?xml version="1.0" encoding="utf-8" ?>

<siteMap xmlns="#"justify"><siteMapNode title="*" description="*" url="~/">

<siteMapNode title="Страница заблокирована" description="Страница заблокирована" url="~/AccessDenied.aspx"/>

<siteMapNode title="Изменение профиля" description="Изменение профиля" url="~/EditProfile.aspx"/>

<siteMapNode title="О кафедре" description="О кафедре" url="~/Default.aspx"/>

<siteMapNode title="Регистрация" description="Регистрация" url="~/Register.aspx"/>

<siteMapNode title="Восстановление пароля" description="Восстановление пароля" url="~/PasswordRecovery.aspx"/>

<siteMapNode title="Научная работа" description="Научная работа" url="~/ScientificWork.aspx" >

<siteMapNode title="Направления научных исследований" description="Направления научных исследований" url="~/TheDirectionOfResearch.aspx" ></siteMapNode>

<siteMapNode title="Сотрудничество" description="Сотрудничество" url="~/Cooperation.aspx" ></siteMapNode>

<siteMapNode title="Студенты" description="Студенты" url="~/Students.aspx" >

<siteMapNode title="Научная деятельность студента" description="Научная деятельность студента" url="~/Student.aspx" />

<siteMapNode title="Публикации студентов" description="Публикации студентов" url="~/PublicationsStydents.aspx" />

<siteMapNode title="Научная деятельность студентов" description="Научная деятельность студентов" url="~/StudentJobs.aspx" /> </siteMapNode>

<siteMapNode title="Магистратура" description="Магистратура" url="~/Magistratura.aspx" >

<siteMapNode title="Магистранты" description="Магистранты" url="~/MasterStudents.aspx" >

<siteMapNode title="Научная деятельность магистранта" description="Научная деятельность магистранта" url="~/MasterStudent.aspx" />

<siteMapNode title="Научная деятельность магистрантов" description="Научная деятельность магистрантов" url="~/MagisterThesis.aspx" />

<siteMapNode title="Публикации магистрантов" description="Публикации магистрантов" url="~/PublicationsMasterStudents.aspx" /> </siteMapNode>

</siteMapNode>

<siteMapNode title="Аспирантура" description="Аспирантура" url="~/Aspirantura.aspx" >

<siteMapNode title="Аспиранты" description="Аспиранты" url="~/Aspirants.aspx" >

<siteMapNode title="Научная деятельность аспиранта" description="Научная деятельность аспиранта" url="~/Aspirant.aspx" />

<siteMapNode title="Научная деятельность аспирантов" description="Научная деятельность аспирантов" url="~/CandidateThesis.aspx" />

<siteMapNode title="Публикации аспирантов" description="Публикации аспирантов" url="~/PublicationsAspirants.aspx" />

</siteMapNode>

</siteMapNode>

</siteMapNode>

<siteMapNode title="Сотрудники кафедры" description="Сотрудники кафедры" url="~/EmployeesOfChair.aspx" >

<siteMapNode title="О сотруднике" description="О сотруднике" url="~/collaborator.aspx" />

<siteMapNode title="Преподавательская деятельность сотрудников" description="Преподавательская деятельность сотрудников" url="~/ReadDiscip.aspx" />

<siteMapNode title="Публикации сотрудников" description="Публикации сотрудников" url="~/PublicationCollaborators.aspx" />

</siteMapNode>

<siteMapNode title="Публикации кафедры" description="Публикации кафедры" url="~/ChairPublications.aspx" />

<siteMapNode title="Дисциплины" description="Дисциплины" url="~/Disciplines.aspx">

<siteMapNode title="Документы по дисциплинам" description="Документы по дисциплинам" url="~/DocumentsByDiscipline.aspx"/>

</siteMapNode>

<siteMapNode title="История кафедры" description="История кафедры" url="~/ChairHistory.aspx" />

<siteMapNode title="Документы" description="Документы" url="~/Documents.aspx" />

<siteMapNode title="Статьи" description="Статьи" url="~/ShowCategories.aspx">

<siteMapNode title="Список статей" description="Список статей" url="~/BrowseArticles.aspx">

<siteMapNode title="Статья" description="Статья" url="~/ShowArticle.aspx" />

</siteMapNode>

</siteMapNode>

<siteMapNode title="Контакты" description="Контакты" url="~/Contact.aspx" />

<siteMapNode title="Форумы" description="Форумы" url="~/ShowForums.aspx" >

<siteMapNode title="Темы форума" description="Темы форума" url="~/BrowseThreads.aspx" >

</siteMapNode>

</siteMapNode>

<siteMapNode title="Новости" description="Новости" url="~/Newsletters.aspx" />

<siteMapNode title="Администратор" description="Администратор" url="~/Admin/Default.aspx" roles="Administrators">

<siteMapNode title="Управление пользователями" description="Управление пользователями" url="~/Admin/ManageUsers.aspx" >

<siteMapNode title="Редактирование пользователей" description="Редактирование пользователей" url="~/Admin/EditUser.aspx" />

</siteMapNode>

<siteMapNode title="Управление статьями" description="Управление статьями" url="~/Admin/ManageArticles.aspx" >

<siteMapNode title="Добавление/изменение статей" description="Добавление/изменение статей" url="~/Admin/AddEditArticle.aspx" />

<siteMapNode title="Управление категориями статей" description="Управление категориями статей" url="~/Admin/ManageCategories.aspx" />

<siteMapNode title="Управление комментариями" description="Управление комментариями" url="~/Admin/ManageComments.aspx" />

</siteMapNode>

<siteMapNode title=" Добавление/изменение новости" description=" Добавление/изменение новости" url="~/Admin/AddEditNewsletters.aspx" />

<siteMapNode title="Редактирование страниц сайта" description="Редактирование страниц сайта" url="~/Admin/EditPageSite.aspx" />

<siteMapNode title="Редактирование дисциплин" description="Редактирование дисциплин" url="~/Admin/AddEditDisciplines.aspx" />

<siteMapNode title="Редактирование публикаций кафедры" description="Редактирование публикаций кафедры" url="~/Admin/AddEditChairPublications.aspx" />

<siteMapNode title="Управление опросами" description="Редактирование опросами" url="~/Admin/ManagePolls.aspx" >

</siteMapNode>

<siteMapNode title="Редактирование сотрудников кафедры" description="Редактирование сотрудников кафедры" url="~/Admin/AddEditCollaborator.aspx" />

<siteMapNode title="Добавление /редактирование / удаление публикаций персон кафедры" description="Добавление /редактирование / удаление публикаций персон кафедры" url="~/Admin/AddEditDelPersonPublication.aspx" />

<siteMapNode title="Добавление /редактирование / удаление персон кафедры" description="Добавление /редактирование / удаление персон кафедры" url="~/Admin/AddEditDelPerson.aspx" />

<siteMapNode title="Добавление /редактирование / удаление публикаций персон кафедры" description="Добавление /редактирование / удаление чтения дисциплин сотрудниками" url="~/Admin/AddEditDelReadOfDicipline.aspx" />

<siteMapNode title="Добавление /редактирование студентов" description="Добавление /редактирование студентов" url="~/Admin/AddEditStudent.aspx" />

<siteMapNode title="Добавление /редактирование магистрантов" description="Добавление /редактирование магистрантов" url="~/Admin/AddEditMasterStudent.aspx" />

<siteMapNode title="Добавление /редактирование аспирантов" description="Добавление /редактирование аспирантов" url="~/Admin/AddEditAspirant.aspx" />

<siteMapNode title="Добавление /редактирование / удаление курсовых (дипломных) работ студента" description="Добавление /редактирование / удаление курсовых (дипломных) работ студента" url="~/Admin/AddEditDelJobStudent.aspx" />

<siteMapNode title="Добавление /редактирование / удаление научных работ магистрантов" description="Добавление /редактирование / удаление научных работ магистрантов" url="~/Admin/AddEditDelMagisterThesis.aspx" />

<siteMapNode title="Добавление /редактирование / удаление научных работ аспирантов" description="Добавление /редактирование / удаление научных работ аспирантов" url="~/Admin/AddEditDelCandidatThesis.aspx" />

<siteMapNode title="Добавление /редактирование /удаление документов по дисциплинам" description="Добавление /редактирование / удаление документов по дисциплинам" url="~/Admin/AddEditDelDocDiscip.aspx" />

<siteMapNode title="Добавление /редактирование / удаление общих документов кафедры" description="Добавление /редактирование/ удаление общих документов кафедры" url="~/Admin/AddEditDelDoc.aspx" />

<siteMapNode title="Добавление /редактирование / удаление типов документов" description="Добавление /редактирование / удаление типов документов" url="~/Admin/AddEditDelTypeDoc.aspx" />

<siteMapNode title="Добавление /редактирование / удаление типов публикаций" description="Добавление /редактирование / удаление типов публикаций" url="~/Admin/AddEditDelTypePublication.aspx" />

<siteMapNode title="Добавление /редактирование / удаление типов работ студентов" description="Добавление /редактирование / удаление типов работ студентов" url="~/Admin/AddEditDelTypeWork.aspx" />

<siteMapNode title="Добавление /редактирование / удаление видов проведения занятий" description="Добавление /редактирование / удаление видов проведения занятий" url="~/Admin/AddEditDelTypeOccupation.aspx" />

</siteMapNode>

</siteMapNode></siteMap>


Глава 2. Состав отдельных модулей


2.1 Хранимые процедуры


) Процедура, которая извлекает все данные для строк таблицы tbh_Newsletters (Новости), с частичным поиском по полям:Subject, HtmlBody, AddedBy, AddedDate


ALTER PROCEDURE [dbo].[tbh_Newsletters_GetNewsletters]

(@param nvarchar(256))NOCOUNT ONNewsletterID, AddedDate, AddedBy, Subject, HtmlBody, NewsletterSendtbh_Newsletters(Subject Like @param) or (HtmlBody Like @param)or (AddedBy Like @param) or (CAST(AddedDate AS Nvarchar) like @param) BY AddedDate DESC


2) Процедура извлекающая новость с указанным идентификатором


ALTER PROCEDURE dbo.tbh_Newsletters_GetNewsletterByID

( @NewsletterID int)NOCOUNT ONNewsletterID, AddedDate, AddedBy, Subject, HtmlBody, NewsletterSendtbh_NewslettersNewsletterID = @NewsletterID

3) Процедура на добавление новости:

ALTER PROCEDURE dbo.tbh_Newsletters_InsertNewsletter

(

@AddedDate datetime,

@AddedBy nvarchar(256),

@Subject nvarchar(256),

@HtmlBody ntext,

@NewsletterID int OUTPUT

)NOCOUNT ONINTO tbh_Newsletters

(AddedDate, AddedBy, Subject, HtmlBody)(@AddedDate, @AddedBy, @Subject, @HtmlBody) @NewsletterID = scope_identity()


) Процедура на изменение новости


ALTER PROCEDURE dbo.tbh_Newsletters_UpdateNewsletter

(

@NewsletterID int,

@Subject nvarchar(256),

@HtmlBody ntext

)tbh_NewslettersSubject = @Subject, HtmlBody = @HtmlBody NewsletterID = @NewsletterID


) Процедура на удаление новости:

ALTER PROCEDURE dbo.tbh_Newsletters_DeleteNewsletter

(

@NewsletterID int

)tbh_Newsletters WHERE NewsletterID = @NewsletterID


6) Процедура, которая извлекает из таблицы tbh_Newsletters последние три добавленные новости:


ALTER PROCEDURE dbo.tbh_Newsletters_GetNewsletters3NOCOUNT ONTOP 3 NewsletterID, AddedDate, AddedBy, Subject, HtmlBodytbh_NewslettersBY AddedDate DESC


7)Процедура, которая обновляет новость, изменяя поле NewsletterSend со значения по умолчанию равного 0, на значение 1 - признак того, что новость отправлена на e-mail подписчикам


ALTER PROCEDURE [dbo].[tbh_Newsletters_UpdateNewsletterSend]

(@NewsletterID int)tbh_NewslettersNewsletterSend = 1NewsletterID = @NewsletterID


2.2 Класс связующий информацию сайта с базой данной


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


using System;System.Data;System.Configuration;System.Web;System.Web.Security;System.Web.UI;System.Web.UI.WebControls;System.Web.UI.WebControls.WebParts;System.Web.UI.HtmlControls;MB.AppliedMathematics.DAL.Details

{public class NewsletterDetails

{NewsletterDetails() { }NewsletterDetails(int id, DateTime addedDate, string addedBy, string subject, string htmlBody, bool newsletterSend)

{this.ID = id;.AddedDate = addedDate;.AddedBy = addedBy;.Subject = subject;.HtmlBody = htmlBody;.NewsletterSend = newsletterSend;}int _id = 0;int ID

{get { return _id; }{ _id = value; }}DateTime _addedDate = DateTime.Now;DateTime AddedDate

{get { return _addedDate; }{ _addedDate = value; }}string _addedBy = "";string AddedBy

{get { return _addedBy; }{ _addedBy = value; }}string _subject = "";string Subject

{get { return _subject; }{ _subject = value; }}string _htmlBody = "";string HtmlBody

{get { return _htmlBody; }{ _htmlBody = value; }}bool _newsletterSend = false;bool NewsletterSend

{get { return _newsletterSend; } { _newsletterSend = value; }}}}


2.3 Класс, выполняющий операции над данными в базе


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

using System;

using System.Data;System.Configuration;System.Web;System.Web.Security;System.Web.UI;System.Web.UI.WebControls;System.Web.UI.WebControls.WebParts;System.Web.UI.HtmlControls;System.Data.SqlClient;System.Collections.Generic;System.Web.Caching;System.ComponentModel;System.Drawing;System.Collections;System.Web.Configuration;System.Text;MB.AppliedMathematics.DAL.Details;MB.AppliedMathematics.DAL.SqlClient

{class SQLNewsletterProvider

{private string connectionString; SQLNewsletterProvider()

{

// Получить строку соединения по умолчанию

connectionString = WebConfigurationManager.ConnectionStrings["LocalSqlServerConnection"].ConnectionString;

}SQLNewsletterProvider(string connectionStringName)

{

// получить конкретную строку соединения

connectionString = WebConfigurationManager.ConnectionStrings["connectionStringName"].ConnectionString;

}

// добавление новости

public int InsertNewsletter(DateTime AddedDate, string AddedBy, string Subject, string HtmlBody)

{ if (AddedBy == null) { AddedBy = ""; }(Subject == null) { Subject = ""; }(HtmlBody == null) { HtmlBody = ""; }(AddedDate == null) { AddedDate = DateTime.Now; }cn = new SqlConnection(connectionString);cmd = new SqlCommand("tbh_Newsletters_InsertNewsletter", cn);.CommandType = CommandType.StoredProcedure;.Parameters.Add("@AddedDate", SqlDbType.DateTime).Value = AddedDate;.Parameters.Add("@AddedBy", SqlDbType.NVarChar).Value = AddedBy;.Parameters.Add("@Subject", SqlDbType.NVarChar).Value = Subject;.Parameters.Add("@HtmlBody", SqlDbType.NText).Value = HtmlBody;.Parameters.Add("@NewsletterID", SqlDbType.Int).Direction = ParameterDirection.Output;

{cn.Open();.ExecuteNonQuery();(int)cmd.Parameters["@NewsletterID"].Value;}

finally

{cn.Close();}}

// получение новости по ее идентификатору (ID)

public NewsletterDetails GetNewsletterByID(int id)

{using (SqlConnection con = new SqlConnection(connectionString))

{cmd = new SqlCommand("tbh_Newsletters_GetNewsletterByID", con);.CommandType = CommandType.StoredProcedure;.Parameters.Add("@NewsletterID", SqlDbType.Int).Value = id;

{con.Open();reader = cmd.ExecuteReader(CommandBehavior.SingleRow);

// получить первую строку

reader.Read();

NewsletterDetails newslett = new NewsletterDetails(Convert.ToInt32(reader["NewsletterID"]), Convert.ToDateTime(reader["AddedDate"]), Convert.ToString(reader["AddedBy"]), Convert.ToString(reader["Subject"]), Convert.ToString(reader["HtmlBody"]), Convert.ToBoolean(reader["NewsletterSend"]));.Close();newslett;}(SqlException err)

{throw new ApplicationException("Ошибка данных");}

{con.Close();

}}}

// получить все новости с частичным поиском по полям:Subject, HtmlBody, AddedBy, AddedDate

public List<NewsletterDetails> GetNewsletters( string param)

{SqlConnection con = new SqlConnection(connectionString);cmd = new SqlCommand("tbh_Newsletters_GetNewsletters", con);.CommandType = CommandType.StoredProcedure;.Parameters.Add("@param", SqlDbType.NVarChar).Value = "%"+param+"%";

// Создать коллекцию для всех записей

List<NewsletterDetails> newsletter = new List<NewsletterDetails>();

{con.Open();reader = cmd.ExecuteReader();(reader.Read())

{NewsletterDetails newslet = new NewsletterDetails(Convert.ToInt32(reader["NewsletterID"]), Convert.ToDateTime(reader["AddedDate"]), Convert.ToString(reader["AddedBy"]), Convert.ToString(reader["Subject"]), Convert.ToString(reader["HtmlBody"]), Convert.ToBoolean(reader["NewsletterSend"]));.Add(newslet);}.Close();newsletter;}(SqlException err)

{throw new ApplicationException("Ошибка данных");}

finally

{con.Close();}

}

// получить последние 3 новости

public List<NewsletterDetails> GetNewsletters3()

{SqlConnection con = new SqlConnection(connectionString);cmd = new SqlCommand("tbh_Newsletters_GetNewsletters3", con);.CommandType = CommandType.StoredProcedure;

// Создать коллекцию для всех записей

List<NewsletterDetails> newsletter = new List<NewsletterDetails>();

{con.Open();reader = cmd.ExecuteReader();(reader.Read())

{NewsletterDetails newslet = new NewsletterDetails(Convert.ToInt32(reader["NewsletterID"]), Convert.ToDateTime(reader["AddedDate"]), Convert.ToString(reader["AddedBy"]), Convert.ToString(reader["Subject"]), Convert.ToString(reader["HtmlBody"]), Convert.ToBoolean(reader["NewsletterSend"]));.Add(newslet);}.Close();newsletter;}(SqlException err)

{throw new ApplicationException("Ошибка данных");}

finally

{con.Close();}

}

// новость отослана подписчикам

public void UpdateNewsletterSend( int id)

{SqlConnection cn = new SqlConnection(connectionString);cmd = new SqlCommand("tbh_Newsletters_UpdateNewsletterSend", cn);.CommandType = CommandType.StoredProcedure;.Parameters.Add("@NewsletterID", SqlDbType.Int).Value = id;

{cn.Open();.ExecuteNonQuery();

}

{cn.Close();}}

// обновить новость

public void UpdateNewsletter(string Subject, string HtmlBody, int id)

{if (Subject == null) { Subject = ""; }(HtmlBody == null) { HtmlBody = ""; }cn = new SqlConnection(connectionString);cmd = new SqlCommand("tbh_Newsletters_UpdateNewsletter", cn);.CommandType = CommandType.StoredProcedure;.Parameters.Add("@Subject", SqlDbType.NVarChar).Value = Subject;.Parameters.Add("@HtmlBody", SqlDbType.NText).Value = HtmlBody;.Parameters.Add("@NewsletterID", SqlDbType.Int).Value = id;

{cn.Open();.ExecuteNonQuery();}

{cn.Close();}}

//удалить новость

public void DeleteNewsletter(int id)

{{con = new SqlConnection(connectionString);cmd = new SqlCommand("tbh_Newsletters_DeleteNewsletter", con);.CommandType = CommandType.StoredProcedure;.Parameters.Add(new SqlParameter("@NewsletterID", SqlDbType.Int));.Parameters["@NewsletterID"].Value = id;

{con.Open();.ExecuteNonQuery();}

{con.Close();

}}}}}


2.4 Страница сайта, отображающая информацию с базы данных Newsletters.aspx


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Newsletters.aspx.cs" Inherits="MB.AppliedMathematics.UI.Newsletters" %>

// MainContent расположен на мастер странице

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

//Подключаем Ajax элементы

<asp:ScriptManager ID="ScriptManager1" runat="server" AsyncPostBackTimeout="86400">

</asp:ScriptManager>

// На событии таймара Timer1_Tick происходит отправка новостей подписчикам

<asp:Timer ID="Timer1" runat="server" Enabled="False" Interval="1" OnTick="Timer1_Tick">

</asp:Timer>

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">

<Triggers>

<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />

</Triggers>

<ContentTemplate>

<table border="0" width="100%">

<tr>

<td align="left">

<div>

Новости</div>

</td>

// Поиск по новостям

<td width="285px" align="right" valign="top">

<asp:Label ID="Label1" runat="server" Text="Поиск..."></asp:Label>

<asp:TextBox ID="TextBoxSearch" runat="server"></asp:TextBox><asp:ImageButton ID=" ImageButtonSearch "="server" ImageUrl="~/Images/search.png" OnClick=" ImageButtonSearch _Click" />

</td>

</tr>

</table>

<asp:Label ID="Label3" runat="server" Text="Количество записей:"></asp:Label>

<asp:Label ID="LabelCount" runat="server" ForeColor="#CC6600" Font-Bold="true"></asp:Label>

// Панель с ссылкой на добавление новости, видна только администраторам и редакторам

<asp:Panel runat="server" ID="panAdd" Visible="false" Direction="RightToLeft" Enabled="True">

<div id="Div1">

<asp:HyperLink ID="AddNews" Visible="false" runat="server" NavigateUrl="~/Admin/AddEditNewsletters.aspx">Добавить новость</asp:HyperLink>

</div>

</asp:Panel>

//Панель с визуализацией состояния отправки новостей на е-mail

<asp:Panel ID="PanelSendEmail" runat="server" Visible="False">

<table width="100%" border="0">

<tr>

<td align="left">

<asp:Label runat="server" ID="Label2" Text="Количество адресатов:" />

<asp:Label ID="LabelCountAddress" runat="server" ForeColor="#CC6600" Font-Bold="true"></asp:Label>

</td>

</tr>

<tr>

<td align="left">

<asp:Label ID="LabelLetterSendL" runat="server" Text="Количество успешно отправленных: "="False"></asp:Label>

<asp:Label ID="LabelLetterSend" runat="server" ForeColor="#CC6600" Text=""></asp:Label>

</td>

</tr>

<tr>

<td align="left">

<asp:Label ID="LabelLetterNoSendL" runat="server" Text="Количество не оправленных:"="False"></asp:Label>

<asp:Label ID="LabelLetterNoSend" runat="server" ForeColor="#CC6600" Text=""></asp:Label>

</td>

</tr>

</table>

<asp:Panel ID="PanelAnim" runat="server" Visible="false">

<asp:Label ID="Label14" runat="server" Text="Подождите. Идет отправка писем...Обработано"></asp:Label>

&nbsp

<asp:Label ID="LabelSendCurrent" runat="server" Text="0"></asp:Label>

&nbsp

<asp:Label ID="Label15" runat="server" Text="писем." SkinID="LabelIUD"></asp:Label>

<asp:Image ID="Image1" runat="server" Width="40px" ImageUrl="~/Images/ClockAnim.gif" />

</asp:Panel>

<asp:Button ID="ButtonOK" runat="server" Text="Ok" Visible="false" OnClick="ButtonOK_Click" />

</asp:Panel>

<br />

//подключение к объекту с данными

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"="GetNewsletters"="MB.AppliedMathematics.DAL.SqlClient.SQLNewsletterProvider">

<SelectParameters>

<asp:Parameter DefaultValue="" Name="param" Type="String" />

</SelectParameters>

</asp:ObjectDataSource>

<div align="center">

//отображение новостей в ListView

<asp:ListView ID="ListView1" runat="server" DataSourceID="ObjectDataSource1"="2" onitemcommand="ListView1_ItemCommand" >

<LayoutTemplate>

<table runat="server" width="100%">

<tr runat="server">

<td runat="server">

<table ID="groupPlaceholderContainer" runat="server" border="0"="10" style="font-family: Verdana, Arial, Helvetica, sans-serif;" width="100%">

<tr ID="groupPlaceholder" runat="server">

</tr>

</table>

</td>

</tr>

<tr runat="server">

<td runat="server"="text-align: center; font-family: Verdana, Arial, Helvetica, sans-serif;color: #333333;" >

</td>

</tr>

</table>

</LayoutTemplate>

<EmptyItemTemplate>

<td runat="server" />

</EmptyItemTemplate>

<GroupTemplate>

<tr ID="itemPlaceholderContainer" runat="server">

<td ID="itemPlaceholder" runat="server">

</td>

</tr>

</GroupTemplate>

<EmptyDataTemplate>

<table runat="server">

<tr>

<td>

Таких новостей не найдено.</td>

</tr>

</table>

</EmptyDataTemplate>

<ItemTemplate>

<td runat="server" >

<a ID='<%# Eval("ID") %>'></a>

<div>

<asp:Literal ID="lblAddedDate" runat="server"='<%# Eval("AddedDate", "{0:D}") %>' />

<asp:Literal ID="lblTitle" runat="server" Text='<%# Eval("Subject") %>' />

<div ID="Div2" runat="server">

Добавлено

<asp:Literal ID="lblAddedBy" runat="server" Text='<%# Eval("AddedBy") %>' />

</div>

</div>

<div>

<asp:Literal ID="lblBody" runat="server" Text='<%# Eval("HtmlBody") %>' />

<br />

//панель редактирования новости видна только администраторам и редакторам

<asp:Panel ID="panEdit" runat="server" HorizontalAlign="Right"="<%# UserCanEdit %>">

<asp:Label ID="LabelNewsletter" runat="server"='<%#Eval("NewsletterSend") %>' Visible="false"></asp:Label>

<asp:Image ID="ImageNewsletter" runat="server" />

&nbsp;

<asp:ImageButton ID="ImageSendNewsletter" runat="server"='<%# Eval("ID") %>' CommandName="Send"="~/Images/SendNews.png"="if (confirm('Разослать новость по подписке?') == false) return false;"

ToolTip="Разослать новость по подписке" />

&nbsp;

<asp:HyperLink ID="lnkEdit" runat="server" ImageUrl="~/Images/Edit.gif"='<%# "~/Admin/AddEditNewsletters.aspx?ID=" + Eval("ID") %>'="Изменить новость" />

&nbsp;&nbsp;

<asp:ImageButton ID="btnDelete" runat="server" AlternateText="Удаление новости"='<%# Eval("ID") %>' CommandName="Del"="~/Images/Delete.gif"="if (confirm('Вы действительно хотите удалить эту новость?') == false) return false;"="Удалить" />

</asp:Panel>

</div>

</td>

</ItemTemplate>

</asp:ListView>

<br />

//компонент DataPager для перелистывания страниц с новостями

<asp:DataPager ID="DataPager1" runat="server" PagedControlID="ListView1"="10" QueryStringField="page">

<Fields>

<asp:NextPreviousPagerField ButtonType="Button" FirstPageText="В начало"="В конец" NextPageText="Далее" PreviousPageText="Назад"="True" ShowLastPageButton="True" />

</Fields>

</asp:DataPager>

</div>

<br />

</ContentTemplate>

</asp:UpdatePanel>

</asp:Content>


2.5 Страница сайта, отображающая информацию с базы данных Newsletters.cs


using System;System.Data;System.Configuration;System.Collections;System.Web;System.Web.Security;System.Web.UI;System.Web.Profile;System.Web.UI.WebControls;System.Web.UI.WebControls.WebParts;System.Web.UI.HtmlControls;System.Data.SqlClient;MB.AppliedMathematics.DAL.Details;MB.AppliedMathematics.DAL.SqlClient;System.IO;System.Net.Mail;System.Net;System.Text;System.Net.Mime;System.Web.Configuration;System.Net.Configuration;System.Collections.Generic;MB.AppliedMathematics.UI

{partial class Newsletters : BasePage

{bool _userCanEdit = false;bool UserCanEdit

{{ return _userCanEdit; }{ _userCanEdit = value; }

}void Page_Init(object sender, EventArgs e)

{= (this.User.Identity.IsAuthenticated &&

(this.User.IsInRole("Administrators") || this.User.IsInRole("Editors")));

}void Page_Load(object sender, EventArgs e)

{

// панели для редактирования новости видны только администраторам и редакторам

if (!this.IsPostBack)

{ if (this.User.Identity.IsAuthenticated &&

(this.User.IsInRole("Administrators") || this.User.IsInRole("Editors")))

{ panAdd.Visible = true;.Visible = true; }(TextBoxSearch.Text); }();

}

// показываем в виде картинки состояние новости, разослана она или нет подписчикам

protected void ImageSendGreed()

{ for (int i = 0; i < ListView1.Items.Count; i++)

{ Image ImageNewsletter = (Image)ListView1.Items[i].FindControl("ImageNewsletter");LabelNewsletter = (Label)ListView1.Items[i].FindControl("LabelNewsletter");(LabelNewsletter.Text == "False")

{ImageNewsletter.ToolTip = "Новость еще не разослана";.ImageUrl = "~/Images/Envelope.png";}

{ImageNewsletter.ToolTip = "Новость разослана";.ImageUrl = "~/Images/OpenEnvelope.png";}

} }

// формируем DataSet с именами и e-mail подписчиков

protected DataSet Addresset()

{Address = new DataSet();.Tables.Add("Table");.Tables["Table"].Columns.Add("User");.Tables["Table"].Columns.Add("eMail");allUsers = Membership.GetAllUsers();(MembershipUser user in allUsers)

{ProfileCommon profile = new ProfileCommon();= Profile.GetProfile(user.UserName);(profile.Preferences.Newsletter == "Да")

{DataRow dr = Address.Tables["Table"].NewRow();["User"] = user.UserName;["eMail"] = user.Email;.Tables["Table"].Rows.Add(dr);

}}

return Address;

}

// процедура отправки письма с новостью

protected int SendMail(string user, string email, string subject, string bodyText)

{try

{Configuration config = WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath);settings = (MailSettingsSectionGroup)config.GetSectionGroup("system.net/mailSettings");Smtp = new SmtpClient(settings.Smtp.Network.Host, settings.Smtp.Network.Port);.Credentials = new NetworkCredential(settings.Smtp.From, settings.Smtp.Network.Password);

// оправляем сообщение

MailMessage msg = new MailMessage();.IsBodyHtml = false;.From = new MailAddress(settings.Smtp.From);.To.Add(new MailAddress(email, ""));.IsBodyHtml = true;.Subject = string.Format(Globals.Settings.ContactForm.MailSubject, subject);body = "Здравствуйте " + user + "!"+"\n";= body + bodyText;.Body = body;.Send(msg);1;

}(Exception ex)

{ return 0; }

}

// отправка писем происходит в событии таймера

protected void Timer1_Tick(object sender, EventArgs e)

{DataSet Addres = (DataSet)Application["Address"];index = (int)Application["index"];zap = (NewsletterDetails)Application["Newsletter"];(index < Addres.Tables[0].Rows.Count)

{DataRow dr = Addres.Tables[0].Rows[index];.Text = (index + 1).ToString();["LetterSend"] = (int)Application["LetterSend"] + SendMail(dr["User"].ToString(), dr["eMail"].ToString(), "Новости", "\n"+"Тема новости: "+zap.Subject+"\n"+zap.HtmlBody);["index"] = (int)Application["index"] + 1;

}

{SQLNewsletterProvider MyDb = new SQLNewsletterProvider();.UpdateNewsletterSend(zap.ID);.Enabled = false;LetterSend = (int)Application["LetterSend"];LetterNoSend = Addres.Tables[0].Rows.Count - LetterSend;.Visible = true;.Visible = true;.Text = LetterSend.ToString();.Text = LetterNoSend.ToString();.Visible = false;.Visible = true;(TextBoxSearch.Text);();

}}void clear()

{LabelLetterSendL.Visible = false;.Visible = false;.Text = "";.Text = "";.Text = "0"; }void ButtonOK_Click(object sender, EventArgs e)

{PanelSendEmail.Visible = false;}

//кнопка поиска

protected void ImageButtonSearch_Click(object sender, ImageClickEventArgs e)

{Data(TextBoxSearch.Text);}

//заполнение данными ListView с новостями

protected void Data(string param)

{SQLNewsletterProvider myDB = new SQLNewsletterProvider();<NewsletterDetails> zaps = new List<NewsletterDetails>();= myDB.GetNewsletters(param);.SelectParameters["param"] = new Parameter("param", TypeCode.String, TextBoxSearch.Text);.DataBind();.Text = zaps.Count.ToString();.Text = "";

}

// команды в записях ListView

protected void ListView1_ItemCommand(object sender, ListViewCommandEventArgs e)

{ if (e.CommandName == "Send")

{();MyDb = new SQLNewsletterProvider();zap = new NewsletterDetails();id = Convert.ToInt32(e.CommandArgument.ToString());= MyDb.GetNewsletterByID(id);["Newsletter"] = zap;Address = new DataSet();= Addresset();["Address"] = Address;["index"] = 0;["LetterSend"] = 0;["LetternoSend"] = 0;.Text = Address.Tables["Table"].Rows.Count.ToString();.Visible = true;.Enabled = true;.Visible = true;

}(e.CommandName == "Del")

{MyDb = new SQLNewsletterProvider();.DeleteNewsletter(Convert.ToInt32(e.CommandArgument.ToString()));(TextBoxSearch.Text);();

}}}}


2.6 Страница добавления (изменения) информации из базы данных AddEditNewsletters.cs


namespace MB.AppliedMathematics.UI.Admin

{partial class AddEditNewsletters : BasePage

{int id = 0;bool isNewNewsLetter = false;bool isEditingNewsletter = false;connectionString = WebConfigurationManager.ConnectionStrings["LocalSqlServerConnection"].ConnectionString;sqlNewsletterProvider = new SQLNewsletterProvider();void Page_Load(object sender, EventArgs e)

{

// если страница была загружена в первый раз, то

if (!this.IsPostBack)

{= 0;((!string.IsNullOrEmpty(this.Request.QueryString["ID"])))

{= int.Parse(this.Request.QueryString["ID"]);

}

//определяем, будем добавлять, или изменять новость

isNewNewsLetter = (id == 0 || id == null);= (id != 0);.BasePath = this.BaseUrl + "FCKeditor/";

// если новость изменяем, то

if (isEditingNewsletter)

{

// загружаем новость по ее идентификатору

NewsletterDetails newslet = sqlNewsletterProvider.GetNewsletterByID(id);

lblEditNews.Visible = true;.Visible = false;.Text = "Обновить";.Text = newslet.Subject;.Value = newslet.HtmlBody;

}

// если новость будет добавляться, то

else if (isNewNewsLetter)

{.Visible = true;.Visible = false;.Text = "Добавить";

} } }

// процедура кнопки на изменении (добавлении) новости

protected void btnSubmit_Click1(object sender, EventArgs e)

{if (btnSubmit.Text == "Обновить")

{= int.Parse(this.Request.QueryString["ID"]);body = txtBody.Value;.UpdateNewsletter(txtTitle.Text, body, id);.Visible = false;.Text = " Ваша новость успешно изменена!";.Visible = true;

}

{DateTime AddedDate = DateTime.Now;AddedBy = this.User.Identity.Name;.InsertNewsletter(AddedDate, AddedBy, txtTitle.Text, txtBody.Value);.Visible = false;.Text = " Ваша новость успешно добавлена!";.Visible = true;

} }void ButtonCanсel_Click(object sender, EventArgs e)

{

Response.Redirect("~/Newsletters.aspx");

} }}


Заключение


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

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

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

магистерских диссертаций магистрантов с их научными руководителями;

кандидатских диссертаций аспирантов с их научными руководителями;

публикациях членов кафедры;

дисциплинах кафедры, с выложенными по ним документами; документах кафедры.

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

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

В случае утраты пользователем пароля, последний будет выслан ему на e-mail.

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

Разработанное web- приложение является удобным в использовании, как обычным пользователям, так и администраторам.

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

Также на страницах используются элементы Ajax (ScriptManager, UpdatePanel), которые позволяют выполнить частичное обновление страницы, избавляя её от «моргания».

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

Кроме этого предусмотрены страницы с поиском со всеми:

·публикациями сотрудников, студентов, магистрантов и аспирантов;

·курсовыми, дипломными работами студентов;

·научными работами магистрантов и аспирантов;

·преподавательской деятельности сотрудников.

По выбранной дисциплине можно скачать предоставленные по ней документы. Кроме этого эти же документы и общие документы кафедры можно найти на одноименной странице.

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

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

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


Список использованных источников


1.Беллиньясо М. Разработка Web-приложений в среде ASP.NET 2.0: задача-проект-решение/ М. Беллиньясо. - пер. с англ. - Москва-Санкт-Петербург-Киев:- ООО «И.Д. Вильямс», 2007. - 640с.

2.Мак-Дональд М. Microsoft ASP.NET 2.0 с примерами на C# 2005 для профессионалов/ М. Мак-Дональд, М. Шпушта. - пер. с англ. - Москва-Санкт-Петербург-Киев:- ООО «И.Д. Вильямс», 2006. - 1408с.

.Сеппа Д. Microsoft ADO.NET/ Д. Сеппа. - Москва: «И.Д. Русская Редакция», 2003. - 640с

.Сеппа Д. Программирование на Microsoft ADO.NET 2.0. Мастер-класс/ Д. Сеппа. - Москва: «И.Д. Русская Редакция», 2007. -784с

.Пауэрс Л. Microsoft Visual Studio 2008 / Л. Пауэрс, М.Снелл. - пер. с англ. - Санкт-Петербург: «БХВ-Петербург», 2009.-1200

6.Библиотека MSDN (по-русски) [Электронный ресурс]. - 1999. - Режим доступа: <http://msdn.microsoft.com/ru-ru/library/>.

7.DotSite [Электронный ресурс]. - 2000. - Режим доступа <http://www.dotsite.ru/Publications/Publication1.aspx>.

8.Microsoft TechNet [Электронный ресурс]. - 2012. - Режим доступа <http://technet.microsoft.com/ru-ru/library/cc775831.aspx>.

.Википедия [Электронный ресурс]. - 2001. - Режим доступа <http://ru.wikipedia.org/wiki/Microsoft_Visual_Studio>.

.Википедия [Электронный ресурс]. - 2001. - Режим доступа <http://ru.wikipedia.org/wiki/C_Sharp>.


Оглавление Введение Общая характеристика работы Глава 1. Построение логической модели .1 Постановка задачи .2 Описание предметной области

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

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

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

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

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