Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MD_CP.docx
Скачиваний:
4
Добавлен:
10.05.2015
Размер:
219.99 Кб
Скачать

Функциональность приложения

Вывод информации осуществляется в таблицы 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) служит для создания записи о новом сотруднике и изменения свойств существующих сотрудников.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]