Тема: Разработка подсистемы учета научно-исследовательской работы студентов

  • Вид работы: Курсовая работа (т)
  • Предмет: Информационное обеспечение, программирование

Содержание


Введение

1. Формирование требований к подсистеме учёта и поиска электронной литературы

1.1 Описание пользователей

1.1.1 Сведения о пользователях

1.1.2 Пользовательская среда

1.1.3 Профили пользователей

1.1.4 Ключевые потребности пользователей

1.2 Краткий обзор изделия

1.2.1 Контекст использования системы

1.2.2 Сводка возможностей

1.2.3 Предположения и зависимости

1.3 Возможности продукта

1.3.1 Структурированное описание заказа

1.3.2 Расчёт нормативного времени выполнения работ заказа

1.4 Ограничения

1.5 Другие требования к изделию

1.5.1 Применяемые стандарты

1.5.2 Системные требования

1.5.3 Эксплуатационные требования

1.6. Требования на входные данные

1.7 Требования на выходные данные

1.8 Разработка диаграммы вариантов использования

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

3. Проектирование подсистемы учёта научно исследовательских работ

3.1 Проектирование архитектуры программного средства

3.2 Проектирование интерфейса программного средства

3.3 Проектирование информационного обеспечения программного средства

4. Реализация программного средства

4.1 Выбор средств реализации подсистемы

4.2 Реализация информационного обеспечения

4.3 Реализация интерфейса пользователя

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

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

4.6 Руководство пользователя

5. Тестирование программного средства

Заключение

Приложение А. Листинг

Приложение Б. Диаграмма DFD

Приложение В. Диаграмма вариантов использования


Введение


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

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

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

Современные базы данных являются реляционными. Именно такая модель баз данных необходима для системы учета научно-исследовательской работы студентов.

Реляционная модель данных - разработанная Э. Коддом в 1970г. логическая модель данных, описывающая:

структуры данных в виде (изменяющихся во времени) наборов отношений;

теоретико-множественные операции над данными: объединение, пересечение, разность и декартово произведение;

- специальные реляционные операции: селекция, проекция, соединение и деление; а также специальные правила, обеспечивающие целостность данных.

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

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

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

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

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

исследовательская работа студент база

1. Формирование требований к подсистеме учёта и поиска электронной литературы


1.1 Описание пользователей


1.1.1 Сведения о пользователях

У системы существует один пользователь: преподаватель. Преподаватель ведет учет научно исследовательской работы студентов.


1.1.2 Пользовательская среда

Операционная система: Microsoft Windows 2000/МЕ/ХР/Vista.


1.1.3 Профили пользователей

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


Таблица 1. Профили пользователей.

Типичный представительПреподавательОписаниеПользователь системы, наделенный правами на поиск добавление записей и редактирование базы данныхТипПользовательОтветственностиВедет учет базы данныхКритерий успехаВозможность быстро автоматизировано вести учет

1.1.4 Ключевые потребности пользователей

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


1.2 Краткий обзор изделия


1.2.1 Контекст использования системы

Система является законченной независимой разработкой.


1.2.2 Сводка возможностей

Требуемые возможности подсистемы приведены в таблице 2.


Таблица 2. Возможности подсистемы.

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

1.2.3 Предположения и зависимости

Система будет использоваться в ВУЗе.


1.3 Возможности продукта


1.3.1 Структурированное описание заказа

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


1.3.2 Расчёт нормативного времени выполнения работ заказа

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

Проверка задания не более 1 секунды.

1.4 Ограничения


Внедрение системы не должно занимать более 1 дня.


1.5 Другие требования к изделию


1.5.1 Применяемые стандарты

Система должна соответствовать всем стандартам интерфейса пользователя Microsoft® Windows® и Microsoft.net Framework.


1.5.2 Системные требования

Минимальные системные требования:

  1. 128 Mb памяти
  2. 10 Mb свободного дискового пространства
  3. процессор с тактовой частотой 1.2 GHz
  4. Операционная система Windows 2000/XP.

1.5.3 Эксплуатационные требования

Система работает в однопользовательском режиме работы.


1.6. Требования на входные данные


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



Таблица 3. Входные данные.

Источник данныхПараметрТип данныхОграниченияЛицо, ведущее учет (преподаватель) Критерии поискаМассив строк (string []) Все символы кроме и " Иформация о студентеМассив строк (string []) Информация о работеМассив строк (string []) Информация о группеМассив строк (string []) Информация о руководителеМассив строк (string []) Информация о конференцииДата (DateTime) Формат даты дд. мм. гггг

1.7 Требования на выходные данные


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


1.8 Разработка диаграммы вариантов использования


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

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


В последнее время огромное распространение получают электронные системы учета.

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

К преимуществам электронных база данных перед физическими относятся:

малый объем (на компьютере можно хранить десятки и сотни тысяч листов с записями);

возможность быстрого поиска;

возможность быстрого изменения нужной записи;

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

К недостаткам электронных баз данных относятся:

потенциальная несовместимость с новым аппаратным или программным обеспечением;

экраны некоторых устройств быстро переутомляют глаза;

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

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

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

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

3. Проектирование подсистемы учёта научно исследовательских работ


3.1 Проектирование архитектуры программного средства


Проектируемую подсистему учёта научно исследовательских работ студентов предполагается реализовать как Windows-приложение. Оно должно удовлетворять всем требованиям совместимости с версиями Microsoft Windows начиная с версии Microsoft Windows 2000


3.2 Проектирование интерфейса программного средства


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

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

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

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


3.3 Проектирование информационного обеспечения программного средства


Каждая работа имеет несколько параметров описания. Эти параметры тема, данные руководителя, данные студента, даты завершения и конференции. Таблица Raboty хранит уникальную информацию о работе, а также ссылки на связанные поля из других таблиц. Из других таблиц по связи определяются остальные данные о работе: студент преподаватель жата конференции. Таким образом таблицы students, conferentions и prepods являются впомогательными для таблицы Raboty и созданы для избегания многократного дублирования в записах одних и тех же данных. Таким же образом таблица groups является вспомогательной для таблицы students. При поиску данные берутся из всех пяти таблиц, на основании связи записи в основной таблице Raboty c соответствующими данными в других таблицах.

4. Реализация программного средства


4.1 Выбор средств реализации подсистемы


Для реализации подсистемы был выбран язык программирования C# и среда программирования Microsoft Visual Studio.net 2003.

C# (Си-шарп) - объектно-ориентированный язык программирования для платформы.net. Разработан в 2000 году Андерсом Хейлсбергом, Скоттом Вилтамутом и Питером Гольде под эгидой Microsoft Research. Основным постулатом С# является высказывание: "всякая сущность есть объект". Язык основан на строгой компонентной архитектуре и реализует передовые механизмы обеспечения безопасности кода.

C# - это полнофункциональный объектно-ориентированный язык, который поддерживает все три "столпа" объектно-ориентированного программирования: инкапсуляцию, наследование и полиморфизм. Он имеет прекрасную поддержку компонентов, надежен и устойчив благодаря использованию "сборки мусора", обработки исключений, безопасности типов.

Язык C# разрабатывался "с нуля" и вобрал в себя много полезных свойств таких языков, как C++, Java, Visual Basic, а также Pascal, Delphy и др. При этом необходимость обратной совместимости с предыдущими версиями отсутствовала, что позволило языку C# избежать многих отрицательных сторон своих предшественников.

