Допомога у написанні освітніх робіт...
Допоможемо швидко та з гарантією якості!

Ведение реляційної БД на з. CLIPPER 5.02

РефератДопомога в написанніДізнатися вартістьмоєї роботи

ENDDO IF (NEXTKEY () == 0) .AND. (RECNO () nrc) nrc := RECNO () rr := ROW () cc := COL () SETCOLOR («bg+/b «) @ t-2, l+1 SAY «Нормативи профілактики устаткування: «@ b+2, l+1 SAY «Тип верстата: «@ b+2, COL ()+1 SAY aa→namest COLOR «w+/b «SETPOS (rr, cc) ENDIF SETCOLOR («gr+/rb «) ** очікуємо натискання клавіші nkey := Inkey (0) // якщо натиснута клавіша типового методу — викличемо його blk… Читати ще >

Ведение реляційної БД на з. CLIPPER 5.02 (реферат, курсова, диплом, контрольна)

МОСКОВСЬКА ДЕРЖАВНА ТЕКСТИЛЬНА АКАДЕМІЯ їм. КОСЫГИНА.

Кафедра ІТ і ВТ.

До У Р З Про У, А Я Р, А Б Про Т А.

Тема: «Розробка програмного забезпечення, ведення бази даних, і отримання відомості з частковими суммами.».

за курсом: «Алгоритмічні мови й технологія програмирования «.

Выполнил:

Пономарьов О.Н. гр.42−96.

Керівник: доц. Стрельников Б. А. ас. Степанова О.П.

МОСКВА.

1998 2. ЗАДАНИЕ:

ТЕМА КУРСОВОЙ РОБОТИ: Реалізація алгоритму обробки даних, і ведення реляційної бази данных.

ВИХІДНІ ДАННЫЕ:

Індивідуальне завдання з описом бази даних, і яку за результаті цієї війни обробки відомості з частковими і з повними суммами.

ПЕРЕЛІК ЯКІ ПІДЛЯГАЮТЬ РОЗРОБКИ ЗАПИТАНЬ (ЗМІСТ РАСЧЕТНОПОЯСНЮВАЛЬНІЙ ЗАПИСКИ).

1. Розробити структури файлів і створити макет бази данных.

2. Розробити алгоритм обробки даних щоб одержати ведомости.

3. Скласти відрегулювати програму отримання ведомости.

4. Разраб. форми екранних кадрів меню для ведення базыданных.

5. Скласти відрегулювати програму реалізації екранного кадру для перегляду основных (ой) таблиц (ы).

6. Доповнити програму п. 5 можливістю видалення і додавання рядків таблицу.

7. Доповнити програму п. 5 можливістю зміни инф-ии в таблице.

8. Скласти відрегулювати процедури оперативного ведення довідників бази данных.

9. Разраб. единую систему меню для ведення бази даних, і її обробки для одержання ведомости.

10. Розробити систему інтерфейсу користувача (підказки про клавішах, куди передбачена реакція системи та допомогу пользователю).

ПЕРЕЧЕНЬ ГРАФІЧНОГО МАТЕРИАЛА.

1. Структури файлів бази даних, і їх заповнення для тестового примера.

2. Макети екранних кадрів склад підказок для пунктів очікування введення від пользователя.

3. Відомість, отримувана у виконання тестового примера.

МАТЕМАТИЧЕСКИЕ МОДЕЛИ.

Забезпечити модульну структуру програми. (програма складається з кількох PRG-файлов, включаючи PRG-файл типових утиліт. Кожен PRG-файл складається з функцій чи процедур, наділених коментарями.).

ТЕХНИЧЕСКИЕ СРЕДСТВА:

ПЕОМ IBM.

Система програмування Clipper 5.2.

3. ІНДИВІДУАЛЬНЕ ЗАДАНИЕ.

Є файли: АА — нормативи профілактики оборудования,.

ВР — профілактики та СС — склад оборудования.

АА: 1. Ідентифікатор типу верстата ВР: 1. Інвентарний номер станка.

2. Найменування типу верстата 2. Вигляд профилактики.

