Разработка ЭИС управления проектами для ЗАО «ДИАКОН», страница 9
Описание файла
Документ из архива "Разработка ЭИС управления проектами для ЗАО «ДИАКОН» ", который расположен в категории "". Всё это находится в предмете "дипломы и вкр" из 12 семестр (4 семестр магистратуры), которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "диплом" в общих файлах.
Онлайн просмотр документа "Разработка ЭИС управления проектами для ЗАО «ДИАКОН»"
Текст 9 страницы из документа "Разработка ЭИС управления проектами для ЗАО «ДИАКОН»"
Структура программы и механизм обработки событий отличаются от традиционной структуры программы с заранее заданным алгоритмом. Файл проектов является центральной точкой исходного кода проекта. Для каждого проекта может быть только один такой файл. Файл проектов связывает все файлы, из которых состоит приложение. При создании нового проекта создается файл project.dpr. В нем содержатся ссылки на все формы проекта и относящиеся к ним модули, а также код инициализации приложения. Если проект еще не был сохранен, то файл проекта существует только в оперативной памяти компьютера.
Для каждого проекта содержимое файла может выглядеть следующим образом:
programProjectl;
uses Forms, Unitl in 'Unit1.pas' {Forml};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForml, Forml);
Application.Run;
end.
Использование модуля Forms обязательно для всех программ, создаваемых в среде Delphi, так как в этом модуле содержится описание класса TApplication, который лежит в основе всех Delphi-приложений. В приведенном примере первая строка содержит имя проекта. Это же имя используется в качестве имени приложения, если не задано другое. Оператор uses сообщает компилятору, что программа использует модуль с исходным кодом формы Unit1.pas, который описывает главную форму, включенную в данное приложение. Название формы (ее идентификатор) приводится в фигурных скобках. Следует иметь ввиду, что имя формы должно быть отлично от имени модуля, описывающего эту форму. Директива in указывает на то, что модуль является обязательной частью проекта, а не просто файлом, используемом в проекте. Директива $R подключает к проекту все необходимые ресурсы (файлы с расширением .res). Само изображение формы хранится в виде Windows-ресурса и имеет расширение .dfm.
Далее начинается главный блок программы, в котором создается форма и содержится команда запуска основного цикла приложения. Вызов метода Application.Initialize приводит к инициализации самого приложения, представленного экземпляром класса TApplication. Метод Application.Create-Form загружает и инициализирует форму, a Application.Run начинает выполнение приложения и загружает главную форму. При добавлении к проекту новой формы или нового модуля. Delphi автоматически добавляет соответствующий оператор uses в файл проекта. Аналогично добавляются методы Application.CreateForm, для загрузки и инициализации дополнительных форм, используемых в данном приложении.
Во избежание потери целостности приложения, как правило, не вносятся изменения в файлы проектов, так как среда Delphi автоматически управляет этими файлами.
Если несколько проектов объединены в группу, то для управления взаимосвязанными проектами используется файл группы проектов. Файлы групп проектов имеют расширение .bpg.
В ситуации, когда группа проектов состоит из одного проекта, файл группы проектов существует в оперативной памяти компьютера. Это означает, что при сохранении файлов модуля и проекта файл группы проектов не записывается автоматически на диск. В этом случае файл группы проектов может быть сохранен на диске командой SaveProjectGroupAs контекстного меню окна ProjectManager. bpg-файлы тоже можно редактировать самостоятельно, однако, как правило, этого не делается.
3.2.2 Сценарий диалога ЭИС
Разработка структуры сценария диалога представляет собой выявление состава функций, их иерархии и выбора средств организации взаимодействия пользователя с программой. Структура сценария диалога дает возможность определить состав его кадров, содержание каждого из кадров, а также их соподчиненность.
Развитие диалога во времени можно рассматривать как последовательность переходов системы из одного состояния в другое. Ни одно из этих состояний не должно быть тупиковым, т.е. пользователь должен иметь возможность перейти из любого текущего состояния диалога в требуемое (за один или несколько шагов). Для этого в ходе разработки интерфейса необходимо определить все возможные состояния диалога и пути перехода из одного состояния в другое ― разработать сценарий диалога.
Сложность разработки сценария определяется в основном двумя факторами ― функциональными возможностями создаваемого приложения (то есть числом и сложностью реализуемых функций обработки информации) и степенью неопределенности возможных действий пользователя.
Степень неопределенности действий пользователя зависит от выбранной структуры диалога. Наибольшей детерминированностью обладает диалог на основе меню, наименьшей – диалог типа «вопрос-ответ», управляемый пользователем.
Способ описания сценария диалога зависит от степени его сложности. Методы описания сценариев делятся на две группы: неформальные и формальные методы.
При разработке структуры диалога необходимо предусмотреть возможность работы с экранными формами входных документов, формирование выходных документов, корректировки вводимых данных, просмотра введенной информации, работу с таблицами нормативно-справочной информации, протоколирования действий пользователя, а также помощь на всех этапах работы.
Сценарий диалога пользователя представлен на Рисунке 3.2.
ЭИС управления проектами
Идентификация пользователя
Справочники
Отчеты
Печатные формы
Проекты
План-график проекта
Персонал
Затратына проект
Проектная команда
Отчет о
сроках
Отчет о затратах
Приказ о создании проектной команды и установление тарифа оплаты
Роли
Отклонения по проекту
План-график проекта
Проектная документация
Назначения на проект
Отчёт об отклонениях
Отчет о текущем состоянии
Отчет о проектах компании
Рисунок 3.2 — Сценарий диалога пользователя
3.2.3 Описание функций ЭИС
Экономическая информационная система представляет собой совокупность организационных, технических, программных и информационных средств, объединенных с целью сбора, хранения, обработки и выдачи информации, необходимой для выполнения функций управления.
Можно выделить и детализировать два множества подфункций, которые обеспечивают информационную поддержку бизнес-процессов компании. Первое подмножество представляет собой основные функции системы. Второе — реализует служебные функции.
К основным функциям ИС, как правило, относятся функции сбора и регистрации информационных ресурсов, их хранение, обработка, актуализация, а так же обработка запросов пользователя.
К основным функциям разрабатываемой системы можно отнести:
-
планирование проекта;
-
контроль проекта;
-
расчет плановых и фактических затрат на проект;
-
расчет материальных и трудовых затрат;
-
ведение справочной информации;
-
генерация отчетов;
-
формирование печатных форм.
К служебным функциям относятся:
-
связь с базой данных;
-
идентификация пользователя;
-
разграничение полномочий.
На Рисунке 3.3 представлено дерево функций системы.
Функции системы управления проектами
Основные функции
Служебные функции
Связь с базой данных
Расчет материальных и трудовых затрат
затрат
Расчет плановых и фактических
затрат на проект
Контроль выполнения
проекта
Планирование проекта
Идентификация пользователя
Формирование печатных форм
Генерация
отчетов
Ведение справочной информации
Разграничение полномочий
Рисунок 3.3 — Дерево функций системы
Ниже представлен программный код некоторых функций системы.
Листинг 3.1 — Создание новой роли
procedure TfrmAddNewRole.FormActivate(Sender: TObject); begin NewRoleID:=dtmConnection.qurJobs.RecordCount + 1; dtmConnection.dtsJobs.DataSet.Insert; end; procedure TfrmAddNewRole.cmbOkRoleClick(Sender: TObject); begin dtmConnection.dtsJobs.DataSet.FieldByName('ID').Value:=NewRoleID; dtmConnection.dtsJobs.DataSet.Post; dtmConnection.qurJobs.Refresh; frmAddNewRole.Close; end; |
Листинг 3.2 — Добавление нового персонала
procedure TfrmPersonel.FormActivate(Sender: TObject); varNewPersonelID:integer; begin if frmMain.AddNewPersonel=True then begin dtmConnection.dtsPersonal.DataSet.Insert; NewPersonelID:=dtmConnection.qurPersonal.RecordCount + 1; dtmConnection.dtsPersonal.DataSet.FieldByName('ID').Value:=NewPersonelID; end; end; procedure TfrmPersonel.cmbOkPersonelClick(Sender: TObject); begin if frmMain.AddNewPersonel=True then begin dtmConnection.dtsPersonal.DataSet.Post; frmPersonel.Close; end; end; |
Листинг 3.3 — Назначение на проект
procedure TfrmProjectTeam.cmbOkProjectTeamClick(Sender: TObject); varNewEntry:integer; begin dtmConnection.qurProjectTeam.Post; cmbJob.DataSource:=frmProjectDetails.dtsProjectTeam; cmbPersonel.DataSource:=frmProjectDetails.dtsProjectTeam; frmProjectDetails.qurProjectTeam.Active:=False; frmProjectDetails.qurProjectTeam.Active:=True; dtmConnection.qurProjectTeam.Active:=False; dtmConnection.qurProjectTeam.Active:=True; frmProjectTeam.Close; end; procedure TfrmProjectTeam.FormActivate(Sender: TObject); varNewEntry:integer; begin NewEntry:=dtmConnection.qurProjectTeam.RecordCount; NewEntry:=NewEntry+12; cmbJob.DataSource:=dtmConnection.dtsProjectTeam; cmbPersonel.DataSource:=dtmConnection.dtsProjectTeam; |
Продолжение Листинга 3.3
if frmProjectDetails.AddNewProjectTeam=True then with dtmConnection do begin dtsProjectTeam.Dataset.Insert; dtsProjectTeam.DataSet.FieldByName('ID').Value:=NewEntry; dtsProjectTeam.DataSet.FieldByName('ProjectID').Value:=frmProjectDetails.ProjectID; end; |
Листинг 3.4 — Добавление стадии или проекта
procedure TfrmProjectDetails.cmbAddNewEntryClick(Sender: TObject); begin ckbIsFixated.DataSource:=dtmConnection.dtsProject; txtPlanBeginDate.DataSource:=dtmConnection.dtsProject; txtPlanEndDate.DataSource:=dtmConnection.dtsProject; txtPlanManHour.DataSource:=dtmConnection.dtsProject; txtFactBeginDate.DataSource:=dtmConnection.dtsProject; txtFactEndDate.DataSource:=dtmConnection.dtsProject; txtFactManHour.DataSource:=dtmConnection.dtsProject; txtNameProject.DataSource:=dtmConnection.dtsProject; cmbStatusProject.DataSource:=dtmConnection.dtsProject; cmbTypeProject.DataSource:=dtmConnection.dtsProject; dtmConnection.dtsProject.DataSet.Insert; end; procedure TfrmProjectDetails.cmbCancelEntryClick(Sender: TObject); begin dtmConnection.dtsProject.DataSet.Cancel; ckbIsFixated.DataSource:=dtsProjectDetails; txtPlanBeginDate.DataSource:=dtsProjectDetails; txtPlanEndDate.DataSource:=dtsProjectDetails; txtPlanManHour.DataSource:=dtsProjectDetails; txtFactBeginDate.DataSource:=dtsProjectDetails; txtFactEndDate.DataSource:=dtsProjectDetails; txtFactManHour.DataSource:=dtsProjectDetails; txtNameProject.DataSource:=dtsProjectDetails; cmbStatusProject.DataSource:=dtsProjectDetails; cmbTypeProject.DataSource:=dtsProjectDetails; Label10.Visible:=False; cmbTypeEntry.Visible:=False; end; procedure TfrmProjectDetails.cmbApplyEntryClick(Sender: TObject); varNewEntryID,ParentProject, ParentStage:integer; begin if cmbTypeEntry.Text='' then begin ShowMessage('Не выбран тип новой записи'); cmbTypeEntry.SetFocus; Exit; end; dtmConnection.dtsProject.DataSet.FieldByName('ID').Value:=NewEntry; dtmConnection.dtsProject.DataSet.FieldByName('ParentProjectID').Value:=ProjectID; if cmbTypeEntry.Text='Новаястадия' then |
Продолжение Листинга 3.4
begin dtmConnection.dtsProject.DataSet.FieldByName('ParentStageID').Value:=NewEntry; dtmConnection.dtsProject.DataSet.FieldByName('ParentWorkID').Value:=0; end; if cmbTypeEntry.Text='Новаяработа' then begin dtmConnection.dtsProject.DataSet.FieldByName('ParentStageID').Value:=dtsProjectDetails.DataSet.FieldValues['ID']; dtmConnection.dtsProject.DataSet.FieldByName('ParentWorkID').Value:=NewEntry; end; dtmConnection.dtsProject.DataSet.Post; ckbIsFixated.DataSource:=dtsProjectDetails; txtPlanBeginDate.DataSource:=dtsProjectDetails; txtPlanEndDate.DataSource:=dtsProjectDetails; txtPlanManHour.DataSource:=dtsProjectDetails; txtFactBeginDate.DataSource:=dtsProjectDetails; txtFactEndDate.DataSource:=dtsProjectDetails; txtFactManHour.DataSource:=dtsProjectDetails; txtNameProject.DataSource:=dtsProjectDetails; cmbStatusProject.DataSource:=dtsProjectDetails; cmbTypeProject.DataSource:=dtsProjectDetails; qurProjectDetails.Active:=False; qurProjectDetails.Active:=True; cmbTypeEntry.Visible:=True; Label10.Visible:=True; dbgProjectDetails.Group(4); dbgProjectDetails.SubGroup(5); end; |
Исходя из анализа требований, предъявляемых к системе, определяется набор всех функций, выполнение которых программа должна поддерживать. Полученные функции объединяются в логически связанные между собой группы. Каждая из таких групп может стать одним из компонентов программной системы.