Как и Java, C# разрабатывался для Интернет и примерно 75% его синтаксических возможностей аналогичны языку программирования Java, его также называют "очищенной версией Java.10% подобны языку программирования C++, а 5% - заимствованы из языка программирования Visual Basic. Объем новых концептуальных идей в языке C# около 10%.

Выделение и объединение лучших идей современных языков программирования делает язык C# не просто суммой их достоинств, а языком программирования нового поколения.

Применение С# упрощает разработку, отладку и развертывание Windows-приложений, поскольку все эти задачи удается решать в одной и той же среде разработки - Visual Studio.net.

Основные преимущества, которые дает разработчикам Windows-приложений использование ASP.net:

компиляция исполняемых частей Windows-приложения, благодаря которой они работают быстрее, чем интерпретируемые сценарии;

использование нового языка Visual C# - более совершенной версии С, поддерживающей ООП и контроль типов;

возможность создания новых, нестандартных серверных элементов управления на основе существующих;

интеграция с ADO.net, позволяющая получать доступ к БД и применять инструменты для конструирования БД из Visual Studio.net;

Кроме того, C# применяет ряд более универсальных компонентов и инструментальных средств из ОС Windows. Хотя они не считаются частью ASP.net, они имеют ключевое значение для программирования с использованием ASP.net:

.net Framework - полный набор классов, необходимый для Windows-программирования. Помимо классов ASP.net, в него входят классы для решения других задач программирования: файлового доступа, преобразования типов, манипулирования массивами и строками и т. д,;

инструменты и классы ADO.net для работы с БД, предоставляющие доступ к БД SQL Server и ODBC. Механизмы доступа к данным часто являются ключевыми компонентами Web-приложений.

В качестве СУБД, управляющей базой данных разрабатываемой подсистемы, была выбрана СУБД Microsoft Acsess, поскольку разрабатываемое программное средство не требует многопользовательского доступа к базе данных Тесная интеграция с Visual Studio.net предоставляет разработчикам возможность проще создавать безопасные, сильные приложения баз данных при меньших затратах.


4.2 Реализация информационного обеспечения


Для создания базы данных воспользуемся программой Microsoft Access.

Создадим новую базу данных и назовем ее NIraboty. Сохраним ее в паке вместе с файлом Kursovoi NEW. exe

Добавим таблицы в созданную базу данных. Для этого в верхней панели перейдем на закладку "Создание" и нажмем создать таблицу. Создадим пять таблиц с названиями Raboty, prepods, students, groups, conferentions. Перейдя в режим конструктора создадим в каждой таблице соответствующие поля и зададим типы этих полей.

Для таблицы Raboty создадим следующие поля и зададим их типы:



Для таблицы students создадим следующие поля и зададим их типы:



Для таблицы prepods создадим следующие поля и зададим их типы:



Для таблицы groups создадим следующие поля и зададим их типы:



Для таблицы prepods создадим следующие поля и зададим их типы:



4.3 Реализация интерфейса пользователя


Для создания web-сайта выбрана среда Microsoft Visual Studio 2003.net. Создадим новый проект C# Windows Application и назовём его Kursovoi New.

Создадим начальную форму. В панели свойств в поле text объекта форма зададим текст для верхней кромки формы "Система учета научно исследовательских работ студентов". Откроем панель элементов и перетащим на форму три элемента типа buton. Пользуясь панелью свойств напишем на них соответствующий текст.

После всех действий форма должна выглядеть так:


Рис.1. Начальная форма.


Для создания формы поиска из панели элементов переместим на форму элемент tabControl. В панели свойств этого элемента в поле tabPages, создадим 5 страниц tabPage. Свойству text укажем назначим соответствующий текст страницы закладки. Перейдем на элемент tabpage1, предназначенном для ввода информации в базу данных о новой научно-исследовательской работе. На нем расположим поля ввода типа textbox, для значений из связанных таблиц создадим элементы comboBox. В их свойствах dataSourse укажем соответствующий источник данных, а в свойствах displayMember соответствующее поле таблицы. Для вода даты расположим на форме элемент dateTimePicker. Добавим кнопку при нажатии которой осуществляется ввод значений в базу.

Аналогичным образом расположим соответствующие элементы на других закладках tabPage

Форма в итоге будит выглядеть так:


Рис.2. Добавление работы


Рис.3. Добавление студента


Рис.4. Добавление группы


Рис.5. Добавление конференции


На форме для поиска расположим также элемент TabControl, создадим 5 элементов tabPage, соответствующих критериям поиска. Если критерий поиска текст на соответствующей странице создаем элемент textBox, если дата, то dateTimePicker. На странице поиска по информации студента расположим три элемента checkBox чтобы включать и отключать критерии поиска данных студента. И кнопки "поиск" на каждогм элементе tabPage. На каждом элементе TabControl помещаем элемент dataGrid, в поле свойств dataSourse указываем соответствующую таблицу данных, чтобы в нем отображались результаты поиска. Внизу страницы вне элемента tabControl создаем кнопку с текстом для отображения на ней "сохранить отчет", для сохранения отчета.

Форма будит выглядеть так:


Рис.6. Поиск по ФИО студента


Рис.7. Поиск по руководителю


Рис.8. Поиск по теме работы


Рис.9. Поиск по дате конференции


Рис.10. Поиск работ сделанных за период


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

Форма выглядит так:


Рис 11. Просмотр и редактирование данных.

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


Реализация обработки событий windows-формы была проведена с помощью кода на языке C#. Листинг разработанной подсистемы приведён в приложении А. Рассмотрим основные глобальные переменные, основные процедуры и функции.

Начальная форма (Form1):void button1_Click (object sender, System. EventArgs e) - обработчик события нажатия на элемент button1. При нажатии выполняется открытие формы добавления записей.

private void button2_Click (object sender, System. EventArgs e) - обработчик события нажатия на элемент button2. При нажатии выполняется открытие формы поиска.

private void button3_Click (object sender, System. EventArgs e) - обработчик события нажатия на элемент button3. При нажатии выполняется открытие формы просмотра и редактирования таблиц.

Форма добавления записей (Form2):

private void button4_Click (object sender, System. EventArgs e) - обработчик события нажатия на элемент button4, выполняюется добавление данных в таблицу Raboty

private void button3_Click (object sender, System. EventArgs e) - обработчик события нажатия на элемент button3, выполняюется добавление данных в таблицу conferentions

private void button5_Click (object sender, System. EventArgs e) - обработчик события нажатия на элемент button5, выполняюется добавление данных в таблицу prepods

private void button1_Click (object sender, System. EventArgs e) - обработчик события нажатия на элемент button1, выполняюется добавление данных в таблицу students

private void button2_Click (object sender, System. EventArgs e) - обработчик события нажатия на элемент button2, выполняюется добавление данных в таблицу groups

private void Form2_Load (object sender, System. EventArgs e) обработчик события загрузки формы. При загрузке формы данные отделяются от базы для возможности действий по дабовлению новых данных.

private void comboBoxGR1_SelectedIndexChanged (object sender, System. EventArgs e) обработчик события изменения выбранного элемента в выпадающем списке для выбора группы. При изменении в выпадающие списки куда посылаются данные студентов загружаются данные конкретно учащихся выбранной группы

