Xreferat.com » Рефераты по информатике и программированию » Автоматизированное рабочее место регистрации и документирования комплекса средств автоматизации

Автоматизированное рабочее место регистрации и документирования комплекса средств автоматизации

в свою очередь также ведет к повышению экономической эффективности работ.

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

ОПРЕДЕЛЕНИЕ ЗАТРАТ НА ТЕМУ.

Для определения затрат на тему необходимо рассчитать следующие статьи расхода:

основная заработная плата персонала,

дополнительная заработная плата,

отчисления на социальные нужды,

производственные командировки,

оплата работ, выполняемых сторонними организациями,

накладные расходы,

основные материалы и покупные изделия.

Основная заработная плата определяется как произведение трудоемкости выполнения каждого этапа (вида работ) в человеко-днях, переведенных в человеко-месяцы, и величины месячного должностного оклада исполнителя.

Результаты расчета приводятся в таблице 2.1


Таблица 2.1 Основная заработная плата персонала по теме

N

п/п

Наименование

этапов

Исполнители

Трудоемкость, в чел. мес.

Должностной оклад, руб.

Затраты по зарплате, руб.

1.

Проведение НИР.

Нач.

Отдела

Вед. инж

Инж.1 кат.

5

5

15

2000

1200

1000

10000

6000

15000


2.

Монтаж сети.

Монтажник

Рабочий

Инж.1 кат.

5

5

2

700

700

1000

3500

3500

2000

3.

Наладка сети.

Вед. инж

Монтаж-ник

Инж.1 кат.

2

2

7

1200

700

1000

2400

1400

7000


Итого




50800


Таким образом, основная заработная плата персонала составляет 50800 руб.


Зосн = 50800 руб.


Дополнительная заработная плата научного и производственного персонала составляет 20% от основной.


Здоп = Зосн * 0.2 = 50800 * 0.2 = 10160 руб.


Отчисления на социальные нужды составляют 38.5% от суммы основной и дополнительной зарплат.


Зсн = 0.385 * (Зосн + Здоп) =

= 0.385 * (50800 + 10160) = 23470 руб.


Расчет затрат на материалы и покупные изделия производится на основе сводной ведомости (табл.2.2). (Цены на изделия приняты на начало октября 1998г).


Таблица 2.2. Затраты на материалы и покупные изделия

Материал,

покупное изделие

Количество,

ед.

Цена за ед.,

руб.

Сумма,

руб.

Сервер

4

36000

144000

Раб. станция

60

18000

1080000

Сетевое оборудование

8

1260

100800

Кабель

500 (м)

36

18000

Итого



1342800

В стоимость материальных затрат включаются также и транспортно-заготовительные расходы. Они составляют 10% от Змат.


Зтр = 0.1 * Змат

Зтр = 0.1 * 1342800 = 134280 руб.


Общая стоимость материальных затрат определяется как сумма Змат и Зтр.


Змато = Змат + Зтр

Змато = 1342800 + 134280 = 1477080 руб.


Накладные расходы составляют 250% от основной зарплаты производственного пресонала и считаются по формуле:


Зн = 2.5 * Зосн = 2ю5 * 50800 = 127000 руб.


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

Командировки составляют 20% от суммы основной и дополнительной заработных палат:


Зком = 0.2 * (Зосн + Здоп); Зком = 0.2 * (50800 + 10160) = 12192 руб.


Все расчеты по статьям калькуляции работы сведены в таблицу 2.3.

Таблица 2.3 Сметная калькуляция по теме.

N п/п

Статья расхода

Сумма, руб.

1.

Основная заработная плата

50800

2.

Дополнительная заработная плата

10160

3.

Отчисления на социальные нужды

23470

4.

Производственные командировки

12192

5.

Оплата работ, выполняемых сторонними организациями

-

6.

Накладные расходы

127000

7.

Материалы и покупные изделия

1477080


Итого

1700702


Таким образом себестоимость разработки составляет 1700702 руб.


С = 1700702 руб.


ОПРЕДЕЛЕНИЕ ДОГОВОРНОЙ ЦЕНЫ РАЗРАБОТКИ.

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


