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

Информация - Компьютеры, программирование

Другие материалы по предмету Компьютеры, программирование

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

ESC"> 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 FUNCTIONZZZZ 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.