private void comboBoxfam_Enter (object sender, System. EventArgs e) - обработчик события входа в элемент comboBoxfam в котором загружены данные фамилий студентов. При входе в него и в другие выпадающие списки данных студентов загружаются только данные тех студентов которые учатся в группе выбранной в списке comboBoxGR1.

private void comboBoxfam_Leave (object sender, System. EventArgs e) - обработчик события покидания элемента comboBoxfam в котором загружены данные фамилий студентов. При покидании этого элемента в него и в другие выпадающие списки данных студентов загружаются только данные тех студентов которые учатся в группе выбранной в списке comboBoxGR1 и с фамилией выбранной в списке comboBoxfam.

private void comboBoxname_Enter (object sender, System. EventArgs e) - обработчик события входа в элемент comboBoxname в котором загружены данные имен студентов. При входе в элемент в него и в другие выпадающие списки данных студентов загружаются только данные тех студентов которые учатся в группе выбранной в списке comboBoxGR1 и с фамилией выбранной в списке comboBoxfam.

private void comboBoxname_Leave (object sender, System. EventArgs e) - обработчик события покидания элемента comboBoxname в котором загружены данные имен студентов. При входе в элемент в него и в другие выпадающие списки данных студентов загружаются только данные тех студентов которые учатся в группе выбранной в списке comboBoxGR1 и с фамилией выбранной в списке comboBoxfam и именем выбранном в списке comboBoxname.

Форма поиска (Form3):void button1_Click (object sender, System. EventArgs e) - обработчик события нажатия кнопки button1. При нажатии кнопки производится поиск работ с заданными данными студента.

private void button2_Click (object sender, System. EventArgs e) - обработчик события нажатия кнопки button2. При нажатии кнопки производится поиск работ с заданными данными руководителя работы.

private void button3_Click (object sender, System. EventArgs e) - обработчик события нажатия кнопки button3. При нажатии кнопки производится поиск работ с заданными данными темы работы.

private void button4_Click (object sender, System. EventArgs e) - обработчик события нажатия кнопки button3. При нажатии кнопки производится поиск работ с заданными данными даты конференции.

private void button5_Click (object sender, System. EventArgs e) - обработчик события нажатия кнопки button3. При нажатии кнопки производится поиск работ с заданными данными фамилии руководителя.

private void button6_Click (object sender, System. EventArgs e) - обработчик события нажатия кнопки button3. При нажатии кнопки производится запись результатов поиска в виде таблицы в файл html.

Форма поиска (Form3):void Form4_Load (object sender, System. EventArgs e) - обработчик событий загрузки формы просмотра и редактирования. При загрузке формы данные отсоединяются от базы и заполняются в элементы их представления в виде таблиц интерфейса формы.

private void button3_Click (object sender, System. EventArgs e) - обработчик события нажатия на кнопку button1, который вызывает событие Close закрытия формы.

private void checkBox1_CheckedChanged (object sender, System. EventArgs e) - обработчик события изменения флажка просмотр/редактирование. При отсутствии флажка в элементе checkBox1 редактирование данных не возможно, кнопка для фиксирования изменений не доступна для нажатия, в обратном случае оно возможно и также становится доступной кнопка для фиксирования изменений.

private void button1_Click (object sender, System. EventArgs e) - обработчик события нажатие кнопки button1. При нажатии на кнопку изменения фиксируются в базе данных.


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


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

System. Data. DataSet - хранит таблицыв оперативной памяти. System. Data. OleDb. OleDbConnection - класс, предоставляющий доступ к основным параметрам подключения.

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

System. Data. OleDb. OleDbCommand - класс, хранящий строку команды на языке SQL и предоставляющий базовые возможности выполнения этой команды.

В процессе работы сайта при обработке некоторых событий (нажатие кнопок "найти", "добавить документ", "удалить документ") происходит формирование SQL-запроса из некоторых стандартных команд, а также из параметров, введённым пользователем. Например, при нажатии на кнопку "найти" строка SQL-запроса формируется следующим образом. Cвойству selectCommand commandText присваевается значение строки первая часть которой всегда выглядит таким образом"SELECT Raboty. Код, Raboty. Тема, prepods. Фамилия AS ФамилияРуководителя, students. Фамилия, students. Имя, students. Отчество, groups. НазваниеГруппы, Raboty. ДатаСдачи, conferentions. Дата AS ДатаКонференции FROM Raboty, students, prepods, groups, conferentions WHERE (Raboty. КонфИД = conferentions. Код) AND (Raboty. СтудИД = students. Код) AND (students. ГрупИД = groups. КодГруппы) AND (Raboty. РуководительИД = prepods. Код)"

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

Для критерия тема работа окончание строки выглядит так: "AND (Raboty. Тема="+st+tema+st+")" tema это строковая переменная значение которой берется из поля ввода куда пользователь водит критерий отбора, в данном случае тексту в элементе формы textBox5. Текст команды передается классу OleDbDataAdapter, который и выполняет SQL-команду.


4.6 Руководство пользователя


Для запуска программы пользователю нужно открыть файл kursovoi NEW. exe. Запустится форма, предлагающая выбор одного из трех видов действий: добавление работы данных, поиск работ, и просмотр базы данных.

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

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

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

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

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

5. Тестирование программного средства


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

Проведём тестирование на следующем подмножестве исходных данных, внесённых в базу данных:

работа №1: Заглавие: рейтинговые системы оценки успеваемости учащихся. Руководитель: С.А. Кольцов, Дата конференции 17.11.2008, студент: Горбанев Игорь Анатольевич, Группа ИТ-041 Дата завершения 05.11.2008.

работа №2: Заглавие: Изучение Access, Руководитель: Д.Е. Пачевский, Дата конференции 11.11.2008, студент: Иванов Иван Иванович, Группа ИТ-041 Дата завершения 07.11.2008.

работа №3: Заглавие: Реляционные БД, Руководитель: М.В. Паринов, Дата конференции 17.11.2008, студент: Петров Петр Петрович, Группа ИТ-042 Дата завершения 20.10.2008.

работа №4: Заглавие: Системы учета, Руководитель: М.В. Паринов, Дата конференции 17.11.2008, студент: Иванов Петр Петрович, Группа ИТ-042 Дата завершения 18.10.2008.

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

(Фамилия руководителя "Кольцов")

После нажатия на кнопку "найти" система возвращает список из одной работы - 1. То есть система вернула верный результат: работа 1 удовлетворяет указанному критерию.

Следующий критерий для поиска: дата конференции 17.11.2008

Результат: работы 1,2 и 4. Результат верный.

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

Заключение


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

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

Приложение А. Листинг


ASP-код:

Form1:

using System;System. Drawing;System. Collections;System.componentModel;System. Windows. Forms;System. Data;Kursovoi

