Реализация алгоритма обработки данных

Информация - Компьютеры, программирование

Другие материалы по предмету Компьютеры, программирование

?едактирования файла aa.dbf в окне.

 

2) bb.prg

В этой программе реализовано:

1. Создание TBrowse-объекта для просмотра-редактирования файла bb.dbf в окне.

 

3) main2.prg

В этой программе реализовано:

1.Организация меню.

2. Индексирование файлов.

3. Уплотнение файла .

4. Выявление всех случаев превышения нормативных интервалов между профилактиками, вывод их в выводной файл “DD”, а также выдача ведомости на принтер.

5. Вывод на экран информации о “горячих” клавишах.

 

4) util.prg

Эта программа содержит набор стандартных утилит:

1. Сохранение экрана, восстановление экрана.

2. Перевод в верхний регистр как латиницы, так и кириллицы.

3. Координаты, сообщение, цвет.

4. Выход из задачи с сохранением всей информации - реакция на клавишу F10.

5. Подача звукового сигнала для сигнализации успешного выполнения

поставленной задачи:

 

Описание основных подпрограмм:

1) п.п. постоения индексов:

func db_index(prm)

s_scr(24,0,25,79)

CLOSE ALL

SETCOLOR ("w/n")

@ 24,0 CLEAR TO 25,79

@ 24,6 SAY "Ждите идет индексирование! " COLOR "w+*/n"

use bb

index on bb->invnom + dtoc(bb->dateprof) to bb0001

use aa

index on aa->idst to aa0002

use cc

index on cc->invnom to cc0003

use dd

index on dd->(norma-fkdn) to dd0004

close all

r_scr()

return nil

 

2) п.п. открытия индексов:

func db_open

close all

use aa index aa0002

use bb index bb0001 new

use cc index cc0003 new

use dd index dd0004 new

return nil

 

3) п.п. уплотнения Б.Д. :

FUNCTION db_compress()

s_scr(24,0,25,79)

CLOSE ALL

SETCOLOR("w/n")

@ 24,0 CLEAR TO 25,79

@ 24,6 SAY "Ждите идет уплотнение !" COLOR ("w+*/n")

USE aa // уплотнение файла aa.dbf

COPY TO work

IF ERRORLEVEL() = 0

USE

DELETE FILE aa.dbf

RENAME work.dbf TO aa.dbf

ENDIF

USE bb // уплотнение файла bb.dbf

COPY TO work

IF ERRORLEVEL() = 0

USE

DELETE FILE bb.dbf

RENAME work.dbf TO bb.dbf

ENDIF

USE cc // уплотнение файла cc.dbf

COPY TO work

IF ERRORLEVEL() = 0

USE

DELETE FILE cc.dbf

RENAME work.dbf TO cc.dbf

ENDIF

USE dd // уплотнение файла dd.dbf

COPY TO work

IF ERRORLEVEL() = 0

USE

DELETE FILE dd.dbf

RENAME work.dbf TO dd.dbf

ENDIF

CLOSE ALL

r_scr()

RETURN NIL

 

4) п.п. выдачи информации о клавишах, на которые реагирует система ”Help”:

PROCEDURE hlp(callpnt,prm)

LOCAL retcol,crow,ccol

IF prm = NIL

prm := .F.

ENDIF

crow = ROW()

ccol = COL()

retcol = SETCOLOR("w/n")

@ 22,0 CLEAR TO 24,79

IF callpnt = "GET"

// исправленный HLP для GET 26.09.96

@ 22,0 SAY "Enter/" + CHR(24) + / + CHR(25) + /PgUp/PgDn ;

+ " -Завершить редактирование с сохранением измененного значения"

@ 22,0 SAY "Enter/"+ CHR(24) + / + CHR(25) + /PgUp/PgDn COLOR "r+/n"

@ 23,1 SAY CHR(26) + / + CHR(27) + / ^ + CHR(26) ;

+ / ^ + CHR(27) + / Home / End - Перемещение курсора

@ 23,1 SAY CHR(26) + / + CHR(27) + / ^ + CHR(26) ;

+ / ^ + CHR(27) + / Home / End COLOR "r+/n"

