У вас вопросы?
У нас ответы:) SamZan.net

Тема - ldquo;Разработка програмного обеспечения ведение базы данных и получение ведомости с частичными сум

Работа добавлена на сайт samzan.net: 2015-07-10

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

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 27.4.2025

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

им. КОСЫГИНА

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

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

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

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

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

                                      гр.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                   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 $< /a/m/n

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

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

    IF  i <> 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 , i , smb ,  cs

 n := LEN( prm )

 FOR i = 1  TO   n

    smb := SUBSTR( prm , i , 1 )

     cs := ASC( smb )

     DO CASE

       CASE  cs >= 97  .AND.  cs <= 122

         cs := cs - 32

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

       CASE  cs >= 160 .AND.  cs <= 175

         cs := cs - 32

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

       CASE  cs >= 224 .AND.  cs <= 239

         cs := cs - 80

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

     ENDCASE

 NEXT

RETURN prm

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)

LOCAL ml,c

  IF  m = NIL

      RETURN

  ENDIF

 ml=LEN(m)

 IF ml=0 && .OR. ml > 80

      RETURN

 ENDIF

 IF x=NIL        // Центр по X

     x := (80-ml)/2

  ENDIF

 IF y=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)

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 , c , w , w2  , otb

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

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

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

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

                        //    а не  REFRESHCURRENT() )

   LOCAL col

   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.

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




1. Понятие и виды правонарушений
2. лекция открывает курс Введение в общую психологию
3. Проблемы индуизма женщины и далиты
4. целей с затраченными на это средства
5. государств так называемых полисов
6. Морфофункциональные изменения зубочелюстной системы происходящие при полном отсуствие зубов Определе
7. Развитие экологического мышления на уроках химии при изучении темы Аминокислоты
8. Box tops
9. Реферат- Растительный мир Украины
10. Многоэтажный жилой дом с помещениями общественного назначения. Практика