3. Норма кол-ва днів між 3. Дата профілактики профилактиками 4. Ідентифікатор записи.

СС: 1. Інвентарний номер

2. Ідентифікатор типу станка.

Виявити всі випадки перевищення нормативних інтервалів між профилактиками і вивести в вивідний файл DD:

1. Инв.№.

2. Фактичне у днів між профилактиками.

3. Нормативне у дней.

4. Иден-тор записи перед. проф-ки.

5. Иден-тор записи слід. проф-ки На принтер вивести відомість, впорядковану по спадаючій кол-ва прострочених дней:

Порушення норм техобслуговування Инв.№ /Тип Дата/Вид пред. проф-ки Дата /Вигляд след. проф-ки Просрочено, днів Инв.№ /Тип Дата /Вигляд пред. проф-ки Дата /Вигляд след. проф-ки Просрочено, днів Инв.№ /Тип Дата /Вигляд пред. проф-ки Дата /Вигляд след. проф-ки Просрочено, дней.

.. .. .. ... .

Загальне у днів прострочення СУММА.

4.Анализ обробки БД його отримання :

а) За яким файлу проводиться головний цикл обробки ?

Головний цикл обробки подпрограмме vedom — (в.п., яка осуществляет виявлення всіх випадків перевищення нормативних інтервалів між профилактиками, передача управління ними в вивідний файл «DD», і навіть здійснює видачу відомості на принтер) проходить за файлу bb. dbf .

б) як він може бути упорядкований ?

Вона має бути упорядкований в хронологічному порядку. Приклад: index on bb->invnom + dtoc (bb->dateprof) to bb0001 Справка:

Синтаксис:

INDEX ON TO INDEX — команда обробки бази даних, що створює файли, містять індекси бази даних з урахуванням значення аргументу. З використанням індексного файла записи бази даних обробляються в послідовності, заданої ключовим вираженням, проте фізичний порядок прямування записів бази даних залишається незмінною. INDEX забезпечує послідовність записів, впорядковану по значенням ключового висловлювання. Для ключів типу CHARACTER — відповідно до значенням ASCII коду кожного символу всередині рядки, для ключів типу NUMERIC — відповідно до числовим порядком, для ключів типу дата — в хронологічному порядку й у логічних — вважається, що істина (.Т.) — вищого порядку. Memo-поля неможливо знайти индексированы.

в) Застосовуються чи фільтри ?

Хоча команда SET FILTER робить отже файл у робітничій области выглядит що складається з підмножини записів, насправді послідовно обробляються усі його записи.

Фільтри не застосовуються, т. к час з фильтрованной і нефільтрованій робочої областю виявляється у тому же.

р) Чи є зв’язку «хозяин-слуга» і з яких полях ?

У подпрограмме vedom є зв’язку. Приклад: а) set relat to bb->invnom into cc.

Зв’язок полем «invnom». б) set relat to cc->idst into aa additive.

Зв’язок полем «idst». в) set relat to dd->invnom into cc additive.

Зв’язок полем «invnom». … … 5. Структура dbf-файлов (ім'я, тип, формат, кожного поля):

a) Структура файла aa. dbf :

IDST NAMEST NORMA.

1 Строгальный 25.

2 Свердлильний 15.

3 Токарському 20 … …

Ім'я Тип Длина.

IDST Символ 3.

NAMEST Символ 12.

NORMA Кількість 3.

б) Структура файла bb. dbf :

INVNOM VIDPROF DATEPROF IDZAP.

24 Мастило 09−01−98 1.

4 Змащування 09−01−98 2.

231 Мастило 09−01−98 3.

2 Мастило 09−01−98 4.

626 Змащування 09−01−98 5.

323 Мастило 09−01−98 6.

626 Регулювання 01−02−98 7.

323 Регулювання 28−01−98 8.

2 Регулювання 29−01−98 9.

231 Регулювання 28−01−98 10.

4 Регулювання 19−01−98 11.

24 Регулювання 18−01−98 12.

626 Чистка 31−03−98 13.

323 Чистка 15−04−98 14.

2 Чистка 01−04−98 15.

231 Чистка 20−03−98 16.

4 Чистка 10−03−98 17.

