Содержание:
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
***При удачном поиске читателя открывается 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)
@ 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
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)
@ 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))
REPLACE WRITER WITH WRITERn, NAME WITH NAMEn,;
WAIT 'Данные не были введены' WINDOW ENDCASE ENDDO DEACTIVATE WINDOW APPEND1 RETURN ***Пункт меню ПРОСМОТР ДОЛЖHИКОВ PROCEDURE DOLG SET SPACE OFF LOCATE FOR ''#ALLTRIM(DTOC(B.DATA,1)).AND.B.DATA