Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Diplom.docx
Скачиваний:
31
Добавлен:
09.04.2015
Размер:
3.41 Mб
Скачать

Функции системы управления проектами

Основные функции Служебные функции

Связь с базой данных

Планирование проекта

Контроль выполнения

проекта

Расчет плановых и фактических

затрат на проект

Расчет материальных и трудовых затрат

затрат

Идентификация пользователя

Формирование печатных форм

Генерация

отчетов

Ведение справочной информации

Разграничение полномочий

Рисунок 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;

Исходя из анализа требований, предъявляемых к системе, определяется набор всех функций, выполнение которых программа должна поддерживать. Полученные функции объединяются в логически связанные между собой группы. Каждая из таких групп может стать одним из компонентов программной системы.

В процессе анализа функций и на первых стадиях проектирования архитектуры могут быть выявлены дополнительные функции, которые необходимо включить в разрабатываемую программу. Такие функции будут необходимы для выполнения технологических процессов по поддержанию системы в целостном и работоспособном состоянии.

Под архитектурой понимается совокупность компонентов программы, а также связи и способы организации информационного обмена между ними.

Разработка структурной схема, или архитектуры, программы является одним из важных этапов разработки программного обеспечения.

В Таблице 3.1 представлена структурная схема программы.

В понятие структуры программы включается состав и описание связей всех модулей, которые реализуют самостоятельные функции программы и описание носителей вводимых и выводимых данных, а также данных, участвующих в обмене между отдельными подпрограммами.

Подчиненность модулей программы отражается в схеме иерархии. Однако, последняя не отражает порядок их вызова или функционирование программы. Обычно схема иерархии дополняется расшифровкой функций, выполняемой модулями.

В таблице приведено описание модулей.

Таблица 3.1 — Структурная схема программы

Идентификатор модуля

Описание функций

Project

База данных

U_Data

Модуль подключения к БД и хранилище всех справочников

U_Login

Модуль авторизации

U_Role *

Модуль справочника «Роли»

U_Main

Модуль главной формы

U_Personal *

Модуль справочника персонала

U_ProjectDet

Модуль формы детализации проекта

U_ProjectDev *

Модуль отклонений проекта

U_Resources *

Модуль ресурсов проекта

U_ProjectManHour *

Модуль времени проекта

U_ProjectTeam *

Модуль команды проекта

Модули, помеченные знаком * представляют собой модули добавления и изменения данных в соответствующих таблицах.

Взаимосвязь модулей программы представлена на Рисунке 3.4

Project

Рисунок 3.4 ― Схема взаимодействия модулей программы

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