Разработка информационной системы накопления, хранения и выборки данных о проектах, выполняемых предприятием и разработчиком web-приложений
Федеральное агентство по образованию
Государственное образовательное
учреждение
Высшего профессионального образования
"Кузбасский государственный
технический университет имени Т.Ф. Горбачева"
Кафедра информационных и
автоматизированных производственных систем
КУРСОВАЯ РАБОТА
"Разработка информационной
системы накопления, хранения и выборки данных о проектах, выполняемых
предприятием и разработчиком web-приложений"
Кемерово
Содержание
Техническое задание
Концепция проекта
Требования к информационной системе
Состав запросов к БД
Исходные отношения
Связи и отношения между информационными объектами
Требования к целостности системы
Даталогическое проектирование
Система управления базой данных
Таблицы в составе БД
Клиентский интерфейс
Способ подключения к базе данных
Функциональность приложения
Алгоритмы работы и архитектура информационной системы
Механизмы взаимодействия "клиент-сервер"
Логика на стороне сервера
Организационное проектирование
Источники информации
Техническое
задание
Концепция
проекта
СУБД задач и составляющих их процессов предприятия.
Реляционная база содержит данные о сотрудниках и клиентах организации, о
текущих и планируемых проектах. Рабочие проекты, привязанные к заказчику,
разделяются на задачи (и подзадачи), которые распределяются между
специалистами.
В дальнейшем (в рамках производственной практики) развитие в
систему планирования производственного процесса. Привязка к каждой задаче срока
исполнения. Внедрение возможности визуально наблюдать рабочий процесс и
управлять им на диаграмме Ганта.
Клиентская часть разрабатывается для студии web-дизайна
"Пятое измерение" (#"701528.files/image001.gif">
Даталогическое
проектирование
Система
управления базой данных
Подход "тонкого клиента": через интерфейс
запускаются хранимые на сервере процедуры и пользовательские функции. Это
позволит сократить объём передаваемых данных, повысить скорость их обработки.
Также допускается использование SQL-запросов, в случае, если это способствует
упрощению реализации, а также с целью исследования влияния способа работы с
данными на скорость выполнения команд и нагрузку на сервер.
Выбираем Microsoft SQL Server 2005, исходя из характеристик
СУБД:
высокая скорость обработки запросов;
возможность многопользовательского доступа;
стандартизация языка;
совместимость с ОС семейства Windows;
независимость Microsoft SQL Server 2008 от архитектуры
компьютера;
поддержка сетевых протоколов;
относительно низкие требования к производительности
компьютера;
совместимость с выбранным средством разработки клиента,
наличие стандартных интерфейсов взаимодействия.
Таблицы в
составе БД
В каждой таблице поле id - уникальный идентификатор с
автоинкрементном.
Таблица клиентов
Таблица специализаций (типов работ)
Таблица пользователей
Таблица проектов
Таблица (под-) задач
Клиентский
интерфейс
Разрабатывается в среде Microsoft Visual Studio 2008 с
поддержкой.net Framework 2.0 для максимизации совместимости с системами
семейства Windows начиная с XP.
Способ
подключения к базе данных
Доступ к базе данных осуществляется с помощью технологии
Active Data Object (ADO).net. Средствами компонента DataSet выполняется
подключение к БД и работа с данными. При первом создании подключения
формируется строка подключения, которая сохраняется в объекте указанного
класса. При помощи мастера конфигурации доступа к данным импортируется
структура и компоненты БД.
Работа с данными осуществляется непосредственно над
коллекцией таблиц в DataSet, а также при помощи дополнительных объектов класса
TableAdapter, формируемых автоматически при разработке. Для вызова хранимых
процедур используется компонент QueriesTableAdapter.
Кроме того компоненты BindingSource и TableAdapterManager,
также сформированные автоматически выступают в качестве связующих элементов,
хотя напрямую не используются.
Функциональность
приложения
Вывод информации осуществляется в таблицы DataGridView, ввод
информации осуществляется через текстовые поля TextBox, выпадающие списки
ComboBox, элементы ввода числовых значений numericUpDown, элементы выбора
CheckBox, элементы выбора даты и времени DataTimePiker.
Для экспорта таблицы в формате xlsx используется сервер
автоматизации Excel. А именно.net сборка взаимодействия с приложениями
Microsoft Office. Применяется объект Microsoft. Office. Interop. Excel.
Состав и реализация форм
Форма авторизации (enter) позволяет ограничить доступ
к работе с приложением.
После запуска клиента происходит соединение с базой данных. В
форму авторизации добавлены объекты DataSet, BindingSource и TableAdapter для таблицы
пользователей. При загрузке формы вызывается метод чтения записей из указанной
таблицы:. Fill (projects5thBaseDataSet. user);
При этом автоматически происходит вызов стандартного метода
доступа к данным DataSet через BindingSource. После заполнения таблицы
пользователей можно обращаться к значениям её полей через коллекцию таблиц
DataSet:thBaseDataSet. user. Rows [i] ["name"]
Для идентификации пользователя осуществляется перебор имен и
соответствующих им паролей с целью поиска соответствия введённым данным. В
случае успеха определяется тип пользователя, задающий уровень доступа к
системе.
В соответствии с выявленным уровнем доступа вызываются
публичные методы основной формы с целью скрытия элементов, не соответствующих
текущему уровню.
После прохождения авторизации вызывается основная клиентская
форма.
Основная (main) форма позволяет осуществлять наблюдение за
состоянием проектов, а также вызывать формы, реализующие другие функции.
Рабочая область формы содержит таблицу, привязанную к
хранимой процедуре на выборку "горящих" проектов. Из этой таблицы
осуществляется экспорт в файл xlsx.
В режиме полного доступа на форме расположены три кнопки,
вызывающие формы проектов, клиентов и пользователей соответственно. Приложение
имеет многооконный интерфейс, таким образом, единовременно может быть открыто
до четырёх окон.
Форма управления проектами (projects) позволяет просматривать
данные о проектах, вызывать формы добавления или изменения записи о проекте или
составляющей (под-) задаче, а также удалять (под-) задачи и закрывать проекты.
Основная рабочая область формы содержит таблицу DataGridView,
формируемую "вручную", в итерационной работе с записями таблицы задач
в коллекции таблиц DataSet. Цикл осуществляет заполнение соответствующего
столбца в зависимости от типа задачи (задача/подзадача). Кроме того во
вложенном цикле производится замена идентификатора сотрудника-руководителя на
его имя (используется таблица пользователей в коллекции таблиц DataSet).
Выпадающих список связан с полем имени проекта в DataSet. При
изменении значения происходит обновление таблицы (под-) задач DataGridView.
Таблица формируется "вручную", в итерационной работе с записями
таблицы задач в коллекции таблиц DataSet. Путём выборки значений по
идентификатору проекта из коллекции таблиц:thBaseDataSet. Tables
["task"]. Rows [i] ["idProject"]
Цикл осуществляет заполнение соответствующего столбца в
зависимости от типа задачи (задача/подзадача). Кроме того во вложенном цикле
производится замена идентификатора сотрудника-руководителя на его имя
(используется таблица пользователей в коллекции таблиц DataSet).
Сформированные строки добавляются в DataGridView методом add
(row).
Справа от ComboBox расположены три кнопки: создание,
изменение и удаление (знаки +, - , * соответвственно). Этот интерфейс
используется также для работы с записями о клиентах, сотрудниках и задачах.
При нажатии кнопки создания вызывается форма проекта, на
которой в текстовом поле и выпадающих списках, связанных с соответствующими
столбцами в БД, задаются значения полей нового объекта (а именно наименование,
клиент, руководитель и крайний срок). При подтверждении ввода формируется новая
строка и добавляется в соответствующую таблицу, путём вызова стандартного
метода:thBaseDataSet. Tables ["project"]. Rows. Add (row);.
projectTableAdapter. Update (projects5thBaseDataSet. project);
При нажатии кнопки изменения также вызывается форма проекта.
Но предварительно осуществляется её заполнение текущими значениями для
изменяемого объекта. Через свойство формы передаётся идентификатор изменяемого
объекта (текущий объект в выпадающем списке):fp = new FormProject ();. preLoad
();. modId = Convert. ToInt32 (comboBoxProjects. SelectedValue. ToString ());
Предварительно осуществляется инициализация таблиц путём
вызова методов TableAdapter. Fill (DataSet. Table) для таблиц проектов, таблиц
и клиентов (все эти таблицы участвуют в представлении данных на форме проекта).
При подтверждении сделанных изменений вызывается хранимая
процедура обновления записи:thBaseDataSetTableAdapters. QueriesTableAdapter qTA
= new Projects5thBaseDataSetTableAdapters. QueriesTableAdapter ();tS = Convert.
ToDateTime (projects5thBaseDataSet. project. Rows [mN]
["timeStart"]);tF = Convert. ToDateTime (projects5thBaseDataSet.
project. Rows [mN] ["timeFin"]);. project_mod (mId, textBoxName.
Text, (int) comboBoxUser. SelectedValue, (int) comboBoxClient. SelectedValue,
tS, tF, dateTimePickerDeadline. Value);
Следует заметить, что значения времени начала и окончания
выполнения проекта не доступны для редактирования, поскольку их формирование
должно происходить на основании входящих в их состав подзадач.
Удаление также осуществляется путём вызова хранимой процедуры
удаления записи:thBaseDataSetTableAdapters. QueriesTableAdapter qTA = new
Projects5thBaseDataSetTableAdapters. QueriesTableAdapter ();. project_del (Convert.
ToInt32 (comboBoxProjects. SelectedValue. ToString ()));
Форма (под-) задачи (task) позволяет создавать запись о новой
(под-) задаче и изменять свойства существующих (под-) задач.
Работа с таблицей задач аналогична работе с таблицей проектов
(панель кнопок +, - , *). Различие лишь в управляющем элементе, из которого
извлекается идентификатор изменяемой/удаляемой записи. Для задач - это таблица
задач, где значение получается по текущей выделенной строке, тогда как для
проектов - это значение выпадающего списка.
Форма заказчиков (clients) позволяет просматривать данные о
заказчиках, вызывать форму добавления или изменения записи о заказчике, а также
удалять записи о заказчиках. В отличие от формы проектов заполнение таблицы
осуществляется автоматически (поскольку не требуется дополнительной обработки
данных перед выводом).
Форма заказчика (client) служит для создания записи о новом
заказчике и изменения свойств существующих заказчиков.
Форма сотрудников (users) позволяет просматривать данные о
сотрудниках, вызывать форму добавления или изменения записи о сотруднике, а
также удалять записи о сотрудниках. При формировании таблицы идентификатор
специализации сотрудника заменяется её названием (аналогично таблице задач на
форме проектов).
Форма сотрудника (user) служит для создания записи о новом
сотруднике и изменения свойств существующих сотрудников.
Диаграмма связи форм в клиентском приложении
Алгоритмы
работы и архитектура информационной системы
Выборка списка "Горящих проектов"
Происходит поиск по таблице project (проекты) на предмет
превышения срока выполнения проекта: timeFin > timeDeadline. Выборка
осуществляется только среди незакрытых проектов, содержащих незавершённые
задачи: task. fin = 0.
По запросу пользователя - формирование документа с отчётом,
содержащим данные из представленной таблицы.
Добавление / изменение / удаление записи о клиенте /
пользователе / проекте / задаче
Пользователь инициирует действие и задаёт соответствующие
объекту атрибуты (id для удаления и полный набор параметров для добавления /
изменения).
Происходит обращение к изменяемой таблице (client, user,
project, task) соответственно.
После проведения изменений данные представляемой таблицы
обновляются.
Удаление записи о проекте
Пользователь выбирает объект по параметру name (имя),
подлежащий удалению.
Происходит каскадное удаление проекта из таблицы projecr по
его id и его (под-) задач из таблицы task по их idProject.
После проведения удаления, представленные данные о проектах
обновляются.
Механизмы
взаимодействия "клиент-сервер"
Для всех таблиц значение поля идентификатора генерируется
автоматически, инкриментно.
Информация о времени начала и завершения задачи/подзадачи/проекта
должна генерироваться автоматически.
Вся прочая информация вводится пользователем во
взаимодействии с клиентским интерфейсом.
Пользователь может добавлять, изменять, удалять записи в
таблицах клиентов, пользователей, проектов и задач.
Таблица специализаций задаётся единожды при начальном
формировании БД (в дальнейшем планируется введение функции изменения
специализаций в дополнительном окне настроек).
Также планируется добавление дополнительной таблицы,
разграничивающей уровни доступа пользователей (в текущей реализации возможно
изменить уровень доступа пользователя только напрямую в базе данных).
Логика на
стороне сервера
Для таблиц client, project, task и user применяются хранимые
процедуры для изменения (в качестве параметра передаются значения всех полей) и
удаления (в качестве параметра передаётся идентификатор) записей:_del -
удаление записи из таблицы клиентов;_mod - изменение записи в таблице
клиентов;_del - удаление записи из таблицы проектов;_mod - изменение записи в
таблице проектов;_del - удаление записи из таблицы задач;_mod - изменение
записи в таблице задач;_del - удаление записи из таблицы пользователей;_mod -
изменение записи в таблице пользователей;
Добавление новых записей и чтение информации организуется
стандартными средствами объекта DataSet среды.net.
Пример создания хранимой процедуры на изменение записи о
проектеPROCEDURE project_mod
@id int,
@name nvarchar (50),
@idManager int,
@idClient int,
@timeStart smalldatetime,
@timeFin smalldatetime,
@timeDeadline smalldatetime[Projects5thBase]. [dbo].
[project][name] = @name
, [idManager] = @idManager
, [idClient] = @idClient
, [timeStart] = @timeStart
, [timeFin] = @timeFin
, [timeDeadline] = @timeDeadline[id] = @id
Для каскадного удаления записи о проекте и входящих в него
задач создан триггерTRIGGER DelProject ON [Projects5thBase]. [dbo]. [project]OF
DELETEFROM taskidProject IN (SELECT id FROM deleted)
Для формирования таблицы "горящих проектов" создана
хранимая процедура
Учитывается состояние задач, входящих в состав проекта. В
случае, если все задачи завершены, проект считается закрытым и в выборку не
включается.PROCEDURE getBurningProjects3[name] as Проект, [timeFin] as
"Время окончания", [timeDeadline] as "Крайний срок"[dbo].
[project][timeFin] > [timeDeadline] AND
[dbo]. [project]. [id] IN (SELECT [idProject] FROM [dbo].
[task] WHERE [dbo]. [task]. [fin] = 0)
Организационное
проектирование
Группы пользователей
Менеджер - пользователь имеет доступ к таблицам клиентов
проектов задач и пользователей. В эту группу включается руководящий состав
предприятия.
Специалист - пользователь имеет возможность работы с
таблицами клиентов проектов и задач, но не может управлять пользовательскими
записями. В эту группу входят все сотрудники предприятия, не вошедшие в группу
менеджер.
Оснащение информационной системы
Современный сервер под управлением ОС семейства Windows NT.
Минимальные системные требования соответствуют требованиям
для запуска Microsoft SQL Server:
процессор Intel (или совместимый) с тактовой частотой от 1
ГГц (рекомендуется от 2 ГГц);
ОЗУ от 512 МБ (рекомендуется от 2 ГБ).
Рабочие станции под управлением ОС Windows XP, Windows Vista,
Windows 7, Windows 8.
Минимальные системные требования соответствуют требованиям
для установки Windows XP:
процессор Intel (или совместимый) с тактовой частотой от 233
МГц (рекомендуется от менее 300 МГц)
ОЗУ от 64 МБ (рекомендуется от 128 МБ);
видеокарта и монитор, поддерживающие режим Super VGA с
разрешением не менее чем 800x600 точек;
клавиатура, мышь.
Источники
информации
Ванеев О.Н. - Методические указания по выполнению курсового
проекта по дисциплине "Управление данными" для студентов 3 курса
специальности 230201 "Информационные системы и технологии". - Кемерово:
КузГТУ, 2009.
Фленов М.Е. - Библия С#.2-е издание - 2011.
Ишкова Э.А. - C# Начала программирования - 2007.
Троелсен.э. - С# и платформа.net. Библиотека программиста -
2006.
Хендерсон К. - Профессиональное руководство по SQL Server:
хранимые процедуры, XML HTML - 2005.
Ванеев О.Н. - Управление данными / Методические указания к
лабораторным работам по курсу "Управление данными" для студентов
специальности 230201 "Информационные системы и технологии" Часть II -
Кемерово: КузГТУ, 2011.
Ванеев О.Н. - Нормализация реляционных отношений /
Методические указания к лабораторной работе по курсу "Управление
данными" для специальности 071900. - Кемерово: КузГТУ, 2005.
Евсеева О.Н. - Работа с базами данных на языке C#. Технология
ADO.net / Учебное пособие для студентов, обучающихся по специальности 08080165.
- Ульяновск: УлГТУ, 2009.
Работа с COM сервером
Excel http://wladm. narod.ru/C_Sharp/comexcel.html
<http://wladm.narod.ru/C_Sharp/comexcel.html>
Microsoft Developer Network http://msdn.
microsoft.com <http://msdn.microsoft.com># и я.
<http://csharp-and-i.ru>
Киберфорум, подраздел Подразделы: C#.net
<http://www.cyberforum.ru/csharp-net/>.ru: Работа с данными в таблицах
ADO.net http://www.sql.ru/docs/accessingdata/ado/net/7. shtml
<http://www.sql.ru/docs/accessingdata/ado/net/7.shtml>