Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


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

Тип Реферат
Предмет Информатика и программирование
Просмотров
1020
Размер файла
59 б
Поделиться

Ознакомительный фрагмент работы:

Ведение реляционной БД на яз. 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) tobb0001

Справка:

Синтаксис:

INDEXON 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 15

231 51 20 10 16

24 74 15 12 18

323 77 25 8 14

4 50 15 11 17

626 58 25 7 13

.....................................................................................................

Имя Тип Длина

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)п.п. постоенияиндексов:

funcdb_index(prm)

s_scr(24,0,25,79)

CLOSEALL

SETCOLOR("w/n")

@24,0 CLEAR TO 25,79

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

usebb

indexon bb->invnom + dtoc(bb->dateprof) to bb0001

useaa

indexon aa->idst to aa0002

usecc

indexon cc->invnom to cc0003

usedd

indexon dd->(norma-fkdn) to dd0004

closeall

r_scr()

returnnil


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

funcdb_open

closeall

useaa index aa0002

usebb index bb0001 new

usecc index cc0003 new

usedd index dd0004 new

returnnil


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

FUNCTION db_compress()

s_scr(24,0,25,79)

CLOSEALL

SETCOLOR("w/n")

@24,0 CLEAR TO 25,79

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

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

COPYTO work

IF ERRORLEVEL() = 0

USE

DELETE FILE aa.dbf

RENAME work.dbf TO aa.dbf

ENDIF

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

COPYTO work

IF ERRORLEVEL() = 0

USE

DELETE FILE bb.dbf

RENAME work.dbf TO bb.dbf

ENDIF

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

COPYTO work

IF ERRORLEVEL() = 0

USE

DELETE FILE cc.dbf

RENAME work.dbf TO cc.dbf

ENDIF

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

COPYTO work

IF ERRORLEVEL() = 0

USE

DELETE FILE dd.dbf

RENAME work.dbf TO dd.dbf

ENDIF

CLOSEALL

r_scr()

RETURN NIL


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

PROCEDUREhlp(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

IFcallpnt = "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"

SETCOLOR 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 - Вставитьстроку '

SETCOLOR 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"

SETCOLOR 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 - Вставитьстроку '

SETCOLOR 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

SETCOLOR TO (retcol)

SETPOS(crow,ccol)

RETURN


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

funcvedom

localtinvnom,sitog,tdata,tidzap,tidst,idpop

setprinter on

selectdd

zap

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

?lin

selectbb

setrelat to bb->invnom into cc

setrelat to cc->idst into aa additive

gotop

sitog:=0

dowhile .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)

selectdd

appendblank

replacedd->invnom with tinvnom

replacedd->fkdn with bb->dateprof-tdata

replacedd->norma with aa->norma

replacedd->idzappp with tidzap

replacedd->idzapsp with bb->idzap

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

selectbb

endif

enddo

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

?lin

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

?lin

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

?lin

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

?lin

selectdd

setrelat to dd->invnom into cc additive

gotop

dowhile .not. eof()

tinvnom:=dd->invnom

idpop:=dd->idzappp

lin:="¦"+dd->invnom+" ¦ "

selectbb

gotop

dowhile .not. eof()

if(tinvnom=bb->invnom).and.(idpop=bb->idzap)

lin:=lin+aa->namest+"¦"+dtoc(bb->dateprof)+"¦ "+bb->vidprof

endif

skip

enddo

selectdd

idpop:=dd->idzapsp

selectbb

gotop

dowhile .not. eof()

if(tinvnom=bb->invnom).and.(idpop=bb->idzap)

lin:=lin+"¦"+dtoc(bb->dateprof)+"¦ "+bb->vidprof+"¦"

endif

skip

enddo

selectdd

lin:=lin+str(dd->fkdn-dd->norma,4)+" ¦"

?lin

skip

enddo

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

?lin

setcolor to w+/b

lin:="Всего просроченнодней -"+str(sitog,5)

?lin

setprinter off

sound()

inkey(0)

returnnil


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

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

funcsound

tone(300,1)

tone(100,1)

tone(300,1)

