Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
PAGE \* MERGEFORMAT3
КУРСОВИЙ ПРОЕКТ
з мережних інформаційних технологій
на тему: «Розробка інтернет-системи “ Электронна бiблiотека кафедри МОКС ”»
СОДЕРЖАНИЕ
[1] ВВЕДЕНИЕ [2] 1 Постановка задачи проектирования [3] Проектирование интернет-системы «Электронная библиотека кафедры МОКС» [3.1] 2.1 Общая архитектура системы [3.2] 2.2 Проектирование БД системы [3.3] 2.3 Планирование структуры Web-системы. [3.4] 2.4 Дизайн страниц. [4] 3 РАЗРАБОТКА ИНТЕРНЕТ- СИСТЕМЫ В СРЕДЕ VISUAL STUDIO. NET [4.1] 3.1 Краткое описание использованной технологии [4.2] 3.2 Физическая модель базы данных [4.3] 3.3 Разработка бизнес-логики интернет-системы «Электронная библиотека кафедры МОКС» [5] ВЫВОДЫ [6] список источников [7] ПРИЛОЖЕНИе |
Изначально веб страницы были примитивными статическими страницами с множеством разнообразно размеченного текста. Веб страницы обычно создаются на языках HTML -HyperText Markup Language (Язык гипертекстовой разметки). Язык HTML является самым простым из языков программирования, однако на сегодняшний момент некоторые веб страницы можно заслуженно назвать шедевром программирования. Современные веб страницы могут быть также написаны с использованием разных языов, зачастую это JavaScript или Jquery. Но на сегодняшний момент веб страницы становятся форумами с большим количеством информации о пользователях, их темах, их файлах и т.п. Поэтому одного HTML с JavaScript и JQuery уже не хватает и тут на помощь приходят базы данных, которые дают возможность быстро добраться до нужной информации. Microsoft разработала уникальную среду разработки, в которой можно достаточно быстро разработать страницу с базой данных и при этом, нет необходимости запускать среду для создания базы данных и производить связи и другие настройки и параллельно с этим работать непосредственно с самой страницей, так как все эти функции Microsoft Visual Studio.NET предоставляет нам в пару кликов. Microsoft Visual Studio.NET настолько удобная среда разработки приложений, что большую часть функционала и дизайна создаваемой системы можно настроить без базовых знаний программирования.
Разработать Электронную библиотеку для размещения в облаке документации кафедры МОКС ОНУ им Мечникова. К документации кафедры относятся такие материалы:
Текущие документы такие как:
Публикации членов кафедры по текущему году такие как:
Также публикация других авторов
Задание
Электронная библиотека кафедры должна позволить менеджерам кафедры и всем сотрудникам вносить, просматривать любые документы. Размещать в библиотеке свои документы
Для поиска документов должны быть реализованы специальные функциональные возможности:
Менеджер кафедры должен иметь возможность модифицировать информацию в справочных таблицах.
Для реализации Интернет-системы «Электронная библиотека кафедры МОКС» была выбрана среда разработки Microsoft Visual Studio . Современные программные приложения и информационные системы достигли высокого уровня развития и термин или понятие "архитектура" в применении к ним позволяет грамотно построить и сконструировать информационную систему в целом, обеспечивая ее эффективное и надежное функционирование. Архитектура информационной системы концепция, определяющая модель, структуру, выполняемые функции и взаимосвязь компонентов информационной системы. По мере развития программных систем все большее значение приобретает их интеграция друг с другом с целью построения единого информационного пространства предприятия. Для того чтобы построить правильную и надежную архитектуру и грамотно спроектировать интеграцию программных систем необходимо четко следовать современным стандартам в этих областях. Без этого велика вероятность создать архитектуру, которая неспособна развиваться и удовлетворять растущим потребностям пользователей ИТ. В качестве законодателей стандартов в этой области выступают такие международные организации как SEI (Software Engineering Institute), WWW (консорциум World Wide Web), OMG (Object Management Group), организация разработчиков Java JCP (Java Community Process), IEEE (Institute of Electrical and Electronics Engineers) и другие. Базовой архитектурой для реализации Веб-приложений стала Многозвенная архитектура "клиент-сервер". Наиболее распространена трехуровневая архитектура (трехзвенная архитектура, three-tier), предполагающая наличие следующих компонентов приложения: клиентское приложение ( "тонкий клиент" или терминал), подключенное к серверу приложений, который в свою очередь подключен к серверу базы данных (рисунок 1.1).
В простейшей конфигурации физически сервер приложений может быть совмещен с сервером базы данных на одном компьютере, к которому по сети подключается один или несколько терминалов. В "правильной" с точки зрения безопасности, надежности, масштабирования конфигурации сервер базы данных находится на выделенном компьютере или кластере, к которому по сети подключены один или несколько серверов приложений, к которым, в свою очередь, по сети подключаются терминалы.
Рисунок .1 - Архитектура Веб-приложений
Облачные вычисления (от англ. cloud computing) - технология обработки данных, основанная на том, что компьютерные ресурсы и вычислительные мощности предоставляются пользователю как Интернет- сервис. При этом пользователь может имеет доступ к собственным данным, но не имеет возможности управлять инфраструктурой, операционной системой и другим программным обеспечением, которые фактически и обеспечивают его работу.
Парадигма облачной обработки данных предполагает, что вся необходимая информация постоянно хранится на удаленных серверах в сети Интернет и лишь временно кэшируется на клиентской стороне. Это могут быть персональные компьютеры, смартфоны, ноутбуки и т.д.
При этом пользователю такой системы предоставляются услуги, которые можно разделить на следующие виды:
− IaaS (Infrastructure-as-a-Service) - инфраструктура как сервис.
− PaaS (Platform-as-a-Service) - платформа как сервис.
− SaaS (Software-as-a-Service) - программное обеспечение как сервис.
IaaS - это предоставление компьютерной инфраструктуры (как правило в форме виртуализации) как услуги на основе концепции облачных вычислений.
Целевая аудитория - разработчики ПО. IaaS состоит из трех основных компонентов:
− Аппаратные средства (серверы, системы хранения данных, клиентские системы, сетевое оборудование)
− Операционные системы и системное ПО (средства виртуализации, автоматизации, основные средства управления ресурсами)
− Связующее ПО (например, для управления системами)
IaaS основана на технологии виртуализации, позволяющей пользователю оборудования делить его на части, которые соответствуют текущим потребностям бизнеса, тем самым увеличивая эффективность использования имеющихся вычислительных мощностей. Т.е. пользователь должен будет оплачивать всего лишь реально необходимые ему для работы серверное время, дисковое пространство, сетевую пропускную способность и другие ресурсы. Кроме того, IaaS предоставляет в распоряжение клиента весь набор функций управления в одной интегрированной платформе.
Таким образом, IaaS избавляет предприятия от необходимости поддержки сложных инфраструктур центров обработки данных, клиентскихи сетевых инфраструктур, а также позволяет уменьшить связанные с этим капитальные затраты и текущие расходы. Кроме того, можно получить дополнительную экономию, при предоставлении услуги в рамках инфраструктуры совместного использования.
PaaS - это предоставление интегрированной платформы для разработки, тестирования, развертывания и поддержки веб-приложений как услуги. Целевая аудитория - разработчики ПО.
Для разворачивания веб-приложений клиенту не нужно приобретать оборудование и программное обеспечение, нет необходимости организовывать их поддержку. Доступ для клиента может быть организован на условиях аренды.
Такой подход имеет следующие достоинства:
− масштабируемость;
− отказоустойчивость;
− виртуализация;
− безопасность.
Масштабируемость PaaS предполагает автоматическое выделение и освобождение необходимых ресурсов в зависимости от количества обслуживаемых приложением пользователей.
PaaS как интегрированная платформа для разработки, тестирования, разворачивания и поддержки веб-приложений позволит весь перечень операций по разработке, тестированию и разворачиванию веб-приложений выполнять в одной интегрированной среде, исключая тем самым затраты на поддержку отдельных сред для отдельных этапов.
Способность создавать исходный код и предоставлять его в общий доступ внутри команды разработки значительно повышает производительность по созданию приложений на основе PaaS.
SaaS - модель продажи программного обеспечения, при которой поставщик разрабатывает веб-приложение и самостоятельно управляет им, предоставляя заказчикам доступ к программному обеспечению через Интернет. В данном случае, основное преимущество модели SaaS для клиента состоит в отсутствии затрат, связанных с установкой, обновлением и поддержкой работоспособности оборудования и программного обеспечения, работающего на нём. Целевая аудитория - конечные потребители.
В модели SaaS:
− приложение приспособлено для удаленного использования;
− одним приложением могут пользоваться несколько клиентов;
− оплата за услугу взимается либо как ежемесячная абонентская плата, либо на основе суммарного объема транзакций;
− поддержка приложения входит уже в состав оплаты;
− модернизация приложения может производиться обслуживающим персоналом плавно и прозрачно для клиентов
В качестве основы проектирования информационных систем применяются "типовые решения" или "шаблоны проектирования" (Patterns).
Шаблоны проектирования (паттерн, design pattern) это многократно применяемая архитектурная конструкция, предоставляющая решение общей проблемы проектирования в рамках конкретного контекста и описывающая значимость этого решения.
Паттерн не является законченным образцом проекта, который может быть прямо преобразован в код, скорее это описание или образец для того, как решить задачу, таким образом, чтобы это можно было использовать в различных ситуациях. Объектно-ориентированные шаблоны зачастую показывают отношения и взаимодействия между классами или объектами, без определения того, какие конечные классы или объекты приложения будут использоваться. Алгоритмы не рассматриваются как шаблоны, так как они решают задачи вычисления, а не проектирования.
Для представления логической структуры базы данных выбрана модель представления данных "сущность-связь". Модель "сущность-связь" основывается на некой важной семантической информации о реальном мире и предназначена для логического представления данных. Она определяет значения данных в контексте их взаимосвязи с другими данными. Важным для нас является тот факт, что из модели "сущность-связь" могут быть порождены все существующие модели данных (иерархическая, сетевая, реляционная, объектная), поэтому она является наиболее общей.
Сущность(entity) - это объект, который может быть идентифицирован неким способом, отличающим его от других объектов. Сущность фактически представляет собой множество атрибутов, которые описывают свойства всех членов данного набора сущностей. Множество значений (область определения) атрибута называется доменом.
Связь (relationship) - это ассоциация, установленная между несколькими сущностями.
Для базы данных системы выделим следующие сущности: Автор, сотрудники, документы, типы документов, издательство, статуса, писатели.
Сущность Автор содержат следующие атрибуты: Номер автора(первичный ключ), имя, фамилия , отчество, день рождения.
Сущность Сотрудники содержат следующие атрибуты: Номер сотрудника (первичный ключ), имя сотрудника, фамилия сотрудника, отчество сотрудника, логин сотрудника, пароль сотрудника, адрес сотрудника, домашний телефон сотрудника, мобильный телефон сотрудника.
Сущность Тип документа содержат следующие атрибуты: Номер типа документа(первичный ключ), название документа.
Сущность Документы содержит следующие атрибуты: Номер документа(первичный ключ), название документа, тип документа, дата публикации документа, издательство документы, адрес документа на сервере.
Сущность Издательство содержит следующие атрибуты: номер издательства, название издательства.
Сущность статуса содержит следующие сущности: Номер статуса, номер загруженного документ, номер сотрудника загрузившего этот документ, дата загрузки.
Сущность писатель содержит следующие атрибуты: Номер записи, номер документа который был написан, номер автора который написал документ, главный автор.
Рисунок 2.1 - Диаграмма “сущность-связь” Интернет-системы «Электронная библиотека кафедры МОКС»
Таблица 2.1- author
Название |
Тип данных |
Null |
Описание |
Id_author |
Int |
нет |
Индификатор данных |
First_Name |
Nvarchar(60) |
нет |
Имя автора |
Last_name |
Nvarchar(60) |
нет |
Фамилия автора |
Patronomyc |
Nvarchar(60) |
Да |
Отчество автора |
Birthdate |
date |
Да |
Дата рождения |
Таблица авторов хранит информацию об авторах которые написали тот или иной файл. Эта таблица была создана для удобства поиска файлов конкретного автора. Patronomyc может быть не указан, так как автор может оказаться из стран европы в которых не предусмотрено отчество. Также может быть не известна точная дата рождения. И возможно автор может быть еще жив. Индификатор таблице авторов будет в дальнейшем использоваться для связи данных.
Таблица 2.2 -collaborator
Название |
Тип данных |
Null |
Описание |
Id_collaborator |
Int |
Нет |
Индификатор |
First_Name |
Nvarchar(60) |
Нет |
Имя |
Last_name |
Nvarchar(60) |
нет |
Фамилия |
Patronomyc |
Nvarchar(60) |
Да |
Отчество |
Login |
Nvarchar(60) |
нет |
Логин |
Pass |
Nvarchar(60) |
нет |
Пароль |
Address |
Nvarchar(60) |
Да |
Адрес |
Home_tel |
Nvarchar(60) |
Да |
Домашний номер телефона |
Mob_tel |
Nvarchar(60) |
Да |
Мобильный номер телефона |
Таблица была названа сотрудниками, так как предполагается что данная система в нынешнем виде будет доступна только преподавателям кафедры и сотрудникам, также в дальнейшем если будет решено расширить систему для доступа студентов, то просто добавится таблица students или users. Id_collaborator будет использоваться для связи данных. Всегда есть возможность того, что появится преподаватель без отчества, поэтому Patronomyc может не указываться. Адрес проживания и телефоны являются частью личной жизни сотрудников, поэтому указывать их или нет решать сотрудникам. Хотя система пока не использует эти данные.
Таблица 2.3 - doc_Type
Название |
Тип данных |
Null |
Описание |
Id_doc_Type |
int |
Нет |
Инфификатор |
Name |
nvarchar(60) |
Нет |
Названия типа данных |
Таблица doc_Type будет хранить названия типов документов, так как документы могут загружается одного формата, но тип у них будет разным, на пример, методичка как и учебник может быть в формате pdf все таки тип документов разный. Эта таблица также ускорит поиск нужного файла, если название файла полностью не известно. Индификатор таблицы будет использоваться системой для связи данных. Информацию об типах данных было решено внести в отдельную таблицу, так как тип данных в дальнейшем может пополнятся.
Таблица 2.4 - documents
Название |
Тип данных |
Null |
Описание |
Id_ documents |
Int |
Нет |
Индификатор |
Name |
navachar(60) |
Нет |
Название файла |
Id_doc_Type |
Int |
Да |
Индификатор типа файла |
Date |
date |
да |
Дата публикации файла |
PubHouse |
Int |
Да |
Издательство |
Adress |
navachar(max) |
Нет |
Адрес к файлу |
Таблица documents хранит в себе всю информацию о файле. Id_ documents в дальнейшем будет использоватся системой для связи данных. Name хранит название файла, то название, которое ему дали при загрузке. Id_doc_Type хранит индификатор типа данных. Так как тип файла может быть еще не утвержден, поэтому поле Id_doc_Type может быть null. Date дата публикации документа, так как документ может быть был опубликован ранее чем дата его загрузки, то это поле пользователь сам указывает. Так как достоверно может быть не известна настоящая дата публикации, поле date может быть null. PubHouse хранит индификатор издательства файла. Так как достоверно издательство может быть не известно поле PubHouse может быть NULL.
Таблица 2.5 - PubHouse
Название |
Тип данных |
Null |
Описание |
id_PubHouse |
Int |
Нет |
Индификатор |
Name |
navachar(60) |
Нет |
Название издательства |
PubHouse хранит в себе название издательств, для отображения издательства файла. Так как в дальнейшем издательства могут пополнится, было решено хранить эту информацию в отдельном файле.
Таблица 2.6 - status
Название |
Тип данных |
Null |
Описание |
Id_status |
Int |
Нет |
Индификатор |
id_document |
Int |
Нет |
Индификатор документа |
id_collaborator |
Int |
Нет |
Индификатор сотрудника |
date_status |
Data |
Нет |
Дата загрузки файла |
Таблица status введена в систему для устранения связей многие ко многим. Она связывает сотрудников с документами и содержит данные об операции над файлом, она хранит id сотрудника, который загрузил документ. Также таблица хранит дату загрузки. Эта таблица в дальнейшем будет активно использоваться системой.
Таблица 2.7- written
Название |
Тип данных |
Null |
Описание |
Id_ written |
Int |
Нет |
Индификатор |
id_document |
Int |
Нет |
Индификатор документа |
id_author |
Int |
Нет |
Индификатор автора |
W_author |
Int |
Да |
Индификатор главного афтора |
Таблица written была введена в систему для устранения связи многие ко многим. Она связывает таблицу документов с авторами. id_author хранит в себе индификатор автора, id_document индификатор документа. W_author индификатор главного автора. У каждого произведения есть главный автор и может быть несколько соавторов.
Нашу базу данных можно считать нормализованной, так как ее таблицы находятся в третьей нормальной форме. То есть не ключевые столбцы в таблицах не зависят от других не ключевых столбцов, а зависят только от первичного ключа. А значит, таблицы также находятся в первой и второй нормальной форме.
Первая нормальная форма: запрещает повторяющиеся столбцы, запрещает множественные столбцы и требует определить первичный ключ для таблицы.
Вторая нормальная форма требует, чтобы не ключевые столбцы таблиц завесили от первичного ключа в целом, но не от его части.
Логическая структура показывает, каким образом информация распределяется по страницам Интернет системы и как она может быть получена пользователем. Хорошая структурированность информации обеспечивает значительный успех при создании системы. Ошибки на этом этапе впоследствии приведут к большим затратам сил на их исправление. На верхнем уровне организуется плоская структура документов. В неё входит домашняя страница, из которой вырастает множество страниц сайта. Очень часто все они полностью или частично взаимосвязаны друг с другом.
Рисунок 2.2- Системная структура приложения «Электроная библиотека кафедры Мокс»
Система разбита на 2 части, гостевую и пользовательскую. Не авторизованные пользователи имеют доступ к home.aspx, Login.aspx, registration.aspx .
Home.aspx просто стартовая домашняя страничка, эту страничку видят все гости сайта, в ней расположена базовая информация.
Registration.aspx это страничка для регистрации нового пользователя в системе, регистрируясь пользователь вносит в таблицу collaboration свои данные.
Login.aspx эта страничка предназначена для авторизации пользователя в системе.
User.aspx стартовая страничка для авторизованного пользователя, тут можно задать первоначальный поиск файла.
AddFile.aspx эта страничка предназначена для загрузки файла в базу данных, вся внесенная информация сохраняется в таблице documents и так же новой записью пополняются странички authors и doc_type, если пользователь вводит информацию, которая отсутствует в эти таблицах. Таблицы связей status и written также пополняются.
Select1.aspx - это первый из фильтров, разработанных для вывода данных о файле, здесь пользователь может просмотреть информацию о файлах отфильтровав их по типу и периоду загрузки на сайт.
Select2.aspx - это второй фильтр, разработанный для вывода данных о файле здесь пользователь может отфильтровать файлы по авторам и периоду загрузки.
EditAuthor.aspx - страничка предназначена для изменения и добавления данных в таблице данных издателей.
EditDoc_Type.aspx - страничка предназначена для изменения и добавления данных в таблицу данных об типах документов.
Навигация между страницами осуществляется через кнопки, которые обращаются к ссылкам в классе links.cs и пользуются методом Response.Redirect( ) для перенаправления пользователя между страничками.
За отображения графики и стилей элементов в системе будет отвечать CSS таблица.
4all.css эта таблица стилей разрабатывалась как общая таблица стилей, т.е. в ней описаны стили для всех страниц
В таблице стилей использовались таки свойства :
Свойство font-size определяет размер текста элемента.
Свойство color определяет основной цвет элемента.
Свойство text-decoration определяет, какой оформительский прием нужно применить к тексту. Это может быть: черта над, под или в середине текста.
Свойство text-align выравнивает элемента по центру, по правому краю, по левому краю и др.
Свойство Background определяет задний фон элемента.
Свойство -webkit-radial-gradient задает градиентную заливку, может работать как атрибут для Background
Свойство background-image задает картинку в качестве заднего фона
Свойство -webkit-border-radius позволяет задать одновременно радиус скруглений всех углов элемента
Свойство -moz-border-radius нестандартное свойство применяется для закругления углов элемента с границами и / или фона.
Универсальное свойство border позволяет одновременно установить толщину, стиль и цвет границы вокруг элемента.
Свойства width и height задают ширину и высоту элемента.
Свойство margin сокращённое свойство, позволяющее быстро задать следующие параметры: margin-top, margin-right, margin-bottom и/или margin-left. Margin - это внешнее пространство между бордюром и невидимой границей прямоугольника.
Свойство padding позволяет задать величину поля сразу для всех сторон элемента или определить ее только для указанных сторон.
Outline Универсальное свойство, одновременно устанавливающее цвет, стиль и толщину внешней границы на всех четырех сторонах элемента. В отличие от линии, задаваемой через border, свойство outline не влияет на положение блока и его ширину. Также нельзя задать параметры линии на отдельных сторонах элемента, outline применяется сразу ко всем четырём сторонам.
Свойство box-shadow добавляет тень к элементу. Допускается использовать несколько теней, указывая их параметры через запятую, при наложении теней первая тень в списке будет выше, последняя ниже. Если для элемента задается радиус скругления через свойство border-radius, то тень также получится с закругленными уголками. Добавление тени увеличивает ширину элемента, поэтому возможно появление горизонтальной полосы прокрутки в браузере.
Свойство border-width задает толщину границы одновременно на всех сторонах элемента или индивидуально для каждой стороны. Способ изменения толщины зависит от числа значений.
Свойство border-left позволяет одновременно установить толщину, стиль и цвет левой границы элемента. Значения могут идти в любом порядке, разделяясь пробелом, браузер сам определит, какое из них соответствует нужному свойству.
font-weight устанавливает насыщенность шрифта. Значение устанавливается от 100 до 900 с шагом 100. Сверхсветлое начертание, которое может отобразить браузер, имеет значение 100, а сверхжирное 900. Нормальное начертание шрифта (которое установлено по умолчанию) эквивалентно 400, стандартный полужирный текст значению 700.
line-height Устанавливает интерлиньяж (межстрочный интервал) текста, отсчет ведется от базовой линии шрифта. При обычных обстоятельствах расстояние между строками зависит от вида и размера шрифта и определяется браузером автоматически. Отрицательное значение межстрочного расстояния не допускается.
text-decoration добавляет оформление текста в виде его подчеркивания, перечеркивания, линии над текстом и мигания. Одновременно можно применить более одного стиля, перечисляя значения через пробел.
text-decoration-color устанавливает цвет линии, которая добавляется через свойство text-decoration.
Свойство text-emphasis-color устанавливает цвет маркера выделения.
Свойство Position устанавливает способ позиционирования элемента относительно окна браузера или других объектов на веб-странице.
Свойство overflow управляет отображением содержания блочного элемента, если оно целиком не помещается и выходит за область заданных размеров.
Шаблоны сайта
Шаблон мастер страниц для проектируемой системы приведен на рис.2.3
Рисунок 2.3- Шаблон мастер страниц
В системе будут использоваться две мастер страницы, на каждой из этих мастер страниц предоставлено свое навигационное меню, на гостевой мастер странице предоставлено гостевое меню, на пользовательской мастер страницы пользовательское меню, которое дает возможность перенаправить пользователя на странички для роботы с БД.
При проектировании платформы Net Framework, компания Microsoft учла недостатки существующихWindows-платформ.NET Framework состоит из двух частей: общеязыковой исполняющей среды (commonlanguageruntime, CLR) и библиотеки классов (Framework Class Library, FCL). CLR предоставляет модель программирования, используемую во всех типах приложений. У CLR собственный загрузчик файлов, диспетчер памяти (сборщик мусора), система безопасности (безопасность доступа к коду), пул потоков и многое другое. Кроме того, CLR предоставляет объектно-ориентированную модель программирования, определяющую, как выглядят и ведут себя типы и объекты. FCL предоставляет объектно-ориентированный API-интерфейс, используемый всеми моделями приложений. В ней содержатся определения типов, которые позволяют разработчикам выполнять ввод/вывод, планирование задач в других потоках, создавать графические образы, сравнивать строки и т. п. Естественно, что все эти определения типов соответствуют существующей модели программирования в CLR. Ниже представлен список возможностей и преимуществ платформы NET:
- Полное и абсолютное межъязыковое взаимодействие. В .NET Framework. Поддерживаются межъязыковое наследование, межъязыковая обработка исключений и межъязыковая отладка.
- Общая среда выполнения для любых приложений .NET, вне зависимости от того, на каких языках они были созданы. Один из важных моментов при этом то, что для всех языков используется один и тот же набор встроенных типов данных
- Единая программная модель. В отличие от существующего подхода, когда одни функции операционной системы доступны через процедуры динамически подключаемых библиотек (DLL), а другие - через СОМ-объекты, весь прикладной сервис представлен общей объектно-ориентированной программной моделью.
- Упрощенная модель программирования. Избавляет от работы с разными структурами, как это было с Win32 и СОМ. Так, разработчику не нужно разбираться с реестром, глобальными уникальными идентификаторами (GUID), IUnknown, AddRef, Release, HRESULT и т. д.
- Отсутствие проблем с версиями. Все Windows-разработчики знают о проблемах совместимости версий, известных под названием «DLL hell». Эта проблема возникает, когда компоненты, устанавливаемые для нового приложения, заменяют компоненты старого приложения, и в итоге последнее начинает вести себя странно или перестает работать. Архитектура .NET Framework позволяет изолировать прикладные компоненты, так что приложение всегда загружает компоненты, с которыми оно строилось и тестировалось. Если приложение работает после начальной установки, оно будет работать всегда.
- Упрощенное развертывание. Ранее Windows-приложения было очень трудно устанавливать и разворачивать: обычно нужно было создать массу файлов, параметров реестра и ярлыков. К тому же полностью удалить приложение практически невозможно. С приходом NET Framework все эти проблемы остаются в прошлом. Компоненты NET Framework не связаны с реестром. Установка приложений NET Framework сводится лишь к копированию файлов в нужные каталоги и созданию ярлыков. Удаление же приложений сводится к удалению файлов.
- Работа на многих платформах. При компиляции кода для .NET Framework компилятор генерирует код на общем промежуточном языке (CommonItermediateLanguage, CIL), а не традиционный код, состоящий из процессорных команд. При исполнении CIL транслируется в команды процессора. Поскольку трансляция выполняется в период выполнения, генерируются команды конкретного процессора. Это значит, что можно развертывать свое приложение NET Framework на любой машине, где работает версия .NET Framework соответствующая стандарту ЕСМА: с архитектурой х86, х64, IA64 и т. д.
- Интеграция языков программирования. Технология СОМ поддерживает взаимодействие разных языков .NET Framework обеспечивает интеграцию разных языков, то есть один язык может использовать типы, созданные на других языках. Например, .NET Framework позволяет создать на C++ класс, производный от класса, реализованного на VisualBasic. В CLR это возможно из-за наличия общей системы типов (Common Type System, CTS), которую должны использовать все языки, ориентированные на CLR. Общеязыковая спецификация (Common Language Specification, CLS) определяет правила, которым должны следовать разработчики компиляторов, чтобы их языки интегрировались с другими. Сама Microsoft предлагает несколько таких языков: C++/CLI (C++ с управляемыми расширениями), С#, VisualBasic NET. Кроме того, другие компании и учебные заведения создают компиляторы других языков, совместимых с CLR.
- Упрощенное повторное использование кода. Все описанные выше механизмы позволяют создавать собственные классы, предоставляющие сервис сторонним приложениям. Теперь многократное использование кода становится исключительно простым и создается большой рынок готовых компонентов (типов).
- Автоматическое управление памятью (сбор мусора). Программирование требует большого мастерства и дисциплины, особенно когда речь идет об управлении использованием ресурсов (файлов, памяти, пространства экрана, сетевых соединений, ресурсов баз данных и прочих). Одна из самых распространенных ошибок - небрежное отношение к освобождению этих ресурсов, что может привести к некорректному выполнению программы в непредсказуемый момент. CLR автоматически отслеживает использование ресурсов, гарантируя, что не произойдет их утечки.
- Проверка безопасности типов CLR может проверять безопасность использования типов в коде, что гарантирует корректное обращение к существующим типам. Если входной параметр метода объявлен как 4-байтное значение, CLR обнаружит и предотвратит передачу 8-байтного значения в качестве значения этого параметра. Безопасность типов также означает, что управление может передаваться только в определенные точки (точки входа методов). Невозможно указать произвольный адрес и заставить программу исполняться, начиная с этого адреса. Совокупность всех этих защитных мер избавляет от многих распространенных программных ошибок (например, от возможности использования переполнения буфера для «взлома» программы).
- Развитая поддержка отладки. Поскольку CLR используется для многих языков, можно написать отдельный фрагмент программы на языке, наиболее подходящем для конкретной задачи, CLR полностью поддерживает отладку многоязыковых приложений.
- Единый принцип обработки сбоев. Один из самых неприятных моментов Windows-программирования несогласованный стиль сообщений о сбоях. Одни функции возвращают коды состояний Win32, другие HRESULT, третьи генерируют исключения. В CLR обо всех сбоях сообщается через исключения, которые позволяют отделить код, необходимый для восстановления после сбоя, от основного алгоритма. Такое разделение облегчает написание, чтение и сопровождение программ. Кроме того, исключения работают в многомодульных и многоязыковых приложениях. И в отличие от кодов состояний и HRESULT исключения нельзя проигнорировать. CLR также предоставляет встроенные средства анализа стека, заметно упрощающие поиск фрагментов, вызывающих сбои.
- Безопасность. Традиционные системы безопасности обеспечивают управление доступом на основе учетных записей пользователей. Это проверенная модель, но она подразумевает, что любому коду можно доверять в одинаковой степени. Такое допущение оправданно, когда весь код устанавливается с физических носителей (например, с компакт-диска) или с доверенных корпоративных серверов. Но по мере увеличения объема мобильного кода, например Web-сценариев, приложений, загружаемых из Интернета, и вложений, содержащихся в электронной почте, нужен ориентированный на код способ контроля за поведением приложений. Такой подход реализован в модели безопасности доступа к коду.
- Взаимодействие с существующим кодом. В Microsoft понимают, что разработчики накопили огромный объем кода и компонентов. Переписывание всего этого кода, так чтобы он задействовал все достоинства NET Framework, значительно замедлило бы переход к этой платформе. Поэтому в .NET Framework реализована полная поддержка доступа к СОМ-компонентам и Win32-функциям в существующих динамических библиотеках DLL
Созданы следующие таблицы:
Создание таблици документов
CREATE TABLE [dbo].[documents] (
[Id_documents] INT IDENTITY (1, 1) NOT NULL,
[name] NVARCHAR (60) NOT NULL,
[id_doc_Type] INT NULL,
[date] DATE NULL,
[PubHouse] INT NULL,
[Adress] NVARCHAR (MAX) NOT NULL
);
Создание таблици авторов
CREATE TABLE [dbo].[author] (
[id_author] INT IDENTITY (1, 1) NOT NULL,
[First_Name] NVARCHAR (60) NOT NULL,
[Last_Name] NVARCHAR (60) NOT NULL,
[Patronomyc] NVARCHAR (60) NULL,
[birthdate] DATE NULL,
);
Создание таблици сотрудников
CREATE TABLE [dbo].[collaborator] (
[id_collaborator] INT IDENTITY (1, 1) NOT NULL,
[First_Name] NVARCHAR (60) NOT NULL,
[Last_Name] NVARCHAR (60) NOT NULL,
[Patronomyc] NVARCHAR (60) NULL,
[login] NVARCHAR (60) NOT NULL,
[pass] NVARCHAR (60) NOT NULL,
[adress] NVARCHAR (60) NULL,
[Home_tel] NVARCHAR (60) NULL,
[Mob_tel] NVARCHAR (60) NULL,
CONSTRAINT [PK_collaborator] PRIMARY KEY CLUSTERED ([id_collaborator] ASC)
);
Создание таблици типов документов
CREATE TABLE [dbo].[doc_Type] (
[Id_doc_Type] INT IDENTITY (1, 1) NOT NULL,
[name] NVARCHAR (60) NOT NULL
);
Создание таблици издательств
CREATE TABLE [dbo].[PubHouse ] (
[id_PubHouse] INT IDENTITY (1, 1) NOT NULL,
[name] NVARCHAR (60) NOT NULL
);
Создание таблици статуса
CREATE TABLE [dbo].[status ] (
[Id_status] INT IDENTITY (1, 1) NOT NULL,
[id_document] INT NOT NULL,
[id_collaborator] INT NOT NULL,
[transaction_status] INT NOT NULL,
[date_status] DATE NOT NULL
);
Создание таблици писателей
CREATE TABLE [dbo].[written ] (
[id_written] INT IDENTITY (1, 1) NOT NULL,
[id_document] INT NOT NULL,
[id_author] INT NOT NULL,
[w_author] INT NULL
);
В первую очередь была разработана мастер-страница. Она служит шаблоном для отображения, других страниц. Для этого на мастер-странице выделяются области, не подлежащие изменению, и области где будет отображаться информация связанных страниц (страниц контента). На рисунке 3.1 представлен вид мастер-страницы. На мастер-странице предоставлены кнопки, которые перенаправляют пользователя по сайту. Эти кнопки используют метод Response.Redirect();
Рисунок 3.1 - Вид мастер-страницы
Страницы для работы с таблицами базы данных были разработаны как контент страницы.
Контент это страница - любая страница, которая использует мастер страницу. Каждый раз, когда посетитель запрашивает контент страницу, ASP.NET загружает мастер страницу, производит слияние с контент страницей и посылает объединенный результат пользователю.
Рисунок 3.2 - Вид контент-страницы
Любой проект в среде Visual Studio Может содержать два типа файлов: *.aspx и *.aspx.cs. В *.aspx-файлах содержится html-подобная разметка самой страницы, а в *.aspx.cs-файлах код на языке C#, который представлен в виде отдельного класса. Также возможность хранить код языка C# в теге <script runat="server"></script>
В ходе работы были созданы следующие страницы для обслуживания таблиц БД: editAuthor.aspx, editDoc_Type.aspx, editPubHouse.aspx, type_org.aspx, AddFile.aspx, Login.aspx, registration.aspx, Select1.aspx, Select2.aspx,User.aspx. А коды этих страниц находятся соответственно в файлах с расширением *.aspx.cs и тегах <script runat="server"></script>.
Содержимое данных файлов и тегов приведено в Приложении.
Подробно опишем процесс создание всех указанных выше страниц и реализацию форм для добавления новых записей в БД, а также редактирования и удаления записей. Удаление и редактирование записей реализуется в настройках компонента GridView установкой свойств EnableEditing и EnableDeleting. В ходе разработки приложения использовались следующие серверные элементы управления:
− TextBox поля для ввода;
− Label текстовые метки;
− DropDownList раскрывающиеся списки;
− GridView таблица;
− SqlDataSource источник данных.
Для отображения таблиц БД на всех страницах использовались элементы управления GridView и SqlDataSource.
Для работы с базой данных в источнике данных SqlDataSource нужно создать подключение к БД. А затем подключить компонент GridView к источнику данных SqlDataSource. Страница registration.aspx содержит форму для добавления новых пользователей . На форме есть кнопка «Зарегистрироваться», по нажатию на которую в таблицу записывается новая запись из полей ввода и отображается сообщение об успешной регистрации.
protected void Bt1_Click(object sender, EventArgs e)
{
string s = "INSERT INTO [dbo].[collaborator] ( [First_Name], [Last_Name], [Patronomyc], [login], [pass], [adress], [Home_tel], [Mob_tel]) VALUES (N'" + TextBox1.Text + "',N'" + TextBox2.Text + "',N'" + TextBox3.Text + "',N'" + TextBox4.Text + "',N'" + TextBox5.Text + "',N'" + TextBox6.Text + "',N'" + TextBox7.Text + "',N'" + TextBox8.Text + "')";
try
{
SqlDataSource1.InsertCommand = s;
SqlDataSource1.Insert();
DebText.Visible = true;
DebText.TextMode = TextBoxMode.SingleLine;
DebText.Text = "Пользователь зарегистрирован";
}
catch (Exception ex)
{
DebText.Visible = true;
DebText.Text=s+"\r\n"+ex;}}
Внешний вид страницы registration.aspx представлен на рисунке 3.3
Рисунок 3.3 - Внешний вид страницы registration.aspx
Pages\home.aspx Домашняя страничка системы «Электронная библиотек кафедры МОКС» Домашняя страница системы. Отображает базовую информацию о кафедре. Внешний вид home.aspx приведен на рисунке 3.4
Рисунок 3.4 - Внешний вид страницы home.aspx
Pages\user\ Login.aspx
Страничка разработана для авторизации пользователей, тут происходит проверка введенных данных с таблицей данных collaborator Внешний вид страницы Login.aspx приведен на рисунке 3.5
Рисунок 3.5 - Внешний вид страницы Login.aspx
По нажатию кнопки вход данные введенные в textbox сверяются с данными таблицы collaborator с помощью кода:
Links L = new Links();
UserClass Us = new UserClass();
int err = 0;
protected void Page_Load(object sender, EventArgs e)
{
Us = new UserClass();
}
protected void LoginBt_Click(object sender, EventArgs e)
{
Us = new UserClass(Login.Text, Pass.Text);
if (Us.serchLogin(Us))
{
Response.Redirect(L.RetLinks("User") + "?Text=" + Login.Text + ":" + Pass.Text);
}
else { Label1.Visible = true; Label1.Text = "Логин или пароль неверный. "; err++;
Label1.Text += "Забыли пароль?"; CheckBox1.Visible = true; Cb1Text.Visible = true; }
if (CheckBox1.Checked == true) { HelpTB.Visible = true; HelpTB.Text = "" + Us.SerchInTable("collaborator", "pass", "login", Login.Text); }
}
pages/user/User.aspx
Страничка пользователей, тут реализована запрос поиска данных в таблицах данных, пользователь может отыскать файл и скачать его, также можно отредактировать записи в таблицах. Внешний вид страницы User.aspx предоставлен на рисунке 3.6
Рисунок 3.6- Внешний вид страницы User.aspx
Поиск файла осуществляется с помощью sql запроса, после ввода данных
pages/user/AddFile.aspx
Cтраничка разработана для загрузки файлов на сервер, тут пополняются данные таблиц documrnts, written, author, status, phouse. В таблице отображаются уже загруженные файлы. Когда пользователь вводит новую информацию об авторе, типе файлов или новое название издательства система проверяет их наличие в базе данных, если же система не находит эту информацию, то пользователю выводится об этом сообщение, с предложением пополнить базу данных. Если же пользователь заранее знает, что данные новые, чтоб система не выводила сообщение о новых данных пользователю нужно установить флажок подтверждения возле элемента управления checkbox «Усилено». После добавления файла табличка обновляется.
Рисунок 3.7 - Внешний вид страницы AddFile.aspx
Код добавления новой информации в таблицу данных
command = "documents:" + Us.addInBase("documents", "name,Id_doc_Type,date,PubHouse,Adress", TbName.Text + "," + zhan + "," + Strdate + "," + Phouse + "," + folderName + fileName) + "\r\n"; //Запись данных об документе ...
string id_doc = Us.MySelect("Select Id_documents from documents d where d.name = N'" + TbName.Text + "' and d.Id_doc_Type = N'" + zhan + "' and d.date=N'" + Strdate + "' ", 0); //Определение id нового документа
command += "written:" + Us.addInBase("written", "id_document,id_author,w_author", id_doc + "," + Au + ",1") + "\r\n";//Запись информации об авторе.
command += "Status:" + Us.addInBase("status", "id_document,id_collaborator,transaction_status,date_status", id_doc + "," + Us.SerchInTable("collaborator", "id_collaborator", "login", Us.Login) + ",1," + DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day) + "\r\n";
/pages/user/Select1.aspx
Страничка фильтра, отображает информацию о типах файлов, которые были загружены в определенный период времени.
Рисунок 3.8 - Внешний вид страницы Select1.aspx
После ввода всех параметров код формирует sql запрос
string dateFrom ="";//2013-01-16
dateFrom =""+otYear.Text+"-"+otMonth.Text+"-"+otDay.Text;
string dateTo="";//2013-01-16
dateTo=""+doYear.Text+"-"+doMonth.Text+"-"+doDay.Text;
SqlDataSource s = new SqlDataSource();
s.SelectCommand = "select d.name,dt.name,s.date_status ,d.date,d.PubHouse,d.Adress from documents d , doc_Type dt ,status s where d.id_doc_Type = dt.Id_doc_Type and s.id_document=d.Id_documents and s.date_status > N'" + dateFrom + "' and s.date_status < N'" + dateTo + "' and d.id_doc_Type=(select t.Id_doc_Type from doc_Type t where t.name=N'" + type .SelectedItem.Text+ "')";
s.ConnectionString = "Data Source=(LocalDB)\\v11.0;AttachDbFilename=|DataDirectory|\\library.mdf;Integrated Security=True";
GridView1.DataSource = s;
GridView1.DataBind();
/pages/user/Select2.aspx
Страничка фильтра, отображает информацию о документах определенного автора, которые были загружены в определенный период времени.
Рисунок 3.9 - Внешний вид страницы Select2.aspx
Метод Page_load заполняет выпадающий список author.путем считывания данных из базы данных, и записывает каждый элемент в выпадающий список в нужном формате. После чего пользователю предлагается выбрать автора. Когда же автор выбран и поля даты введены правильно, код формирует запрос из полученных данных:
void Page_load()
{
if (author.SelectedIndex != -1)
{str = author.SelectedItem.Text + ' ' + author.SelectedIndex; }
UserClass Us = new UserClass();
string t = Us.MySelect2("SELECT [First_Name], [Last_Name] FROM [author]", 1);
string[] t2 = t.Split(';');
author.Items.Clear();
for (int i = 0; i < t2.Length; i++)
author.Items.Add(t2[i]);
}
protected void Button1_Click(object sender, EventArgs e)
{
string[] AUthor = str.Split(' ');
string LastName = AUthor[1];
string FirstName = AUthor[0];
int id = Convert.ToInt32(AUthor[2]);
author.SelectedIndex = id;
SqlDataSource s = new SqlDataSource();
s.ConnectionString = "Data Source=(LocalDB)\\v11.0;AttachDbFilename=|DataDirectory|\\library.mdf;Integrated Security=True";
string dateFrom = "" + otYear.Text + "-" + otMonth.Text + "-" + otDay.Text;
string dateTo = "" + doYear.Text + "-" + doMonth.Text + "-" + doDay.Text;
string comm = "select d.Id_documents, d.name , a.First_Name,a.Last_Name,s.date_status from written w, status s , author a, documents d where w.id_author=a.id_author and w.id_author =(select a.id_author from author a where a.Last_Name=N'" + LastName + "' and a.First_Name=N'" + FirstName + "') and w.id_document=d.Id_documents and s.id_document=d.Id_documents and s.date_status > N'" + dateFrom + "' and s.date_status < N'" + dateTo + "'";
s.SelectCommand = comm;
GridView1.DataSource = s;
GridView1.DataBind();
}
/pages/admin/editAuthor.aspx
Страничка предназначена для редактирования таблицы авторов, здесь можно добавить нового автора, изменить уже существующего или удалить автора. Перед тем как удалить автора нужно его выбрать, нажав на select. Хоть редактирование дает возможность изменит идентификатор автора он останется неизменным, так как он используется другими таблицами.
Рисунок 3.10 - Внешний вид страницы editAuthor.aspx
В состав sql запроса базы данных входит элемент GridView1.Rows[GridView1.SelectedIndex].Cells[1].Text который определяется после нажатия на кнопку select, поэтому необходимо с начало обозначить элемент а потом удалять его. Код удаления записи из таблицы
try
{
SqlDataSource1.DeleteCommand = "DELETE FROM [author] WHERE [id_author] =N'" + GridView1.Rows[GridView1.SelectedIndex].Cells[1].Text + "'";
SqlDataSource1.Delete();
SqlDataSource1.DataBind();
GridView1.DataBind();
Err.Text = "";
}
catch (Exception ex)
{
Err.Text = ex.Message; };}
/pages/admin/editDoc_Type.aspx
Страничка предназначена для редактирования таблицы типов документа. Также есть возможность изменить идентификатор, но он останется неизменным, так как используется другими таблицами. Также перед удалением элемента с начало нужно его выбрать
Рисунок 3.11 - Внешний вид страницы editDoc_Type.aspx
Идентификатор таблицы остается неизменным так как не используется в sql запросе для таблицы
UpdateCommand="UPDATE [author] SET [First_Name] = @First_Name, [Last_Name] = @Last_Name, [Patronomyc] = @Patronomyc,[birthdate]=@birthdate WHERE [id_author] = @id_author">
/pages/admin/editPubHouse.aspx
Страничка предназначена для редактирования таблицы издательств. Также есть возможность изменить идентификатор, но он останется неизменным, так как используется другими таблицами. Также перед удалением элемента с начало нужно его выбрать
Рисунок 3.12 - Внешний вид страницы editPubHouse.aspx
Код почти полностью дублируется со странички editDoc_Type.aspx
Также в бизнес логике участвуют следующие классы и таблицы
App_Code\ Links.cs
Класс Links хранит в себе двумерный массив строк string[,]Link, который хранит в себе имя файла и ссылку на него. Класс Links.cs позволяет быстро поменять ссылку на файл и не искать эту ссылку в коде программы. Поиск в массиве осуществляется методом string RetLinks(string n)
App_Code\ UserClass.cs
Хранит в себе логин и пароль активного пользователя, также осуществляет подключение к базе данных и выполняет методы поиска и выборки (select) в этой базе
Так например, обращаясь к классу UserClass можно сохранить его лигин и пароль
UserClass US = new UserClacc(“Login:pass”)
и записать его в базу данных, используя метод addInBase. Метод принимает аргументы в качестве 3х текстовых масивов и сам разбивает столбцы и значения и вставляет в запрос INSERT INTO
Us.addInBase("collaborator ", "First_Name, Last_Name, Patronomyc, login, pass,adress, Home_tel, Mob_tel ", " + TextBox1.Text + "," + TextBox2.Text + "," + TextBox3.Text + "," + TextBox4.Text + "," + TextBox5.Text + "," + TextBox6.Text + "," + TextBox7.Text + "," + TextBox8.Text);
Метод addInBase сам разместит значения и столбцы в запросе. Также в этом классе можно разработать множество методов для шифрования данных, собственно ради этого метод и создавался.
Css\4all2.css
Таблица стилей, которая управляет и задает стиль всем элементам в системе. Таблица стилей 4all2.css разрабатывалась как глобальная таблица и используется во всех страничках в системе.
С каждой доработкой VisualSudio.NET становится все удобнее в обращении. На данный момент человек, который не обладает большим опытам программирования может создать вполне функциональную систему удалённого доступа используя мышку.
Visual Sudio.NET дает разработчику использовать одну среду разработки для построения запросов и их выполнения. Также представление графического вида связей баз данных по мере визуального построения запроса, помогает обратить внимание на ошибки в базе данных. Работа с базами данных теперь стала еще удобнее, очень сильно помогает построитель запросов. Также мною были опробованы разные подходы к SqlDataSource, разные методы объявления и обращения к этому элементу. Элемент SqlDataSourcе можно объявить, как и в теге, так непосредственно в C# коде, что дает практически безграничные возможности для разработки. Таким образом, мною был создан класс, работающий с базой данных и ряд методов, которые взаимодействуют с этой базой данных, это дает мне возможность не указывать соединение к БД, а сразу перейти к sql запросу. Также как вывод можно выделить и то, что каждый элемент SqlDataSource может работать с разными таблицами, например его можно в один момент использовать для отображения данных из одной таблицы, а в другой момент для ввода данных в туже или другую страницу.
1. Герберт Ш. Полный справочник по C#. Издательский дом «Вильямс» Москва, Санкт-Петербург ,Киев 2010-744с
2. Мэтью Мак-Дональд, ASP.NET 2.0 с примерами на C# 2005 для профессионалов // Мэтью Мак-Дональд, Марио Шпушта Издательский дом «Вильямс» Москва, Санкт-Петербург ,Киев 2008 1410с
3. Эндрю Троэлсен Язык программирования C# 2005 и платформа .NET 2.0 Издательский дом «Вильямс» Москва, Санкт-Петербург ,Киев 2007 1155с
4. Дэвид С. Программирование на ADO.NET 2.0 «Русская Редакция» Москва, Санкт-Петербруг, Нижний Новгород ,Вроронеж, Новосибирск, Ростов на Дону, Екатеринбург, Самара, Киев, Харьков, Минск 2009 785с
5. Волощук Л.А., МЕТОДИЧНІ ВКАЗІВКИ до самостійної роботи студента при виконанні курсового проекту з дисципліни « Мережні інформаційні технології » для студентів V курсу // Волощук Л.А Розновец О.И. Одесса 2013 44с
Links.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
/// Сводное описание для Links
/// </summary>
public class Links
{
public string[,] Link = new string[,]{
{"PageName","Link"} ,
{"User","~/pages/user/User.aspx"},
{"admin","~/pages/admin/HomeAdmin.aspx"},
{"AddFile","~/pages/user/AddFile.aspx"},
{"Select1","~/pages/user/Select1.aspx"},
{"Login","~/pages/user/Login.aspx"},
{"Home","~/pages/home.aspx"},
{"registration","~/pages/user/registration.aspx"},
{"SeeType","~/pages/user/Select1.aspx"},
{"SeeAuthor","~/pages/user/Select2.aspx"},
{"editAuthor","~/pages/admin/editAuthor.aspx"},
{"editDoc_Type","~/pages/admin/editDoc_Type.aspx"},
{"editPubHouse","~/pages/admin/editPubHouse.aspx"}
};
string fname = "~\\Files\\";
*/
public string R_fname()
{
return fname;
}
public string RetLinks(string n)
{
for (int i = 0; i < Link.GetLength(0); i++)
{
if (Link[i, 0] == n)
{
return Link[i,1];
}
}
return "";
}
public Links()
{
}
}
UserClass.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
/// Сводное описание для UserClass
/// </summary>
public class UserClass
{
System.Data.SqlClient.SqlConnection conn =
New System.Data.SqlClient.SqlConnection("Data Source=(LocalDB)\\v11.0;AttachDbFilename=|DataDirectory|\\library.mdf;Integrated Security=True");
public UserClass()
{
}
public UserClass(string s, string n)
{
login = s;
Pass = n;
}
public UserClass(string s)
{
string[] s1 = s.Split(':');
login = s1[0];
Pass = s1[1];
}
private string login = "";
private string pass = "";
public string con()
{
return conn.ConnectionString;
}
public string Login // the Login property
{
get
{
return login;
}
set
{
login = value;
}
}
public string Pass // the Pass property
{
get
{
return pass;
}
set
{
pass = value;
}
}
public string InitUser()
{
return "User";
}
public bool serchLogin( UserClass Us )
{
string t = "";
System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand("SELECT [login], [pass] FROM [dbo].[collaborator] where [login] =N'" + Us.Login + "' and pass = N'"+Us.Pass+"'" , conn);
conn.Open();
System.Data.SqlClient.SqlDataReader reader = command.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
t += reader.GetString(0) + ":" + reader.GetString(1); //Читаем данные из базы данных ... )
if (t == Us.Login+":"+Us.Pass) { conn.Close(); return true; }
}
}
conn.Close();
return false;
}
/// <summary>
/// Добавляет данные в таблицу
/// </summary>
/// <param name="Tab"> Имя Таблици </param>
/// <param name="TabCol"> Колонка </param>
/// <param name="Vall">Значение</param>
public string addInBase(string Tab, string TabCol,string Vall)
{
try
{
string[] DbC = TabCol.Split(','); string TabColl = "";
string[] DbV = Vall.Split(','); string TabVall = "";
for (int i = 0; i < DbC.Length; i++)
{
if (i != DbC.Length - 1) TabColl += " [" + DbC[i] + "],";
else TabColl += " [" + DbC[i] + "]";
}
for (int i = 0; i < DbV.Length; i++)
{
if (i != DbV.Length - 1) TabVall += "N'" + DbV[i] + "',";
else TabVall += "N'" + DbV[i] + "'";
}
System.Web.UI.WebControls.SqlDataSource sql = new System.Web.UI.WebControls.SqlDataSource();
sql.ConnectionString = conn.ConnectionString;
sql.InsertCommand = "INSERT INTO [" + Tab + "] (" + TabColl + ") values(" + TabVall + ")";
sql.Insert();
return "Данные успешно добавлены";
}
catch {
return "ошибка, проверьте данные";
}
}
/// <summary>
/// Метод поиска данных в таблице
/// </summary>
/// <param name="Tab"> Таблица в которой надо искать </param>
/// <param name="RetTabCol">Колонку которую надо вернуть</param>
/// <param name="SerchTabCol">Колонку в которой надо искать </param>
/// <param name="Vall">Значение которое надо искать</param>
/// <returns></returns>
public string SerchInTable(string Tab, string RetTabCol,string SerchTabCol, string Vall)
{
string t = "-1";
System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand("select "+RetTabCol+" from "+ Tab +" where (" + SerchTabCol + " = N'" + Vall + "')", conn);
conn.Open();
System.Data.SqlClient.SqlDataReader reader = command.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
try
{
t = "" + reader.GetSqlInt32(0); conn.Close(); return t; //Читаем данные из базы данных ... )
}
catch { return t; }
}
}
conn.Close();
return t;
}
/// <summary>
/// Возвращяет ответ команды S
/// </summary>
/// <param name="s">Команда (например Select * from Database)</param>
/// <param name="col">Количество колонок, значения которых надо вернуть</param>
/// <returns>string</returns>
public string MySelect(string s , int col)
{
System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand(s, conn);
conn.Open();
System.Data.SqlClient.SqlDataReader reader = command.ExecuteReader();
string t = "";
if (reader.HasRows)
{
while (reader.Read())
{
for (int i = 0; i <= col; i++)
t += "" + reader.GetSqlInt32(i); //Читаем данные из базы данных ... )
}
}
conn.Close();
return t;
}
public string MySelect2(string s, int col)
{
System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand(s, conn);
conn.Open();
System.Data.SqlClient.SqlDataReader reader = command.ExecuteReader();
string t = "";
if (reader.HasRows)
{
while (reader.Read())
{
for (int i = 0; i <= col; i++)
{ t += "" + reader.GetString(i); if (i != col) { t += " "; } } //Читаем данные из базы данных ... )
t += ";";
}
}
conn.Close();
return t;
}
}
4all.css
body {}
#zag
{
text-decoration:underline;
}
#Rgrad
{
text-align:right;
background: -webkit-radial-gradient(right, ellipse cover, rgba(30,87,153,1) 23%,rgba(38,95,159,0) 70%,rgba(125,185,232,0) 100%);
}
.Rgrad
{
text-align:right;
background: -webkit-radial-gradient(right, ellipse cover, rgba(30,87,153,1) 23%,rgba(38,95,159,0) 70%,rgba(125,185,232,0) 100%);
}
#Lgrad
{
text-align:left;
background: -webkit-radial-gradient(Left, ellipse cover, rgba(0,87,153,1) 23%,rgba(38,95,159,0) 70%,rgba(125,185,232,0) 100%);
}
.defaultText {
color: #CACACA;
background: -webkit-radial-gradient(center, ellipse cover, rgba(0,0,0,1) 0%,rgba(0,0,0,1) 50%,rgba(0,0,0,1) 59%,rgba(0,0,0,0.13) 95%,rgba(0,0,0,0.01) 100%);
}
.aria {
background-image:url(fon.jpg) ;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border: 1px solid #CACACA;
}
/*CheckBox*/
.css-checkbox
{
background: -webkit-radial-gradient(center, ellipse cover, rgba(0,0,0,1) 0%,rgba(0,0,0,1) 47%,rgba(0,0,0,0.92) 50%,rgba(0,0,0,0.01) 86%,rgba(0,0,0,0.01) 95%);
width: 20px;
height:20px;
border: none;
color:#fff;
border: 0px inset ThreeDFace ! important;
margin: 0 0 0 5px;
padding: 5px 4px 3px 5px;
color: #CACACA;
}
/*Button*/
.button
{
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(76,76,76,1)), color-stop(12%,rgba(89,89,89,1)), color-stop(25%,rgba(102,102,102,1)), color-stop(39%,rgba(71,71,71,1)), color-stop(50%,rgba(44,44,44,1)), color-stop(51%,rgba(0,0,0,1)), color-stop(60%,rgba(17,17,17,1)), color-stop(76%,rgba(43,43,43,1)), color-stop(91%,rgba(28,28,28,1)), color-stop(100%,rgba(19,19,19,1)));
border: 1px solid #CACACA;
color :#CACACA;
padding: 3px;
outline: none;
width:100px;
}
.button:active /**/
{
color : black;
box-shadow: 0px 0px 8px 4px #FFFFFC, inset 0px 0px 0px rgba(0, 0, 0, 1.2), 0px 5px 5px rgba( 0,0,0,1.15 );
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(128,128,128,1)), color-stop(12%,rgba(137,137,137,1)), color-stop(25%,rgba(146,146,146,1)), color-stop(39%,rgba(124,124,124,1)), color-stop(50%,rgba(105,105,105,1)), color-stop(51%,rgba(74,74,74,1)), color-stop(60%,rgba(86,86,86,1)), color-stop(76%,rgba(104,104,104,1)), color-stop(91%,rgba(94,94,94,1)), color-stop(100%,rgba(87,87,87,1)));
outline: none;
}
.button:hover {
box-shadow: 0px 0px 8px 4px #FFFFFC, inset 0px 0px 0px rgba(0, 0, 0, 1.2), 0px 5px 5px rgba( 0,0,0,1.15 );
outline: none;
width:120px;
}
/*TextBox*/
.inputs {
/*overflow:scroll;*/
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(76,76,76,1)), color-stop(12%,rgba(89,89,89,1)), color-stop(25%,rgba(102,102,102,1)), color-stop(39%,rgba(71,71,71,1)), color-stop(50%,rgba(44,44,44,1)), color-stop(51%,rgba(0,0,0,1)), color-stop(60%,rgba(17,17,17,1)), color-stop(76%,rgba(43,43,43,1)), color-stop(91%,rgba(28,28,28,1)), color-stop(100%,rgba(19,19,19,1)));
border: 1px solid #CACACA;
color :#CACACA;
width:200px;
padding: 3px;
}
.inputs:focus {
color : black;
box-shadow: 0px 0px 8px 4px #FFFFFC, inset 0px 0px 0px rgba(0, 0, 0, 1.2), 0px 5px 5px rgba( 0,0,0,1.15 );
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(128,128,128,1)), color-stop(12%,rgba(137,137,137,1)), color-stop(25%,rgba(146,146,146,1)), color-stop(39%,rgba(124,124,124,1)), color-stop(50%,rgba(105,105,105,1)), color-stop(51%,rgba(74,74,74,1)), color-stop(60%,rgba(86,86,86,1)), color-stop(76%,rgba(104,104,104,1)), color-stop(91%,rgba(94,94,94,1)), color-stop(100%,rgba(87,87,87,1)));
outline: none;
width:250px;
}
.inputs:hover
{
box-shadow: 0px 0px 8px 4px #FFFFFC, inset 0px 0px 0px rgba(0, 0, 0, 1.2), 0px 5px 5px rgba( 0,0,0,1.15 );
width:250px;
}
/*TextArea*/
#TextArea
{
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(76,76,76,1)), color-stop(12%,rgba(89,89,89,1)), color-stop(25%,rgba(102,102,102,1)), color-stop(39%,rgba(71,71,71,1)), color-stop(50%,rgba(44,44,44,1)), color-stop(51%,rgba(0,0,0,1)), color-stop(60%,rgba(17,17,17,1)), color-stop(76%,rgba(43,43,43,1)), color-stop(91%,rgba(28,28,28,1)), color-stop(100%,rgba(19,19,19,1)));
border: 1px solid #CACACA;
color :#CACACA;
padding: 3px;
width :200px;
}
#TextArea:focus
{
color : black;
box-shadow: 0px 0px 8px 4px #FFFFFC, inset 0px 0px 0px rgba(0, 0, 0, 1.2), 0px 5px 5px rgba( 0,0,0,1.15 );
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(128,128,128,1)), color-stop(12%,rgba(137,137,137,1)), color-stop(25%,rgba(146,146,146,1)), color-stop(39%,rgba(124,124,124,1)), color-stop(50%,rgba(105,105,105,1)), color-stop(51%,rgba(74,74,74,1)), color-stop(60%,rgba(86,86,86,1)), color-stop(76%,rgba(104,104,104,1)), color-stop(91%,rgba(94,94,94,1)), color-stop(100%,rgba(87,87,87,1)));
outline: none;
}
TextArea:hover
{
box-shadow: 0px 0px 8px 4px #FFFFFC, inset 0px 0px 0px rgba(0, 0, 0, 1.2), 0px 5px 5px rgba( 0,0,0,1.15 );
}
/*таблица*/
.mGrid {
background-color: #fff;
margin: 5px 0 10px 0;
border: solid 1px #525252;
border-collapse:collapse;
}
.mGrid td {
padding: 2px;
border: solid 1px #c1c1c1;
color: #717171;
}
.mGrid th {
padding: 4px 2px;
color: #fff;
background: #424242 url(../Css/grd_head.png) repeat-x top;
border-left: solid 1px #525252;
.mGrid .alt { background: #fcfcfc url(../Css/grd_alt.png) repeat-x top; }
.mGrid .pgr { background: #424242 url(../Css/grd_pgr.png) repeat-x top; }
.mGrid .pgr table { margin: 5px 0; }
.mGrid .pgr td {
border-width: 0;
padding: 0 6px;
border-left: solid 1px #666;
font-weight: bold;
color: #fff;
line-height: 12px;
}
.mGrid .pgr a { color: #666; text-decoration: none; }
.mGrid .pgr a:hover { color: #000; text-decoration: none; }
.mGrid .head {
text-decoration:none;
text-decoration-color:white;
text-emphasis-color:white;
}
.mGrid .head {
}
editAuthor.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" %>
<script runat="server">
UserClass Adm = new UserClass();
Links l = new Links();
protected void Button1_Click(object sender, EventArgs e)
{
try
{
SqlDataSource1.InsertCommand =
"INSERT INTO [author] ([First_Name], [Last_Name], [Patronomyc],[birthdate]) VALUES (N'"+First_Name.Text+"', N'"+Last_Name.Text+"', N'"+Patronomyc.Text+"',N'"+birthdate.Text+"')";
SqlDataSource1.Insert();
SqlDataSource1.DataBind();
GridView1.DataBind();
Err.Text = "";
}
catch (Exception ex) {
Err.Text = ex.Message;
};
}
protected void Button1_Click1(object sender, EventArgs e)
{
try
{
SqlDataSource1.DeleteCommand = "DELETE FROM [author] WHERE [id_author] =N'" + GridView1.Rows[GridView1.SelectedIndex].Cells[1].Text + "'";
SqlDataSource1.Delete();
SqlDataSource1.DataBind();
GridView1.DataBind();
Err.Text = "";
}
catch (Exception ex)
{
Err.Text = ex.Message;
};
}
protected void Back_Click(object sender, EventArgs e)
{
Response.Redirect("HomeAdmin.aspx" + "?Text=" + Adm.Login + ":" + Adm.Pass);
}
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
<h1 class="Rgrad" > Редактирование таблици авторов</h1>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<table border="0">
<tr>
<td>
<asp:GridView ID="GridView1" runat="server" CssClass="mGrid"
AlternatingRowStyle-CssClass="alt"
HeaderStyle-CssClass="head" DataSourceID="SqlDataSource1">
<Columns>
<asp:CommandField ShowEditButton="True"
ShowSelectButton="True" ShowDeleteButton="false" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\library.mdf;Integrated Security=True"
ProviderName="System.Data.SqlClient"
SelectCommand="SELECT [id_author], [First_Name], [Last_Name], [Patronomyc], [birthdate] FROM [author]"
InsertCommand="INSERT INTO [author] ([First_Name], [Last_Name], [Patronomyc],[birthdate]) VALUES (@First_Name, @Last_Name, @Patronomyc,@birthdate)"
UpdateCommand="UPDATE [author] SET [First_Name] = @First_Name, [Last_Name] = @Last_Name, [Patronomyc] = @Patronomyc,[birthdate]=@birthdate WHERE [id_author] = @id_author">
</asp:SqlDataSource>
<br>
<asp:Label ID="Err" CssClass="defaultText" runat="server"/>
</td>
<td>
<table>
<tr><td style="width: 300px; text-align: center">
<asp:Button ID="Button1" CssClass ="button" runat="server" Text="add" OnClick="Button1_Click" />
<asp:Button ID="Button2" CssClass="button" runat="server" Text="del" OnClick="Button1_Click1" />
</td>
</tr>
<tr>
<td style="width: 300px; text-align: center">
<asp:TextBox ID="First_Name" CssClass="inputs" placeholder="First_Name" runat="server"></asp:TextBox> </td>
</tr>
<tr>
<td style="width: 300px; text-align: center">
<asp:TextBox ID="Last_Name" CssClass="inputs" placeholder="Last_Name" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td style="width: 300px; text-align: center">
<asp:TextBox ID="Patronomyc" CssClass="inputs" placeholder="Patronomyc" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td style="width: 300px; text-align: center">
<asp:TextBox ID="birthdate" CssClass="inputs" placeholder="birthdate" runat="server"></asp:TextBox></td>
</tr>
<tr><td>
<asp:Button ID="Back" CssClass="button" Text="back" runat="server" OnClick="Back_Click" />
</td></tr>
</table>
</td>
</tr>
</table>
</asp:Content>
editDoc_Type.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" %>
<script runat="server">
UserClass Adm = new UserClass();
Links L = new Links();
protected void Page_Load(object sender, EventArgs e)
{
try
{
Adm = new UserClass(Request.QueryString["Text"]);
}
catch
{
Response.Redirect(L.RetLinks("Login"));
}
}
protected void Add_Click(object sender, EventArgs e)
{
try
{
SqlDataSource1.InsertCommand =
"INSERT INTO [doc_Type] ([name]) VALUES (N'" + NAme.Text + "')";
SqlDataSource1.Insert();
SqlDataSource1.DataBind();
GridView1.DataBind();
Err.Text = "";
}
catch (Exception ex)
{
Err.Text = ex.Message;
};
}
protected void del_Click(object sender, EventArgs e)
{
try
{
SqlDataSource1.DeleteCommand = "DELETE FROM [doc_Type] WHERE [Id_doc_Type] =N'" + GridView1.Rows[GridView1.SelectedIndex].Cells[1].Text + "'";
SqlDataSource1.Delete();
SqlDataSource1.DataBind();
GridView1.DataBind();
Err.Text = "";
}
catch (Exception ex)
{
Err.Text = ex.Message;
};
}
protected void Back_Click(object sender, EventArgs e)
{
Response.Redirect("HomeAdmin.aspx" + "?Text=" + Adm.Login+ ":" + Adm.Pass);
}
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<table>
<tr>
<td>
<asp:GridView ID="GridView1" runat="server" CssClass="mGrid"
AlternatingRowStyle-CssClass="alt"
HeaderStyle-CssClass="head" DataSourceID="SqlDataSource1"> <Columns>
<asp:CommandField ShowEditButton="True"
ShowSelectButton="True" ShowDeleteButton="false" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\library.mdf;Integrated Security=True"
ProviderName="System.Data.SqlClient"
SelectCommand="SELECT [id_doc_Type] , [name] FROM [doc_Type]"
InsertCommand="INSERT INTO [doc_Type] ( [name]) VALUES ( @name)"
UpdateCommand="UPDATE [doc_Type] SET [name] = @name where [id_doc_Type] = @Id_doc_Type">
</asp:SqlDataSource>
<br>
<asp:Label ID="Err" CssClass="defaultText" runat="server" />
</td>
<td style="width: 300px; text-align: center">
<asp:Button ID="Add" CssClass="button" Text="Add" runat="server" OnClick="Add_Click" />
<asp:Button ID="del" CssClass="button" Text="del" runat="server" OnClick="del_Click" />
<div>
<asp:TextBox ID="NAme" CssClass="inputs" placeholder="Name" runat="server"></asp:TextBox>
</div>
<div>
<asp:Button ID="Back" CssClass="button" Text="back" runat="server" OnClick="Back_Click" /> </div>
</td>
</tr>
</table>
</asp:Content>
editPubHouse.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" %>
<script runat="server">
UserClass Adm = new UserClass();
Links L = new Links();
protected void Page_Load(object sender, EventArgs e)
{
try
{
Adm = new UserClass(Request.QueryString["Text"]);
}
catch
{
Response.Redirect(L.RetLinks("Login"));
}
}
protected void Add_Click(object sender, EventArgs e)
{
try
{
SqlDataSource1.InsertCommand =
"INSERT INTO [PubHouse] ([name]) VALUES (N'" + NAme.Text + "')";
SqlDataSource1.Insert();
SqlDataSource1.DataBind();
GridView1.DataBind();
Err.Text = "";
}
catch (Exception ex)
{
Err.Text = ex.Message;
};
}
protected void del_Click(object sender, EventArgs e)
{
try
{
SqlDataSource1.DeleteCommand = "DELETE FROM [PubHouse] WHERE [id_PubHouse] =N'" + GridView1.Rows[GridView1.SelectedIndex].Cells[1].Text + "'";
SqlDataSource1.Delete();
SqlDataSource1.DataBind();
GridView1.DataBind();
Err.Text = "";
}
catch (Exception ex)
{
Err.Text = ex.Message;
};
}
protected void Back_Click(object sender, EventArgs e)
{
Response.Redirect("HomeAdmin.aspx" + "?Text=" + Adm.Login+ ":" + Adm.Pass);
}
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<table>
<tr>
<td>
<asp:GridView ID="GridView1" runat="server" CssClass="mGrid"
AlternatingRowStyle-CssClass="alt"
HeaderStyle-CssClass="head" DataSourceID="SqlDataSource1">
<Columns>
<asp:CommandField ShowEditButton="True"
ShowSelectButton="True" ShowDeleteButton="false" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:libraryConnectionString1 %>"
ProviderName="System.Data.SqlClient"
SelectCommand="SELECT * FROM [PubHouse]"
InsertCommand="INSERT INTO INTO [PubHouse] ([id_PubHouse], [name]) VALUES (@id_PubHouse, @name)"
UpdateCommand="UPDATE [PubHouse] SET [name] = @name where [id_PubHouse] = @id_PubHouse"></asp:SqlDataSource>
<br>
<asp:Label ID="Err" CssClass="defaultText" runat="server" />
</td>
<td style="width: 300px; text-align: center">
<asp:Button ID="Add" CssClass="button" text="Add" runat="server" OnClick="Add_Click" />
<asp:Button ID="del" CssClass="button" text="del" runat="server" OnClick="del_Click" />
<div>
<asp:TextBox ID="NAme" CssClass="inputs" placeholder="Name" runat="server" ></asp:TextBox>
</div>
<div>
<asp:Button ID="Back" CssClass="button" Text="back" runat="server" OnClick="Back_Click" /></div>
</td>
</tr>
</table>
</asp:Content>
AddFile.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" %>
<script runat="server">
UserClass Us;
Links l = new Links();
void Page_load()
{
try
{
Us = new UserClass(Request.QueryString["Text"]);
}
catch
{
Response.Redirect("Login.aspx");
}
SqlDataSource1.SelectCommand = "select collaborator.login, status.date_status, documents.name, documents.Adress FROM collaborator INNER JOIN status ON collaborator.id_collaborator = status.id_collaborator INNER JOIN documents ON status.id_document = documents.Id_documents where collaborator.id_collaborator =N'" + Us.SerchInTable("collaborator", "id_collaborator", "login", Us.Login) + "'";
SqlDataSource1.DataBind();
GridView1.DataBind();
}
public string ConvertTodata(string s)
{
string[] data = s.Split('.','-',';',':');
return data[2]+"-"+data[1]+"-"+data[0];
}
protected void Button1_Click(object sender, EventArgs e)
{
if (PowerCB.Checked == true)
{
ChecZhanr.Checked = true;
CheckAuthor.Checked = true;
CheckPHouse.Checked = true;
}
string command = "";
string Phouse = "", zhan = "", Au = "", Strdate = ""; int err = 0;
string folderName =l.R_fname() , fileName = "";
if (FileUpload1.FileName.Length != 0)
{
try
{
fileName = FileUpload1.FileName;
FileUpload1.SaveAs(Server.MapPath(folderName) + fileName);
}
catch (Exception e1)
{ err++; LabFile.Text = "" + e1.Message; LabFile.Visible = true; }
if (TbName.Text == "" && TbName.Text == "Поле ввода не должно быть пустым") { TbName.Text = "Поле ввода не должно быть пустым"; err++; }
if (TbDate.Text != "")
{
Strdate = ConvertTodata(TbDate.Text);
}
else
{
LabDate.Text = "Поле ввода не должно быть пустым"; LabDate.Visible = true;
}
if (TbZhanr.Text != "")
{
zhan = "" + Us.SerchInTable("doc_Type", "id_doc_Type", "name", TbZhanr.Text);
if (zhan == "-1")
{
err++;
LabZhanr.Text = " нету в базе данных,добавить? "; LabZhanr.Visible = true; ChecZhanr.Visible = true;
}
}
else { err++; LabZhanr.Text = "Поле ввода не должно быть пустым"; LabZhanr.Visible = true; }
if (TbPHouse.Text != "")
{
Phouse = "" + Us.SerchInTable("PubHouse", "Id_PubHouse", "name", TbPHouse.Text);
if (Phouse == "-1")
{
err++;
LabPHouse.Text = " нету в базе данных,добавить? "; LabPHouse.Visible = true; CheckPHouse.Visible = true;
}
}
else { err++; LabPHouse.Text = "Поле ввода не должно быть пустым"; LabPHouse.Visible = true; }
if (TbAuthor.Text != "")
{
string[] Author = TbAuthor.Text.Split(' ');
if (Author.Length == 3)
{
Au = Us.MySelect("Select a.id_author from author a where a.First_Name = N'" + Author[0] + "' and a.Last_Name = N'" + Author[1] + "' and Patronomyc = N'" + Author[2] + "'", 0);
}
else
{
Au = Us.MySelect("Select a.id_author from author a where a.First_Name = N'" + Author[0] + "' and a.Last_Name = N'" + Author[1] + "'", 0);
}
if (Au == "")
{
err++;
LabAuthor.Text = " нету в базе данных,добавить? "; LabAuthor.Visible = true; CheckAuthor.Visible = true;
}
}
else { err++; LabAuthor.Text = "Поле ввода не должно быть пустым"; LabAuthor.Visible = true; }
if (CheckPHouse.Checked == true)
{
err--;
LabPHouse.Visible = true;
LabPHouse.Text = Us.addInBase("PubHouse", "name", TbPHouse.Text);
Phouse = "" + Us.SerchInTable("PubHouse", "Id_PubHouse", "name", TbPHouse.Text);
};
if (CheckAuthor.Checked == true)
{
err--;
string[] Author = TbAuthor.Text.Split(' ');
if (Author.Length == 3)
{
LabAuthor.Visible = true;
LabAuthor.Text = Us.addInBase("author", "First_Name,Last_Name,Patronomyc", Author[0] + "," + Author[1] + "," + Author[2]);
Au = Us.MySelect("Select a.id_author from author a where a.First_Name = N'" + Author[0] + "' and a.Last_Name = N'" + Author[1] + "' and Patronomyc = N'" + Author[2] + "'", 0);
}
else
{
LabAuthor.Visible = true;
LabAuthor.Text = Us.addInBase("author", "First_Name,Last_Name", Author[0] + "," + Author[1]);
Au = Us.MySelect("Select a.id_author from author a where a.First_Name = N'" + Author[0] + "' and a.Last_Name = N'" + Author[1] + "'", 0);
}
};
if (ChecZhanr.Checked == true)
{
err--; LabZhanr.Visible = true; LabZhanr.Text = Us.addInBase("doc_Type", "name", TbZhanr.Text); zhan = "" + Us.SerchInTable("doc_Type", "id_doc_Type", "name", TbZhanr.Text);
};
if (err == 0)
{
command = "documents:" + Us.addInBase("documents", "name,Id_doc_Type,date,PubHouse,Adress", TbName.Text + "," + zhan + "," + Strdate + "," + Phouse + "," + folderName + fileName) + "\r\n"; //Запись данных об документе ...
string id_doc = Us.MySelect("Select Id_documents from documents d where d.name = N'" + TbName.Text + "' and d.Id_doc_Type = N'" + zhan + "' and d.date=N'" + Strdate + "' ", 0);
command += "written:" + Us.addInBase("written", "id_document,id_author,w_author", id_doc + "," + Au + ",1") + "\r\n";//Запись информации об авторе, Всегда будет главным автором
command += "Status:" + Us.addInBase("status", "id_document,id_collaborator,transaction_status,date_status", id_doc + "," + Us.SerchInTable("collaborator", "id_collaborator", "login", Us.Login) + ",1," + DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day) + "\r\n";
Out.Visible = true; Out.Text = command;
}
GridView1.DataBind();
ChecZhanr.Checked = false;
CheckAuthor.Checked = false;
CheckPHouse.Checked = false;
}
}
protected void Back_Click(object sender, EventArgs e)
{
Response.Redirect("User.aspx" + "?Text=" + Us.Login + ":" + Us.Pass); // работает!
}
protected void TestList_SelectedIndexChanged(object sender, EventArgs e)
{
}
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
<h2 id="Rgrad">Добавление файла</h2>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<table border="0">
<tr>
<td style="width:260px ; text-align: center">
<asp:TextBox ID="TbName" CssClass="inputs" placeholder="Введите название книги" runat="server"></asp:TextBox>
</td>
<td> <asp:Button ID="Button1" CssClass="button" runat="server" Text="Add" OnClick="Button1_Click" />
<asp:CheckBox ID="PowerCB" Visible="true" CssClass="css-checkbox" runat="server" Text="Усилено" AutoPostBack="True" />
</td>
<td rowspan ="8">
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\library.mdf;Integrated Security=True"
ProviderName="System.Data.SqlClient"
SelectCommand="select distinct c.login,d.name, t.name, d.Adress from collaborator c,documents d,status s, doc_Type t where d.id_doc_Type= t.Id_doc_Type "></asp:SqlDataSource>
<asp:GridView ID="GridView1" runat="server" PagerStyle-CssClass="pgr"
CssClass="mGrid"
AlternatingRowStyle-CssClass="alt"
HeaderStyle-CssClass="head" DataSourceID="SqlDataSource1"></asp:GridView>
</td>
</tr>
<tr>
<td style="text-align: center">
<asp:TextBox ID="TbZhanr" CssClass="inputs" placeholder="Введите Тип файла " runat="server"> </asp:TextBox>
</td>
<td style="text-align: center">
<asp:Label ID="LabZhanr" Visible="false" CssClass="defaultText" runat="server" Text=" "> нету в базе данных,добавить? </asp:Label>
<asp:CheckBox ID="ChecZhanr" Visible="false" CssClass="css-checkbox" runat="server" Text="да" AutoPostBack="True" />
</td>
</tr>
<tr>
<td style="text-align: center">
<asp:TextBox ID="TbDate" CssClass="inputs" placeholder="Введите дату издания DD.MM.YYYY " runat="server"></asp:TextBox>
<asp:Label ID="LabDate" Visible="false" CssClass="defaultText" runat="server" Text=" "> </asp:Label>
</td>
</tr>
<tr>
<td style="text-align: center">
<asp:TextBox ID="TbPHouse" CssClass="inputs" placeholder="Введите издание" runat="server"></asp:TextBox>
</td>
<td>
<asp:Label ID="LabPHouse" Visible="false" CssClass="defaultText" runat="server" Text=" "> нету в базе данных,добавить? </asp:Label>
<asp:CheckBox ID="CheckPHouse" Visible="false" CssClass="css-checkbox" runat="server" Text="да" AutoPostBack="True" />
</td>
</tr>
<tr>
<td style="text-align: center">
<asp:TextBox ID="TbAuthor" CssClass="inputs" placeholder="Введите автора пример (Александр Сергеевич Пушкин)" runat="server"></asp:TextBox>
</td>
<td>
<asp:Label ID="LabAuthor" Visible="false" CssClass="defaultText" runat="server" Text=" "> нету в базе данных,добавить? </asp:Label>
<asp:CheckBox ID="CheckAuthor" Visible="false" CssClass="css-checkbox" runat="server" Text="да" AutoPostBack="True" />
</td>
</tr>
<tr>
<td style="text-align: center">
<asp:FileUpload ID="FileUpload1" runat="server" /> <br />
<asp:Label ID="LabFile" Visible="false" CssClass="defaultText" runat="server" Text=" "> нету в базе данных,добавить? </asp:Label>
</td>
<td>
<%--<asp:TextBox ID="Out" CssClass="inputs" runat="server" Visible="false" />--%>
<asp:TextBox ID="Out" Visible="false" Width="90%" CssClass="inputs" runat="server" TextMode="MultiLine"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Button ID="Back" CssClass="button" runat="server" Text="Назад" OnClick="Back_Click" />
</td>
</tr>
<tr>
<td>
</td>
</tr>
</table>
</asp:Content>
Login.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/GuestMasterPage.master" %>
<script runat="server">
Links L = new Links();
UserClass Us = new UserClass();
int err = 0;
protected void Page_Load(object sender, EventArgs e)
{
Us = new UserClass();
}
protected void LoginBt_Click(object sender, EventArgs e)
{
Us = new UserClass(Login.Text, Pass.Text);
if (Us.serchLogin(Us))
{
Response.Redirect(L.RetLinks("User") + "?Text=" + Login.Text + ":" + Pass.Text);
}
else { Label1.Visible = true; Label1.Text = "Логин или пароль неверный. "; err++;
Label1.Text += "Забыли пароль?"; CheckBox1.Visible = true; Cb1Text.Visible = true; }
if (CheckBox1.Checked == true) { HelpTB.Visible = true; HelpTB.Text = "" + Us.SerchInTable("collaborator", "pass", "login", Login.Text); }
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
<h2 id="Rgrad">Вход на сайт</h2>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<table style="width: 100%;">
<tr >
<td style="width: 300px;">
<asp:TextBox ID="Login" CssClass="inputs" runat="server"/>
</td>
<td>
<asp:Button ID="LoginBt" CssClass="button" runat="server" Text="Вход" OnClick="LoginBt_Click" />
</td>
</tr>
<tr>
<td style="width: 300px;">
<asp:TextBox ID="Pass" TextMode="Password" CssClass="inputs" runat="server"/>
</td>
<td>
<asp:Button ID="Button1" Visible="false" CssClass="button" runat="server" Text="Забыл" />
</td>
</tr>
<tr>
<td width ="250">
<asp:Label ID="Label1" CssClass="defaultText" runat="server" Visible="false" Text=""></asp:Label>
<asp:CheckBox ID="CheckBox1" Visible="false" CssClass="css-checkbox lrg" runat="server" AutoPostBack="True" />
<asp:label for="CheckBox1" ID="Cb1Text" style="color: #CACACA;" Visible="false" runat="server" >ДА</asp:label>
</td>
<td>
<asp:TextBox ID="HelpTB" CssClass="inputs" Visible="false" runat="server" ></asp:TextBox>
</td>
</tr>
</table>
</asp:Content>
registration.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/GuestMasterPage.master" %>
<script runat="server">
public Links Link = new Links();
void Page_Load(Object sender, EventArgs e)
{
}
protected void Bt1_Click(object sender, EventArgs e)
{
string s = "INSERT INTO [dbo].[collaborator] ( [First_Name], [Last_Name], [Patronomyc], [login], [pass], [adress], [Home_tel], [Mob_tel]) VALUES (N'" + TextBox1.Text + "',N'" + TextBox2.Text + "',N'" + TextBox3.Text + "',N'" + TextBox4.Text + "',N'" + TextBox5.Text + "',N'" + TextBox6.Text + "',N'" + TextBox7.Text + "',N'" + TextBox8.Text + "')";
try
{
SqlDataSource1.InsertCommand = s;
SqlDataSource1.Insert();
DebText.Visible = true;
DebText.TextMode = TextBoxMode.SingleLine;
DebText.Text = "Пользователь зарегистрирован";
}
catch (Exception ex)
{
DebText.Visible = true;
DebText.Text=s+"\r\n"+ex;
}
}
protected void TextBox5_TextChanged(object sender, EventArgs e)
{
}
protected void Back(object sender, EventArgs e)
{
Response.Redirect(Link.RetLinks("Home"));
}
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
<title>reg</title>
<h2 id="Rgrad" >Регистрация нового сотрудника</h2>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<%-- <div class="aria">--%>
<table border="0" style="width: 100%;">
<tr >
<td wight="300px" style=" width: 300px; text-align: center">
<asp:TextBox ID="TextBox1" CssClass="inputs" placeholder="Введите имя" runat="server"></asp:TextBox>
</td>
<td >
<table>
<tr>
<td style="width: 120px;text-align:center">
<asp:Button ID="Bt1" CssClass="button" runat="server" text="регистрация" OnClientClick="" OnClick="Bt1_Click"/>
</td>
<td style="width: 120px; text-align: center">
<asp:Button ID="Button1" CssClass="button" runat="server" Text="Назад" OnClientClick="" OnClick="Back" />
</td>
</tr>
</table>
</td>
<td>
</td></tr><tr><td>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\library.mdf;Integrated Security=True"
ProviderName="System.Data.SqlClient"
SelectCommand="SELECT [First_Name], [Last_Name], [Patronomyc], [login], [pass], [adress], [Home_tel], [Mob_tel], [id_collaborator] FROM [collaborator]"
DeleteCommand="DELETE FROM [collaborator] WHERE [id_collaborator] = @id_collaborator"
InsertCommand="INSERT INTO [collaborator] ([First_Name], [Last_Name], [Patronomyc], [login], [pass], [adress], [Home_tel], [Mob_tel]) VALUES (@First_Name, @Last_Name, @Patronomyc, @login, @pass, @adress, @Home_tel, @Mob_tel)"
UpdateCommand="UPDATE [collaborator] SET [First_Name] = @First_Name, [Last_Name] = @Last_Name, [Patronomyc] = @Patronomyc, [login] = @login, [pass] = @pass, [adress] = @adress, [Home_tel] = @Home_tel, [Mob_tel] = @Mob_tel WHERE [id_collaborator] = @id_collaborator">
<DeleteParameters>
<asp:Parameter Name="id_collaborator" Type="Int32" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="First_Name" Type="String" />
<asp:Parameter Name="Last_Name" Type="String" />
<asp:Parameter Name="Patronomyc" Type="String" />
<asp:Parameter Name="login" Type="String" />
<asp:Parameter Name="pass" Type="String" />
<asp:Parameter Name="adress" Type="String" />
<asp:Parameter Name="Home_tel" Type="String" />
<asp:Parameter Name="Mob_tel" Type="String" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="First_Name" Type="String" />
<asp:Parameter Name="Last_Name" Type="String" />
<asp:Parameter Name="Patronomyc" Type="String" />
<asp:Parameter Name="login" Type="String" />
<asp:Parameter Name="pass" Type="String" />
<asp:Parameter Name="adress" Type="String" />
<asp:Parameter Name="Home_tel" Type="String" />
<asp:Parameter Name="Mob_tel" Type="String" />
<asp:Parameter Name="id_collaborator" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
</td>
<td rowspan="">
<asp:GridView ID="GridView1" Visible="false" runat="server" AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="id_collaborator" DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="First_Name" HeaderText="First_Name" SortExpression="First_Name" />
<asp:BoundField DataField="Last_Name" HeaderText="Last_Name" SortExpression="Last_Name" />
<asp:BoundField DataField="Patronomyc" HeaderText="Patronomyc" SortExpression="Patronomyc" />
<asp:BoundField DataField="login" HeaderText="login" SortExpression="login" />
<asp:BoundField DataField="pass" HeaderText="pass" SortExpression="pass" />
<asp:BoundField DataField="adress" HeaderText="adress" SortExpression="adress" />
<asp:BoundField DataField="Home_tel" HeaderText="Home_tel" SortExpression="Home_tel" />
<asp:BoundField DataField="Mob_tel" HeaderText="Mob_tel" SortExpression="Mob_tel" />
<asp:BoundField DataField="id_collaborator" HeaderText="id_collaborator" InsertVisible="False" ReadOnly="True" SortExpression="id_collaborator" />
</Columns>
</asp:GridView>
</td>
</tr>
<tr>
<td wight="300px" style="width: 300px; text-align: center">
<asp:TextBox ID="TextBox2" CssClass="inputs" placeholder="Введите фамилию" runat="server"></asp:TextBox>
</td >
<td>
<asp:TextBox ID="DebText" Visible="false" Width="90%" CssClass="inputs" runat="server" TextMode="MultiLine"></asp:TextBox>
</td>
</tr>
<tr>
<td wight="300px" style="width: 300px; text-align: center">
<asp:TextBox ID="TextBox3" CssClass="inputs" placeholder="Введити отчество" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td wight="300px" style="width: 300px; text-align: center">
<asp:TextBox ID="TextBox4" CssClass="inputs" placeholder="Придумайте логин " runat="server"></asp:TextBox>
</td>
<td>
</td>
</tr>
<tr>
<td wight="300px" style="width: 300px; text-align: center">
<asp:TextBox ID="TextBox5" CssClass="inputs" placeholder="Придумайте пароль" TextMode="Password" runat="server" OnTextChanged="TextBox5_TextChanged"></asp:TextBox>
</td>
</tr>
<tr>
<td wight="300px" style="width: 300px; text-align: center">
<asp:TextBox ID="TextBox6" CssClass="inputs" placeholder="Введите электроный адрес" runat="server"></asp:TextBox>
</td >
</tr>
<tr>
<td wight="300px" style="width: 300px; text-align: center">
<asp:TextBox ID="TextBox7" CssClass="inputs" placeholder="Введите домашний теефон(если есть)" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td wight="300px" style="width: 300px ;text-align:center">
<asp:TextBox ID="TextBox8" CssClass="inputs" placeholder="Введите мобильный (если есть)" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td colspan ="3">
</td>
</tr>
</table>
<%-- </div>--%>
</asp:Content>
Select1.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
}
protected void type_Init(object sender, EventArgs e)
{
}
protected void показать_Click(object sender, EventArgs e)
{
string dateFrom ="";//2013-01-16
dateFrom =""+otYear.Text+"-"+otMonth.Text+"-"+otDay.Text;
string dateTo="";//2013-01-16
dateTo=""+doYear.Text+"-"+doMonth.Text+"-"+doDay.Text;
SqlDataSource s = new SqlDataSource();
s.SelectCommand = "select d.name,dt.name,s.date_status ,d.date,d.PubHouse,d.Adress from documents d , doc_Type dt ,status s where d.id_doc_Type = dt.Id_doc_Type and s.id_document=d.Id_documents and s.date_status > N'" + dateFrom + "' and s.date_status < N'" + dateTo + "' and d.id_doc_Type=(select t.Id_doc_Type from doc_Type t where t.name=N'" + type .SelectedItem.Text+ "')";
s.ConnectionString = "Data Source=(LocalDB)\\v11.0;AttachDbFilename=|DataDirectory|\\library.mdf;Integrated Security=True";
GridView1.DataSource = s;
GridView1.DataBind();
}
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<table>
<tr><td>
<asp:GridView ID="GridView1" runat="server" CssClass="mGrid"
AlternatingRowStyle-CssClass="alt"
HeaderStyle-CssClass="head" DataSourceID=""></asp:GridView>
</td>
<td style="text-align:center" >
<asp:Button ID="показать" CssClass="inputs" Width="100" runat="server" Text="Показать" OnClick="показать_Click" />
<asp:DropDownList CssClass="inputs" DataSourceID="SqlDataSource2" DataValueField="name" runat="server" ID="type" OnInit="type_Init"></asp:DropDownList>
<br />
<table>
<tr>
<td>
<asp:TextBox CssClass="inputs" Width="100px" runat="server" ID="otYear">2000</asp:TextBox>
</td>
<td> <p class="defaultText"> Год </p> </td>
<td>
<asp:TextBox CssClass="inputs" Width="100px" runat="server" ID="doYear">2100</asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:TextBox CssClass="inputs" runat="server" Width="100px" ID="otMonth">01</asp:TextBox>
</td>
<td> <p class="defaultText">Месяц</p> </td>
<td>
<asp:TextBox CssClass="inputs" runat="server" Width="100px" ID="doMonth">12</asp:TextBox> </td>
</tr>
<tr>
<td>
<asp:TextBox CssClass="inputs" runat="server" Width="100px" ID="otDay">01</asp:TextBox>
</td>
<td> <p class="defaultText">день</p> </td>
<td>
<asp:TextBox CssClass="inputs" Width="100px" runat="server" ID="doDay">30</asp:TextBox> </td>
</tr>
</table>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:libraryConnectionString1 %>" SelectCommand="SELECT name FROM [doc_Type]"></asp:SqlDataSource>
</td>
</tr>
</table>
</asp:Content>
Select2.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" %>
<script runat="server">
string str = "";
void Page_load()
{
if (author.SelectedIndex != -1)
{
str = author.SelectedItem.Text + ' ' + author.SelectedIndex;
}
UserClass Us = new UserClass();
string t = Us.MySelect2("SELECT [First_Name], [Last_Name] FROM [author]", 1);
string[] t2 = t.Split(';');
author.Items.Clear();
for (int i = 0; i < t2.Length; i++)
author.Items.Add(t2[i]);
}
protected void Button1_Click(object sender, EventArgs e)
{
string[] AUthor = str.Split(' ');
string LastName = AUthor[1];
string FirstName = AUthor[0];
int id = Convert.ToInt32(AUthor[2]);
author.SelectedIndex = id;
SqlDataSource s = new SqlDataSource();
s.ConnectionString = "Data Source=(LocalDB)\\v11.0;AttachDbFilename=|DataDirectory|\\library.mdf;Integrated Security=True";
string dateFrom = "" + otYear.Text + "-" + otMonth.Text + "-" + otDay.Text;
string dateTo = "" + doYear.Text + "-" + doMonth.Text + "-" + doDay.Text;
string comm = "select d.Id_documents, d.name , a.First_Name,a.Last_Name,s.date_status from written w, status s , author a, documents d where w.id_author=a.id_author and w.id_author =(select a.id_author from author a where a.Last_Name=N'" + LastName + "' and a.First_Name=N'" + FirstName + "') and w.id_document=d.Id_documents and s.id_document=d.Id_documents and s.date_status > N'" + dateFrom + "' and s.date_status < N'" + dateTo + "'";
s.SelectCommand = comm;
GridView1.DataSource = s;
GridView1.DataBind();
}
protected void author_SelectedIndexChanged(object sender, EventArgs e)
{
}
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<table>
<tr><td>
<asp:GridView ID="GridView1" runat="server" CssClass="mGrid"
AlternatingRowStyle-CssClass="alt"
HeaderStyle-CssClass="head" DataSourceID="">
</asp:GridView>
<td>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:libraryConnectionString1 %>" SelectCommand="SELECT [First_Name], [Last_Name] FROM [author]"></asp:SqlDataSource>
<asp:DropDownList CssClass="inputs" Width="200" runat="server" ID="author" OnSelectedIndexChanged="author_SelectedIndexChanged"> </asp:DropDownList>
<asp:Button ID="Button1" CssClass="button" runat="server" Text="Показать" OnClick="Button1_Click" />
<table>
<tr><td style=" text-align:center">От</td><td></td><td style="text-align:center">до</td></tr>
<tr>
<td >
<asp:TextBox CssClass="inputs" Width="100px" runat="server" ID="otYear">2000</asp:TextBox>
</td>
<td>
<p class="defaultText">Год </p>
</td>
<td>
<asp:TextBox CssClass="inputs" Width="100px" runat="server" ID="doYear">2100</asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:TextBox CssClass="inputs" Width="100px" runat="server" ID="otMonth">01</asp:TextBox>
</td>
<td>
<p class="defaultText">Месяц</p>
</td>
<td>
<asp:TextBox CssClass="inputs" Width="100px" runat="server" ID="doMonth">12</asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:TextBox CssClass="inputs" Width="100px" runat="server" ID="otDay">01</asp:TextBox>
</td>
<td>
<p class="defaultText">день</p>
</td>
<td>
<asp:TextBox CssClass="inputs" Width="100px" runat="server" ID="doDay">30</asp:TextBox>
</td>
</tr>
<asp:TextBox Visible="false" ID="temp" runat="server"></asp:TextBox>
</table>
</td>
</td></tr>
</table>
</asp:Content>
User.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" %>
<script runat="server">
private UserClass User;
public Links L = new Links();
protected void Page_Load(object sender, EventArgs e)
{
try
{
User = new UserClass(Request.QueryString["Text"]);
L1.Text = User.Login;
}
catch
{
Response.Redirect(L.RetLinks("Login")+"?Text= : ");
}
}
void Myinit()
{
}
protected void Button1_Click1(object sender, EventArgs e)
{
Response.Redirect( L.RetLinks("AddFile") + "?Text=" + User.Login + ":" + User.Pass);
}
protected void Button1_Click2(object sender, EventArgs e)
{
Response.Redirect(L.RetLinks("Select1") + "?Text=" + User.Login + ":" + User.Pass);
}
protected void go_Click(object sender, EventArgs e)
{
}
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
<h2 id="Rgrad" >Приветствуем вас <asp:Label ID="L1" runat="server"></asp:Label> </h2>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<table>
<tr>
<td>
<asp:TextBox ID="serch" CssClass="inputs" placeholder="что ищем? " runat="server" ></asp:TextBox> <asp:Button runat="server" ID="go" CssClass="button" Text="Искать" OnClick="go_Click" />
</td>
<td>
</td>
</tr>
<tr>
<td colspan="2">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CssClass="mGrid"
AlternatingRowStyle-CssClass="alt"
HeaderStyle-CssClass="head" DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="Имя" HeaderText="Имя" SortExpression="Имя" />
<asp:BoundField DataField="фамилия" HeaderText="фамилия" SortExpression="фамилия" />
<asp:BoundField DataField="отчество" HeaderText="отчество" SortExpression="отчество" />
<asp:BoundField DataField="название_файла" HeaderText="название_файла" SortExpression="название_файла" />
<asp:BoundField DataField="тип_файла" HeaderText="тип_файла" SortExpression="тип_файла" />
<asp:BoundField DataField="Издательство" HeaderText="Издательство" SortExpression="Издательство" />
<asp:BoundField DataField="Имя_автора" HeaderText="Имя_автора" SortExpression="Имя_автора" />
<asp:BoundField DataField="фамилия_автора" HeaderText="фамилия_автора" SortExpression="фамилия_автора" />
<asp:BoundField DataField="отчество_автора" HeaderText="отчество_автора" SortExpression="отчество_автора" />
<asp:BoundField DataField="дата_публикации" HeaderText="дата_публикации" SortExpression="дата_публикации" />
<asp:BoundField DataField="дата_загрузки" HeaderText="дата_загрузки" SortExpression="дата_загрузки" />
<asp:BoundField DataField="Adress" HeaderText="Adress" SortExpression="Adress" Visible="false" />
<asp:TemplateField HeaderText="Adress">
<ItemTemplate>
<asp:HyperLink ID="hlID" runat="server" Text='Скачать' NavigateUrl='<%# Eval("Adress") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:libraryConnectionString1 %>"
SelectCommand="
SELECT
collaborator.First_Name AS Имя,
collaborator.Last_Name AS фамилия,
collaborator.Patronomyc AS отчество,
documents.name AS название_файла,
doc_Type.name AS тип_файла,
PubHouse.name AS Издательство,
author.First_Name AS Имя_автора,
author.Last_Name AS фамилия_автора,
author.Patronomyc AS отчество_автора,
documents.date AS дата_публикации,
status.date_status AS дата_загрузки,
documents.Adress
FROM status INNER JOIN collaborator ON status.id_collaborator = collaborator.id_collaborator INNER JOIN documents ON status.id_document = documents.Id_documents INNER JOIN doc_Type ON documents.id_doc_Type = doc_Type.Id_doc_Type INNER JOIN PubHouse ON documents.PubHouse = PubHouse.id_PubHouse INNER JOIN written ON documents.Id_documents = written.id_document INNER JOIN author ON written.id_author = author.id_author
where collaborator.First_Name =@Name or collaborator.Last_Name =@Name or collaborator.Patronomyc =@Name or collaborator.login =@Name or documents.name =@Name or doc_Type.name= @Name or PubHouse.name =@Name or author.First_Name =@Name or author.Last_Name =@Name or author.Patronomyc =@Name
">
<SelectParameters>
<asp:ControlParameter ControlID="serch" Name="Name" PropertyName="Text" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
<asp:Label ID="err" CssClass="defaultText" runat="server" Visible="false"></asp:Label>
</td>
</tr>
</table>
</asp:Content>
home.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/GuestMasterPage.master" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
UserClass US = new UserClass("Guest:guest");
}
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
<h2 class="Rgrad" >Home </h2>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<table style="width:100%">
<tr>
<td style="text-align:center">
<img src="../files/60/../css/NovorosUniv.jpg" />
</td>
</tr>
<tr style="text-align:center">
<td>
<p> <strong> Викладацький склад кафедри МКЗС </strong></p>
</td>
</tr>
<tr>
<td>
1. Малахов Євгеній Валерійович - завідувач кафедри, доктор технічних наук, професор
</td>
</tr>
<tr>
<td>
2. Гунченко Юрій Олександрович - доктор технічних наук, доцент
</td>
</tr>
<tr>
<td>
3. Петрушина Тетяна Іванівна - кандидат фізико-математичних наук, доцент
</td>
</tr>
<tr>
<td>
4. Волощук Людмила Арнольдівна - кандидат технічних наук, доцент
</td>
</tr>
<tr>
<td>
5. Кропивний Юрій Миколайович - кандидат фізико-математичних наук, доцент
</td>
</tr>
<tr>
<td>
6. Мазурок Ігор Євгенович - кандидат технічних наук, доцент
</td>
</tr>
<tr>
<td>
7. Макогон Володимир Сакович - кандидат фізико-математичних наук, доцент
</td>
</tr>
<tr>
<td>
8. Пенко Валерій Георгійович - кандидат технічних наук, доцент
</td>
</tr>
<tr>
<td>
9. Шпинарьова Ірина Михайлівна - кандидат фізико-математичних наук, доцент
</td>
</tr>
<tr>
<td>
10. Антоненко Олександр Сергійович - кандидат фізико-математичних наук, доцент
</td>
</tr>
<tr>
<td>
11. Геренко Ольга Андріївна - старший викладач
</td>
</tr>
<tr>
<td>
12. Лісіцина Ірина Миколаївна - старший викладач
</td>
</tr>
<tr>
<td>
13. Орлов Сергій В'ячеславович - старший викладач
</td>
</tr>
<tr>
<td>
14. Трубіна Наталя Федорівна - старший викладач
</td>
</tr>
<tr>
<td>
15. Розновець Ольга Ігорівна - старший викладач
</td>
</tr>
<tr>
<td>
16. Чмир Олексій Ігорович - старший викладач
</td>
</tr>
<tr>
<td>
17. Котляров Євген Володимирович - асистент
</td>
</tr>
<tr>
<td>
18. Пенко Олена Анатоліївна асистент
</td>
</tr>
<tr>
<td>
<p><strong>Сьогодні кафедра забезпечує підготовку за наступними освітньо-кваліфікаційними рівнями:</strong></p>
</td>
</tr>
<tr>
<td>
<ul>
<li>
Бакалавр (базова вища освіта) за напрямком 6.050102 - "Комп'ютерна інженерія", 4 роки навчання
</li>
<li>
Спеціаліст (повна вища освіта) за спеціальністю 7.05010201 - "Комп'ютерні системи та мережі", 1 рік навчання
</li>
<li>
Магістр (повна вища освіта) за спеціальністю 8.05010201 - "Комп'ютерні системи та мережі", 2 роки навчання.
</li>
</ul>
</td>
</tr>
<tr>
<td>
<p>
<strong>
Наукові спеціальності, за якими є можливість продовжити освіту в аспірантурі:
</p>
</strong>
</td>
</tr>
<tr>
<td>
05.13.06 «Інформаційні технології»;
</td>
</tr>
<tr>
<td>
01.05.02 «Математичне моделювання та обчислювальні методи»;
</td>
</tr>
<tr>
<td>
01.05.03 «Математичне та програмне забезпечення обчислювальних машин і систем».
</td>
</tr>
<tr>
<td>
<p>
<strong>
Бакалавр за спеціальністю "Комп'ютерна інженерія" може отримати кваліфікацію:
</p>
</strong>
</td>
</tr>
<tr>
<td>
3121 Фахівець у галузі інформаційних технологій
</td>
</tr>
<tr>
<td>
<p>
<strong>
Спеціаліст за спеціальністю "Комп'ютерні системи та мережі" може отримати наступні кваліфікації:
</p>
</strong>
</td>
</tr>
<tr>
<td>
<p>
<strong> 2131 Професіонал в галузі комп'ютерних систем
</p>
</strong>
</td>
</tr>
<tr>
<td>
<ui>
<li>
розробник комп'ютерних систем;</li><li>
адміністратор баз даних;</li><li>
адміністратор даних;</li><li>
адміністратор доступу;</li><li>
адміністратор задач;</li><li>
системний адміністратор;</li><li>
інженер комп'ютерних систем;</li><li>
інженер з програмного забезпечення комп'ютерів;</li><li>
конструктор комп'ютерних систем.</li>
</ui>
</td>
</tr>
<tr>
<td>
<p>
<strong> 2132 Професіонали в галузі програмування
</p>
</strong>
<li>
розробник комп'ютерних програми ;</li><li>
інженер - програміст;</li><li>
програміст прикладний ;</li><li>
програміст системний.</li>
</td>
</tr>
<tr>
<td><p>
<strong>
2139 Професіонали в інших галузях комп'ютерних технологій
</p>
</strong>
<li>
фахівці в інших областях обчислень;</li><li>
інженер із застосування комп'ютерів.</li>
</td>
</tr>
<tr>
<td>
<p>
<strong>
Магістр за спеціальністю "Комп'ютерні системи та мережі " може отримати додатково такі кваліфікації:
</p>
</strong>
</td>
</tr>
<tr>
<td><li style="margin-top: 0px">
аналітик комп'ютерних комунікацій;</li><li>
аналітик комп'ютерних систем;</li><li>
аналітик комп'ютерного банку даних;</li><li>
аналітик операційного та прикладного програмного забезпечення;</li><li>
аналітик програмного забезпечення та мультимедіа;</li><li>
керівник програмних проектів. </li></td>
</tr>
</table>
</asp:Content>