/
Федеральное агентство по образованию
Государственное образовательное учреждение
Высшего профессионального образования
'Кузбасский государственный технический университет имени Т.Ф. Горбачева'
Кафедра информационных и автоматизированных производственных систем
КУРСОВАЯ РАБОТА
'Разработка информационной системы накопления, хранения и выборки данных о проектах, выполняемых предприятием и разработчиком web-приложений'
Кемерово
2014
Содержание
Техническое задание
Концепция проекта
СУБД задач и составляющих их процессов предприятия. Реляционная база содержит данные о сотрудниках и клиентах организации, о текущих и планируемых проектах. Рабочие проекты, привязанные к заказчику, разделяются на задачи (и подзадачи), которые распределяются между специалистами.
В дальнейшем (в рамках производственной практики) развитие в систему планирования производственного процесса. Привязка к каждой задаче срока исполнения. Внедрение возможности визуально наблюдать рабочий процесс и управлять им на диаграмме Ганта.
Клиентская часть разрабатывается для студии web-дизайна 'Пятое измерение' (http://5th.ru), наполнение ИБ осуществляется в соответствии с реальными задачами компании.
Базовой технологией приложения является клиент-сервер в среде Microsoft SQL Server 2005 и Visual Studio 2010. Доступ к базе данных осуществляется с клиентского компьютера через специальные интерфейсы.
Требования к информационной системе
Функциональные требования
Выдача списка клиентов с контактными данными, соответствующими им заказами (проектами).
Выдача списка сотрудников с соответствующими им задачами.
Выдача списка проектов со сроками выполнения.
Формирование списка 'горящих' проектов, - для которых реальный срок исполнения предположительно превышает установленный.
информационная система база алгоритм
По выбранному имени/идентификатору сотрудника/клиента/проекта выдача информации о нём (предусмотрена также возможность редактирования).
Расчёт времени реализации проекта на основании указанных интервалов входящих в него задач.
Прочие требования
Простой интерфейс (наличие одновременно не более 7 доступных пользователю управляющих элементов).
Быстродействие. Выполнение запросов пользователя в разумные интервалы времени (максимум порядка десятых секунды).
Совместимость. Возможность запуска на различных платформах с минимальными требованиями к установке и предварительной настройке. Невысокие требования к аппаратной части.
Понятная архитектура проекта. Обеспечение возможности усовершенствования приложения, внедрения дополнительных возможностей, в том числе специалистами, изначально не причастными к проекту.
Безопасность. Элементарное обеспечение сохранности данных; защита от некорректных действий пользователя.
Пользователи ИС - сотрудники предприятия (ориентировочно до 16 человек). С учётом конечной задачи, количество пользователей может составлять несколько десятков человек, что соответствует масштабу малого предприятия. Представление большего количества исполнителей нецелесообразно, в виду значительного усложнения диаграммы проектов и потери её наглядности.
Предполагается разделение пользователей по правам доступа (например, руководитель предприятия, менеджеры - административная группа, рядовые специалисты - пользовательская группа).
Состав запросов к БД
Администраторы могут редактировать (добавлять, изменять, удалять) данные о клиентах, задачах и сотрудниках.
Пользователи получают доступ к этой информации в режиме чтения, редактировать информацию о себе, создавать подзадачи для собственных задач.
В дальнейшем, с внедрением диаграммы производственного процесса, она будет основным средством планирования. Администраторы смогут осуществлять контроль и управление всеми производственными процессами, пользователи получать возможность просматривать общую диаграмму и изменять свою часть задач, таким образом, участвуя в планировании.
Исходные отношения
Информационные объекты БД
Клиент |
Проект |
Специализация |
|
Идентификатор Наименование Менеджер Контактное лицо Телефон Изображение Skype |
Идентификатор Наименование Руководитель Время старта Время окончания Крайний срок выполнения |
Идентификатор Должность |
|
Задача |
Пользователь |
||
Идентификатор Имя Тип (задача / подзадача) Вид деятельности Код исполнителя Код основной задачи (для подзадач) Код проекта Комментарий Время старта Срок выполнения Время окончания Завершённость |
Идентификатор Имя Пароль Тип (администратор | пользователь) Код специализации Цвет (на диаграмме проектов) Изображение Skype |
Клиент (client) - объект, содержащий информацию о заказчике.
Атрибуты:
id - идентификатор (уникальный, целочисленный обязательный);
name - наименование организации, (строковый);
idManager - идентификатор сотрудника, работающего с этим клиентом (целочисленный);
contactName - имя контактного лица со стороны клиента (строковый);
phone - телефон (строковый);
image - логотип компании или фото клиента (массив байтов данных);
mail - адрес электронной почты (строковый);
skype - скайп (строковый).
Специализация (specialize) - объект, содержащий информацию о роде деятельности.
Атрибуты:
id - идентификатор (уникальный, целочисленный обязательный);
name - название специализации, (строковый).
Пользователь (user) - объект, содержащий информацию о сотруднике.
Атрибуты:
id - идентификатор (уникальный, целочисленный обязательный);
name - имя сотрудника (строковый);
parole - пароль для входа в систему (строковый);
type - тип пользователя, определяющий уровень доступа к системе (строковый);
specialize - идентификатор специализации сотрудника (целочисленный);
color - цвет для отображения задач сотрудника на диаграмме проектов (целочисленный);
image - фото сотрудника или другое идентифицирующее его изображение (массив байтов данных);
mail - адрес электронной почты (строковый);
skype - скайп (строковый).
Проект (project) - объект, содержащий информацию о проекте.
Атрибуты:
id - идентификатор (уникальный, целочисленный обязательный);
name - название проекта, (строковый);
idManager - идентификатор ответственного сотрудника, руководящего проектом (целочисленный);
timeStart - время старта проекта (дата-время);
timeFin - время окончания проекта (дата-время);
timeDeadline - крайний срок сдачи проекта (дата-время);
Задача (task) - объект, содержащий информацию о (под-) задачах, составляющих проект.
Атрибуты:
id - идентификатор (уникальный, целочисленный обязательный);
name - название задачи, (строковый);
type - вид: задача/подзадача (булевый);
specialize - идентификатор специализации, соответствующий типу работ для задачи (целочисленный);
idUser - идентификатор исполнителя задачи (целочисленный);
idPrimeTask - идентификатор основной задачи, для подзадач (целочисленный);
idProject - идентификатор проекта, в рамках которого происходит постановка задачи (целочисленный);
comment - комментарий (строковый);
timeStart - время начала выполнения задачи (дата-время);
time - время в часах для выполнения проекта (целочисленный);
timeFin - время завершения выполнения задачи (дата-время);
fin - завершённость (булевый).
Связи и отношения между информационными объектами
client-project - связь 'один ко многим', один клиент может заказывать разные проекты, у каждого проекта только один заказчик.
client-user - связь 'многие к одному', с каждым клиентом работает один из менеджеров, каждый менеджер может отвечать за несколько клиентов.
specialize-task - связь 'один ко многим', один тип работ может соответствовать различным (под-) задачам, у каждой задачи только один тип работ.
specialize-user - связь 'один ко многим', могут быть несколько сотрудников с одной специализацией.
user-task - связь 'один ко многим', каждой (под-) задаче назначается один исполнитель, сотрудник может отвечать за множество задач.
user-project - связь 'один ко многим', каждому проекту соответствует один менеджер, сотрудник может управлять несколькими проектами.
project-task - связь 'один ко многим', в состав проекта включаются задачи, одна задача может соответствовать только одному проекту.
task-task - связь 'один ко многим', каждая подзадача соответствует основной задаче, для задач связь не формируется.
Требования к целостности системы
Каждая (под-) задача принадлежит проекту.
Для каждой задачи назначается исполнитель.
Каждому проекту соответствует заказчик и ответственное лицо (руководитель проекта).
ER-диаграмма
Даталогическое проектирование
Система управления базой данных
Подход 'тонкого клиента': через интерфейс запускаются хранимые на сервере процедуры и пользовательские функции. Это позволит сократить объём передаваемых данных, повысить скорость их обработки. Также допускается использование 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 для таблицы пользователей. При загрузке формы вызывается метод чтения записей из указанной таблицы:
userTableAdapter. Fill (projects5thBaseDataSet. user);
При этом автоматически происходит вызов стандартного метода доступа к данным DataSet через BindingSource. После заполнения таблицы пользователей можно обращаться к значениям её полей через коллекцию таблиц DataSet:
projects5thBaseDataSet. user. Rows [i] ['name']
Для идентификации пользователя осуществляется перебор имен и соответствующих им паролей с целью поиска соответствия введённым данным. В случае успеха определяется тип пользователя, задающий уровень доступа к системе.
В соответствии с выявленным уровнем доступа вызываются публичные методы основной формы с целью скрытия элементов, не соответствующих текущему уровню.
После прохождения авторизации вызывается основная клиентская форма.
Основная (main) форма позволяет осуществлять наблюдение за состоянием проектов, а также вызывать формы, реализующие другие функции.
Рабочая область формы содержит таблицу, привязанную к хранимой процедуре на выборку 'горящих' проектов. Из этой таблицы осуществляется экспорт в файл xlsx.
В режиме полного доступа на форме расположены три кнопки, вызывающие формы проектов, клиентов и пользователей соответственно. Приложение имеет многооконный интерфейс, таким образом, единовременно может быть открыто до четырёх окон.
Форма управления проектами (projects) позволяет просматривать данные о проектах, вызывать формы добавления или изменения записи о проекте или составляющей (под-) задаче, а также удалять (под-) задачи и закрывать проекты.
Рассмотрим механизмы работы с данными на примере этой формы (для форм клиентов и сотрудников, а также для задач используются аналогичные механизмы).
Основная рабочая область формы содержит таблицу DataGridView, формируемую 'вручную', в итерационной работе с записями таблицы задач в коллекции таблиц DataSet. Цикл осуществляет заполнение соответствующего столбца в зависимости от типа задачи (задача/подзадача). Кроме того во вложенном цикле производится замена идентификатора сотрудника-руководителя на его имя (используется таблица пользователей в коллекции таблиц DataSet).
Выпадающих список связан с полем имени проекта в DataSet. При изменении значения происходит обновление таблицы (под-) задач DataGridView. Таблица формируется 'вручную', в итерационной работе с записями таблицы задач в коллекции таблиц DataSet. Путём выборки значений по идентификатору проекта из коллекции таблиц:
projects5thBaseDataSet. Tables ['task']. Rows [i] ['idProject']
Цикл осуществляет заполнение соответствующего столбца в зависимости от типа задачи (задача/подзадача). Кроме того во вложенном цикле производится замена идентификатора сотрудника-руководителя на его имя (используется таблица пользователей в коллекции таблиц DataSet).
Сформированные строки добавляются в DataGridView методом add (row).
Справа от ComboBox расположены три кнопки: создание, изменение и удаление (знаки +, - , * соответвственно). Этот интерфейс используется также для работы с записями о клиентах, сотрудниках и задачах.
При нажатии кнопки создания вызывается форма проекта, на которой в текстовом поле и выпадающих списках, связанных с соответствующими столбцами в БД, задаются значения полей нового объекта (а именно наименование, клиент, руководитель и крайний срок). При подтверждении ввода формируется новая строка и добавляется в соответствующую таблицу, путём вызова стандартного метода:
projects5thBaseDataSet. Tables ['project']. Rows. Add (row);
this. projectTableAdapter. Update (projects5thBaseDataSet. project);
При нажатии кнопки изменения также вызывается форма проекта. Но предварительно осуществляется её заполнение текущими значениями для изменяемого объекта. Через свойство формы передаётся идентификатор изменяемого объекта (текущий объект в выпадающем списке):
FormProject fp = new FormProject ();
fp. preLoad ();
fp. modId = Convert. ToInt32 (comboBoxProjects. SelectedValue. ToString ());
Предварительно осуществляется инициализация таблиц путём вызова методов TableAdapter. Fill (DataSet. Table) для таблиц проектов, таблиц и клиентов (все эти таблицы участвуют в представлении данных на форме проекта).
При подтверждении сделанных изменений вызывается хранимая процедура обновления записи:
Projects5thBaseDataSetTableAdapters. QueriesTableAdapter qTA = new Projects5thBaseDataSetTableAdapters. QueriesTableAdapter ();
DateTime tS = Convert. ToDateTime (projects5thBaseDataSet. project. Rows [mN] ['timeStart']);
DateTime tF = Convert. ToDateTime (projects5thBaseDataSet. project. Rows [mN] ['timeFin']);
qTA. project_mod (mId, textBoxName. Text, (int) comboBoxUser. SelectedValue, (int) comboBoxClient. SelectedValue, tS, tF, dateTimePickerDeadline. Value);
Следует заметить, что значения времени начала и окончания выполнения проекта не доступны для редактирования, поскольку их формирование должно происходить на основании входящих в их состав подзадач.
Удаление также осуществляется путём вызова хранимой процедуры удаления записи:
Projects5thBaseDataSetTableAdapters. QueriesTableAdapter qTA = new Projects5thBaseDataSetTableAdapters. QueriesTableAdapter ();
qTA. 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 применяются хранимые процедуры для изменения (в качестве параметра передаются значения всех полей) и удаления (в качестве параметра передаётся идентификатор) записей:
client_del - удаление записи из таблицы клиентов;
client_mod - изменение записи в таблице клиентов;
project_del - удаление записи из таблицы проектов;
project_mod - изменение записи в таблице проектов;
task_del - удаление записи из таблицы задач;
task_mod - изменение записи в таблице задач;
user_del - удаление записи из таблицы пользователей;
user_mod - изменение записи в таблице пользователей;
Добавление новых записей и чтение информации организуется стандартными средствами объекта DataSet среды.net.
Пример создания хранимой процедуры на изменение записи о проекте
CREATE PROCEDURE project_mod
@id int,
@name nvarchar (50),
@idManager int,
@idClient int,
@timeStart smalldatetime,
@timeFin smalldatetime,
@timeDeadline smalldatetime
ASUPDATE [Projects5thBase]. [dbo]. [project]
SET [name] = @name
, [idManager] = @idManager
, [idClient] = @idClient
, [timeStart] = @timeStart
, [timeFin] = @timeFin
, [timeDeadline] = @timeDeadline
WHERE [id] = @id
GO
Для каскадного удаления записи о проекте и входящих в него задач создан триггер
CREATE TRIGGER DelProject ON [Projects5thBase]. [dbo]. [project]
INSTEAD OF DELETE
AS
DELETE FROM task
WHERE idProject IN (SELECT id FROM deleted)
Для формирования таблицы 'горящих проектов' создана хранимая процедура
Учитывается состояние задач, входящих в состав проекта. В случае, если все задачи завершены, проект считается закрытым и в выборку не включается.
CREATE PROCEDURE getBurningProjects3
AS
BEGIN
SELECT [name] as Проект, [timeFin] as 'Время окончания', [timeDeadline] as 'Крайний срок'
FROM [dbo]. [project]
WHERE [timeFin] > [timeDeadline] AND
[dbo]. [project]. [id] IN (SELECT [idProject] FROM [dbo]. [task] WHERE [dbo]. [task]. [fin] = 0)
END
GO
Организационное проектирование
Группы пользователей
Менеджер - пользователь имеет доступ к таблицам клиентов проектов задач и пользователей. В эту группу включается руководящий состав предприятия.
Специалист - пользователь имеет возможность работы с таблицами клиентов проектов и задач, но не может управлять пользовательскими записями. В эту группу входят все сотрудники предприятия, не вошедшие в группу менеджер.
Оснащение информационной системы
Современный сервер под управлением ОС семейства 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 точек;
клавиатура, мышь.
Сеть со скоростью передачи данных от 10 Мб/с и поддержкой протокола TCP/IP.
Источники информации
Ванеев О.Н. - Методические указания по выполнению курсового проекта по дисциплине 'Управление данными' для студентов 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
Microsoft Developer Network http://msdn. microsoft.com
C# и я.
http://csharp-and-i.ru
Киберфорум, подраздел Подразделы: C#.net http://www.cyberforum.ru/csharp-net/
SQL.ru: Работа с данными в таблицах ADO.net http://www.sql.ru/docs/accessingdata/ado/net/7. shtml