tone(100,1)

returnnil


7)п.п. сохранениязкрана:

FUNC s_scr(t,l,b,r)

IFt = NIL

t:= 0

ENDIF

IFl = NIL

l:= 0

ENDIF

IFb = NIL

b:= MAXROW()

ENDIF

IFr = 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)п.п. восстановлениязкрана:

FUNCr_scr()

LOCALln

ln:= LEN(wind[1])

IFln == 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-код нажатойклавиши.

FUNCbasemet(cod)

LOCAL ret , ei , i

LOCALcrsm:={ ;

{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() } } }

i:= ASCAN( crsm, {|ei| cod = ei[1] } )

IF i 0

ret := crsm[i,2]

ELSE

ret := NIL

ENDIF

RETURN ret


10)п.п. переключениярежима вставка/заменаи вида курсора:

PROCEDURERepl_Ins()

IFREADINSERT()

READINSERT(.F.)

SETCURSOR(SC_INSERT)

ELSE

READINSERT(.T.)

SETCURSOR(SC_NORMAL)

ENDIF

RETURN


11)п.п. переводав верхний регистрлатиницы икириллицы:

FUNCUpperC(prm)

LOCAL n , i , smb , cs

n:= LEN( prm )

FORi = 1 TO n

smb:= SUBSTR( prm , i , 1 )

cs:= ASC( smb )

DOCASE

CASE cs >= 97 .AND. cs

cs := cs - 32

prm := STUFF( prm , i , 1 , CHR( cs ) )

CASE cs >= 160 .AND. cs

cs := cs - 32

prm := STUFF( prm , i , 1 , CHR( cs ) )

CASE cs >= 224 .AND. cs

cs := cs - 80

prm := STUFF( prm , i , 1 , CHR( cs ) )

ENDCASE

NEXT

RETURNprm


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

PROCEDURE fquit()

LOCAL reply

reply := ALERT("Сохранитьвсе внесенныеизменения ипродолжить;";

+ "работу сБазой данных- т.е. сделатьпромежуточныйSAVE или;" ;

+ " Завершитьработу с базойданных с сохранениемвсех изменений;";

, {" Сохранитьи продолжить" , " Завершитьработу " } )

IF ( reply = 1 ) .OR. ( reply = 0 )

DBCOMMITALL()

ELSE

QUIT

ENDIF

RETURN


13)п.п. вывода сообщенияна экран с заданнымикоординатамии цветом:

PROCEDURE msgs(x,y,m,color)

LOCALml,c

IF m = NIL

RETURN

ENDIF

ml=LEN(m)

IFml=0 && .OR. ml > 80

RETURN

ENDIF

IFx=NIL // Центр по X

x:= (80-ml)/2

ENDIF

IFy=NIL // Центр по Y

y:= 24/2 - 1

ENDIF

IF color NIL

c:= SETCOLOR(color)

@ y,x SAY m

SETCOLOR(c)

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)

LOCALret_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

SETORDER TO 2

@t-2 , l-1 CLEAR TO b+2 , r+1

@b+1, l TO b+1, r

ret_fl:= .F.

DOWHILE .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 )

IFblk NIL

EVAL( blk , brws )

ELSE

DOCASE

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

SETRELAT TO

s_r_s(.T.)

r_scr()

RETURNret


16)п.п. выполненияGET в текущей колонкефайла aa.dbf:

PROCEDUREaaGet( brws , z0 )

LOCALr , c , w , w2 , otb

LOCALretcurs,retexit // форма курсораи режим выходаиз READ

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

LOCALindch := .F. // флаг измененийзначений полей,входящих в

// индексновевыражение(тогда нужноREFRESHALL(),

// а не REFRESHCURRENT() )

LOCALcol

r:= ROW()

c:= 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.

DOCASE

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)

IFindch

brws:RefreshAll()

ELSE

brws:RefreshCurrent() // Обеспечитьперерисовкутекущей строки,

ENDIF // посколькуизменялсяэлемент данных

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

// и процедурыпо клавише K_INS

SetCursor(retcurs)

READEXIT(retexit)

SetKey(K_INS, retIns)