{

// / <summary>

// / Summary description for Form1.

// / </summary>class Form1: System. Windows. Forms. Form

{System. Windows. Forms. Button button1;System. Windows. Forms. Button button2;System. Windows. Forms. Button button3;

// / <summary>

// / Required designer variable.

// / </summary>System.componentModel. Container components = null;Form1 ()

{

//

// Required for Windows Form Designer support

// ();

//

// TODO: Add any constructor code after InitializeComponent call

//

}

// / <summary>

// / Clean up any resources being used.

// / </summary>override void Dispose (bool disposing)

{(disposing)

{(components! = null)

{. Dispose ();

}

}. Dispose (disposing);

}

// / <summary>

// / The main entry point for the application.

// / </summary>

[STAThread]void Main ()

{.run (new Form1 ());

}void button1_Click (object sender, System. EventArgs e)

{f2 = new Form2 ();. ShowDialog ();. Dispose ();

}void button3_Click (object sender, System. EventArgs e)

{f4 = new Form4 ();. ShowDialog ();. Dispose ();

}void button2_Click (object sender, System. EventArgs e)

{f3 = new Form3 ();. ShowDialog ();. Dispose ();

}void Form1_Load (object sender, System. EventArgs e)

{

}

}

}

Form2:

using System;System. Drawing;System. Collections;System.componentModel;System. Windows. Forms;System. Data;Kursovoi

{

// / <summary>

// / Summary description for Form2.

// / </summary>class Form2: System. Windows. Forms. Form

{System. Windows. Forms. TabControl tabControl1;System. Windows. Forms. TabPage tabPage1;System. Windows. Forms. TabPage tabPage2;System. Windows. Forms. TabPage tabPage3;System. Windows. Forms. TabPage tabPage4;System. Windows. Forms. Label label3;System. Windows. Forms. Label label1;System. Windows. Forms. Label label2;System. Windows. Forms. TextBox textBox3;System. Windows. Forms. TextBox textBox2;System. Windows. Forms. TextBox textBox1;System. Windows. Forms. Label label4;System. Windows. Forms.comboBox comboBoxGR;System. Windows. Forms. Button button1;System. Windows. Forms. ListBox listBox1;System. Windows. Forms. DataGrid dataGrid1;System. Windows. Forms. TextBox textBoxr1;System. Windows. Forms. Label label5;System. Windows. Forms. Label label6;System. Windows. Forms. Label label7;System. Windows. Forms. TextBox textBoxr3;System. Windows. Forms. Label label8;System. Windows. Forms. TextBox textBoxr4;System. Windows. Forms. GroupBox groupBox1;System. Windows. Forms.comboBox comboBoxGR1;System. Windows. Forms. Label label9;System. Windows. Forms. Label label10;System. Windows. Forms. Label label11;System. Windows. Forms. Label label12;System. Windows. Forms.comboBox comboBoxfam;System. Windows. Forms.comboBox comboBoxname;System. Windows. Forms.comboBox comboBoxotch;System. Windows. Forms. TextBox textBox4;System. Windows. Forms. TextBox textBox5;System. Windows. Forms. Label label13;System. Windows. Forms. Button button2;System. Windows. Forms. GroupBox groupBox4;System. Windows. Forms. Button button3;System. Windows. Forms. Button button4;System. Windows. Forms. GroupBox groupBox2;System. Windows. Forms. GroupBox groupBox3;System. Windows. Forms. DateTimePicker dateTimePicker1;System. Windows. Forms. DateTimePicker dateTimePicker2;System. Windows. Forms.comboBox comboBox1;System. Windows. Forms.comboBox comboBox2;System. Data. OleDb. OleDbDataAdapter oleDbDataAdapter2;System. Data. OleDb. OleDbCommand oleDbDeleteCommand2;System. Data. OleDb. OleDbConnection oleDbConnection1;System. Data. OleDb. OleDbCommand oleDbInsertCommand2;System. Data. OleDb. OleDbCommand oleDbSelectCommand2;System. Data. OleDb. OleDbCommand oleDbUpdateCommand2;System. Data. OleDb. OleDbCommand oleDbDeleteCommand1;System. Data. SqlClient. SqlConnection sqlConnection1;System. Data. OleDb. OleDbCommand oleDbInsertCommand3;System. Data. OleDb. OleDbCommand oleDbUpdateCommand1;System. Data. OleDb. OleDbDataAdapter oleDbDataAdapter3;System. Data. OleDb. OleDbCommand oleDbDeleteCommand3;System. Data. OleDb. OleDbCommand oleDbSelectCommand3;System. Data. OleDb. OleDbCommand oleDbUpdateCommand3;Kursovoi. DataSet1stud dataSet1stud1;System. Data. OleDb. OleDbDataAdapter oleDbDataAdapter4;System. Data. OleDb. OleDbCommand oleDbDeleteCommand4;System. Data. OleDb. OleDbCommand oleDbInsertCommand4;System. Data. OleDb. OleDbCommand oleDbSelectCommand4;System. Data. OleDb. OleDbCommand oleDbUpdateCommand4;Kursovoi. DataSet1rab dataSet1rab1;Kursovoi. DataSet1prep dataSet1prep1;Kursovoi. DataSet1confs dataSet1confs1;System. Data. OleDb. OleDbCommand oleDbSelectCommand1;Kursovoi. DataSet1groups dataSet1groups2;System. Data. OleDb. OleDbCommand oleDbInsertCommand1;System. Data. OleDb. OleDbDataAdapter oleDbDataAdapter1;System. Data. OleDb. OleDbDataAdapter oleDbDataAdapter5;System. Data. OleDb. OleDbCommand oleDbDeleteCommand5;System. Data. OleDb. OleDbCommand oleDbInsertCommand5;System. Data. OleDb. OleDbCommand oleDbSelectCommand5;System. Data. OleDb. OleDbCommand oleDbUpdateCommand5;System. Windows. Forms. TabPage tabPage5;System. Windows. Forms. TextBox textBox6;System. Windows. Forms. TextBox textBox7;System. Windows. Forms. TextBox textBox8;System. Windows. Forms. Label label14;System. Windows. Forms. Label label15;System. Windows. Forms. Label label16;System. Windows. Forms. Button button5;

// / <summary>

// / Required designer variable.

// / </summary>System.componentModel. Container components = null;Form2 ()

{

//

// Required for Windows Form Designer support

// ();

//

// TODO: Add any constructor code after InitializeComponent call

//

}

// / <summary>

// / Clean up any resources being used.

// / </summary>override void Dispose (bool disposing)

{(disposing)

{(components! = null)

{. Dispose ();

}

}. Dispose (disposing);

}void button1_Click (object sender, System. EventArgs e)

{=this. BindingContext [this. dataSet1groups2,"groups"]. Position;NRow=this. dataSet1stud1. Tables ["students"]. NewRow ();["Код"] =this. dataSet1stud1. Tables [0]. Rows. Count+1;["Фамилия"] =this. textBox1. Text;["Имя"] =this. textBox2. Text;["Отчество"] =this. textBox3. Text;["ГрупИД"] =Convert. ToInt32 (this. dataSet1groups2. Tables ["groups"]. Rows [pos] ["КодГруппы"]);stud1. Tables ["students"]. Rows. Add (NRow);. Update (dataSet1stud1,"students");. oleDbDataAdapter1. Fill (this. dataSet1stud1,0,0,"students");();. Show ("Данные обновлены");

}void Form2_Load (object sender, System. EventArgs e)

{. oleDbDataAdapter1. Fill (this. dataSet1stud1,0,0,"students");. oleDbDataAdapter2. Fill (this. dataSet1groups2,0,0,"groups");. oleDbDataAdapter3. Fill (this. dataSet1confs1,0,0,"conferentions");. oleDbDataAdapter4. Fill (this. dataSet1rab1,0,0,"Raboty");. oleDbDataAdapter5. Fill (this. dataSet1prep1,0,0,"prepods");

}pos,pos2;yacheyka,yacheyka2,fam,name;st="'";void comboBoxGR_SelectedIndexChanged (object sender, System. EventArgs e)

{. BindingContext [this. dataSet1groups2,"groups"]. Position=this.comboBoxGR. SelectedIndex;=this. BindingContext [this. dataSet1groups2,"groups"]. Position;=this. dataSet1groups2. Tables ["groups"]. Rows [pos] ["КодГруппы"]. ToString ();

}void comboBoxGR1_SelectedIndexChanged (object sender, System. EventArgs e)

{=Convert. ToInt32 (this.comboBoxGR1. SelectedIndex);=this. dataSet1groups2. Tables ["groups"]. Rows [pos] ["КодГруппы"]. ToString ();. textBoxr3. Text=yacheyka;. SelectCommand.commandText="SELECT * FROM students WHERE ГрупИД="+st+yacheyka+st;. dataSet1stud1. Clear ();. oleDbDataAdapter1. Fill (this. dataSet1stud1,"students");

}void comboBoxfam_Leave (object sender, System. EventArgs e)

{=Convert. ToInt32 (this.comboBoxGR1. SelectedIndex);=this. dataSet1groups2. Tables [0]. Rows [pos] ["КодГруппы"]. ToString ();=this.comboBoxfam. Text. ToString ();. SelectCommand.commandText="SELECT * FROM students WHERE Фамилия = "+st+fam+st+"AND ГрупИД="+st+yacheyka+st;. dataSet1stud1. Clear ();. oleDbDataAdapter1. Fill (this. dataSet1stud1,"students");

}void comboBoxfam_Enter (object sender, System. EventArgs e)

{=Convert. ToInt32 (this.comboBoxGR1. SelectedIndex);=this. dataSet1groups2. Tables ["groups"]. Rows [pos] ["КодГруппы"]. ToString ();. textBoxr3. Text=yacheyka;. SelectCommand.commandText="SELECT * FROM students WHERE ГрупИД="+yacheyka;

// oleDbDataAdapter1. SelectCommand.commandText="SELECT * FROM students WHERE Имя="+st+"фывц"+st;. dataSet1stud1. Clear ();. oleDbDataAdapter1. Fill (this. dataSet1stud1,"students");

}void comboBoxname_Leave (object sender, System. EventArgs e)

{=Convert. ToInt32 (this.comboBoxGR1. SelectedIndex);=this. dataSet1groups2. Tables ["groups"]. Rows [pos] ["КодГруппы"]. ToString ();. textBoxr4. Text=fam=this.comboBoxfam. Text. ToString ();=this.comboBoxname. Text. ToString ();. SelectCommand.commandText="SELECT * FROM students WHERE ГрупИД="+st+yacheyka+st+"AND Фамилия="+st+fam+st+"AND Имя="+st+name+st;. dataSet1stud1. Clear ();. oleDbDataAdapter1. Fill (this. dataSet1stud1,"students");

}void comboBoxname_Enter (object sender, System. EventArgs e)

{=Convert. ToInt32 (this.comboBoxGR1. SelectedIndex);=this. dataSet1groups2. Tables ["groups"]. Rows [pos] ["КодГруппы"]. ToString ();. textBoxr4. Text=fam=this.comboBoxfam. Text. ToString ();. SelectCommand.commandText="SELECT * FROM students WHERE ГрупИД="+st+yacheyka+st+"AND Фамилия="+st+fam+st;. dataSet1stud1. Clear ();. oleDbDataAdapter1. Fill (this. dataSet1stud1,"students");

}void button2_Click (object sender, System. EventArgs e)

{NRow=this. dataSet1groups2. Tables ["groups"]. NewRow ();["НазваниеГруппы"] =this. textBox5. Text;["КодГруппы"] =this. dataSet1groups2. Tables [0]. Rows. Count+1;groups2. Tables ["groups"]. Rows. Add (NRow);. Update (dataSet1groups2,"groups");. oleDbDataAdapter2. Fill (this. dataSet1groups2,0,0,"groups");();. Show ("Данные обновлены");

}void button3_Click (object sender, System. EventArgs e)

{NRow=this. dataSet1confs1. Tables ["conferentions"]. NewRow ();["Код"] =this. dataSet1confs1. Tables [0]. Rows. Count+1;["Дата"] =this. dateTimePicker1. Text;confs1. Tables ["conferentions"]. Rows. Add (NRow);. Update (dataSet1confs1,"conferentions");. oleDbDataAdapter3. Fill (this. dataSet1confs1,0,0,"conferentions");();. Show ("Данные обновлены");

}pos1,pos3;void button4_Click (object sender, System. EventArgs e)

{=this. BindingContext [this. dataSet1prep1,"prepods"]. Position;=this. BindingContext [this. dataSet1stud1,"students"]. Position;=this. BindingContext [this. dataSet1confs1,"conferentions"]. Position;NRow=this. dataSet1rab1. Tables ["Raboty"]. NewRow ();["Тема"] =this. textBoxr1. Text;["РуководительИД"] =this.comboBox2. SelectedIndex+1;["КонфИД"] =this.comboBox1. SelectedIndex+1;["СтудИД"] =this. dataSet1stud1. Tables [0]. Rows [this. BindingContext [this. dataSet1stud1,"students"]. Position] ["Код"];["ДатаСдачи"] =this. dateTimePicker2. Text;["Код"] =this. dataSet1rab1. Tables ["Raboty"]. Rows. Count;rab1. Tables ["Raboty"]. Rows. Add (NRow);. Update (dataSet1rab1,"Raboty");. oleDbDataAdapter4. Fill (this. dataSet1rab1,0,0,"Raboty");();

// this. textBoxr1. Text+=this. dateTimePicker2. Text. TrimEnd ('0');. Show ("Данные обновлены");

}void comboBox2_SelectedIndexChanged (object sender, System. EventArgs e)

{. textBoxr1. Text=this. BindingContext [this. dataSet1prep1,"prepods"]. Position. ToString ();

}

}}}:

using System;System. Drawing;System. Collections;System.componentModel;System. Windows. Forms;Kursovoi

{

// / <summary>

// / Summary description for Form3.

// / </summary>class Form3: System. Windows. Forms. Form

{System. Windows. Forms. TabControl tabControl1;System. Windows. Forms. TabPage tabPage1;System. Windows. Forms. TabPage tabPage2;System. Windows. Forms. TabPage tabPage3;System. Windows. Forms. TabPage tabPage4;System. Windows. Forms. TabPage tabPage5;System. Windows. Forms. CheckBox checkBox1;System. Windows. Forms. CheckBox checkBox2;System. Windows. Forms. CheckBox checkBox3;System. Windows. Forms. TextBox textBox1;System. Windows. Forms. TextBox textBox2;System. Windows. Forms. TextBox textBox3;System. Windows. Forms. DataGrid dataGrid1;System. Windows. Forms. Button button1;System. Windows. Forms. Label label1;System. Windows. Forms. TextBox textBox4;System. Windows. Forms. Button button2;System. Windows. Forms. DataGrid dataGrid2;System. Windows. Forms. TextBox textBox5;System. Windows. Forms. Label label2;System. Windows. Forms. Button button3;System. Windows. Forms. DataGrid dataGrid3;System. Windows. Forms. GroupBox groupBox4;System. Windows. Forms. DataGrid dataGrid4;System. Windows. Forms. Button button4;System. Windows. Forms. SaveFileDialog saveFileDialog1;System. Windows. Forms. GroupBox groupBox3;System. Windows. Forms. GroupBox groupBox1;System. Windows. Forms. DataGrid dataGrid5;System. Windows. Forms. Button button5;System. Data. OleDb. OleDbDataAdapter oleDbDataAdapter1;System. Windows. Forms. Button button6;System. Data. SqlClient. SqlConnection sqlConnection1;System. Data. OleDb. OleDbConnection oleDbConnection1;System. Data. OleDb. OleDbCommand oleDbSelectCommand1;Kursovoi. DataSet1all dataSet1all1;System. Windows. Forms. DateTimePicker dateTimePicker1;System. Windows. Forms. Label label9;System. Windows. Forms. DateTimePicker dateTimePicker2;System. Windows. Forms. DateTimePicker dateTimePicker3;

// / <summary>

// / Required designer variable.

// / </summary>System.componentModel. Container components = null;Form3 ()

{

//

// Required for Windows Form Designer support

// ();

//

// TODO: Add any constructor code after InitializeComponent call

//

}

// / <summary>

// / Clean up any resources being used.

// / </summary>override void Dispose (bool disposing)

{(disposing)

{(components! = null)

{. Dispose ();

}

}. Dispose (disposing);

}void checkBox1_CheckedChanged (object sender, System. EventArgs e)

{(this. checkBox1. Checked) this. textBox1. Enabled=true; else this. textBox1. Enabled=false;

}void checkBox2_CheckedChanged (object sender, System. EventArgs e)

{(this. checkBox2. Checked) this. textBox2. Enabled=true; else this. textBox2. Enabled=false;

}void checkBox3_CheckedChanged (object sender, System. EventArgs e)

{(this. checkBox3. Checked) this. textBox3. Enabled=true; else this. textBox3. Enabled=false;

}fam, imya, otch,rukov,tema;st="'";void button1_Click (object sender, System. EventArgs e)

{=this. textBox1. Text;=this. textBox2. Text;=this. textBox3. Text;=this. textBox4. Text;=this. textBox5. Text;(this. checkBox1. Checked&! this. checkBox2. Checked&! this. checkBox3. Checked)

{. SelectCommand.commandText="SELECT Raboty. Код, Raboty. Тема, prepods. Фамилия AS ФамилияРуководителя, students. Фамилия, students. Имя, students. Отчество, groups. НазваниеГруппы, Raboty. ДатаСдачи, conferentions. Дата AS ДатаКонференции FROM Raboty, students, prepods, groups, conferentions WHERE (Raboty. КонфИД = conferentions. Код) AND (Raboty. СтудИД = students. Код) AND (students. ГрупИД = groups. КодГруппы) AND (Raboty. РуководительИД = prepods. Код) AND (students. Фамилия="+st+fam+st+")";

}(! this. checkBox1. Checked&this. checkBox2. Checked&! this. checkBox3. Checked)

{. SelectCommand.commandText="SELECT Raboty. Код, Raboty. Тема, prepods. Фамилия AS ФамилияРуководителя, students. Фамилия, students. Имя, students. Отчество, groups. НазваниеГруппы, Raboty. ДатаСдачи, conferentions. Дата AS ДатаКонференции FROM Raboty, students, prepods, groups, conferentions WHERE (Raboty. КонфИД = conferentions. Код) AND (Raboty. СтудИД = students. Код) AND (students. ГрупИД = groups. КодГруппы) AND (Raboty. РуководительИД = prepods. Код) AND (students. Имя="+st+imya+st+")";

}(! this. checkBox1. Checked&! this. checkBox2. Checked&this. checkBox3. Checked)

{. SelectCommand.commandText="SELECT Raboty. Код, Raboty. Тема, prepods. Фамилия AS ФамилияРуководителя, students. Фамилия, students. Имя, students. Отчество, groups. НазваниеГруппы, Raboty. ДатаСдачи, conferentions. Дата AS ДатаКонференции FROM Raboty, students, prepods, groups, conferentions WHERE (Raboty. КонфИД = conferentions. Код) AND (Raboty. СтудИД = students. Код) AND (students. ГрупИД = groups. КодГруппы) AND (Raboty. РуководительИД = prepods. Код) AND (students. Имя="+st+otch+st+")";

}(this. checkBox1. Checked&this. checkBox2. Checked&! this. checkBox3. Checked)

{. SelectCommand.commandText="SELECT Raboty. Код, Raboty. Тема, prepods. Фамилия AS ФамилияРуководителя, students. Фамилия, students. Имя, students. Отчество, groups. НазваниеГруппы, Raboty. ДатаСдачи, conferentions. Дата AS ДатаКонференции FROM Raboty, students, prepods, groups, conferentions WHERE (Raboty. КонфИД = conferentions. Код) AND (Raboty. СтудИД = students. Код) AND (students. ГрупИД = groups. КодГруппы) AND (Raboty. РуководительИД = prepods. Код) AND (students. Фамилия="+st+fam+st+") AND (students. Имя="+st+imya+st+")";

}(this. checkBox1. Checked&! this. checkBox2. Checked&this. checkBox3. Checked)

{. SelectCommand.commandText="SELECT Raboty. Код, Raboty. Тема, prepods. Фамилия AS ФамилияРуководителя, students. Фамилия, students. Имя, students. Отчество, groups. НазваниеГруппы, Raboty. ДатаСдачи, conferentions. Дата AS ДатаКонференции FROM Raboty, students, prepods, groups, conferentions WHERE (Raboty. КонфИД = conferentions. Код) AND (Raboty. СтудИД = students. Код) AND (students. ГрупИД = groups. КодГруппы) AND (Raboty. РуководительИД = prepods. Код) AND (students. Фамилия="+st+fam+st+") AND (students. Отчество="+st+otch+st+")";

}(! this. checkBox1. Checked&this. checkBox2. Checked&this. checkBox3. Checked)

{. SelectCommand.commandText="SELECT Raboty. Код, Raboty. Тема, prepods. Фамилия AS ФамилияРуководителя, students. Фамилия, students. Имя, students. Отчество, groups. НазваниеГруппы, Raboty. ДатаСдачи, conferentions. Дата AS ДатаКонференции FROM Raboty, students, prepods, groups, conferentions WHERE (Raboty. КонфИД = conferentions. Код) AND (Raboty. СтудИД = students. Код) AND (students. ГрупИД = groups. КодГруппы) AND (Raboty. РуководительИД = prepods. Код) AND (students. Имя="+st+imya+st+") AND (students. Отчество="+st+otch+st+")";

}(this. checkBox1. Checked&this. checkBox2. Checked&this. checkBox3. Checked)

{. SelectCommand.commandText="SELECT Raboty. Код, Raboty. Тема, prepods. Фамилия AS ФамилияРуководителя, students. Фамилия, students. Имя, students. Отчество, groups. НазваниеГруппы, Raboty. ДатаСдачи, conferentions. Дата AS ДатаКонференции FROM Raboty, students, prepods, groups, conferentions WHERE (Raboty. КонфИД = conferentions. Код) AND (Raboty. СтудИД = students. Код) AND (students. ГрупИД = groups. КодГруппы) AND (Raboty. РуководительИД = prepods. Код) AND (students. Фамилия="+st+fam+st+") AND (students. Имя="+st+imya+st+") AND (students. Отчество="+st+otch+st+")";

}. dataSet1all1. Clear ();. Fill (dataSet1all1);

}stt='"';void button2_Click (object sender, System. EventArgs e)

{=this. textBox4. Text;. SelectCommand.commandText="SELECT Raboty. Код, Raboty. Тема, prepods. Фамилия AS ФамилияРуководителя, students. Фамилия, students. Имя, students. Отчество, groups. НазваниеГруппы, Raboty. ДатаСдачи, conferentions. Дата AS ДатаКонференции FROM Raboty, students, prepods, groups, conferentions WHERE (Raboty. КонфИД = conferentions. Код) AND (Raboty. СтудИД = students. Код) AND (students. ГрупИД = groups. КодГруппы) AND (Raboty. РуководительИД = prepods. Код) AND (prepods. Фамилия="+st+rukov+st+")";. dataSet1all1. Clear ();. oleDbDataAdapter1. Fill (this. dataSet1all1);

}void button3_Click (object sender, System. EventArgs e)

{=this. textBox5. Text;. SelectCommand.commandText="SELECT Raboty. Код, Raboty. Тема, prepods. Фамилия AS ФамилияРуководителя, students. Фамилия, students. Имя, students. Отчество, groups. НазваниеГруппы, Raboty. ДатаСдачи, conferentions. Дата AS ДатаКонференции FROM Raboty, students, prepods, groups, conferentions WHERE (Raboty. КонфИД = conferentions. Код) AND (Raboty. СтудИД = students. Код) AND (students. ГрупИД = groups. КодГруппы) AND (Raboty. РуководительИД = prepods. Код) AND (Raboty. Тема="+st+tema+st+")"; // +tema;. dataSet1all1. Clear ();. Fill (this. dataSet1all1);

}date;void button4_Click (object sender, System. EventArgs e)

{= this. dateTimePicker1. Text+" "+"00: 00: 00";. Show (date);. SelectCommand.commandText="SELECT Raboty. Код, Raboty. Тема, prepods. Фамилия AS ФамилияРуководителя, students. Фамилия, students. Имя, students. Отчество, groups. НазваниеГруппы, Raboty. ДатаСдачи, conferentions. Дата AS ДатаКонференции FROM Raboty, students, prepods, groups, conferentions WHERE (Raboty. КонфИД = conferentions. Код) AND (Raboty. СтудИД = students. Код) AND (students. ГрупИД = groups. КодГруппы) AND (Raboty. РуководительИД = prepods. Код) AND (conferentions. Дата=" + @"'" +date+ @"'"+")";. dataSet1all1. Clear ();. Fill (dataSet1all1);

}void button5_Click (object sender, System. EventArgs e)

{daten = this. dateTimePicker2. Text+" "+"00: 00: 00", datek = this. dateTimePicker3. Text+" "+"00: 00: 00";. SelectCommand.commandText="SELECT Raboty. Код, Raboty. Тема, prepods. Фамилия AS ФамилияРуководителя, students. Фамилия, students. Имя, students. Отчество, groups. НазваниеГруппы, Raboty. ДатаСдачи, conferentions. Дата AS ДатаКонференции FROM Raboty, students, prepods, groups, conferentions WHERE (Raboty. КонфИД = conferentions. Код) AND (Raboty. СтудИД = students. Код) AND (students. ГрупИД = groups. КодГруппы) AND (Raboty. РуководительИД = prepods. Код) AND (conferentions. Дата>=" + @"'" +daten+ @"'"+") AND (conferentions. Дата<=" + @"'" +datek+ @"'"+")";. dataSet1all1. Clear ();. Fill (dataSet1all1);

}void Form3_Load (object sender, System. EventArgs e)

{. oleDbDataAdapter1. Fill (this. dataSet1all1,"Raboty");

}[] str1= new string [1000];nstr,kstr,str11,strob;void button6_Click (object sender, System. EventArgs e)

{gal='"';(int i=0; i<this. dataSet1all1. Tables ["Raboty"]. Rows. Count; i++)

{[i+1] +=@"<tr>";(int j=0; j<this. dataSet1all1. Tables [0]. Columns. Count; j++)

{(j<this. dataSet1all1. Tables [0]. Columns. Count-2)[i+1] +=@"<td width="+gal+"3%"+gal+">"+this. dataSet1all1. Tables [0]. Rows [i] [j]. ToString () +@"</td>";(j>this. dataSet1all1. Tables [0]. Columns. Count-3)[i+1] +=@"<td width="+gal+"3%"+gal+">"+this. dataSet1all1. Tables [0]. Rows [i] [j]. ToString (). TrimEnd ('0'). TrimEnd (': '). TrimEnd ('0'). TrimEnd (': '). TrimEnd ('0'). TrimEnd (' ') +@"</td>";

}[i+1] +=@"</tr>"+"\n";

}=@"<html>

<head>

<title>Отчет</title>

<meta http-equiv="+gal+@"Content-Type"+gal+" content="+gal+@"text/html; charset=windows-1251"+gal+@">

</head>

<body bgcolor="+gal+@"#FFFFFF"+gal+@" text="+gal+"#000000"+gal+@">

<table width="+gal+"93%"+gal+@" border="+gal+"1"+gal+@">";=@"</table>

</body>

</html>

";=@" <tr>

<td width="+gal+@"3%"+gal+" height="+gal+"33"+gal+@">Код</td>

<td width="+gal+"4%"+gal+" height="+gal+"33"+gal+@">Тема</td>

<td width="+gal+"7%"+gal+" height="+gal+"33"+gal+@">Фамилия</td>

<td width="+gal+"4%"+gal+" height="+gal+"33"+gal+@">Имя</td>

<td width="+gal+"7%"+gal+" height="+gal+"33"+gal+@">Отчество</td>

<td width="+gal+"5%"+gal+" height="+gal+"33"+gal+@">Группа</td>

<td width="+gal+"11%"+gal+" height="+gal+"33"+gal+@">Руководитель</td>

<td width="+gal+"7%"+gal+" height="+gal+"33"+gal+@">Дата Сдачи</td>

<td width="+gal+"6%"+gal+" height="+gal+"33"+gal+@">Дата Конференции</td>

</tr>";(int i=0; i<this. dataSet1all1. Tables [0]. Rows. Count+1; i++)

{+=str1 [i];

}=nstr+prodolzhstr+str11+kstr;. saveFileDialog1. ShowDialog ();

{. IO. FileStream fs=new System. IO. FileStream (this. saveFileDialog1. FileName,System. IO. FileMode. Create);. IO. StreamWriter writer=new System. IO. StreamWriter (fs,System. Text. Encoding. UTF8);. Write (strob);. Close ();. Close ();

}(Exception err)

{

// Form1. ShowMyMessage (err. Message);

}

}

}

}

Form4:

using System;System. Drawing;System. Collections;System.componentModel;System. Windows. Forms;Kursovoi

{

// / <summary>

// / Summary description for Form4.

// / </summary>class Form4: System. Windows. Forms. Form

{System. Windows. Forms. TabControl tabControl1;System. Windows. Forms. TabPage tabPage1;System. Windows. Forms. TabPage tabPage2;System. Windows. Forms. TabPage tabPage3;System. Windows. Forms. TabPage tabPage4;System. Windows. Forms. DataGrid dataGrid1;System. Windows. Forms. ListBox listBox4;System. Windows. Forms. Label label4;System. Windows. Forms. DataGrid dataGrid2;System. Windows. Forms. DataGrid dataGrid3;System. Windows. Forms. ListBox listBox2;System. Windows. Forms. Label label2;System. Windows. Forms. Button button2;System. Windows. Forms. CheckBox checkBox1;System. Windows. Forms. Button button1;System. Windows. Forms. DataGrid dataGrid4;System. Windows. Forms. DataGrid dataGrid5;System. Windows. Forms. ListBox listBox1;System. Windows. Forms. Label label1;System. Windows. Forms. Button button3;System. Windows. Forms. CheckBox checkBox2;System. Windows. Forms. Button button4;System. Windows. Forms. DataGrid dataGrid6;System. Windows. Forms. Button button5;System. Windows. Forms. CheckBox checkBox3;System. Windows. Forms. Button button6;System. Windows. Forms. DataGrid dataGrid7;System. Windows. Forms. Button button7;System. Windows. Forms. CheckBox checkBox4;System. Windows. Forms. Button button8;System. Data. OleDb. OleDbDataAdapter oleDbDataAdapter2;System. Data. SqlClient. SqlConnection sqlConnection1;System. Data. OleDb. OleDbConnection oleDbConnection1;System. Data. OleDb. OleDbDataAdapter oleDbDataAdapter3;Kursovoi. DataSet1stud dataSet1stud1;System. Data. OleDb. OleDbDataAdapter oleDbDataAdapter4;Kursovoi. DataSet1rab dataSet1rab1;Kursovoi. DataSet1prep dataSet1prep1;Kursovoi. DataSet1confs dataSet1confs1;Kursovoi. DataSet1groups dataSet1groups2;System. Data. OleDb. OleDbDataAdapter oleDbDataAdapter1;System. Data. OleDb. OleDbDataAdapter oleDbDataAdapter5;System. Windows. Forms. DataGrid dataGrid8;System. Windows. Forms. ListBox listBox3;System. Windows. Forms. Label label3;System. Data. OleDb. OleDbCommand oleDbSelectCommand1;System. Data. OleDb. OleDbCommand oleDbInsertCommand1;System. Data. OleDb. OleDbCommand oleDbUpdateCommand1;System. Data. OleDb. OleDbCommand oleDbDeleteCommand1;System. Data. OleDb. OleDbCommand oleDbSelectCommand2;System. Data. OleDb. OleDbCommand oleDbInsertCommand2;System. Data. OleDb. OleDbCommand oleDbUpdateCommand2;System. Data. OleDb. OleDbCommand oleDbDeleteCommand2;System. Data. OleDb. OleDbCommand oleDbSelectCommand3;System. Data. OleDb. OleDbCommand oleDbInsertCommand3;System. Data. OleDb. OleDbCommand oleDbUpdateCommand3;System. Data. OleDb. OleDbCommand oleDbDeleteCommand3;System. Data. OleDb. OleDbCommand oleDbSelectCommand4;System. Data. OleDb. OleDbCommand oleDbInsertCommand4;System. Data. OleDb. OleDbCommand oleDbUpdateCommand4;System. Data. OleDb. OleDbCommand oleDbDeleteCommand4;System. Data. OleDb. OleDbCommand oleDbSelectCommand5;System. Data. OleDb. OleDbCommand oleDbInsertCommand5;System. Data. OleDb. OleDbCommand oleDbUpdateCommand5;System. Data. OleDb. OleDbCommand oleDbDeleteCommand5;

// / <summary>

// / Required designer variable.

// / </summary>System.componentModel. Container components = null;Form4 ()

{

//

// Required for Windows Form Designer support

// ();

//

// TODO: Add any constructor code after InitializeComponent call

//

}

// / <summary>

// / Clean up any resources being used.

// / </summary>override void Dispose (bool disposing)

{(disposing)

{(components! = null)

{. Dispose ();

}

}. Dispose (disposing);

}void button2_Click (object sender, System. EventArgs e)

{. Close ();

}void checkBox1_CheckedChanged (object sender, System. EventArgs e)

{(this. checkBox1. Checked) {this. dataGrid1. ReadOnly=false; this. button1. Enabled=true; }{this. dataGrid1. ReadOnly=true; this. button1. Enabled=false; }

}void button1_Click (object sender, System. EventArgs e)

{. oleDbDataAdapter4. Update (this. dataSet1rab1,"Raboty");. dataSet1rab1. Clear ();. oleDbDataAdapter4. Fill (this. dataSet1rab1,"Raboty");

}void Form4_Load (object sender, System. EventArgs e)

{. oleDbDataAdapter1. Fill (this. dataSet1stud1);. oleDbDataAdapter5. Fill (this. dataSet1prep1);. oleDbDataAdapter2. Fill (this. dataSet1groups2);. oleDbDataAdapter3. Fill (this. dataSet1confs1);. oleDbDataAdapter4. Fill (this. dataSet1rab1);

}void button3_Click (object sender, System. EventArgs e)

{. Close ();

}void checkBox2_CheckedChanged (object sender, System. EventArgs e)

{(this. checkBox2. Checked) {this. dataGrid4. ReadOnly=false; this. button4. Enabled=true; }{this. dataGrid4. ReadOnly=true; this. button4. Enabled=false; }

}void button4_Click (object sender, System. EventArgs e)

{. oleDbDataAdapter1. Update (this. dataSet1stud1,"students");. dataSet1stud1. Clear ();. oleDbDataAdapter1. Fill (this. dataSet1stud1,"students");

}void checkBox3_CheckedChanged (object sender, System. EventArgs e)

{(this. checkBox3. Checked) {this. dataGrid6. ReadOnly=false; this. button6. Enabled=true; }{this. dataGrid6. ReadOnly=true; this. button6. Enabled=false; }

}void button5_Click (object sender, System. EventArgs e)

{. Close ();

}void button6_Click (object sender, System. EventArgs e)

{. oleDbDataAdapter3. Update (this. dataSet1confs1,"conferentions");. dataSet1confs1. Clear ();. oleDbDataAdapter3. Fill (this. dataSet1confs1,"conferentions");

}void button8_Click (object sender, System. EventArgs e)

{. Close ();

}void checkBox4_CheckedChanged (object sender, System. EventArgs e)

{(this. checkBox4. Checked) {this. dataGrid7. ReadOnly=false; this. button8. Enabled=true; }{this. dataGrid7. ReadOnly=true; this. button8. Enabled=false; }

}void button7_Click (object sender, System. EventArgs e)

{. oleDbDataAdapter2. Update (this. dataSet1groups2,"groups");. dataSet1groups2. Clear ();. oleDbDataAdapter2. Fill (this. dataSet1groups2,"groups");

}

}

}

Приложение Б. Диаграмма DFD


Приложение В. Диаграмма вариантов использования