Цд = С + Фз. п. * Нр * К / 100, где (2.1)


С - себестоимость разработки,

Фз. п. - заработкая плата сотрудников, непосредственно участвующих в выполнении работы, руб.,

Нр - рентабельность,%,

К - коэффициент, учитывающий заработную плату обслуживающих и управленческих подразделений.

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


При С = 1700702 руб., Фз. п. = Зосн + Здоп = 60960 руб., Нр = 15%, К = 5


определим договорную цену на разработку:


Цд = 1700702 + 60960 * 15 * 5/100 =

= 1746422 руб.


Договорная цена разработки составила 1746422 руб.

ПЛАНИРОВАНИЕ РАБОТ ПО ТЕМЕ С ПРИМЕНЕНИЕМ СЕТЕВЫХ МЕТОДОВ.

Как правило, планирование работ по теме усложняется тем, что в работе участвуют несколько исполнителей, начало многих работ зависит от результатов других и т.д. В таких условиях наиболее удобными являются системы сетевого планирования и управления (СПУ).

Планирование НИР с применением сетевого метода ведется в следующем порядке:

составляется перечень событий и работ,

устанавливается топология сети,

строится сетевой график по теме,

определяется продолжительность работ,

рассчитываются параметры сетевого графика,

определяется продолжительность критического пути,

проводится анализ и оптимизация сетевого графика.

Перечень событий приведен в таблице 2.4, перечень работ и их продолжительности - в таблице 2.5. На основании этих перечней строится сетевой график, изображенный на рис.2.1.

Таблица 2.4 Перечень событий сетевого графика.

Код события

Событие

1.

ТЗ на систему разработано.

2.

ТЗ на систему утверждено.

3.

Спецификация закупаемых ТС разработана.

4.

Спецификация закупаемого ПО разработана.

5.

Спецификация закупаемых ТС утверждена.

6.

Спецификация закупаемого ПО утверждена.

7.

Входной контроль закупаемых ТС проведен.

8.

Входной контроль закупаемого ПО проведен.

9.

Стенд создан.

10.

Установлена и настроена сетевая ОС.

11.

Установлено антивирусное ПО.

12.

Установлены и отлажены специальные программные средства защиты информации.

13.

Разработана и выпущена инструкция по использованию антивирусного ПО.

14.

Разработана и выпущена инструкция по использованию встроенных средств защиты сетевой ОС.

15.

Определены требования к дополнительным программным средствам по защите информации.

16.

Разработана инструкция сетевому администратору по применению специальных средств защиты информации.

17.

Разработка рекомендаций по использованию средств защиты на ЛВС заказчика.

18.

Закончены работы по созданию системы защиты информации на ЛВС заказчика.

19.

Закончены работы по испытанию и сдаче заказчику системы.

20.

Оформлен протокол и акт испытаний.


Таблица 2.5 Перечень работ сетевого графика.

i-j

Работа

tmin

tmax

to

1-2

Утверждение ТЗ на систему.

25

30

27

2-3

Разработка спецификации закупаемых ТС.

5

7

6

2-4

Разработка спецификации закупаемого ПО.

10

12

11

3-5

Утверждение спецификации закупаемых ТС.

2

3

2

4-6

Утверждение спецификации закупаемого ПО.

3

4

3

5-7

Проведение входного контроля закупаемых ТС.

5

7

6

6-8

Проведение входного контроля закупаемого ПО.

10

14

12

7-9

Монтаж стенда.

10

15

12

9-10

Наладка стенда.

3

4

3

8-10

Установка сетевой ОС.

2

3

2

10-11

Установка антивирусного ПО.

2

3

2

10-12

Установка специальных программных средств защиты информации.

2

3

2

11-13

Разработка инструкции по использованию антивирусного ПО.

8

10

9

10-14

Разработка инструкции по использованию встроенных средств защиты сетевой ОС.

20

24

22

12-15

Формирование требований к дополнительным программным средствам по защите информации.

22

26

24

i-j

Работа

tmin

tmax

to

12-16

