Смекни!
smekni.com

Разработка СУБД FoxPro 2.0 (стр. 2 из 2)

@ 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с.