Поясняк (1230875), страница 4
Текст из файла (страница 4)
1: Begin
Form5.Show;
Form5.Caption:='АРМ Начальника отдела';
End;
3: Begin
Form5.Show;
Form5.Caption:='АРМ Главного специалиста';
End;
На рисунке 2.11 показано окно авторизации.
Рисунок 2.11 - Окно авторизации
В конечном счете, по окончанию рабочего дня в таблице VR_NA_RAB заносится время работы инженера за весь рабочий день. Эти данные отправляются в табель начальника группы отдела, начальника отдела.
2.1.3 АРМ инженера
После успешной авторизации открывается рабочее окно "АРМ инженера", которое показано на рисунке 2.12.
Рисунок 2.12 - Рабочее окно инженера
При открытии рабочего окна "АРМ инженера" создается SQL-запрос:
SELECT
ID_WRK, DATE_, TIME_, SOTR_, RABOTA.SHIFR_, STAD_, WORK_, DISCR_, ZATR_TIME, OBJECTS.SHIFR_, ID_OBJ, ID_STAD, NAME_STAD
FROM
RABOTA, OBJECTS, STADIYA
WHERE
ID_OBJ=RABOTA.SHIFR_
AND
ID_STAD=STAD_
AND
SOTR_='+IntToStr(id_sotr)+'
ORDER BY
DATE_ desc, TIME_ desc
Он посылается на сервер, который выбирает данные о работе инженера, прошедшего авторизацию. Отобранной информацией заполняется таблица, расположенная на рабочей форме. После чего программа ожидает дальнейших действий от пользователя.
Перед началом работы над каким-либо проектом инженер должен внести такие данные, как шифр объекта, стадию работы, информацию о том, чем именно будет заниматься, например работать над какой-либо схемой, и примечание в базу данных, предварительно выбрав режим редактирования, нажав на соответствующий переключатель.
Время, затраченное на работу над тем или иным проектом подсчитывается либо при добавлении новой записи в БД, либо при закрытии программного обеспечения.
Алгоритм работы данной рабочей формы представлен на листе 4 графического материала.
2.1.4 АРМ начальника группы
Начальник группы должен знать, над каким проектом работает его подчиненный, поэтому в дополнение к персональному плану добавлен групповой в виде аналогичной таблицы, без возможности вносить в неё изменения. Информация, заполняющая эту таблицу, поступает к НГ со всех АРМов, установленных на компьютерах его группы.
Рабочее окно начальника группы представлено на рисунке 2.13.
Рисунок 2.13 - Рабочее окно начальника группы
При открытии рабочего окна "АРМ начальника группы" создается SQL-запрос:
SELECT * FROM FIO, RABOTA
WHERE
ID_FIO= SOTR_
AND
GROUP_= IntToStr(Group)+
AND
ID_FIO<>' IntToStr(id_sotr)+
ORDER BY
DATE_ desc, TIME_ desc
С помощью этого запроса выбирается информация из БД о работе всей подчиненной группы и заносится во вторую таблицу. Для обновления данных на рабочем окне НГ расположена кнопка "Обновить таблицу".
Алгоритм работы данной рабочей формы представлен на листе 4 графического материала.
2.1.5 АРМ главного специалиста и начальника отдела
2.1.5.1 Главное рабочее окно
Сотрудники, занимаемые должность главного специалиста (ГС) или начальника отдела (НО), в разработанном программном обеспечении, могут просматривать процесс работы всего отдела. Такая возможность реализована следующим SQL-запросом:
SELECT
FIO_, ID_FIO, WORK_, DISCR_, DATE_, TIME_,
RABOTA.SHIFR_, STAD_, SOTR_, ZATR_TIME, ID_OBJ,
OBJECTS.SHIFR_, TITUL_, ID_STAD, NAME_STAD
FROM
FIO, RABOTA, OBJECTS, STADIYA
WHERE
(SOTR_=ID_FIO)
AND
(ID_OBJ=RABOTA.SHIFR_)
AND
(ID_STAD=STAD_)
ORDER BY
DATE_ DESC,TIME_ DESC
Вся информация, отобранная согласно SQL-запросу, размещается в таблице, расположенной на рабочем окне ГС или НО, которое продемонстрировано на рисунке 2.14.
Рисунок 2.14 - Рабочее окно ГС и НО
Для обновления таблицы на форме расположена кнопка "Обновить таблицу".
ГС и НО также имеют возможность просматривать и редактировать список:
- сотрудников (рисунок 2.15);
- должностей (рисунок 2.16);
- групп (рисунок 2.17);
- объектов (рисунок 2.18);
- стадий (рисунок 2.19).
Рисунок 2.15 - Рабочее окно "Список сотрудников"
Рисунок 2.16 - Рабочее окно "Список должностей"
Рисунок 2.17 - Рабочее окно "Список групп"
Рисунок 2.18 - Рабочее окно "Список объектов"
Рисунок 2.19 - Рабочее окно "Список стадий"
Для работы с каждым на рабочем окне расположены соответствующие кнопки. Примеры работы с каждым списком представлены на листе 3 графического материала.
На форме размещена кнопка "Сетевой график", позволяющая строить график на основе диаграммы Гантта.
Главное назначение программного обеспечения, автоматизированное формирование табеля учета рабочего времени, реализовано для главного специалиста и начальника отдела.
Алгоритмы работы АРМа главного специалиста и начальника отдела, а также алгоритмы работ со списками сотрудников и групп представлены на листе 4 графического материала.
2.1.5.2 Диаграмма Гантта
Диаграмма Гантта представляет собой отрезки (графические плашки), размещенные на горизонтальной шкале времени. Каждый отрезок соответствует отдельной задаче или подзадаче. Задачи и подзадачи, составляющие план, размещаются по вертикали. Начало, конец и длина отрезка на шкале времени соответствуют началу, концу и длительности задачи.
Диаграмма Гантта позволяет:
-
визуально оценить последовательность задач, их относительную длительность и протяженность проекта в целом;
-
сравнить планируемый и реальный ход выполнения задач;
-
детально проанализировать реальный ход выполнения задач.
Преимущества Диаграммы Гантта:
-
гибкое представление данных: диаграмма имеет гибкую структуру данных. Как точки, так и серии представляют собой иерархические коллекции, что позволяет, например, представить проект как набор связанных, иерархических задач. Множество серий позволяет на одной и той же диаграмме отображать различные данные, например отпуска, командировки и отсутствие по болезни. Поддерживается возможность установки связей между различными интервалами диаграммы, таким образом окончание одного интервала может быть связано с началом следующего интервала диаграммы.
-
Визуальные настройки и представление: диаграмма имеет широкие возможности настройки внешнего вида. Визуальными средствами можно задавать шрифты, цвета, виды отображения временных интервалов. Для каждого значения, отображаемого на диаграмме, можно задать поясняющую надпись.
-
Удобство использования: диаграмма предоставляет гибкие программные и интерактивные настройки масштаба представления. Существует возможность, независимо от текущих размеров диаграммы, отображать заданный интервал времени (который может автоматически определяться в зависимости от текущих данных), или отображать в видимой области любой указанный интервал.
-
Возможна поддержка специального программного обеспечения по проектному планированию для облегчения сложных вычислений и зависимостей.
-
Наглядность: в одной таблице можно увидеть весь проект, разбитый на отдельные задачи. Кроме того, с помощью средств диаграммы Гантта можно распределять ресурсы по задачам и рассчитывать бюджет.
К родовым недостаткам диаграммы Гантта можно отнести сравнительно невысокую информационную плотность, как у других столбиковых диаграмм. А также:
-
проекты часто оказываются значительно более сложными, чем это может бать передано с помощью диаграммы Гантта;
-
диаграмма представляет только часть тройных ограничений (время, затраты и масштаб) проектов, потому что она ориентируется, главным образом, на менеджмент графика (времени).
Для построения диаграммы Гантта в разработанной программе использовался базовый компонент TChart, который показан на рисунке 2.20.
Рисунок 2.20 - Графический компонент TChart
Принцип создания графиков основан на использовании серий TSeries, с помощью которых нужно выбрать тип диаграммы. Виды графиков представлены на рисунке 2.21.
Рисунок 2.21 - Виды графиков, предоставляемые компонентом TChart
Для того, чтобы создать диаграммы, в коде программы объявлена переменная, типа TGanttSeries:
Series: array [1..100] of TGanttSeries.
Также нужно отобрать данные, по которым будет строиться график, выбрав месяц и год из выпадающих списков, расположенных на рабочей форме, в рамках которых информация и будет выбираться. Данный процесс обеспечивает следующий SQL-запрос:
SELECT
TIME_, DATE_, SOTR_, RABOTA.SHIFR_, FIO_, ID_FIO, DATI_, ZATR_TIME, OBJECTS.SHIFR_, ID_OBJ
FROM
RABOTA, FIO, OBJECTS
WHERE
(SOTR_ = ID_FIO)
and
(DATE_ BETWEEN ''01.' + IntToStr(CB1.ItemIndex+1) + '.' + CB2.Items.Strings[CB2.ItemIndex] + ''' and ''' + IntToStr(day[CB1.ItemIndex+1]) + '.' + IntToStr(CB1.ItemIndex+1) + '.' + CB2.Items.Strings[CB2.ItemIndex]+''')'
and
(ID_OBJ = RABOTA.SHIFR_)
ORDER BY SOTR_, DATE_, TIME_, OBJECTS.SHIFR_
Для добавления серии типа TGantt используется следующая функция:
AddGanttColor(Const AStart, AEnd, AY: Double; Const AXLabel: String; AColor: TColor): Integer.
Ниже представлен код программы, отвечающий за построение диаграммы.
if (CB1.ItemIndex<>-1) and (CB2.ItemIndex<>-1) then
begin
for i:=1 to 100 do
begin
Series[i]:=TGanttSeries.Create(Chart1);
end;
while not DM.DS_GANT.EOF do
begin
i:=DM.DS_GANT.FBN('SOTR_').AsInteger;
j:=DM.DS_GANT.FBN('ID_OBJ').AsInteger;
DATI1:=DM.DS_GANT.FBN('DATI_').AsDateTime;
DATE1:=DM.DS_GANT.FBN('DATE_').AsDateTime;
TIME1:=DM.DS_GANT.FBN('TIME_').AsDateTime;
FIO1:=DM.DS_GANT.FBN('FIO_').AsString;
Shifr[j]:=DM.DS_GANT.FBN('SHIFR_1').AsString;
ZV:=DM.DS_GANT.FBN('ZATR_TIME').AsInteger;
DM.DS_GANT.Next;
DATE2:=DM.DS_GANT.FBN('DATE_').AsDateTime;
FIO2:=DM.DS_GANT.FBN('FIO_').AsString;
if (FIO1=FIO2) and
(DATE1=DATE2) and
(y<>NumRec)
then
begin
DATI2:=DM.DS_GANT.FBN('DATI_').AsDateTime;
Series[j].AddGanttColor(DATI1,DATI2,i,FIO1,Col[j]);
Series[j].Title:=Shifr[j];
Series[j].ColorEachPoint:=false;
Series[j].color:=col[j];
Chart1.AddSeries(Series[j]);
end
else
begin
DM.DS_GANT.Prior;
DATI2:=DM.DS_GANT.FBN('DATI_').AsDateTime;
TIME2:=TIME1+StrToTime('0'+IntToStr(ZV)+':00:00');
ReplaceTime(DATI2,TIME2);
Series[j].AddGanttColor(DATI1,DATI2,i,FIO1,Col[j]);
Series[j].Title:=Shifr[j];
Series[j].ColorEachPoint:=false;
Series[j].color:=col[j];
Chart1.AddSeries(Series[j]);
DM.DS_GANT.Next;
end;
Inc(y);
end;