Разработка инструкции сетевому администратору по применению специальных средств защиты информации.

25

29

27

13-17

Выпуск инструкции по использованию антивирусного ПО.

5

8

6

14-17

Выпуск инструкции по использованию встроенных средств защиты сетевых ОС.

7

9

8

15-17

Выпуск инструкции по применению дополнительных программных средств защиты.

5

6

5

16-17

Выпуск инструкции сетевому администратору по применению специальных средств защиты.

5

7

6

17-18

Проведение работ по созданию системы защиты информации на ЛВС заказчика.

35

42

38

18-19

Проведение испытаний и сдача системы заказчику.

24

30

27

19-20

Оформление протокола и акта испытаний.

4

6

5


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

to = (3tmin + 2tmax) / 5, (2.2)


где to - ожидаемая продолжительность работ,

tmin - оптимистическая оценка,

tmax - пессимистическая оценка.

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

Любая последовательность работ в сети называется путем. Путь, имеющий наибольшую продолжительность называется критическим (Tкр). В данной работе критический путь равен 161 дня и выделен на рис.2.1 жирной линией.

Для расчета сети "в терминах событий" используются следующие понятия. Ранний срок наступления события (Tpi) - минимальный срок, необходимый для выполнения всех работ, предшествующих данному событию. Ранний срок наступления события i определяется по формуле:


Tpi = max е toij. (2.3)


Поздний срок наступления события (Tni) - максимально допустимый срок наступления события i, при котором сохраняется возможность соблюдения ранних сроков наступления последующих событий. Поздний срок определяется по формуле:


Tni = Tкр - max е to. (2.4)


Все события в сети, кроме лежащих на критическом пути имеют резерв времени (Ri), который определяется по формуле:


Ri = Tni - Tpi. (2.5)

При описании сети "в терминах работ" определяются ранние и поздние сроки начала и окончания работы. Ранний срок начала - Трнij = Трi, поздний срок начала - Тпнij = Tni - tij, ранний срок окончания - Троij = Трi + tij, поздний срок окончания - Тпоij = Tnj.

Работы сетевой модели могут иметь два вида резервов: полный (Rnij) и свободный (Rcij). Полный резерв показывает, на сколько может быть увеличена продолжительность данной работы или сдвинуто ее начало так, чтобы продолжительность максимального из проходящий через нее путей не превысила критического пути. Полный резерв определяется


Rnij = Tnj - Tpi - tij. (2.6)


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


Rcij = Tpj - Tpi - Tij. (2.7)


Результаты расчета параметров сетевого графика представлены в таблице 2.6


Таблица 2.6 Временные параметры работ сетевого графика.

i-j

toij

Tрнij

Троij

Тпнij

Tпоij

Rnij

Rcij

1-2

27

0

27

0

27

0

0

2-3

6

27

33

27

33

0

0

2-4

11

27

38

27

38

0

0

3-5

2

33

35

33

35

0

0

4-6

3

38

41

39

42

1

0

5-7

6

35

41

35

41

0

0

6-8

12

41

53

42

54

1

0

7-9

12

41

53

41

53

0

0

9-10

3

53

56

53

56

0

0

8-10

2

53

55

54

56

1

1

10-12

2

56

58

56

58

0

0

10-11

2

56

58

56

58

0

0

11-13

9

58

67

76

85

18

0

i-j

toij

Tрнij

Троij

Тпнij

Tпоij

Rnij

Rcij

10-14

22

56

78

56

78

0

0

12-15

24

58

82

62

86

4

0

12-16

27

58

85

58

95

10

0

13-17

6

67

73

85

91

18

18

14-17

8

78

86

83

91

5

5

15-17

5

82

87

86

91

4

4

16-17

6

85

91

85

91

0

0

17-18

38

91

129

91

129

0

0

18-19

27

129

156

128

156

0

0

19-20

5

156

161

156

161

0

0


Анализ сетевого графика включает классификацию и группировку работ по величине резервов (полных и свободных), определение коэффициентов напряженности путей, расчет вероятности наступления завершающего события в заданный срок.