@ 24,1 SAY Esc - Отменить редактирование ;

+ ( без сохранения измененного значения )

@ 24,1 SAY "Esc" COLOR "r+/n"

ENDIF

IF callpnt="AAED" .OR. callpnt="BBED"

SET COLOR TO ("w/n")

@ 22,1 SAY chr(24) + " / " + chr(25) + " / " + CHR(26) + / ;

+ CHR(27) + / ^ + CHR(26) + " PgUp / PgDn " ;

+ / ^ + CHR(27) + / Home / End - Перемещение курсора

@ 24,0 SAY Enter - Редактирование

@ 23,23 TO 24,23 DOUBLE

@ 23,25 SAY Esc - Возврат на шаг назад COLOR "w/n"

@ 23,25 SAY Esc COLOR "r+/n"

@ 23,54 TO 24,54 DOUBLE

@ 23,55 SAY F8 - Удалить строку

@ 24,55 SAY F3 - Вставить строку

SET COLOR TO ("r+/n")

@ 22,1 SAY chr(24) + " / " + chr(25) + " / " + CHR(26) + / ;

+ CHR(27) + / ^ + CHR(26) + " PgUp / PgDn " ;

+ / ^ + CHR(27) + / Home / End

@ 24,0 SAY Enter

@ 23,55 SAY F8

@ 24,55 SAY F3

ENDIF

IF callpnt="CCED" .OR. callpnt="DDED"

SET COLOR TO ("w/n")

@ 22,1 SAY chr(24) + " / " + chr(25) + " / " + CHR(26) + / ;

+ CHR(27) + / ^ + CHR(26) + " PgUp / PgDn " ;

+ / ^ + CHR(27) + / Home / End - Перемещение курсора

@ 24,0 SAY Enter - Редактирование

@ 23,23 TO 24,23 DOUBLE

@ 23,25 SAY Esc - Возврат на шаг назад COLOR "w/n"

@ 23,25 SAY Esc COLOR "r+/n"

@ 24,25 SAY ^Enter - Выбор значения COLOR "w/n"

@ 24,25 SAY ^Enter COLOR "r+/n"

@ 23,54 TO 24,54 DOUBLE

@ 23,55 SAY F8 - Удалить строку

@ 24,55 SAY F3 - Вставить строку

SET COLOR TO ("r+/n")

@ 22,1 SAY chr(24) + " / " + chr(25) + " / " + CHR(26) + / ;

+ CHR(27) + / ^ + CHR(26) + " PgUp / PgDn " ;

+ / ^ + CHR(27) + / Home / End

@ 24,0 SAY Enter

@ 23,55 SAY F8

@ 24,55 SAY F3

ENDIF

SET COLOR TO (retcol)

SETPOS(crow,ccol)

RETURN

 

5) п.п. выявления всех случаев превышения нормативных интервалов между профилактиками, вывода их в выводной файл “DD”, а также выдачи ведомости на принтер:

func vedom

local tinvnom,sitog,tdata,tidzap,tidst,idpop

set printer on

select dd

zap

lin:=space(17)+"Таблица нарушение норм техобслуживания:"

? lin

select bb

set relat to bb->invnom into cc

set relat to cc->idst into aa additive

go top

sitog:=0

do while .not. eof()

tinvnom:=bb->invnom

tdata:=bb->dateprof

tidzap:=bb->idzap

tidst:=cc->idst

skip

if(bb->invnom=tinvnom).and.(bb->dateprof-tdata>aa->norma)

select dd

append blank

replace dd->invnom with tinvnom

replace dd->fkdn with bb->dateprof-tdata

replace dd->norma with aa->norma

replace dd->idzappp with tidzap

replace dd->idzapsp with bb->idzap

sitog:=sitog+(dd->fkdn-dd->norma)

select bb

endif

enddo

lin:="+-----------------------------------------------------------------------------+"

? lin

lin:=" Инв. Наименование Дата Вид предвор. Дата вид след. Просроч."

? lin

lin:="номер типа станка профилактики профилактики дней "

? lin

lin:="-----+--------------+--------+--------------+--------+--------------+--------"

? lin

select dd

set relat to dd->invnom into cc additive

go top

do while .not. eof()