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

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

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

Содержание

Введение

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 Системные требования

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

·   128 Mb памяти

·   10 Mb свободного дискового пространства

·   процессор с тактовой частотой 1.2 GHz

·   Операционная система 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

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

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

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

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

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

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

фОРМА2_3

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

фОРМА2_4

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

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

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

фОРМА3_1

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

фОРМА3_2

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

фОРМА3_3

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

фОРМА3_4

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

фОРМА3_5

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

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

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

фОРМА4_1

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

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


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

Начальная форма (Form1):

private 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):

private 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):

private 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;

using System. Drawing;

using System. Collections;

using System.componentModel;

using System. Windows. Forms;

using System. Data;

namespace Kursovoi

{

// / <summary>

// / Summary description for Form1.

// / </summary>

public class Form1: System. Windows. Forms. Form

{

private System. Windows. Forms. Button button1;

private System. Windows. Forms. Button button2;

private System. Windows. Forms. Button button3;

// / <summary>

// / Required designer variable.

// / </summary>

private System.componentModel. Container components = null;

public Form1 ()

{

//

// Required for Windows Form Designer support

//

InitializeComponent ();

//

// TODO: Add any constructor code after InitializeComponent call

//

}

// / <summary>

// / Clean up any resources being used.

// / </summary>

protected override void Dispose (bool disposing)

{

if (disposing)

{

if (components! = null)

{

components. Dispose ();

}

}

base. Dispose (disposing);

}

// / <summary>

// / The main entry point for the application.

// / </summary>

[STAThread]

static void Main ()

{

Application.run (new Form1 ());

}

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

{

Form2 f2 = new Form2 ();

f2. ShowDialog ();

f2. Dispose ();

}

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

{

Form4 f4 = new Form4 ();

f4. ShowDialog ();

f4. Dispose ();

}

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

{

Form3 f3 = new Form3 ();

f3. ShowDialog ();

f3. Dispose ();

}

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

{

}

}

}

Form2:

using System;

using System. Drawing;

using System. Collections;

using System.componentModel;

using System. Windows. Forms;

using System. Data;

namespace Kursovoi