24 Чистка 02−04−98 18 … …

Ім'я Тип Длина.

INVNOM Символ 3.

VIDPROF Символ 12.

DATEPROF Дата 8.

IDZAP Символ 3.

в) Структура файла сс. dbf :

INVNOM IDST.

323 1.

626 1.

4 2.

231 3.

24 2.

2 3 … …

Ім'я Тип Длина.

INVNOM Символ 3.

IDST Символ 3.

г) Структура файла dd. dbf :

INVNOM FKDN NORMA IDZAPPP IDZAPSP.

2 62 20 9.

231 51 20 10.

24 74 15 12.

323 77 25 8.

4 50 15 11.

626 58 25 7.

… …

Ім'я Тип Длина.

INVNOM Символ 3.

FKDN Кількість 3.

NORMA Кількість 3.

IDZAPPP Символ 3.

IDZAPSP Символ 3 … …

6. Принципи підготовки даних для тестового прикладу і заповнення вихідних данных.

Эти дані було обрано довільно — «з голови»: 1) Ідентифікатор типу верстата 2) Інвентарний номер верстата 3) Вигляд профілактики 4) Найменування типу станка Идентификатор запис у файлі bb. dbf заповнювався по спадаючій (від 1 до 18), де 1- перша запис, а 18- последняя.

Норма кол-ва днів між профилактиками було обрано произвольна.

Дата профілактики вибиралась те щоб норма кол-ва днів між профилактиками була перевищена всім видів профилактик. … …

7. Система меню.

а) Які екранні кадри ?

Екранний кадр № 1:

Московська державна текстильна академія (МГТА).

БАЗА ДАНИХ Порушення норм техобслуживания:

Курсова робота з курсу :

" Алгоритмічні мови обробки даних, і технологія програмування «.

студента грн 42/96 Пономарёва А.Н.

*************************.

Руководитель:

доц. Стрельников Б.А.

ас. Степанова О.П.

Відразу розпочати роботу з Базою Данных.

Наново споруджувати індекси Бази Данных.

Провести компресію Бази Данных.

Вихід із Бази Данных.

Екранний кадр № 2:

Московська державна текстильна академія (МГТА).

БАЗА ДАНИХ Порушення норм техобслуживания:

Курсова робота з курсу :

" Алгоритмічні мови обробки даних, і технологія програмування «.

студента грн 42/96 Пономарёва А.Н.

*************************.

Руководитель:

доц. Стрельников Б.А.

ас. Степанова О.П.

Виберіть жодну з наступних задач.

Ведення файла «Нормативи профілактики устаткування «.

Ведення файла «Профілактика «.

Одержання відомості порушення норм техобслуживания.

Вихід із Бази Данных.

Екранний кадр № 3:

Нормативи профілактики оборудования:

Идент. типу верстата Найменування типу верстата Норма, дней ————————————————————————————————————— ———————-;

1 ¦ Строгальный.

¦ 25.

2 ¦ Сверлильный.

¦ 15.

3 ¦ Токарный.

¦ 20.

¦

¦

¦

¦

¦

¦

¦

¦

¦

¦

¦

¦

¦

¦

¦

¦

¦

¦ ————————————————————————————————————— ————————;

Тип верстата: Строгальный.

(/ (/ (/ (/ ^(PgUp / PgDn / ^(/ Home / End — Переміщення курсора.

¦ Esc — Повернення на крок тому ¦F8 — Видалити рядок Enter — Редагування ¦ ¦F3 — Вставити строку.

Екранний кадр № 4:

Профилактики:

Инв.№ верстата Вигляд профілактики Дата профілактики ————————————————————————————————————— ——————-;

2 ¦ Мастило ¦ 01/09/98.

2 ¦ Регулювання ¦ 01/29/98.

2 ¦ Чистка ¦ 04/01/98.

231 ¦ Мастило ¦ 01/09/98.

231 ¦ Регулювання ¦ 01/28/98.

231 ¦ Чистка ¦ 03/20/98.

24 ¦ Мастило ¦ 01/09/98.

24 ¦ Регулювання ¦ 01/18/98.

24 ¦ Чистка ¦ 04/02/98.

323 ¦ Мастило ¦ 01/09/98.

323 ¦ Регулювання ¦ 01/28/98.

323 ¦ Чистка ¦ 04/15/98 ————————————————————————————————————— ——————-;

Инв.№ верстата: 2.

Вигляд профілактики: Смазка.

Дата профілактики: 01/09/98.

(/ (/ (/ (/ ^(PgUp / PgDn / ^(/ Home / End — Переміщення курсора.

¦ Esc — Повернення на крок тому ¦F8 — Видалити рядок Enter — Редагування ¦ ¦F3 — Вставити строку.

Екранний кадр № 5:

Таблиця порушення норм техобслуговування: —————————————————————————————————————— ———————————————— ¦ Инв. ¦ Найменування ¦ Дата ¦ Вигляд предвор. ¦ Дата ¦ вид след.

¦Просроч.¦ ¦номер ¦ типу верстата ¦ ¦ профілактики ¦ ¦ профілактики ¦ днів ¦ ¦—————————————————————————————————————- ————————————————-¦ ¦ 24 ¦ Свердлильний ¦01/18/98¦ Регулювання ¦04/02/98¦ Чистка.

¦ 59 ¦ ¦ 323 ¦ Строгальный ¦01/28/98¦ Регулювання ¦04/15/98¦ Чистка.

¦ 52 ¦ ¦ 2 ¦ Токарському ¦01/29/98¦ Регулювання ¦04/01/98¦ Чистка.

¦ 42 ¦ ¦ 4 ¦ Свердлильний ¦01/19/98¦ Регулювання ¦03/10/98¦ Чистка.

¦ 35 ¦ ¦ 626 ¦ Строгальный ¦02/01/98¦ Регулювання ¦03/31/98¦ Чистка.

¦ 33 ¦ ¦ 231 ¦ Токарському ¦01/28/98¦ Регулювання ¦03/20/98¦ Чистка.

¦ 31 ¦ —————————————————————————————————————— ————————————————;

Усього просроченно днів — 252.

Екранний кадр № 6:

Московська державна текстильна академія (МГТА).

БАЗА ДАНИХ Порушення норм техобслуживания:

Курсова робота з курсу :

" Алгоритмічні мови обробки даних, і технологія програмування «.

————————————————————————————————— ————————а А.Н.

¦ Зберегти всі внесені зміни та продовжити ¦*****.

¦ роботи з Базою даних — тобто. зробити проміжний SAVE ¦

¦ или.

¦

¦ Завершити роботи з базою даних із збереженням всіх ¦.А.

¦ изменений.

¦.

¦ Зберегти та продовжити Завершити работу.

¦

————————————————————————————————— ———————-;

Виберіть жодну з наступних задач.

Ведення файла «Нормативи профілактики устаткування «.

Ведення файла «Профілактика «.

Одержання відомості порушення норм техобслуживания.

Вихід із Бази Данных б) Пункти меню, що мені робиться ?

Меню № 1:

1) Відразу розпочати роботу з Базою Данных.

2) Наново споруджувати індекси Бази Данных.

3) Провести компресію Бази Данных.

4) Вихід із Бази Данных.

При виборі п. 1, якщо індекси вже є ми потрапляємо в меню № 2.

При виборі п. 2 наново відбувається побудова всіх індексів Б. Д .

При виборі п. 3 виробляється компресія (ущільнення) Б. Д .

При виборі п. 4 з’являється горизонтальне подменю:

а) Зберегти та продовжити б) Завершити работу.

П.о) Зберегти всі внесені зміни і продолжить.

П.б) Завершити роботи з базою даних із збереженням всіх изменений.

Меню № 2:

1) Ведення файла «Нормативи профілактики устаткування «.

2) Ведення файла «Профілактика «.

3) Одержання відомості порушення норм техобслуживания.

4) Вихід із Бази Данных.

При виборі п. 1 ми потрапляємо в редактор файла aa. dbf — («Нормативы.

профілактики устаткування"), де ми можемо його переглядати і редактировать.

При виборі п. 2 ми потрапляємо в редактор файла bb. dbf — («Профілактика»), де ми можемо його переглядати і редактировать.

При виборі п. 3 відбувається виявлення всіх випадків перевищення нормативних інтервалів між профилактиками, передача управління ними в вивідний файл «DD», і навіть видача відомості на принтер.

При виборі п. 4 виконуються дії аналогічні п. 4 в меню № 1. … …

8. Ведення БД .

Якими табл. представлено ведення БД, якою табл. вказується поточна робоча область, її слуги, колонки таблиці, набір клавіш куди передбачена реакція системы.

Клавіші куди реагує система: (/ (/ (/ (/; PgUp / PgDn; Home / End — Переміщення курсору Enter — Вибір завдання у меню і редагування полів в редакторі Esc — Повернення на крок тому. Скасування редагування (без збереження изменненого значення) F8 — Видалити рядок F3 — Вставити рядок F10 — Вихід із завдання зі збереженням всієї необхідної інформації або без збереження информации.

Таблиці ведення Б.Д.:

Табл. № 1.

Нормативи профілактики оборудования:

Идент. типу верстата Найменування типу верстата Норма, днів ————————————————————————————————————— ——————————;

¦

¦

¦

¦

¦

¦

¦

¦

¦

¦ —————————————————————————————————————- ——————————;

Тип верстата: Табл. № 2.

Профилактики:

Инв.№ верстата Вигляд профілактики Дата профілактики ————————————————————————————————————— —————————-;

¦

¦

¦ ¦

¦ ¦

¦ ¦

¦ ¦

¦ ¦

¦ ¦

¦ ¦

¦ ¦

¦ ¦ —————————————————————————————————————— —————————-;

Инв.№ станка:

Вигляд профилактики:

Дата профилактики:

… …

9. Структура програми :

а) Вміст rmk-файла «kursv.rmk»:

objs = main2, aa, util, bb.

.prg.obj:

CLIPPER $.

.obj.exe:

RTLINK OUTPUT $* FI $(objs) /PLL:base52.

main2.obj: main2. prg aa.obj: aa. prg util.obj: util. prg bb.obj: bb.prg.

kurs_ok.exe: main2. obj aa.obj util. obj bb.obj.

б) Імена і змістом prg-файлов. З кожної функції: ім'я, призначення, параметри, тип даних, і сенс, повернута значення, робочі перемен-ные і їх назначение.

Програмні файли: 1) aa.prg.

У цьому програмі реалізовано: 1. Створення TBrowse-объекта для просмотра-редактирования файла 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 () tinvnom:=dd->invnom idpop:=dd->idzappp lin:= «¦ «+dd->invnom+ «¦ «select bb go top do while .not. eof () if (tinvnom=bb->invnom).and.(idpop=bb->idzap) lin:=lin+aa->namest+ «¦ «+dtoc (bb->dateprof)+ «¦ «+bb->vidprof endif skip enddo select dd idpop:=dd->idzapsp select bb go top do while .not. eof () if (tinvnom=bb->invnom).and.(idpop=bb->idzap) lin:=lin+ «¦ «+dtoc (bb->dateprof)+ «¦ «+bb->vidprof+ «¦ «endif skip enddo select dd lin:=lin+str (dd->fkdn-dd->norma, 4)+ «¦ «? lin skip enddo lin:= «+——————————————————————————————————- ————+ »? lin set color to w+/b lin:= «Усього просроченно днів — «+str (sitog, 5)? lin set printer off sound () inkey (0) return nil.

6) в.п. подачі звукового сигналу для сигналізації успішного виконання поставленого завдання: func sound tone (300,1) tone (100,1) tone (300,1) tone (100,1) return nil.

7) в.п. збереження зкрана: FUNC s_scr (t, l, b, r).

IF t = NIL t := 0.

ENDIF.

IF l = NIL l := 0.

ENDIF.

IF b = NIL b := MAXROW ().

ENDIF.

IF r = NIL r := MAXCOL ().

ENDIF.

AADD (wind[1], t).

AADD (wind[2], l).

AADD (wind[3], b).

AADD (wind[4], r).

AADD (wind[5], SAVESCREEN (t, l, b, r)).

AADD (pos[1], ROW ()).

AADD (pos[2], COL ()).

AADD (colr, SETCOLOR ()).

AADD (curs, SETCURSOR ()).

RETURN .T.

8) в.п. відновлення зкрана: FUNC r_scr ().

LOCAL ln ln := LEN (wind[1]).

IF ln == 0.

@ 24,0 SAY «Помилка — стік на відновлення параметрів порожній «.

INKEY (0).

@ 24,0.

ENDIF.

RESTSCREEN (wind[1,ln], wind[2,ln], wind[3,ln], wind[4,ln], wind[5,ln]).

ASIZE (wind[1], ln-1).

ASIZE (wind[2], ln-1).

ASIZE (wind[3], ln-1).

ASIZE (wind[4], ln-1).

ASIZE (wind[5], ln-1).

SETPOS (pos[1,ln], pos[2,ln]).

ASIZE (pos[1], ln-1).

ASIZE (pos[2], ln-1).

SETCOLOR (colr[ln]).

ASIZE (colr, ln-1).

SETCURSOR (curs[ln]).

ASIZE (curs, ln-1).

RETURN .T.

9) в.п. визначення — натиснута чи клавіша типового методу, якщо так — то повертає блок коду з певним методом, якщо ні - то повертає NIL. Параметр функції - INKEY-код натиснутою клавіші. FUNC basemet (cod).

LOCAL ret, ei, i.

LOCAL crsm:={ ;

{K_DOWN, {|o| o: down () } } ;

{K_UP, {|o| o: up () } } ;

{K_PGDN, {|o| o: pagedown () } } ;

{K_PGUP, {|o| o: pageup () } } ;

{K_CTRL_PGDN, {|o| o: gobottom () } } ;

{K_CTRL_PGUP, {|o| o: gotop () } } ;

{K_RIGHT, {|o| o: right () } } ;

{K_LEFT, {|o| o: left () } } ;

{K_CTRL_RIGHT, {|o| o: panright () } } ;

{K_CTRL_LEFT, {|o| o: panleft () } } ;

{K_END, {|o| o: end () } } ;

{K_HOME, {|o| o: home () } } ;

{K_CTRL_END, {|o| o: panend () } } ;

{K_CTRL_HOME, {|o| o: panhome () } } } і := ASCAN (crsm, {|ei| cod = ei[1] }).

IF і 0 ret := crsm[i, 2].

ELSE ret := NIL.

ENDIF RETURN ret.

10) в.п. перемикання режиму вставка/замена і виду курсору: PROCEDURE Repl_Ins ().

IF READINSERT ().

READINSERT (.F.).

SETCURSOR (SC_INSERT).

ELSE.

READINSERT (.T.).

SETCURSOR (SC_NORMAL).

ENDIF RETURN.

11) в.п. переведення гривень у верхній регістр латиниці і кирилиці: FUNC UpperC (prm) LOCAL n, і, smb, cs n := LEN (prm) FOR і = 1 TO n smb := SUBSTR (prm, і, 1) cs := ASC (smb).

DO CASE.

CASE cs >= 97 .AND. cs = 160 .AND. cs = 224 .AND. cs 80.

RETURN ENDIF IF x=NIL // Центр по X x := (80-ml)/2.

ENDIF IF y=NIL // Центр по Y y := 24/2 — 1 ENDIF IF color NIL з := SETCOLOR (color).

@ y, x SAY m.

SETCOLOR© ELSE.

@ y, x SAY m ENDIF RETURN.

14) в.п. створення TBrowse-объекта для просмотра-редактирования файла aa. dbf з вікна t, l, b, r: FUNCTION aaCr (t, l, b, r) LOCAL brws, coln, cblk, chdr brws := TBrowseDb (t, l, b, r) cblk := {|| «» + aa->idst } chdr := «Идент. типу верстата «coln := TBColumnNew (chdr, cblk) coln: width := 19 brws: AddColumn (coln) cblk := {|| «» + aa->namest} chdr := «Найменування типу верстата «coln := TBColumnNew (chdr, cblk) coln: width := 35 brws: AddColumn (coln) cblk := {|| STR (aa->norma, 7) } chdr := «Норма, дней «coln := TBColumnNew (chdr, cblk) coln: width := 12 brws: AddColumn (coln) brws: colsep := CHR (186) brws: headsep := CHR (205) brws: colorspec := «w+/b, gr+/rb «RETURN brws.

15) в.п. перегляду файла aa. dbf з обробкою нажимаемых клавіш і викликом відповідних методів чи користувальних функцій: FUNCTION aaEd (brws) LOCAL ret_fl, sel, otb, w LOCAL cc, rr, nrc:=0,i LOCAL ret:=NIL LOCAL t := brws: nTop, l := brws: nLeft, b := brws: nBottom, r := brws: nRight LOCAL t_ := 5, l_ := 6, b_ := 15, r_ := 74 s_scr () s_r_s () SETCOLOR («N/W ») CLS SETCOLOR («gr+/b, w+/gr ») hlp («AAED ») SELECT aa SET ORDER TO 2 @ t-2, l-1 CLEAR TO b+2, r+1 @ b+1, l TO b+1, r ret_fl := .F. DO WHILE .NOT. ret_fl.

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

DO WHILE (NEXTKEY () == 0) .AND. (.NOT. brws: stabilize ()).

ENDDO IF (NEXTKEY () == 0) .AND. (RECNO () nrc) nrc := RECNO () rr := ROW () cc := COL () SETCOLOR («bg+/b ») @ t-2, l+1 SAY «Нормативи профілактики устаткування: «@ b+2, l+1 SAY «Тип верстата: «@ b+2, COL ()+1 SAY aa->namest COLOR «w+/b «SETPOS (rr, cc) ENDIF SETCOLOR («gr+/rb ») ** очікуємо натискання клавіші nkey := Inkey (0) // якщо натиснута клавіша типового методу — викличемо його blk := basemet (nKey).

IF blk NIL.

EVAL (blk, brws).

ELSE.

DO CASE.

CASE (bHotkey := SETKEY (nKey)) NIL.

EVAL (bHotkey, PROCNAME (), PROCLINE (), READVAR ()).

CASE (nKey = K_F8).

DELETE.

// потрогаем файловий покажчик, если.

// возвращаетя EOF () — .T. після Down-Up,.

// отже файл пуст.

SKIP.

SKIP -1.

IF RECNO () = RECCOUNT ()+1 ret_fl := .T. // завершення просмотра.

ENDIF brws: RefreshAll () nrc := 0.

CASE nKey = K_ESC ret_fl := .T. // завершення просмотра.

CASE (nKey = K_ENTER).

// Редагування поточного елемента даних aaGet (brws ;

«Редагування файла aa. dbf ») nrc := 0 // оновити верхню строку.

CASE nKey == K_F3.

APPEND BLANK brws: RefreshAll ().

ENDCASE ENDIF ENDDO SET RELAT TO s_r_s (.T.) r_scr () RETURN ret.

16) в.п. виконання GET в поточної колонці файла aa. dbf: PROCEDURE aaGet (brws, z0).

LOCAL r, з, w, w2, otb.

LOCAL retcurs, retexit // форма курсору і режим виходу з READ.

LOCAL retins, retcol // режим вставка-замена в READ.

LOCAL indch := .F. // прапор змін значень полів, вхідних в.

// индекснове вираз (тоді доведеться REFRESHALL (),.

// а чи не REFRESHCURRENT ()).

LOCAL col r := ROW () з := COL ().

// Перевірка відновлення екрана, коректності бази й т.д.

ForceStable (brws).

// Установка клавіш Up-Arrow і Down-Arrow як клавіш виходу из.

// команди READ retexit := READEXIT (.T.).

// Установка клавіші INS для переключения.

// режиму вставка/замена.

// і одержувачів відповідного зміни виду курсору retins := SetKey (K_INS, {|| Repl_Ins ()}).

// еквівалентно Set Key K_INS To Procedure Repl_Ins.

// Установка виду курсору за поточного стану режиму retcurs := SetCursor (IF (ReadInsert (), SC_NORMAL, SC_INSERT)) s_scr () retcol := SETCOLOR («w+/g »).