Коэффициент напряженности пути Кн (L) определяется по формуле


Т (L) - Т’кр (L)

Кн (L) = - ---------- - , (2.8)

Ткр - Т’кр (L)


где Т (L) - продолжительность пути, для которого определяется коэффициент напряженности,

Т’кр (L) - продолжительность работ данного пути (L), совпадающих с работами критического пути.

Коэффициенты напряженности работ данной разработки приведены в таблице 2.7

Найдем вероятность выполнения всего комплекса работ (Рк) за директивный срок 162 дня. Эта вероятность определяется с помощью аргумента нормальной функции распределения вероятностей:

Tд - Tкр

x = - ------- - , (2.9)

Ц е s tкрij


где n - число работ, лежащих на критическом пути, Тд - директивный срок, s = 0,04 (tmax - tmin) - дисперсия работы i,j критического пути (значения дисперсий приведены в таблице 2.7).

Значение Рк находим по ее аргументу х, используя таблицу интегралов Фурье.


Таблица 2.7 Параметры сетевого графика.

i-j

Кн

stкрij

i-j

Кн

stкрij

1-2

1,0

1,0

10-12

1,0

0,04

2-3

1,0

0,16

10-14

0,2

0,64

2-4

0,08

0,16

11-13

0,1

0,16

3-5

1,0

0,04

12-15

0,23

0,64

4-6

0,1

0,04

12-16

1,0

0,64

5-7

1,0

0,16

13-17

0,16

0,36

6-8

0, 19

0,64

14-17

0,29

0,16

7-9

1,0

1,0

15-17

0,28

0,04

8-10

0,2

0,04

16-17

1,0

0,16

9-10

1,0

0,04

17-18

1,0

1,96

10-11

0,02

0,04

18-19

1,0

1,44




19-20

1,0

0,16


Аргумент нормальной функции распределения вероятностей равен 0,32. Используя таблицу интеграла Фурье, находим значение функции Рк = 0,63. Так как значение Рк попадает в интервал 0,35 < Рк < 0,65, то сетевой график не нуждается в оптимизации.

Рис.2.1 Сетевой график.

Приложение 1


Тексты программ

// inquiry. prj

// INQUIRYinquiry. c

// main (), initsearch (),mem_args ()

// программа обработки запросов

#include <stdio. h>

#include <stdlib. h>

#include <string. h>

#include <fcntl. h>

#include <sys/stat. h>

#include <io. h>

#include <dos. h>

#include <alloc. h>

#include "pxengine. h"

TABLEHANDLE tblh; // дескриптор таблицы

RECORDNUMBER low,high; // границы интервала поиска

int nflds; // кол-во полей в таблице

int nformat; // формат результата

int handle; // дескриптор файла

void interval (long date1,long date2,char *time1, char *time2); // определение границ интервала поиска

void search3 (char *argv [], int *x); // поиск с перечислениями

void search2 (char *argv [], int *x, int n); // поиск без перечислений

void search1 (void); // поиск только по дате и времени

void initsearch (char *argv [], int *x, int p, int n); // выбор варианта поиска

void recprint (int nformat); // расшифровка записи БД в строку и запись этой строки в файл

char sag [7] [81] ={

"ДАТА ВРЕМЯ ТЕКСТ СООБЩЕНИЯ rn",

"ДАТА ВРЕМЯ НАПР-Е А N РР ИСТ ВС ТЕКСТ СООБЩЕНИЯ rn",

"ДАТА ВРЕМЯ НАПР-Е N РР ТЕКСТ СООБЩЕНИЯ rn",

"ДАТА ВРЕМЯ НАПР-Е К-ВО ВС 1СЛ 2СЛ 3СЛ 4СЛ ТЕКСТ СООБЩЕНИЯ rn",

"ДАТА ВРЕМЯ ТИП-У П ВС ТЕКСТ СООБЩЕНИЯ rn",

"ДАТА ВРЕМЯ КСУМ0 КСУМ1 КСУМ2 КСУМ3 rn",

"ДАТА ВРЕМЯ КСУП1 КСУС1 КСУП2 КСУС2 КСУП3 КСУС3 rn"

}; // шапки таблиц