//Проверка требованияухода с текущейзаписи послеGET

nKey:= LASTKEY()

IFnKey == 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 15

231 51 20 10 16

24 74 15 12 18

323 77 25 8 14

4 50 15 11 17

626 58 25 7 13


б)Содержимое файла (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



МОСКОВСКАЯГОСУДАРСТВЕННАЯТЕКСТИЛЬНАЯАКАДЕМИЯ

им. КОСЫГИНА


Кафедра ИТи ВТ.


К У Р СО В А Я Р А Б О ТА


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


по курсу:“Алгоритмическиеязыки и технологияпрограмирования“


Выполнил: ПономаревА.Н.

гр.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) tobb0001

Справка:

Синтаксис:

INDEXON 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 15

231 51 20 10 16

24 74 15 12 18

323 77 25 8 14

4 50 15 11 17

626 58 25 7 13

.....................................................................................................

Имя Тип Длина

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)п.п. постоенияиндексов:

funcdb_index(prm)

s_scr(24,0,25,79)

CLOSEALL

SETCOLOR("w/n")

@24,0 CLEAR TO 25,79

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

usebb

indexon bb->invnom + dtoc(bb->dateprof) to bb0001

useaa

indexon aa->idst to aa0002

usecc

indexon cc->invnom to cc0003

usedd

indexon dd->(norma-fkdn) to dd0004

closeall

r_scr()

returnnil


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

funcdb_open

closeall

useaa index aa0002

usebb index bb0001 new

usecc index cc0003 new

usedd index dd0004 new

returnnil


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

FUNCTION db_compress()

s_scr(24,0,25,79)

CLOSEALL

SETCOLOR("w/n")

@24,0 CLEAR TO 25,79

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

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

COPYTO work

IF ERRORLEVEL() = 0

USE

DELETE FILE aa.dbf

RENAME work.dbf TO aa.dbf

ENDIF

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

COPYTO work

IF ERRORLEVEL() = 0

USE

DELETE FILE bb.dbf

RENAME work.dbf TO bb.dbf

ENDIF

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

COPYTO work

IF ERRORLEVEL() = 0

USE

DELETE FILE cc.dbf

RENAME work.dbf TO cc.dbf

ENDIF

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

COPYTO work

IF ERRORLEVEL() = 0

USE

DELETE FILE dd.dbf

RENAME work.dbf TO dd.dbf

ENDIF

CLOSEALL

r_scr()

RETURN NIL


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

PROCEDUREhlp(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

IFcallpnt = "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"

SETCOLOR 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 - Вставитьстроку '

SETCOLOR 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"

SETCOLOR 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 - Вставитьстроку '

SETCOLOR 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

SETCOLOR TO (retcol)

SETPOS(crow,ccol)

RETURN


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

funcvedom

localtinvnom,sitog,tdata,tidzap,tidst,idpop

setprinter on

selectdd

zap

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

?lin

selectbb

setrelat to bb->invnom into cc

setrelat to cc->idst into aa additive

gotop

sitog:=0

dowhile .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)

selectdd

appendblank

replacedd->invnom with tinvnom

replacedd->fkdn with bb->dateprof-tdata

replacedd->norma with aa->norma

replacedd->idzappp with tidzap

replacedd->idzapsp with bb->idzap

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

selectbb

endif

enddo

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

?lin

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

?lin

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

?lin

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

?lin

selectdd

setrelat to dd->invnom into cc additive

gotop

dowhile .not. eof()

tinvnom:=dd->invnom

idpop:=dd->idzappp

lin:="¦"+dd->invnom+" ¦ "

selectbb

gotop

dowhile .not. eof()

if(tinvnom=bb->invnom).and.(idpop=bb->idzap)

lin:=lin+aa->namest+"¦"+dtoc(bb->dateprof)+"¦ "+bb->vidprof

endif

skip

enddo

selectdd

idpop:=dd->idzapsp

selectbb

gotop

dowhile .not. eof()

if(tinvnom=bb->invnom).and.(idpop=bb->idzap)

lin:=lin+"¦"+dtoc(bb->dateprof)+"¦ "+bb->vidprof+"¦"

endif

skip

enddo

selectdd

lin:=lin+str(dd->fkdn-dd->norma,4)+" ¦"

?lin

skip

enddo

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

?lin

setcolor to w+/b

lin:="Всего просроченнодней -"+str(sitog,5)

?lin

setprinter off

sound()

inkey(0)

returnnil


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

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

funcsound

tone(300,1)

tone(100,1)

tone(300,1)

tone(100,1)

returnnil


7)п.п. сохранениязкрана:

FUNC s_scr(t,l,b,r)

IFt = NIL

t:= 0

ENDIF

IFl = NIL

l:= 0

ENDIF

IFb = NIL

b:= MAXROW()

ENDIF

IFr = 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)п.п. восстановлениязкрана:

FUNCr_scr()

LOCALln

ln:= LEN(wind[1])

IFln == 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-код нажатойклавиши.

FUNCbasemet(cod)

LOCAL ret , ei , i

LOCALcrsm:={ ;

{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() } } }

i:= ASCAN( crsm, {|ei| cod = ei[1] } )

IF i 0

ret := crsm[i,2]

ELSE

ret := NIL

ENDIF

RETURN ret


10)п.п. переключениярежима вставка/заменаи вида курсора:

PROCEDURERepl_Ins()

IFREADINSERT()

READINSERT(.F.)

SETCURSOR(SC_INSERT)

ELSE

READINSERT(.T.)

SETCURSOR(SC_NORMAL)

ENDIF

RETURN


11)п.п. переводав верхний регистрлатиницы икириллицы:

FUNCUpperC(prm)

LOCAL n , i , smb , cs

n:= LEN( prm )

FORi = 1 TO n

smb:= SUBSTR( prm , i , 1 )

cs:= ASC( smb )

DOCASE

CASE cs >= 97 .AND. cs

cs := cs - 32

prm := STUFF( prm , i , 1 , CHR( cs ) )

CASE cs >= 160 .AND. cs

cs := cs - 32

prm := STUFF( prm , i , 1 , CHR( cs ) )

CASE cs >= 224 .AND. cs

cs := cs - 80

prm := STUFF( prm , i , 1 , CHR( cs ) )

ENDCASE

NEXT

RETURNprm


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

PROCEDURE fquit()

LOCAL reply

reply := ALERT("Сохранитьвсе внесенныеизменения ипродолжить;";

+ "работу сБазой данных- т.е. сделатьпромежуточныйSAVE или;" ;

+ " Завершитьработу с базойданных с сохранениемвсех изменений;";

, {" Сохранитьи продолжить" , " Завершитьработу " } )

IF ( reply = 1 ) .OR. ( reply = 0 )

DBCOMMITALL()

ELSE

QUIT

ENDIF

RETURN


13)п.п. вывода сообщенияна экран с заданнымикоординатамии цветом:

PROCEDURE msgs(x,y,m,color)

LOCALml,c

IF m = NIL

RETURN

ENDIF

ml=LEN(m)

IFml=0 && .OR. ml > 80

RETURN

ENDIF

IFx=NIL // Центр по X

x:= (80-ml)/2

ENDIF

IFy=NIL // Центр по Y

y:= 24/2 - 1

ENDIF

IF color NIL

c:= SETCOLOR(color)

@ y,x SAY m

SETCOLOR(c)

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)

LOCALret_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

SETORDER TO 2

@t-2 , l-1 CLEAR TO b+2 , r+1

@b+1, l TO b+1, r

ret_fl:= .F.

DOWHILE .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 )

IFblk NIL

EVAL( blk , brws )

ELSE

DOCASE

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

SETRELAT TO

s_r_s(.T.)

r_scr()

RETURNret


16)п.п. выполненияGET в текущей колонкефайла aa.dbf:

PROCEDUREaaGet( brws , z0 )

LOCALr , c , w , w2 , otb

LOCALretcurs,retexit // форма курсораи режим выходаиз READ

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

LOCALindch := .F. // флаг измененийзначений полей,входящих в

// индексновевыражение(тогда нужноREFRESHALL(),

// а не REFRESHCURRENT() )

LOCALcol

r:= ROW()

c:= 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.

DOCASE

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)

IFindch

brws:RefreshAll()

ELSE

brws:RefreshCurrent() // Обеспечитьперерисовкутекущей строки,

ENDIF // посколькуизменялсяэлемент данных

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

// и процедурыпо клавише K_INS

SetCursor(retcurs)

READEXIT(retexit)

SetKey(K_INS, retIns)

//Проверка требованияухода с текущейзаписи послеGET

nKey:= LASTKEY()

IFnKey == 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 15

231 51 20 10 16

24 74 15 12 18

323 77 25 8 14

4 50 15 11 17

626 58 25 7 13


б)Содержимое файла (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


Нет нужной работы в каталоге?

Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован

avatar
Математика
История
Экономика
icon
159599
рейтинг
icon
3275
работ сдано
icon
1404
отзывов
avatar
Математика
Физика
История
icon
156450
рейтинг
icon
6068
работ сдано
icon
2737
отзывов
avatar
Химия
Экономика
Биология
icon
105734
рейтинг
icon
2110
работ сдано
icon
1318
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
63 457 оценок star star star star star
среднее 4.9 из 5
Тгу им. Г. Р. Державина
Реферат сделан досрочно, преподавателю понравилось, я тоже в восторге. Спасибо Татьяне за ...
star star star star star
РЭУ им.Плеханово
Альберт хороший исполнитель, сделал реферат очень быстро, вечером заказала, утром уже все ...
star star star star star
ФЭК
Маринаааа, спасибо вам огромное! Вы профессионал своего дела! Рекомендую всем ✌🏽😎
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

Подогнать готовую курсовую под СТО

Курсовая, не знаю

Срок сдачи к 7 дек.

только что
только что

Выполнить задания

Другое, Товароведение

Срок сдачи к 6 дек.

1 минуту назад

Архитектура и организация конфигурации памяти вычислительной системы

Лабораторная, Архитектура средств вычислительной техники

Срок сдачи к 12 дек.

1 минуту назад

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

Курсовая, профилактики травматизма, медицина

Срок сдачи к 5 дек.

2 минуты назад

краткая характеристика сбербанка анализ тарифов РКО

Отчет по практике, дистанционное банковское обслуживание

Срок сдачи к 5 дек.

2 минуты назад

Исследование методов получения случайных чисел с заданным законом распределения

Лабораторная, Моделирование, математика

Срок сдачи к 10 дек.

4 минуты назад

Проектирование заготовок, получаемых литьем в песчано-глинистые формы

Лабораторная, основы технологии машиностроения

Срок сдачи к 14 дек.

4 минуты назад

2504

Презентация, ММУ одна

Срок сдачи к 7 дек.

6 минут назад

выполнить 3 задачи

Контрольная, Сопротивление материалов

Срок сдачи к 11 дек.

6 минут назад

Вам необходимо выбрать модель медиастратегии

Другое, Медиапланирование, реклама, маркетинг

Срок сдачи к 7 дек.

7 минут назад

Ответить на задания

Решение задач, Цифровизация процессов управления, информатика, программирование

Срок сдачи к 20 дек.

7 минут назад
8 минут назад

Все на фото

Курсовая, Землеустройство

Срок сдачи к 12 дек.

9 минут назад

Разработка веб-информационной системы для автоматизации складских операций компании Hoff

Диплом, Логистические системы, логистика, информатика, программирование, теория автоматического управления

Срок сдачи к 1 мар.

10 минут назад
11 минут назад

перевод текста, выполнение упражнений

Перевод с ин. языка, Немецкий язык

Срок сдачи к 7 дек.

11 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

Размещенные на сайт контрольные, курсовые и иные категории работ (далее — Работы) и их содержимое предназначены исключительно для ознакомления, без целей коммерческого использования. Все права в отношении Работ и их содержимого принадлежат их законным правообладателям. Любое их использование возможно лишь с согласия законных правообладателей. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие в связи с использованием Работ и их содержимого.

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно