Смекни!
smekni.com

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


Содержание:

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