char *inqstr; // строки запроса

/* строка аргументов функции main:

argv [1] - имя файла БД; или "!", означающий, что строка аргументов передается через память;

argv [2] - вариант поиска; 0 - поиск по всей БД, 1 - поиск в едином интервале по дате и времени, 2 - поиск в интервале времени по каждому дню интервала дат, 3 - поиск за один день в интервале времени;

argv [3] - дата;

argv [4] - время;

argv [5] и далее - искомые значения полей БД (argv [5] - третьего поля, argv [6] - четвертого поля и т.д.); "-" обоз-

начает любое значение данного поля; в случае нескольких искомых значений по одному полю (перечисление) они разделяются запятыми; пробелы в значениях заменены на '_'. */

void main (int argc,char *argv [])

{

int *x; // x [i] - количество искомых значений по i-му полю

int n=0; // количество полей, для которых заданы значения для поиска

int p=0; // количество полей c перечислениями

// значения x,n,p определяются без учета полей даты и времени

char *name [] ={"all_inf","opi","shk","sbkdg","fk","ksum","ksum0"};

// имена баз данных

long date1,date2; // граничные значения интервала дат

int a, i,j,k;

char *c;

char **mem_args (void);

RECORDHANDLE rech;

RECORDNUMBER num;

// Получение аргументов в случае их передачи через память

if (argv [1] [0] =='! ')

{

argv=mem_args ();

for (argc=0; argv [argc] ! =NULL; ++argc);

}

// определение формата записи для базы данных, к которой

// произведен запрос

for (i=0; i<=6; ++i)

if (! strcmp (name [i],argv [1]) ||! strcmp (name [i],argv [1] +5))

{ nformat=i; break; }

// открытие файла результатов запроса (inquiry. res) и

// запись в него строк запроса и шапки таблицы

for (i=argc-1; argv [i] [0] =='-'; - -i) argc--;

handle=open ("inquiry. res",

O_CREAT | O_TRUNC | O_WRONLY,S_IREAD | S_IWRITE);

for (i=1,j=0; i<argc;)

{

inqstr= (char *) calloc (82,1);

memset (inqstr+1,' ',79);

inqstr [79] ='r';

inqstr [80] ='n';

inqstr [81] ='';

for (c=inqstr; i<argc; ++i)

{

if (strlen (inqstr) +strlen (argv [i]) >78+j)

{

if (strlen (argv [i]) >50 && (strlen (inqstr) <70 || strlen (argv [i]) >78))

{

for (k=j+77-strlen (inqstr); argv [i] [k] ! =','; - -k);

strcat (c," ");

strncat (c,argv [i] +j,k+1-j);

j=k+1;

}

break;

}

strcat (c," ");

strcat (c,argv [i] +j);

j=0;

}

inqstr [strlen (inqstr)] =' ';

_write (handle, inqstr,81);

free (inqstr);

}

_write (handle,sag [nformat],81);

// инициализация работы с БД

j=coreleft () /1024-50;

if (j>256) j=256;

if (a=PXSetDefaults (j,1,30,MAXLOCKHANDLES,3,SortOrderAscii)) printf ("n%s",PXErrMsg (a));

if (a=PXInit ()) printf ("n%s",PXErrMsg (a));

if (a=PXTblOpen (argv [1],&tblh,0,0)) printf ("n%s",PXErrMsg (a));

PXRecNFlds (tblh,&nflds);

x= (int *) calloc (argc+1,sizeof (int));

// разбор аргументов запроса

for (i=5; i<argc; ++i)

{

if (argv [i] [0] =='-') continue;

++n;

for (c=argv [i],j=1; *c! =''; ++c)

{

if (*c==',') ++j;

if (*c=='_') *c=' ';

}

x [i-2] =j;

if (j>1) ++p;

}

// главный блок

switch (argv [2] [0])

{

case '0': low=1; PXTblNRecs (tblh,&high);

initsearch (argv,x,p,n);

break;

case '1':

PXDateEncode (atoi (argv [3]),atoi (argv [3] +3),atoi (argv [3] +6),&date1);

PXDateEncode (atoi (argv [3] +11),atoi (argv [3] +14),atoi (argv [3] +17),&date2);

interval (date1,date2,argv [4],argv [4] +9);

initsearch (argv,x,p,n);

break;

case '2':

PXDateEncode (atoi (argv [3]),atoi (argv [3] +3),atoi (argv [3] +6),&date1);

PXDateEncode (atoi (argv [3] +11),atoi (argv [3] +14),atoi (argv [3] +17),&date2);

interval (date1,date2,argv [4],argv [4] +9);

if (low==1 &&! high) break;

if (low==1)

{

PXRecBufOpen (tblh,&rech);

PXRecGet (tblh,rech);

PXGetDate (rech,1,&date1);

PXRecBufClose (rech);

}

PXTblNRecs (tblh,&num);

if (high==num)

{

PXRecBufOpen (tblh,&rech);

PXRecLast (tblh);

PXRecGet (tblh,rech);

PXGetDate (rech,1,&date2);

PXRecBufClose (rech);

}

for (; date1<=date2; ++date1)

{

interval (date1,date1,argv [4],argv [4] +9);

if (low>high) continue;

initsearch (argv,x,p,n);

}

break;

case '3':

PXDateEncode (atoi (argv [3]),atoi (argv [3] +3),atoi (argv [3] +6),&date1);

interval (date1,date1,argv [4],argv [4] +9);

initsearch (argv,x,p,n);

}

free (x);

if (a=PXTblClose (tblh)) printf ("n%s",PXErrMsg (a));

PXExit ();

close (handle);

}

