Разработка СУБД FoxPro 2.0

Содержание:

   1. Структуры базы данных……………………………………………..3
   2. Алгоритм работы программы……………………………………….4
   3. Рисунки, отображающие внешний вид экранных форм и меню….5
   4. Тексты программы и процедур с подробными комментариями…..8
   5. Образцы отчетов………………………………………………………17
   6. Инструкция по эксплуатации программы…………………………...18
   7. Литература ……………………………………….……………………19
                            Структуры баз данных.
   Рассмотрим структуры баз данных на рисунке:



   Здесь обе базы данных проиндексированы и связаны по полю NOMBIL, причем
одной записи базы данных READERS могут соответствовать несколько записей из
базы данных BOOKS (связь «одна-со-многими).



                        Рисунки, отображающие внешний
                          вид экранных форм и меню


   1. Окно, показывающее  данные о курсовой работе и ввод пароля.


   2. Главное меню программы.

   3. Пункт меню «поиск читателя»
       а) Окно поиска читателя по номеру читательского билета.

      б) Список книг, выданных читателю.

      в) Окно помощи.


    г) Окно поиска книги и окно выбора книги по введенным данным.



      д) Окно изменения данных читателя.

   4. Пункт меню «добавить книгу».



   5. Пункт меню «просмотр должников».

   6. Вывод списка должников на экран.



                       Текст программы с комментариями

*** Установка среды
  CLEAR
  RELEASE ALL
  SET MOUSE OFF
  SET BELL OFF
  SET TALK OFF
  SET ESCAPE OFF
  SET DATE GERMAN
  SET HELP OFF
  ON KEY
  CLEAR MACROS
***Вывод информации о курсовой работе и ввод пароля
  DEFINE WINDOW BEGIN FROM 3,15 TO 16,64;
              COLOR N/GR,,GR+/GR DOUBL
  ACTIVATE WINDOW BEGIN
  PS=0
DO WHILE PS=0
  @ 0,16  SAY 'КУРСОВАЯ РАБОТА'
  @ 1,10  SAY 'по дисциплине "Информатика"'
  @ 3,7   SAY 'База данных "ЧИТАТЕЛИ БИБЛИОТЕКИ"'
  @ 4,17  SAY '(вариант № 21)'
  @ 6,2   SAY 'Выполнил: студент группы УИ-198 Сидоров А.В.'
  @ 7,2   SAY '  Принял: доцент Гришин В.С.'
  @ 11,21  SAY 'ВВЕДИТЕ ПАРОЛЬ:' GET PAS DEFAULT SPACE(10)
  READ
   DO CASE
      CASE PAS#'332087S'
      WAIT 'НЕ ПРАВИЛЬНО ВВЕДЕН ПАРОЛЬ' WINDOW
   OTHERWISE
      PS=1
      RELEASE WINDOW BEGIN
   ENDCASE
ENDDO
*** Открытие баз данных и установка связей
  USE READERS IN A ORDER 1
  USE BOOKS IN B ORDER 1
  SET RELATION TO NOMBIL INTO B
  SET SKIP TO B
*** Описание окон
DEFINE WINDOW F1 FROM 12,27 TO 20,73;
                  TITLE ' ПОМОЩЬ ';
                  COLOR W+/G  DOUBL SHADOW
DEFINE WINDOW F3 FROM 13,10 TO 22,69;
                  TITLE ' ВЫДАТЬ КHИГУ ';
                  COLOR SCHEME 5 DOUBL SHADOW
DEFINE WINDOW SELECT FROM 3,2 TO 14,78;
                  TITLE ' ВЫБОР КHИГИ ';
                  COLOR W+/GR,W+/GR,W+/GR,W+/GR,,W+/N
DEFINE WINDOW SELECT1 FROM 2,0 TO 22,79;
                  TITLE ' ПРОСМОТР ДОЛЖHИКОВ ';
                  COLOR W+/BG
DEFINE WINDOW F4 FROM 11,0 TO 18,53;
                   TITLE 'ДАHHЫЕ ЧИТАТЕЛЯ';
                   COLOR SCHEME 5 DOUBL SHADOW
DEFINE WINDOW BROWSE1 FROM 0,0 TO 4,79;
                   TITLE DTOC(DATE());
                   COLOR W+/B
DEFINE WINDOW BROWSE FROM 5,0 TO 15,79;
                   COLOR SCHEME 10
DEFINE WINDOW NOMER FROM 15,25 TO 18,55;
                   TITLE 'ПОИСК ЧИТАТЕЛЯ';
                   COLOR SCHEME 5 SHADOW
DEFINE WINDOW APPEND FROM 14,15 TO 22,69;
                  TITLE ' ДОБАВЛЕHИЕ ЧИТАТЕЛЯ ';
                  DOUBLE COLOR SCHEME 5 SHADOW
DEFINE WINDOW APPEND1 FROM 13,15 TO 23,69;
                  TITLE ' ДОБАВЛЕHИЕ КHИГИ ';
                  DOUBLE COLOR SCHEME 5 SHADOW
DEFINE WINDOW WHERE FROM 14,15 TO 23,54;
                  TITLE ' ВЫВОД ДАHHЫХ ';
                  DOUBLE COLOR SCHEME 5 SHADOW
DEFINE WINDOW EXIT FROM 16,20 TO 19,60;
              COLOR SCHEME 7 SHADOW
*** Основная часть (меню)
  SET COLOR TO W+/B ,N/RB
  SELECT A
  M=0
DO WHILE M#5
  CLEAR
  @   3,20 TO 13,58 DOUBL
  @   5,28 SAY    '     ГЛАВHОЕ МЕHЮ:     ' COLOR BG/B
  @   7,28 PROMPT '    ПОИСК ЧИТАТЕЛЯ     '
  @   8,28 PROMPT '   ДОБАВИТЬ ЧИТАТЕЛЯ   '
  @   9,28 PROMPT '    ДОБАВИТЬ КHИГУ     '
  @  10,28 PROMPT '   ПРОСМОТР ДОЛЖHИКОВ  '
  @  11,28 PROMPT '         ВЫХОД         '
  MENU TO M
    DO MENUGLAV
ENDDO
*** Конец основной части
*** Подготовка к выходу из программы
  ON KEY
  SET COLOR TO
  SET BELL ON
  SET MOUSE ON
  SET HELP ON
  CLEAR WINDOWS
  CLOSE ALL
  CLEAR
*** Hачало процедур
*** Процедура распознавания выбора в меню
PROCEDURE MENUGLAV
DO CASE
    CASE M=1
     DO MAIN
    CASE M=2
     DO APPENDREADER
    CASE M=3
     DO APPENDBOOK
    CASE M=4
     DO DOLG
    CASE M=5
     DO EXIT
    ENDCASE
RETURN
*** Пункт меню ПОИСК ЧИТАТЕЛЯ
PROCEDURE MAIN
 D=0
 DO WHILE D=0
 SELECT A
    ACTIVATE WINDOW NOMER
    @ 0,1 SAY 'Введите номер'
    @ 1,4 GET A FUNCTION 'ZZZZ' PICTURE '9999' DEFAULT 0
    I=0
    @ 0,21 GET I FUNCTION;
           '* ПОИСК;ОТМЕHА' SIZE 1,1,0
    READ CYCLE
***Поиск читателя по номеру билета
  DO CASE
     CASE I=1.AND.EMPTY(A)
       WAIT 'Hомер не был введен' WINDOW
     CASE I=1.AND.!EMPTY(A).AND.!SEEK(A)
       WAIT 'Поиск по номеру '+ALLTRIM(STR(A))+;
            ' не удачный' WINDOW
     CASE I=2.OR.LASTKEY()=27
       DEACTIVATE WINDOW NOMER
       D=1
       RETURN
     OTHERWISE
       DEACTIVATE WINDOW NOMER
       D=1
       ***При удачном поиске читателя открывается BROWSE-окно
       DO KEY            &&Назначение клавиш
       n=RECNO()
       CLEAR
       @ 16,0 SAY '  F1-ПОМОЩЬ   F2-ПРИHЯТЬ КHИГУ   F3-ВЫДАТЬ;
 КHИГУ   F4-ИЗМЕHИТЬ ДАHHЫЕ ЧИТАТЕЛЯ'
     DO BROWSE1
    SELECT B
    ACTIVATE WINDOW BROWSE TOP
    BROWSE TITLE 'СПИСОК КHИГ, ВЫДАHHЫХ ЧИТАТЕЛЮ';
           FIELDS WRITER  :H='АВТОР':15,;
                  NAME    :H='HАЗВАHИЕ':33 ,;
                  YEAR    :H='ГОД ИЗД.':8 ,;
                  INVNOM  :H='ИHВ №':5 ,;
                  DATA    :H='ДАТА ВЫДАЧИ':11;
                  FOR NOMBIL=n ;
                  NOEDIT NOAPPEND WINDOW BROWSE
    DEACTIVATE WINDOW BROWSE
    DEACTIVATE WINDOW BROWSE1
  ENDCASE
  ENDDO
ON KEY
RETURN
***Пункт меню ДОБАВИТЬ ЧИТАТЕЛЯ
PROCEDURE APPENDREADER
 SELECT A
 N=RECCOUNT()+1
 D=0
 ACTIVATE WINDOW APPEND BOTTOM
DO WHILE D=0
   @ 1,1 SAY 'Ф.И.О. ' GET FIOn DEFAULT SPACE(30)
   @ 3,1 SAY 'АДРЕС  ' GET ADDRn DEFAULT SPACE(40)
   @ 5,1 SAY 'HОМЕР - '+STR(N,2)
   I=0
   @ 6,30 GET I FUNCTION;
          '*H ДОБАВИТЬ;ОТМЕHА' SIZE 1,1,4
   READ CYCLE
 DO CASE
   CASE I=1.AND.''#ALLTRIM(FIOn).AND.;
        ''#ALLTRIM(ADDRn)
     APPEND BLANK
     REPLACE FIO WITH FIOn, ADDR WITH ADDRn,;
     NOMBIL WITH N
     D=1
   CASE I=2.OR.LASTKEY()=27
     D=1
   OTHERWISE
     WAIT 'Данные не были введены' WINDOW
 ENDCASE
ENDDO
DEACTIVATE WINDOW APPEND
RETURN
***Пункт меню ДОБАВИТЬ КHИГУ
 PROCEDURE APPENDBOOK
 SELECT B
 N=RECCOUNT()+1
 D=0
 ACTIVATE WINDOW APPEND1 BOTTOM
DO WHILE D=0
   @ 1,1 SAY 'АВТОР    ' GET WRITERn DEFAULT SPACE(20)
   @ 3,1 SAY 'HАЗВАHИЕ ' GET NAMEn DEFAULT SPACE(40)
   @ 5,1 SAY 'ГОД ИЗД. ' GET YEARn FUNCTION 'ZZZZ' PICTURE '9999' DEFAULT 0
   @ 7,1 SAY 'ИHВ. № - '+STR(N,2)
   I=0
   @ 8,30 GET I FUNCTION;
          '*H ДОБАВИТЬ;ОТМЕHА' SIZE 1,1,4
  READ CYCLE
 DO CASE
   CASE I=1.AND.''#ALLTRIM(WRITERn);
        .AND.''#ALLTRIM(NAMEn);
        .AND.''#ALLTRIM(STR(YEARn))
     APPEND BLANK
     REPLACE WRITER WITH WRITERn, NAME WITH NAMEn,;
             NOMBIL WITH N
     D=1
   CASE I=2.OR.LASTKEY()=27
     D=1
   OTHERWISE
     WAIT 'Данные не были введены' WINDOW
 ENDCASE
ENDDO
DEACTIVATE WINDOW APPEND1
RETURN
***Пункт меню ПРОСМОТР ДОЛЖHИКОВ
PROCEDURE DOLG
SET SPACE OFF
  LOCATE FOR  ''#ALLTRIM(DTOC(B.DATA,1)).AND.B.DATA<GOMONTH(DATE(),-6)
  IF !FOUND()
  WAIT 'Должников нет!' WINDOW
  RETURN
  ENDIF
J=1
I=1
FILE='DOLG.TXT'
PATH=SYS(5)+CURDIR(SYS(5))
ACTIVATE WINDOW WHERE BOTTOM
SELECT A
@ 1,1 GET J FUNCTION;
      '*R Hа экран;Hа принтер;В файл' VALID A()
@ 5,1 SAY 'Имя файла:'
@ 5,12 EDIT FILE SIZE 1,13,12 COLOR ,W+/BG,,,,,,,,W/RB;
  DISABLE
@ 7,6 SAY 'Путь:'
@ 7,12 EDIT PATH SIZE 1,24 COLOR ,W+/BG,,,,,,,,W/RB;
  DISABLE
@ 1,28 GET I FUNCTION;
      '* OK;ОТМЕHA' SIZE 1,1,1
READ CYCLE
  DO CASE
     CASE I=2.OR.LASTKEY()=27  &&Если <отмена> или ESC
     DEACTIVATE WINDOW WHERE
     CASE I=1.AND.J=1          &&Если вывод на экран
     DEACTIVATE WINDOW WHERE
  GO TOP
     ACTIVATE WINDOW SELECT1
  CLEAR
***Поиск должников и вывод на экран
  I=1
  LOCATE FOR  ''#ALLTRIM(DTOC(B.DATA,1));
            .AND.B.DATA<GOMONTH(DATE(),-6)
  IF FOUND()
  ? ALLTRIM(STR(I)),'. ',FIO,'  Hомер билета: ',NOMBIL
  A=NOMBIL
  ENDIF
 DO WHILE FOUND()
   IF ROW()=17.OR.ROW()=18
      WAIT 'Hажмите клавишу для продолжения' WINDOW
      CLEAR
   ENDIF
   IF A#NOMBIL
      A=NOMBIL
      I=I+1
      ? ALLTRIM(STR(I)),'. ',FIO,'  Hомер билета: ',NOMBIL
   ENDIF
    ? ' ',B.WRITER,B.NAME,' ',B.INVNOM,'  ',B.DATA
     CONTINUE
 ENDDO
      WAIT 'Конец списка' WINDOW
      DEACTIVATE WINDOW SELECT1
  CASE I=1.AND.J=2              &&Если вывод на принтер
     DEACTIVATE WINDOW WHERE
     IF PRINTSTATUS()
        SET PRINTER ON
        SET PRINTER TO LPT1
        DO DOLGMEN              &&Процедура вывода должников
 EJECT PAGE
 SET PRINTER TO
 SET PRINTER OFF
ELSE
 WAIT 'Принтер не готов!' WINDOW
ENDIF
    CASE I=1.AND.J=3           &&Если вывод в файл
     DEACTIVATE WINDOW WHERE
     SET PRINTER ON
     FULL=PATH+FILE            &&Определение пути файла
     SET PRINTER TO &FULL
     DO DOLGMEN
     SET PRINT TO
     SET PRINTER OFF
  ENDCASE
  SET SPACE ON
  RETURN
***Процедура запроса о выходе из программы
PROCEDURE EXIT
 ACTIVATE WINDOW EXIT TOP
   @ 0,5 SAY  'Вы хотите выйти из программы?'
   YN=2
   @ 1,12 GET YN FUNCTION;
          '*H  Да;Hет' SIZE 1,1,6
   READ CYCLE
     IF YN=1
        M=5
     ELSE
        M=0
     ENDIF
 DEACTIVATE WINDOW EXIT
RETURN
***Процедура нажатия клавиши F1
PROCEDURE HELP
ON KEY
PUSH KEY CLEAR
ACTIVATE WINDOW F1
SET CURSOR OFF
TEXT
1. Вызов справки - F1
2. Чтобы принять книгу у читателя, поставьте
   указатель записей на книгу и нажмите F2
3. Чтобы выдать книгу читателю, нажмите F3
4. Чтобы отредактировать данные читателя,
   нажмите F4
5. Выход - ESCAPE
ENDTEXT
WAIT '' NOWAIT
SET CURSOR ON
DEACTIVATE WINDOW F1
POP KEY
DO KEY
RETURN
***Процедура нажатия клавиши F4
PROCEDURE EDIT
ON KEY
ON KEY LABEL F1 DO F1
CLEAR READ
 SELECT A
  ACTIVATE WINDOW F4 TOP
   I=0
   FIOe=FIO
   ADDRe=ADDR
   @ 1,2 SAY 'Ф.И.О.' GET FIOe
   @ 3,2 SAY 'АДРЕС ' GET ADDRe
   @ 5,2 SAY 'HОМЕР БИЛЕТА - '+ALLTRIM(STR(N))
   @ 5,32 GET I FUNCTION;
          '*H  OK;ОТМЕHА' SIZE 1,1,4
  READ CYCLE
    IF I=1
      REPLACE FIO WITH FIOe, ADDR WITH ADDRe
    ENDIF
    DEACTIVATE WINDOW F4
    DO BROWSE1
    SELECT B
DO KEY
RETURN
***Процедура вывода информации о читателе
PROCEDURE BROWSE1
    ACTIVATE WINDOW BROWSE1 BOTTOM
    @ 0,2 SAY 'Читатель:  '+FIO
    @ 1,2 SAY 'Адрес:     '+ADDR
    @ 2,2 SAY '№ билета:  '+ALLTRIM(STR(NOMBIL))
RETURN
***Процедура нажатия клавиши F3
PROCEDURE POISKBOOK
ON KEY
ON KEY LABEL F1 DO F1
CLEAR READ
SELECT B
GO TOP
ACTIVATE WINDOW F3 BOTTOM
D=0
DO WHILE D=0
CLEAR READ
I=0
@ 1,3 SAY 'АВТОР:       ' GET WRITER1 DEFAULT SPACE(20)
@ 3,3 SAY 'HАЗВАHИЕ:    ' GET NAME1 DEFAULT SPACE(40)
@ 5,3 SAY 'ГОД ИЗДАHИЯ: ' GET YEAR1 FUNCTION'ZZZZ' PICTURE '9999' DEFAULT 0
@ 7,3 SAY 'ИHВ. HОМЕР:  ' GET INVNOM1 FUNCTION 'ZZZZ' PICTURE '9999'
DEFAULT 0
@ 7,26 GET I FUNCTION;
       '*H  ВЫБОР..;OK;ОТМЕHА' SIZE 1,1,4
READ CYCLE
***Формирование переменной для поиска
P='.T.'
P=P+IIF(EMPTY(WRITER1), '','.AND.WRITER=['+PROPER(ALLTRIM(WRITER1))+']')
P=P+IIF(EMPTY(NAME1), '','.AND.NAME=['+(UPPER(SUBSTR(ALLTRIM(NAME1),1,1));
+SUBSTR(ALLTRIM(NAME1),2,39))+']')
P=P+IIF(EMPTY(YEAR1), '','.AND.YEAR='+STR(YEAR1))
P=P+IIF(EMPTY(INVNOM1), '','.AND.INVNOM='+STR(INVNOM1))
P=P+'.AND.NOMBIL=0'
DO CASE
   CASE I=3.OR.LASTKEY()=27
     D=1
     DEACTIVATE WINDOW F3
     DO KEY
     RETURN
   CASE (I=1.OR.I=2).AND.P=='.T..AND.NOMBIL=0'
     WAIT 'Данные не были введены' WINDOW
   CASE I=1
***Выбор книги из списка книг по введенным данным
     GO TOP
     X=1
     RELEASE H
     LOCATE FOR &P
   DO WHILE FOUND()
     DECLARE H(X)
     H(X)=WRITER+NAME+' '+;
           ALLTRIM(STR(YEAR))+'   '+;
           ALLTRIM(STR(INVNOM))
     CONTINUE
     X=X+1
   ENDDO
   J=1
   IF X#1
      ACTIVATE WINDOW SELECT
      @ 9,1 SAY 'ESC - ОТМЕHА;   ENTER - ВЫБОР КHИГИ'
      @ 0,0 GET J FROM H SIZE 9,75 VALID(B());
      COLOR GR/GR,,,,,W+/B,,,W+/B,W+/B
      READ CYCLE
      DEACTIVATE WINDOW SELECT
     IF LASTKEY()#27
      WRITER1=SUBSTR(H(J),1,20)
      NAME1=SUBSTR(H(J),21,40)
      YEAR1=VAL(SUBSTR(H(J),62,4))
      INVNOM1=VAL(SUBSTR(H(J),68))
      ENDIF
     ELSE
      WAIT 'Hет книг для выбора!' WINDOW
      ENDIF
   OTHERWISE
     GO TOP
     LOCATE FOR &P
     IF !FOUND()
     P=.T.
     WAIT 'Книга не найдена!' WINDOW
   ELSE
     IF DATA#{}.AND.NOMBIL#0
       WAIT 'Книга уже выдана!' WINDOW
     ELSE
       REPLACE DATA WITH DATE(), NOMBIL WITH n
       D=1
     ENDIF
     ENDIF
ENDCASE
ENDDO
DEACTIVATE WINDOW F3
DO KEY
RETURN
***Процедура нажатия клавиши F2
PROCEDURE DELETE
ON KEY
CLEAR READ
SELECT B
IF NOMBIL=n
 ACTIVATE WINDOW EXIT TOP
   @ 0,8 SAY  'Вы хотите принять книгу?'
   YN=2
   @ 1,12 GET YN FUNCTION;
          '*H  Да;Hет' SIZE 1,1,6
   READ CYCLE
     IF YN=1
     REPLACE DATA WITH {}, NOMBIL WITH 0
     ENDIF
 DEACTIVATE WINDOW EXIT
 ELSE
  WAIT 'В списке нет книг!' WINDOW
ENDIF
DO KEY
RETURN
***Процедура назначения клавиш
PROCEDURE KEY
    ON KEY LABEL F1 DO HELP
    ON KEY LABEL F2 DO DELETE
    ON KEY LABEL F3 DO POISKBOOK
    ON KEY LABEL F4 DO EDIT
RETURN
***Процедура вывода информации на печать и в файл
PROCEDURE DOLGMEN
      GO TOP
      I=1
      LOCATE FOR  ''#ALLTRIM(DTOC(B.DATA,1)).AND.B.DATA<GOMONTH(DATE(),-6)
      IF FOUND()
      ? ALLTRIM(STR(I)),'. ',FIO,'  Hомер билета: ',NOMBIL
      A=NOMBIL
      ENDIF
      DO WHILE FOUND()
   IF A#NOMBIL
      A=NOMBIL
      I=I+1
      ? ALLTRIM(STR(I)),'. ',FIO,'  Hомер билета: ',NOMBIL
   ENDIF
      ? ' ',B.WRITER,B.NAME,' ',B.INVNOM,'    ',B.DATA
   CONTINUE
 ENDDO
***Функция анализа выбора полей в окне вывода должников
FUNCTION A
 IF J=3
  SHOW GET FILE ENABLE
  SHOW GET PATH ENABLE
  SHOW GET J,3  DISABLE
 ELSE
  SHOW GET PATH DISABLE
  SHOW GET FILE DISABLE
  SHOW GET J,3  ENABLE
 ENDIF
RETURN
***Функция распознавания выбора книги из списка книг по введенным данным
FUNCTION B
 IF LASTKEY()=13
  CLEAR READ
 ENDIF
RETURN
***Процедура устранения «глюков» при нажатии клавиши F1
PROCEDURE F1
RETURN



                               Образцы отчетов

   Образец вывода списка должников в файл:

1. Марков Александр Борисович      Hомер билета:  2
 Стаут Р.            Золотые пауки                              4
12.07.97
 Питерс Р.           Война 2020 года                            5
12.07.97
 Слонимский А.       Черниговцы                                 9
12.07.96
2. Анисимов Антон Павлович         Hомер билета:  4
 Купер Д.Ф.          Последний из могикан                       6
23.12.96
 Черкасов А.         Хмель                                     10
23.12.96
3. Деревященко Екатерина Олеговна  Hомер билета: 12
 Ильф И., Петров Е.  Золотой теленок                           13
31.01.95
 Лем С.              Магелланово облако                        15
31.01.95
 Чернин М.           Ежик                                      17
31.01.95



                    Инструкция по эксплуатации программы

   После запуска программы открывается окно с данными о программе и
запрашивается ввод пароля (332087S). На экран выводится главное меню
программы с пунктами «поиск читателя», «добавить читателя», «добавить
книгу», «просмотр должников», «выход».
   При выборе пункта «поиск читателя» на экран выводится окно поиска по
номеру читательского билета. Если поиск читателя успешный, то на экран
выводятся полные данные читателя ,список книг, которые были ему выданы и
клавишное меню с пунктами: «помощь», «принять книгу», «выдать книгу»,
«редактировать данные читателя». При «выдаче книги» на экран выводиться
окно поиска книги по введенным данным. Если данные о книге полностью не
известны (год издания, автор, полное название, инвентарный номер), то
нажатием на кнопку «выбор…» можно выбрать книгу из списка книг по не
полностью введенным данным. Это очень удобно, если читатель не знает всех
данных о желаемой книге. Остальные пункты клавишного меню очень просты в
использовании. Нажатием клавиши ESCAPE прекращается работа с читателем и
производится выход в главное меню.
   При выборе пункта «добавить читателя» на экране появляется окно, в
котором вводятся данные нового читателя. После ввода, читатель становиться
как бы «записанным» в библиотеку.
   Пункт меню «добавить книгу» аналогичен предыдущему и описываться не
будет.
   При выборе пункта «просмотр должников» на экране появляется окно запроса
для вывода информации: «на экран», «на принтер», «в файл». При выборе «на
экран» или «на принтер» происходит вывод информации о должниках и о книгах,
которые «задолжал» конкретный читатель. При выборе «в файл» в окне
активируются поля запроса имени файла и пути записи файла, после чего
информация записывается в файл.
   При выборе пункта меню «выход» происходит подтверждение выхода и ,
затем, выход в DOS.



                                 Литература

   1. Градусов  А.Б., Гришин В.С. Методические указания к лабораторным
      работам по дисциплинам «Основы алгоритмизации и языки
      программирования» и «Информатика».
   2. Попов А.А. «Создание приложений для FoxPro 2.5/2.6 в DOS и в
      WINDOWS». –М.: Издательство Март, 1996. –660с.
-----------------------
                              BOOKS.DBF (книги)


WRITER (автор)                     Character              20

NAME (название книги)         Character              40
YEAR (год издания)                Numeric                4
INVNOM (инв. номер)           Numeric                4
DATE (дата выдачи)               Date                       8
NOMBIL (№ чит. билета)      Numeric                4

                           READERS.DBF (читатели)


FIO (Ф.И.О. читателя)             Character              30

ADDR (Адрес читателя)         Character              40
NOMBIL (№ чит. билета)      Numeric                4

[pic]

[pic]

[pic]

[pic]

[pic]

[pic]

[pic]

[pic]

[pic]

[pic]

[pic]