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

Реализация алгоритма обработки данных и
ведения реляционной базы данных. а) По какому файлу проводится главный цикл обработки ? - (п.п., которая осуществляет
выявление всех случаев превышения нормативных интервалов между профилактиками,
вывод их в выводной файл "DD", а также осуществляет выдачу ведомости на принтер)
проводится по файлу Пример: INDEX ON <ключевое
выражение> TO <имя индексного файла> INDEX - команда обработки базы
данных, которая создает файлы, содержащие индексы базы данных на основе значения
аргумента <ключевое выражение>. При использовании индексного файла записи
базы данных обрабатываются в последовательности, заданной ключевым выражением,
однако физический порядок следования записей базы данных остается неизменным.
INDEX обеспечивает последовательность записей, упорядоченную по значениям
ключевого выражения. Для ключей типа CHARACTER - в соответствии со значением
ASCII кода каждого символа внутри строки, для ключей типа NUMERIC - в
соответствии с числовым порядком, для ключей типа дата - в хронологическом
порядке и для логических - считается, что истина (.Т.) - более высокого
порядка. Хотя команда SET FILTER делает так, что файл в рабочей области выглядит
состоящим из подмножества записей, на самом деле последовательно обрабатываются
все его записи. Фильтры не применяются, т.к время работы с фильтрованной и
нефильтрованной рабочей областью оказывается одним и тем же. Пример: б) set relat to cc->idst into aa additive Связь по полю "idst".
Принципы подготовки данных для тестового примера и
заполнения исходных данных. 2) Инвентарный номер станка заполнялся по убыванию (от 1 до 18), где 1- первая запись, а
18- последняя. Дата профилактики выбиралась так, чтобы норма кол-ва дней между
профилактиками была превышена для всех видов профилактик. 2) Заново построить все индексы Базы Данных При выборе п.1, если
индексы уже имеются мы попадаем в меню № 2. При выборе п.3 производится компрессия
(уплотнение) Б.Д . П.а) Сохранить все
внесенные изменения и продолжить 1) Ведение файла
"Нормативы профилактики оборудования" 4) Выход из Базы
Данных При выборе п.1 мы попадаем в редактор файла aa.dbf - ("Нормативы
профилактики оборудования"),где мы можем его просматривать и редактировать.
При выборе п.2 мы попадаем в редактор файла bb.dbf - ("Профилактика"),
где мы можем его просматривать и редактировать. При выборе п.3 происходит
выявление всех случаев превышения нормативных интервалов между профилактиками,
вывод их в выводной файл "DD", а также выдача ведомости на принтер. Какими табл. представлено ведение БД, по какой табл. указывается
текущая рабочая область, её слуги, колонки таблицы, набор клавиш на которые
предусмотрена реакция системы. / /; PgUp / PgDn;
Home / End - Перемещение курсора Esc - Возврат на шаг назад. Отмена редактирования (без
сохранения изменненого значения) F10 - Выход из задачи с сохранением всей информации или выход без сохранения
информации .prg.obj: aa.obj : aa.prg б) Имена и
содержание prg-файлов. По каждой функции: имя, назначение, параметры, тип данных
и смысл, возвращенное значение, рабочие перемен-ные и их назначение. 1. Создание TBrowse-объекта для просмотра-редактирования файла
aa.dbf в окне. 1. Создание
TBrowse-объекта для просмотра-редактирования файла bb.dbf в окне. 3. Уплотнение файла . 4. Выявление всех случаев
превышения нормативных интервалов между профилактиками, вывод их в выводной файл
"DD", а также выдача ведомости на принтер. Эта программа содержит набор
стандартных утилит: 3. Координаты,
сообщение, цвет. 5. Подача звукового сигнала для сигнализации успешного
выполнения func
db_index(prm) @ 24,6 SAY "Ждите идет индексирование! " COLOR "w+*/n" use cc return
nil use bb index bb0001 new FUNCTION db_compress() @ 24,6 SAY "Ждите идет уплотнение !"
COLOR ("w+*/n") RENAME work.dbf TO aa.dbf RENAME work.dbf TO bb.dbf RENAME work.dbf TO cc.dbf RENAME work.dbf TO dd.dbf 4) п.п. выдачи информации о клавишах, на которые реагирует система
"Help": ccol = COL() @ 22,0 SAY "Enter/" + CHR(24) + '/' +
CHR(25) + '/PgUp/PgDn' ; @ 22,0 SAY "Enter/"+ CHR(24) + '/' + CHR(25) +
'/PgUp/PgDn' COLOR "r+/n" + ' / ^' + CHR(27) + ' / Home / End - Перемещение курсора' @ 24,1 SAY 'Esc - Отменить редактирование ' ; IF callpnt="AAED" .OR. callpnt="BBED" + CHR(27) + ' / ^'
+ CHR(26) + " PgUp / PgDn " ; @ 23,23 TO 24,23
DOUBLE @ 23,54 TO 24,54 DOUBLE @
22,1 SAY chr(24) + " / " + chr(25) + " / " + CHR(26) + ' / ' ; @ 23,55 SAY 'F8' @ 22,1 SAY chr(24)
+ " / " + chr(25) + " / " + CHR(26) + ' / ' ; @ 24,0 SAY 'Enter - Редактирование ' @ 23,25 SAY 'Esc' COLOR
"r+/n" @ 23,54 TO 24,54 DOUBLE @
22,1 SAY chr(24) + " / " + chr(25) + " / " + CHR(26) + ' / ' ; @ 23,55 SAY 'F8' 5) п.п. выявления всех случаев
превышения нормативных интервалов между профилактиками, вывода их в выводной
файл "DD", а также выдачи ведомости на принтер: lin:=space(17)+"Таблица нарушение норм техобслуживания:" sitog:=0 tidst:=cc-
>idst replace dd->invnom with tinvnom replace dd->idzappp with tidzap enddo lin:="¦ Инв.¦ Наименование ¦ Дата ¦ Вид
предвор. ¦ Дата ¦ вид след. ¦Просроч.¦" lin:="¦-----+--------------+--
------+--------------+--------+--------------+--------¦" tinvnom:=dd->invnom if(tinvnom=bb-
>invnom).and.(idpop=bb->idzap) idpop:=dd->idzapsp lin:=lin+"
¦"+dtoc(bb->dateprof)+"¦ "+bb->vidprof+"¦
" lin:="+------------------------------
-----------------------------------------------+" inkey(0) func
sound FUNC s_scr(t,l,b,r) IF r = NIL AADD( wind[5],
SAVESCREEN(t,l,b,r) ) RETURN .T. @ 24,0 SAY ' Ошибка - стек для восстановления параметров пуст ' ASIZE(wind[1],ln-1) SETPOS(
pos[1,ln], pos[2,ln] ) ASIZE(curs,ln-
1) 9) п.п. определения - нажата ли клавиша типового метода,
если да - то возвращает блок кода с соответствующим методом, если нет - то
возвращает NIL. Параметр функции - INKEY-код нажатой клавиши. , {K_UP , {o o:up() } } ; ,
{K_CTRL_PGUP , {o o:gotop() } } ; ,
{K_CTRL_LEFT , {o o:panleft() } } ; , {K_CTRL_HOME ,
{o o:panhome() } } } RETURN ret READINSERT(.F.) 11) п.п. перевода
в верхний регистр латиницы и кириллицы: cs
:= ASC( smb ) CASE cs >= 160 .AND. cs
<= 175 prm := STUFF( prm , i , 1 ,
CHR( cs ) ) 12) п.п. выхода из задачи с
сохранением всей информации - реакция на клавишу F10: + "работу с Базой данных - т.е. сделать промежуточный SAVE или;" ; , {"
Сохранить и продолжить " , " Завершить работу " } ) 13) п.п.
вывода сообщения на экран с заданными координатами и цветом:
IF ml=0 && .OR. ml > 80
ENDIF RETURN
FUNCTION aaCr(t,l,b,r) chdr := "Идент. типа
станка" chdr := " Наименование
типа станка" chdr := "
Норма,дней" brws:headsep := CHR(205) 15) п.п. просмотра файла
aa.dbf с обработкой нажимаемых клавиш и вызовом соответствующих методов или
пользовательских функций: LOCAL t := brws:nTop , l := brws:nLeft
, b := brws:nBottom , r := brws:nRight SETCOLOR(
"gr+/b,w+/gr") DO WHILE .NOT. ret_fl DO WHILE
( NEXTKEY() == 0 ) .AND. ( .NOT. brws:stabilize() ) SETCOLOR("bg+/b") @ b+2 , COL()+1 SAY aa-
>namest COLOR "w+/b" // если нажата клавиша типового
метода - вызовем его CASE ( bHotkey := SETKEY( nKey ) ) <>
NIL // потрогаем файловый указатель, если IF
RECNO() = RECCOUNT()+1 ret_fl := .T. //
завершение просмотра , " Редактирование файла aa.dbf" ) ENDIF 16) п.п. выполнения GET в текущей колонке файла
aa.dbf: LOCAL
retcurs,retexit // форма курсора и режим выхода из READ LOCAL indch := .F. // флаг изменений значений
полей, входящих в c := COL() // Установка
клавиш Up-Arrow и Down-Arrow как клавиш выхода из // режима
вставка/замена // эквивалентно Set Key K_INS To Procedure
Repl_Ins retcurs :=
SetCursor( IF(ReadInsert(), SC_NORMAL, SC_INSERT ) )
SETCOLOR("gr+/n,w+/g") IF .NOT.( LASTKEY() = K_ESC ).OR.(
aa->idst == w ) @ r,c+2 GET n CASE brws:colpos = 3 REPLACE aa-
>norma WITH w brws:RefreshCurrent() //
Обеспечить перерисовку текущей строки, // Восстановление формы курсора и режима выхода из READ по стрелкам // Проверка требования ухода с текущей записи после
GET // управление курсором -- переход к другой
записи