// initsearch

// выбор функции поиска

void initsearch (char *argv [], int *x, int p, int n)

{

if (low>high) return;

if (p) search3 (argv+5,x);

else if (n) search2 (argv,x,n);

else search1 ();

}

// Функция mem_args возвращает адрес строки параметров в случае ее передачи через память

#include "conn_mem. h"

char **mem_args ()

{

char ***dat;

dat= (char ***) conn_mem ();

return dat [ARGS_OFF/4] ;

}

// bs2_inq. prj

// INQUIRYinterval. c

// interval ()

// определение граничных номеров интервала поиска

#include <stdio. h>

#include <stdlib. h>

#include "pxengine. h"

#include "def. h"

void interval (long date1,long date2,char *time1,char *time2)

{

RECORDHANDLE rech;

itoa (atoi (time2+6) +1,time2+6,10);

PXRecBufOpen (tblh,&rech);

PXPutDate (rech,1,date2);

PXPutAlpha (rech,2,time2);

if (PXRecInsert (tblh,rech)) printf ("error");

PXRecNum (tblh,&high);

high;

PXRecDelete (tblh);

PXPutDate (rech,1,date1);

PXPutAlpha (rech,2,time1);

if (PXRecInsert (tblh,rech)) printf ("error");

if (PXRecNum (tblh,&low)) printf ("error");

PXRecDelete (tblh);

PXRecBufClose (rech);

}

// inquiry. prj

// INQUIRYrecprint. c

// recprint ()

// форматирование и запись в файл найденной строки

#include <stdio. h>

#include <mem. h>

#include <io. h>

#include <dos. h>

#include "pxengine. h"

#include "def. h"

#include "disp. h"

void recprint ()

{

long date;

int month,day,year;

int format [7] [7] = { {21,0,0,0,0,0,0},{21,28,30,35,38,42,46},

{21,29,34,37,0,0,0},{ 21,29,35,38,43,48,53 },

{ 21,27,29,33,0,0,0 },{ 21,28,35,42,49,0,0 },

{ 21,28,35,42,49,56,63 } };

static char string [82] ; // результирующая строка

RECORDHANDLE rech;

union REGS r;

int a, i;

memset (string,' ',82);

PXRecBufOpen (tblh,&rech);

PXRecGet (tblh,rech);

PXGetDate (rech,1,&date);

PXDateDecode (date,&month,&day,&year);

sprintf (string,"%.02d\%.02d\%.04d ",month,day,year);

PXGetAlpha (rech,2,10,string+11);

for (i=3; i<=nflds; ++i)

PXGetAlpha (rech, i,sizeof (string) - format [nformat] [i-2],

string+format [nformat] [i-3] -1);

for (i=0; i<=80; ++i) if (string [i] =='') string [i] =' ';

string [79] ='r';

string [80] ='n';

_write (handle,string,81);

PXRecBufClose (rech);

// передача управления диспетчеру

// (только для передачи cимвола на принтер!)

// после каждой найденной записи

r. h. ah=1;

int86 (DISP,&r,&r);

}