{

// / <summary>

// / Summary description for Form2.

// / </summary>

public class Form2: System. Windows. Forms. Form

{

private System. Windows. Forms. TabControl tabControl1;

private System. Windows. Forms. TabPage tabPage1;

private System. Windows. Forms. TabPage tabPage2;

private System. Windows. Forms. TabPage tabPage3;

private System. Windows. Forms. TabPage tabPage4;

private System. Windows. Forms. Label label3;

private System. Windows. Forms. Label label1;

private System. Windows. Forms. TextBox textBox3;

private System. Windows. Forms. TextBox textBox2;

private System. Windows. Forms. TextBox textBox1;

private System. Windows. Forms. Label label4;

private System. Windows. Forms.comboBox comboBoxGR;

private System. Windows. Forms. Button button1;

private System. Windows. Forms. ListBox listBox1;

private System. Windows. Forms. DataGrid dataGrid1;

private System. Windows. Forms. TextBox textBoxr1;

private System. Windows. Forms. Label label5;

private System. Windows. Forms. Label label6;

private System. Windows. Forms. Label label7;

private System. Windows. Forms. TextBox textBoxr3;

private System. Windows. Forms. Label label8;

private System. Windows. Forms. TextBox textBoxr4;

private System. Windows. Forms. GroupBox groupBox1;

private System. Windows. Forms.comboBox comboBoxGR1;

private System. Windows. Forms. Label label9;

private System. Windows. Forms. Label label10;

private System. Windows. Forms. Label label11;

private System. Windows. Forms. Label label12;

private System. Windows. Forms.comboBox comboBoxfam;

private System. Windows. Forms.comboBox comboBoxname;

private System. Windows. Forms.comboBox comboBoxotch;

private System. Windows. Forms. TextBox textBox4;

private System. Windows. Forms. TextBox textBox5;

private System. Windows. Forms. Label label13;

private System. Windows. Forms. Button button2;

private System. Windows. Forms. GroupBox groupBox4;

private System. Windows. Forms. Button button3;

private System. Windows. Forms. Button button4;

private System. Windows. Forms. GroupBox groupBox2;

private System. Windows. Forms. GroupBox groupBox3;

private System. Windows. Forms. DateTimePicker dateTimePicker1;

private System. Windows. Forms. DateTimePicker dateTimePicker2;

private System. Windows. Forms.comboBox comboBox1;

private System. Windows. Forms.comboBox comboBox2;

private System. Data. OleDb. OleDbDataAdapter oleDbDataAdapter2;

private System. Data. OleDb. OleDbCommand oleDbDeleteCommand2;

private System. Data. OleDb. OleDbConnection oleDbConnection1;

private System. Data. OleDb. OleDbCommand oleDbInsertCommand2;

private System. Data. OleDb. OleDbCommand oleDbSelectCommand2;

private System. Data. OleDb. OleDbCommand oleDbUpdateCommand2;

private System. Data. OleDb. OleDbCommand oleDbDeleteCommand1;

private System. Data. SqlClient. SqlConnection sqlConnection1;

private System. Data. OleDb. OleDbCommand oleDbInsertCommand3;

private System. Data. OleDb. OleDbCommand oleDbUpdateCommand1;

private System. Data. OleDb. OleDbDataAdapter oleDbDataAdapter3;

private System. Data. OleDb. OleDbCommand oleDbDeleteCommand3;

private System. Data. OleDb. OleDbCommand oleDbSelectCommand3;

private System. Data. OleDb. OleDbCommand oleDbUpdateCommand3;

private Kursovoi. DataSet1stud dataSet1stud1;

private System. Data. OleDb. OleDbDataAdapter oleDbDataAdapter4;

private System. Data. OleDb. OleDbCommand oleDbDeleteCommand4;

private System. Data. OleDb. OleDbCommand oleDbInsertCommand4;

private System. Data. OleDb. OleDbCommand oleDbSelectCommand4;

private System. Data. OleDb. OleDbCommand oleDbUpdateCommand4;

private Kursovoi. DataSet1rab dataSet1rab1;

private Kursovoi. DataSet1prep dataSet1prep1;

private Kursovoi. DataSet1confs dataSet1confs1;

private System. Data. OleDb. OleDbCommand oleDbSelectCommand1;

private Kursovoi. DataSet1groups dataSet1groups2;

private System. Data. OleDb. OleDbCommand oleDbInsertCommand1;

private System. Data. OleDb. OleDbDataAdapter oleDbDataAdapter1;

private System. Data. OleDb. OleDbDataAdapter oleDbDataAdapter5;

private System. Data. OleDb. OleDbCommand oleDbDeleteCommand5;

private System. Data. OleDb. OleDbCommand oleDbInsertCommand5;

private System. Data. OleDb. OleDbCommand oleDbSelectCommand5;

private System. Data. OleDb. OleDbCommand oleDbUpdateCommand5;

private System. Windows. Forms. TabPage tabPage5;

private System. Windows. Forms. TextBox textBox6;

private System. Windows. Forms. TextBox textBox7;

private System. Windows. Forms. TextBox textBox8;

private System. Windows. Forms. Label label14;

private System. Windows. Forms. Label label15;

private System. Windows. Forms. Label label16;

private System. Windows. Forms. Button button5;

// / <summary>

// / Required designer variable.

// / </summary>

private System.componentModel. Container components = null;

public Form2 ()

{

//

// Required for Windows Form Designer support

//

InitializeComponent ();

//

// TODO: Add any constructor code after InitializeComponent call

//

}

// / <summary>

// / Clean up any resources being used.

// / </summary>

protected override void Dispose (bool disposing)

{

if (disposing)

{

if (components! = null)

{

components. Dispose ();

}

}

base. Dispose (disposing);

}

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

{

pos=this. BindingContext [this. dataSet1groups2,"groups"]. Position;

DataRow NRow=this. dataSet1stud1. Tables ["students"]. NewRow ();

NRow ["Код"] =this. dataSet1stud1. Tables [0]. Rows. Count+1;

NRow ["Фамилия"] =this. textBox1. Text;

NRow ["Имя"] =this. textBox2. Text;

NRow ["Отчество"] =this. textBox3. Text;

NRow ["ГрупИД"] =Convert. ToInt32 (this. dataSet1groups2. Tables ["groups"]. Rows [pos] ["КодГруппы"]);

dataSet1stud1. Tables ["students"]. Rows. Add (NRow);

oleDbDataAdapter1. Update (dataSet1stud1,"students");

this. oleDbDataAdapter1. Fill (this. dataSet1stud1,0,0,"students");

Close ();

MessageBox. Show ("Данные обновлены");

}

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

{

this. oleDbDataAdapter1. Fill (this. dataSet1stud1,0,0,"students");

this. oleDbDataAdapter2. Fill (this. dataSet1groups2,0,0,"groups");

this. oleDbDataAdapter3. Fill (this. dataSet1confs1,0,0,"conferentions");

this. oleDbDataAdapter4. Fill (this. dataSet1rab1,0,0,"Raboty");

this. oleDbDataAdapter5. Fill (this. dataSet1prep1,0,0,"prepods");

}

int pos,pos2;

string yacheyka,yacheyka2,fam,name;

string st="'";

private void comboBoxGR_SelectedIndexChanged (object sender, System. EventArgs e)

{

this. BindingContext [this. dataSet1groups2,"groups"]. Position=this.comboBoxGR. SelectedIndex;

pos=this. BindingContext [this. dataSet1groups2,"groups"]. Position;

yacheyka=this. dataSet1groups2. Tables ["groups"]. Rows [pos] ["КодГруппы"]. ToString ();

}

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

{

pos=Convert. ToInt32 (this.comboBoxGR1. SelectedIndex);

yacheyka=this. dataSet1groups2. Tables ["groups"]. Rows [pos] ["КодГруппы"]. ToString ();

this. textBoxr3. Text=yacheyka;

oleDbDataAdapter1. SelectCommand.commandText="SELECT * FROM students WHERE ГрупИД="+st+yacheyka+st;

this. dataSet1stud1. Clear ();

this. oleDbDataAdapter1. Fill (this. dataSet1stud1,"students");

}

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

{

pos=Convert. ToInt32 (this.comboBoxGR1. SelectedIndex);

yacheyka=this. dataSet1groups2. Tables [0]. Rows [pos] ["КодГруппы"]. ToString ();

fam=this.comboBoxfam. Text. ToString ();

oleDbDataAdapter1. SelectCommand.commandText="SELECT * FROM students WHERE Фамилия = "+st+fam+st+"AND ГрупИД="+st+yacheyka+st;

this. dataSet1stud1. Clear ();

this. oleDbDataAdapter1. Fill (this. dataSet1stud1,"students");

}

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

{

pos=Convert. ToInt32 (this.comboBoxGR1. SelectedIndex);

yacheyka=this. dataSet1groups2. Tables ["groups"]. Rows [pos] ["КодГруппы"]. ToString ();

this. textBoxr3. Text=yacheyka;

oleDbDataAdapter1. SelectCommand.commandText="SELECT * FROM students WHERE ГрупИД="+yacheyka;

// oleDbDataAdapter1. SelectCommand.commandText="SELECT * FROM students WHERE Имя="+st+"фывц"+st;

this. dataSet1stud1. Clear ();

this. oleDbDataAdapter1. Fill (this. dataSet1stud1,"students");

}

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

{

pos=Convert. ToInt32 (this.comboBoxGR1. SelectedIndex);

yacheyka=this. dataSet1groups2. Tables ["groups"]. Rows [pos] ["КодГруппы"]. ToString ();

this. textBoxr4. Text=fam=this.comboBoxfam. Text. ToString ();

name=this.comboBoxname. Text. ToString ();

oleDbDataAdapter1. SelectCommand.commandText="SELECT * FROM students WHERE ГрупИД="+st+yacheyka+st+"AND Фамилия="+st+fam+st+"AND Имя="+st+name+st;

this. dataSet1stud1. Clear ();

this. oleDbDataAdapter1. Fill (this. dataSet1stud1,"students");

}

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

{

pos=Convert. ToInt32 (this.comboBoxGR1. SelectedIndex);

yacheyka=this. dataSet1groups2. Tables ["groups"]. Rows [pos] ["КодГруппы"]. ToString ();

this. textBoxr4. Text=fam=this.comboBoxfam. Text. ToString ();

oleDbDataAdapter1. SelectCommand.commandText="SELECT * FROM students WHERE ГрупИД="+st+yacheyka+st+"AND Фамилия="+st+fam+st;

this. dataSet1stud1. Clear ();

this. oleDbDataAdapter1. Fill (this. dataSet1stud1,"students");

}

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

{

DataRow NRow=this. dataSet1groups2. Tables ["groups"]. NewRow ();

NRow ["НазваниеГруппы"] =this. textBox5. Text;

NRow ["КодГруппы"] =this. dataSet1groups2. Tables [0]. Rows. Count+1;

dataSet1groups2. Tables ["groups"]. Rows. Add (NRow);

oleDbDataAdapter2. Update (dataSet1groups2,"groups");

this. oleDbDataAdapter2. Fill (this. dataSet1groups2,0,0,"groups");

Close ();

MessageBox. Show ("Данные обновлены");

}

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

{

DataRow NRow=this. dataSet1confs1. Tables ["conferentions"]. NewRow ();

NRow ["Код"] =this. dataSet1confs1. Tables [0]. Rows. Count+1;

NRow ["Дата"] =this. dateTimePicker1. Text;

dataSet1confs1. Tables ["conferentions"]. Rows. Add (NRow);

oleDbDataAdapter3. Update (dataSet1confs1,"conferentions");

this. oleDbDataAdapter3. Fill (this. dataSet1confs1,0,0,"conferentions");

Close ();

MessageBox. Show ("Данные обновлены");

}

int pos1,pos3;

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

{

pos1=this. BindingContext [this. dataSet1prep1,"prepods"]. Position;

pos2=this. BindingContext [this. dataSet1stud1,"students"]. Position;

pos3=this. BindingContext [this. dataSet1confs1,"conferentions"]. Position;

DataRow NRow=this. dataSet1rab1. Tables ["Raboty"]. NewRow ();

NRow ["Тема"] =this. textBoxr1. Text;

NRow ["РуководительИД"] =this.comboBox2. SelectedIndex+1;

NRow ["КонфИД"] =this.comboBox1. SelectedIndex+1;

NRow ["СтудИД"] =this. dataSet1stud1. Tables [0]. Rows [this. BindingContext [this. dataSet1stud1,"students"]. Position] ["Код"];

NRow ["ДатаСдачи"] =this. dateTimePicker2. Text;

NRow ["Код"] =this. dataSet1rab1. Tables ["Raboty"]. Rows. Count;

dataSet1rab1. Tables ["Raboty"]. Rows. Add (NRow);

oleDbDataAdapter4. Update (dataSet1rab1,"Raboty");

this. oleDbDataAdapter4. Fill (this. dataSet1rab1,0,0,"Raboty");

Close ();

// this. textBoxr1. Text+=this. dateTimePicker2. Text. TrimEnd ('0');

MessageBox. Show ("Данные обновлены");

}

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

{

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

}

}}}

Form3:

using System;

using System. Drawing;

using System. Collections;

using System.componentModel;

using System. Windows. Forms;

namespace Kursovoi

{

// / <summary>

// / Summary description for Form3.

// / </summary>

public class Form3: System. Windows. Forms. Form

{

private System. Windows. Forms. TabControl tabControl1;

private System. Windows. Forms. TabPage tabPage1;

private System. Windows. Forms. TabPage tabPage2;

private System. Windows. Forms. TabPage tabPage3;

private System. Windows. Forms. TabPage tabPage4;

private System. Windows. Forms. TabPage tabPage5;

private System. Windows. Forms. CheckBox checkBox1;

private System. Windows. Forms. CheckBox checkBox2;

private System. Windows. Forms. CheckBox checkBox3;

private System. Windows. Forms. TextBox textBox1;

private System. Windows. Forms. TextBox textBox2;

private System. Windows. Forms. TextBox textBox3;

private System. Windows. Forms. DataGrid dataGrid1;

private System. Windows. Forms. Button button1;

private System. Windows. Forms. Label label1;

private System. Windows. Forms. TextBox textBox4;

private System. Windows. Forms. Button button2;

private System. Windows. Forms. DataGrid dataGrid2;

private System. Windows. Forms. TextBox textBox5;

private System. Windows. Forms. Label label2;

private System. Windows. Forms. Button button3;

private System. Windows. Forms. DataGrid dataGrid3;

private System. Windows. Forms. GroupBox groupBox4;

private System. Windows. Forms. DataGrid dataGrid4;

private System. Windows. Forms. Button button4;

private System. Windows. Forms. SaveFileDialog saveFileDialog1;

private System. Windows. Forms. GroupBox groupBox3;

private System. Windows. Forms. GroupBox groupBox1;

private System. Windows. Forms. DataGrid dataGrid5;

private System. Windows. Forms. Button button5;

private System. Data. OleDb. OleDbDataAdapter oleDbDataAdapter1;

private System. Windows. Forms. Button button6;

private System. Data. SqlClient. SqlConnection sqlConnection1;

private System. Data. OleDb. OleDbConnection oleDbConnection1;

private System. Data. OleDb. OleDbCommand oleDbSelectCommand1;

private Kursovoi. DataSet1all dataSet1all1;

private System. Windows. Forms. DateTimePicker dateTimePicker1;

private System. Windows. Forms. Label label9;

private System. Windows. Forms. DateTimePicker dateTimePicker2;

private System. Windows. Forms. DateTimePicker dateTimePicker3;

// / <summary>

// / Required designer variable.

// / </summary>

private System.componentModel. Container components = null;

public Form3 ()

{

//

// Required for Windows Form Designer support

//

InitializeComponent ();

//

// TODO: Add any constructor code after InitializeComponent call

//

}

// / <summary>

// / Clean up any resources being used.

// / </summary>

protected override void Dispose (bool disposing)

{

if (disposing)

{

if (components! = null)

{

components. Dispose ();

}

}

base. Dispose (disposing);

}

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

{

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

}

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

{

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

}

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

{

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

}

string fam, imya, otch,rukov,tema;

string st="'";

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

{

fam=this. textBox1. Text;

imya=this. textBox2. Text;

otch=this. textBox3. Text;

rukov=this. textBox4. Text;

tema=this. textBox5. Text;

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

{

oleDbDataAdapter1. 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+")";

}

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

{

oleDbDataAdapter1. 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+")";

}

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

{

oleDbDataAdapter1. 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+")";

}

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

{

oleDbDataAdapter1. 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+")";

}

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

oleDbDataAdapter1. 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+")";

}

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

{

oleDbDataAdapter1. 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+")";

}

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

{

oleDbDataAdapter1. 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+")";

}

this. dataSet1all1. Clear ();

oleDbDataAdapter1. Fill (dataSet1all1);

}

char stt='"';

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

{

rukov=this. textBox4. Text;

oleDbDataAdapter1. 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+")";

this. dataSet1all1. Clear ();

this. oleDbDataAdapter1. Fill (this. dataSet1all1);

}

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

{

tema=this. textBox5. Text;

oleDbDataAdapter1. 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;

this. dataSet1all1. Clear ();

oleDbDataAdapter1. Fill (this. dataSet1all1);

}

string date;

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

{

date = this. dateTimePicker1. Text+" "+"00: 00: 00";

MessageBox. Show (date);

oleDbDataAdapter1. 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+ @"'"+")";

this. dataSet1all1. Clear ();

oleDbDataAdapter1. Fill (dataSet1all1);

}

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

{

string daten = this. dateTimePicker2. Text+" "+"00: 00: 00", datek = this. dateTimePicker3. Text+" "+"00: 00: 00";

oleDbDataAdapter1. 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+ @"'"+")";

this. dataSet1all1. Clear ();

oleDbDataAdapter1. Fill (dataSet1all1);

}

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

{

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

}

string [] str1= new string [1000];

string nstr,kstr,str11,strob;

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

{

char gal='"';

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

{

str1 [i+1] +=@"<tr>";

for (int j=0; j<this. dataSet1all1. Tables [0]. Columns. Count; j++)

{

if (j<this. dataSet1all1. Tables [0]. Columns. Count-2)

str1 [i+1] +=@"<td width="+gal+"3%"+gal+">"+this. dataSet1all1. Tables [0]. Rows [i] [j]. ToString () +@"</td>";

if (j>this. dataSet1all1. Tables [0]. Columns. Count-3)

str1 [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>";

}

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

}

nstr=@"<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+@">";

kstr=@"</table>

</body>

</html>

";

stringprodolzhstr=@" <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>";

for (int i=0; i<this. dataSet1all1. Tables [0]. Rows. Count+1; i++)

{

str11+=str1 [i];

}

strob=nstr+prodolzhstr+str11+kstr;

this. saveFileDialog1. ShowDialog ();

try

{

System. IO. FileStream fs=new System. IO. FileStream (this. saveFileDialog1. FileName,System. IO. FileMode. Create);

System. IO. StreamWriter writer=new System. IO. StreamWriter (fs,System. Text. Encoding. UTF8);

writer. Write (strob);

writer. Close ();

fs. Close ();

}

catch (Exception err)

{

// Form1. ShowMyMessage (err. Message);

}

}

}

}

Form4:

using System;

using System. Drawing;

using System. Collections;

using System.componentModel;

using System. Windows. Forms;

namespace Kursovoi

{

// / <summary>

// / Summary description for Form4.

// / </summary>

public class Form4: System. Windows. Forms. Form

{

private System. Windows. Forms. TabControl tabControl1;

private System. Windows. Forms. TabPage tabPage1;

private System. Windows. Forms. TabPage tabPage2;

private System. Windows. Forms. TabPage tabPage3;

private System. Windows. Forms. TabPage tabPage4;

private System. Windows. Forms. DataGrid dataGrid1;

private System. Windows. Forms. ListBox listBox4;

private System. Windows. Forms. Label label4;

private System. Windows. Forms. DataGrid dataGrid2;

private System. Windows. Forms. DataGrid dataGrid3;

private System. Windows. Forms. ListBox listBox2;

private System. Windows. Forms. Label label2;

private System. Windows. Forms. Button button2;

private System. Windows. Forms. CheckBox checkBox1;

private System. Windows. Forms. Button button1;

private System. Windows. Forms. DataGrid dataGrid4;

private System. Windows. Forms. DataGrid dataGrid5;

private System. Windows. Forms. ListBox listBox1;

private System. Windows. Forms. Label label1;

private System. Windows. Forms. Button button3;

private System. Windows. Forms. CheckBox checkBox2;

private System. Windows. Forms. Button button4;

private System. Windows. Forms. DataGrid dataGrid6;

private System. Windows. Forms. Button button5;

private System. Windows. Forms. CheckBox checkBox3;

private System. Windows. Forms. Button button6;

private System. Windows. Forms. DataGrid dataGrid7;

private System. Windows. Forms. Button button7;

private System. Windows. Forms. CheckBox checkBox4;

private System. Windows. Forms. Button button8;

private System. Data. OleDb. OleDbDataAdapter oleDbDataAdapter2;

private System. Data. SqlClient. SqlConnection sqlConnection1;

private System. Data. OleDb. OleDbConnection oleDbConnection1;

private System. Data. OleDb. OleDbDataAdapter oleDbDataAdapter3;

private Kursovoi. DataSet1stud dataSet1stud1;

private System. Data. OleDb. OleDbDataAdapter oleDbDataAdapter4;

private Kursovoi. DataSet1rab dataSet1rab1;

private Kursovoi. DataSet1prep dataSet1prep1;

private Kursovoi. DataSet1confs dataSet1confs1;

private Kursovoi. DataSet1groups dataSet1groups2;

private System. Data. OleDb. OleDbDataAdapter oleDbDataAdapter1;

private System. Data. OleDb. OleDbDataAdapter oleDbDataAdapter5;

private System. Windows. Forms. DataGrid dataGrid8;

private System. Windows. Forms. ListBox listBox3;

private System. Windows. Forms. Label label3;

private System. Data. OleDb. OleDbCommand oleDbSelectCommand1;

private System. Data. OleDb. OleDbCommand oleDbInsertCommand1;

private System. Data. OleDb. OleDbCommand oleDbUpdateCommand1;

private System. Data. OleDb. OleDbCommand oleDbDeleteCommand1;

private System. Data. OleDb. OleDbCommand oleDbSelectCommand2;

private System. Data. OleDb. OleDbCommand oleDbInsertCommand2;

private System. Data. OleDb. OleDbCommand oleDbUpdateCommand2;

private System. Data. OleDb. OleDbCommand oleDbDeleteCommand2;

private System. Data. OleDb. OleDbCommand oleDbSelectCommand3;

private System. Data. OleDb. OleDbCommand oleDbInsertCommand3;

private System. Data. OleDb. OleDbCommand oleDbUpdateCommand3;

private System. Data. OleDb. OleDbCommand oleDbDeleteCommand3;

private System. Data. OleDb. OleDbCommand oleDbSelectCommand4;

private System. Data. OleDb. OleDbCommand oleDbInsertCommand4;

private System. Data. OleDb. OleDbCommand oleDbUpdateCommand4;

private System. Data. OleDb. OleDbCommand oleDbDeleteCommand4;

private System. Data. OleDb. OleDbCommand oleDbSelectCommand5;

private System. Data. OleDb. OleDbCommand oleDbInsertCommand5;

private System. Data. OleDb. OleDbCommand oleDbUpdateCommand5;

private System. Data. OleDb. OleDbCommand oleDbDeleteCommand5;

// / <summary>

// / Required designer variable.

// / </summary>

private System.componentModel. Container components = null;

public Form4 ()

{

//

// Required for Windows Form Designer support

//

InitializeComponent ();

//

// TODO: Add any constructor code after InitializeComponent call

//

}

// / <summary>

// / Clean up any resources being used.

// / </summary>

protected override void Dispose (bool disposing)

{

if (disposing)

{

if (components! = null)

{

components. Dispose ();

}

}

base. Dispose (disposing);

}

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

{

this. Close ();

}

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

{

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

else {this. dataGrid1. ReadOnly=true; this. button1. Enabled=false; }

}

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

{

this. oleDbDataAdapter4. Update (this. dataSet1rab1,"Raboty");

this. dataSet1rab1. Clear ();

this. oleDbDataAdapter4. Fill (this. dataSet1rab1,"Raboty");

}

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

{

this. oleDbDataAdapter1. Fill (this. dataSet1stud1);

this. oleDbDataAdapter5. Fill (this. dataSet1prep1);

this. oleDbDataAdapter2. Fill (this. dataSet1groups2);

this. oleDbDataAdapter3. Fill (this. dataSet1confs1);

this. oleDbDataAdapter4. Fill (this. dataSet1rab1);

}

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

{

this. Close ();

}

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

{

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

else {this. dataGrid4. ReadOnly=true; this. button4. Enabled=false; }

}

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

{

this. oleDbDataAdapter1. Update (this. dataSet1stud1,"students");

this. dataSet1stud1. Clear ();

this. oleDbDataAdapter1. Fill (this. dataSet1stud1,"students");

}

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

{

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

else {this. dataGrid6. ReadOnly=true; this. button6. Enabled=false; }

}

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

{

this. Close ();

}

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

{

this. oleDbDataAdapter3. Update (this. dataSet1confs1,"conferentions");

this. dataSet1confs1. Clear ();

this. oleDbDataAdapter3. Fill (this. dataSet1confs1,"conferentions");

}

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

{

this. Close ();

}

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

{

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

else {this. dataGrid7. ReadOnly=true; this. button8. Enabled=false; }

}

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

{

this. oleDbDataAdapter2. Update (this. dataSet1groups2,"groups");

this. dataSet1groups2. Clear ();

this. oleDbDataAdapter2. Fill (this. dataSet1groups2,"groups");

}

}

}

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


лаба 2 килина диаграма


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


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

 

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