@ brws: nTop-3,0.

@ brws: nTop-3,0 SAY z0 hlp («GET »).

SETCOLOR («gr+/n, w+/g ») indch := .F. DO CASE.

CASE brws: colpos = 1 w := aa->idst.

@ r, c+2 GET w.

READ.

IF .NOT.(LASTKEY () = K_ESC).OR.(aa->idst == w).

REPLACE aa->idst WITH w indch := .T.

ENDIF.

CASE brws: colpos = 2 n := aa->namest.

@ r, c+2 GET n.

READ.

IF .NOT.(LASTKEY () = K_ESC).OR.(aa->namest == n).

REPLACE aa->namest WITH n.

ENDIF.

CASE brws: colpos = 3 w := aa->norma.

@ r, c+1 GET w.

READ.

IF .NOT.((LASTKEY () = K_ESC) .OR. (aa->norma = w)).

REPLACE aa->norma WITH w.

ENDIF ENDCASE SETCOLOR (retcol) r_scr () SETPOS (r, c) IF indch brws: RefreshAll () ELSE brws: RefreshCurrent () // Забезпечити перемальовування поточної рядки, ENDIF // оскільки змінювався елемент данных.

// Відновлення форми курсору та режиму виходу з READ по стрелкам.

// і складні процедури по клавіші K_INS.

SetCursor (retcurs).

READEXIT (retexit).

SetKey (K_INS, retIns).

// Перевірка вимоги звільнення з поточної записи після GET nKey := LASTKEY ().

IF nKey == K_UP .OR. nKey == K_DOWN .OR.; nKey == K_PGUP .OR. nKey == K_PGDN.

// управління курсором — перехід в іншу записи.

KEYBOARD (CHR (nKey)).

ENDIF RETURN.

Примітка: У звіті не описані в.п.: а створення TBrowse-объекта для просмотра-редактирования файла bb. dbf з вікна t, l, b, r; б) для перегляду файла bb. dbf з обробкою нажимаемых клавіш і викликом відповідних методів чи користувальних функцій; в) до виконання GET в поточної колонці файла bb. dbf: Т.к. ці підпрограми практично аналогічні підпрограмам для файла aa. dbf !!! … …

10. Результати тестового примера:

а) Вміст вивідного файла dd. dbf:

INVNOM FKDN NORMA IDZAPPP IDZAPSP.

2 62 20 9.

231 51 20 10.

24 74 15 12.

323 77 25 8.

4 50 15 11.

626 58 25 7.

б) Вміст файла (print.prn), виведеного на принтер:

Таблиця порушення норм техобслуговування: —————————————————————————————————————— ——————————————————- ¦ Инв. ¦ Найменування ¦ Дата ¦ Вигляд предвор. ¦ Дата ¦ вид слід. ¦ Просроч.¦ ¦номер ¦ типу верстата ¦ ¦ профілактики ¦ ¦ профілактики ¦ днів ¦ ¦—————————————————————————————————————- ——————————————————-¦ ¦ 24 ¦ Свердлильний ¦01/18/98 ¦ Регулювання ¦04/02/98 ¦ Чистка.

¦ 59 ¦ ¦ 323 ¦ Строгальный ¦01/28/98 ¦ Регулювання ¦04/15/98 ¦ Чистка.

¦ 52 ¦ ¦ 2 ¦ Токарському ¦01/29/98 ¦ Регулювання ¦04/01/98 ¦ Чистка ¦ 42 ¦ ¦ 4 ¦ Свердлильний ¦01/19/98 ¦ Регулювання ¦03/10/98 ¦ Чистка.

¦ 35 ¦ ¦ 626 ¦ Строгальный ¦02/01/98 ¦ Регулювання ¦03/31/98 ¦ Чистка.

¦ 33 ¦ ¦ 231 ¦ Токарському ¦01/28/98 ¦ Регулювання ¦03/20/98 ¦ Чистка.

¦ 31 ¦ —————————————————————————————————————— ——————————————————;

Усього просроченно днів — 252.

Показати весь текст
Заповнити форму поточною роботою