// inquiry. prj

// INQUIRYsearch12. c

// search1 (),search2 (), (search3 () см в файле search3. c)

// search1 - все записи в заданном интервале

// search2 - задано не более одного искомого значения по каждому полю

// search3 - более одного искомого значения xотя бы по одному полю

/* исходные данные:

int *x;, где x [i] - количество искомых значений по i-му полю (только для search2)

char *argv [] - см. комментарии в inquiry. c (только для search2)

RECORDNUMBER low,high; - границы интервала поиска */

#include <stdlib. h>

#include "pxengine. h"

#include "def. h"

void search2 (char *argv [], int *x, int n)

{

int a, i,j=0,*y;

int yes;

char *c,*c2;

char arg [10] ;

RECORDHANDLE *rec;

RECORDNUMBER *s,max=low;

s= (long *) calloc (n,sizeof (RECORDNUMBER));

rec= (unsigned int *) calloc (n,sizeof (RECORDHANDLE));

y= (int *) calloc (n,sizeof (int));

for (i=3; j<n; ++i)

{

if (! x [i]) continue;

PXRecBufOpen (tblh,rec+j);

PXPutAlpha (rec [j], i,argv [i+2]);

y [j++] =i;

}

while (1)

{

for (i=0; i<n; ++i)

{

if (max==1)

{

if (! (a=PXSrchFld (tblh,rec [i],y [i],SEARCHFIRST)))

PXRecNum (tblh,&s [i]);

}

else

if (s [i] <max)

{

PXRecGoto (tblh,max-1);

if (! (a=PXSrchFld (tblh,rec [i],y [i],SEARCHNEXT)))

PXRecNum (tblh,&s [i]);

}

if (a||s [i] >high)

{

free (s); free (rec); free (y);

return;

}

}

for (i=1,yes=1,max=s [0] ; i<n; ++i)

{

if (s [i] ! =max) yes=0;

if (s [i] >max) max=s [i] ;

}

if (yes) { ++max; recprint (); }

}

}

void search1 (void)

{

RECORDNUMBER i;

for (i=low; i<=high; ++i)

{

recprint ();

PXRecNext (tblh);

}

}

// inquiry. prj

// INQUIRYsearch3. c

// search3 ()

// поиск

/* исходные данные:

int *x;, где x [i] - количество искомых значений по i-му полю

char *args [] - искомые значения полей БД (args [0] - третьего поля, argv [1] - четвертого поля и т.д.);

RECORDNUMBER low,high; - границы интервала поиска */

// search1 - все записи в заданном интервале

// search2 - не более одного искомого значения по каждому полю

// search3 - более одного искомого значения xотя бы по одному полю

#include <stdlib. h>

#include <stdio. h>

#include "pxengine. h"

#include "def. h"

void search3 (char *args [], int *x)

{

/*


rec - массив массивов буферов для поиска, его размерность равна количеству полей в таблице. Размерность каждого

Если Вам нужна помощь с академической работой (курсовая, контрольная, диплом, реферат и т.д.), обратитесь к нашим специалистам. Более 90000 специалистов готовы Вам помочь.
Бесплатные корректировки и доработки. Бесплатная оценка стоимости работы.

Поможем написать работу на аналогичную тему

Получить выполненную работу или консультацию специалиста по вашему учебному проекту
Нужна помощь в написании работы?
Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Пишем статьи РИНЦ, ВАК, Scopus. Помогаем в публикации. Правки вносим бесплатно.

Похожие рефераты: