Реферат: Информационно-справочная система, обеспечивающая работу с базой данных Bit
Процедура Ask является вспомагательной к процедуре
Correct(2). Она запрашивает пользователя, желает ли он продол-
жить ввод данных.
Данная процедура выводит предупреждение о необходимости
сохранения вновь введенных данных.
Эти процедуры выводят сообщения об ошибках.
Данная процедура выводит сообщение об успешном выполнении
операции.
domains
Str=string
Int=integer
ФИО=фио(Str,Str,Str)
ОЦЕН=оцен(Int,Int,Int)
database - студент
студент(Int,ФИО,Int,Int),
database - абитурьент
абитурьент(Int,ФИО,Str,Int,ОЦЕН)
predicates
begin
main_menu
autoload
accept(Int)
acp(Int,Int)
working(Int)
correct(Int)
view(Int)
skip(Str,Str,Str)
skip1(Str,Int,Int)
ask
mesage
error
io_error
ok
save_bd(Int)
load_bd(Int)
repeat
goal
begin.
clauses
/* Основная процедура, стр.8 */
begin:-
makewindow(1,26,94,"СПИСОК АБИТУРЬЕНТОВ",0,0,25,80),
clearwindow,
autoload,
main_menu.
/* Главное меню, стр.8 */
main_menu:-
repeat,
cursor(7,0),
write(" 0 - О системе... "),nl,
write(" 1 - Корректировка данных"),nl,
write(" 2 - Уничтожение записей"),nl,
write(" 3 - Просмотр базы"),nl,
write(" 4 - Загрузка базы"),nl,
write(" 5 - Сохранение базы"),nl,
write(" 6 - Создание новой базы"),nl,
write(" 7 - Выход из программы"),nl,
write(" =>"),
readint(C),
clearwindow,
working(C),
clearwindow,
C = 7,
retractall(_),
removewindow.
/* Процедура автоматической загрузки базы данных, стр.9 */
autoload:-
retractall(_,абитурьент),
existfile("bit.dat"),
consult("bit.dat",абитурьент),
cursor(21,30),
write("*База загружена*").
autoload:-
makewindow(2,74,79,"ОШИБКА",6,18,8,40),
cursor(2,10),
write("Нет базы на диске"),
sound(70,294),
removewindow,
!.
/* Вывод данных о создателе программы, стр.9 */
working(0):-
makewindow(3,27,30,"О системе...",0,0,25,80),
nl,nl,
write(" Инфоpмационно-спpавочная система"),
nl,nl,
write(" Список абитурьентов "),
nl,nl,nl,nl,
write(" Программа составлена в среде "),
nl,
write(" TURBO-PROLOG v.2.0."),
nl,nl,nl,
write(" автоp: Данченков А.В."),
nl,nl,
write(" МГИРЭА, гp.ИИ-1-95 (с) 1996 г. "),
nl,
sound(5,220),
cursor(22,26),
write("Нажмите на любую клавишу"),
readchar(_),
removewindow,!.
/* Процедура вывода меню корректировки данных, стр.9 */
working(1):-
makewindow(4,26,48,"Коppектировка данных",0,0,25,80),
sound(5,220),
repeat,
nl,
nl,
cursor(9,0),
write(" 1 - Изменение данных"),nl,
write(" 2 - Добавление данных"),nl,
write(" 3 - Выход в главное меню" ),nl,
write(" =>"),
readint(X),
clearwindow,
X>0,X<=3,
correct(X),
clearwindow,
X=3,!,
removewindow.
/* Процедура уничтожения данных, стр.9 */
working(2):-
makewindow(5,48,107,"Уничтожение записей",0,0,25,80),
sound(5,220),
nl,
accept(N),
X=N,
абитурьент(X,фио(Fm,Nm,Ot),Pl,Ls,оцен(E1,E2,E3)),
retract(абитурьент(X,фио(Fm,Nm,Ot),Pl,Ls,оцен(E1,E2,E3))),
ok,
!,
removewindow.
working(2):-
error,
removewindow,!.
/* Процедура вывода меню просмотра базы данных, стр.9 */
working(3):-
makewindow(6,30,26,"Просмотp базы",0,0,25,80),
sound(5,220),
repeat,
nl,
nl,
cursor(10,0),
write(" 1 - Просмотр основной базы"),nl,
write(" 2 - Просмотр базы BSTUD"),nl,
write(" 3 - Выход в главное меню" ),nl,
write(" =>"),
readint(X),
clearwindow,
X>0,X<=3,
view(X),
clearwindow,
X=3,!,
removewindow.
/* Процедура загрузки базы данных, стр.10 */
working(4):-
makewindow(7,62,120,"Загрузка",5,10,15,60),
sound(5,220),
repeat,
nl,nl,
write("1 - Загрузить основную базу из выбранного файла"),nl,
write("2 - Загрузить основную базу из файла bit.dat"),nl,
write("3 - Загрузить базу BSTUD из выбранного файла"),nl,
write("4 - Загрузить базу BSTUD из файла bstud.dat"),nl,
write("5 - Выход в основное меню"),nl,
write("=>"),
readint(C),
clearwindow,
C>0,C<=5,
load_bd(C),
clearwindow,
C = 5,!,
removewindow.
/* Процедура сохранения базы данных, стр.10 */
working(5):-
makewindow(8,62,120,"Сохранение",5,10,15,60),
sound(5,220),
repeat,
nl,nl,
write("1 - Сохранить основную базу в указанном файле"),nl,
write("2 - Сохранить основную базу в файле bit.dat"),nl,
write("3 - Сохранить базу BSTUD в указанном файле"),nl,
write("4 - Сохранить базу BSTUD в файле bstud.dat"),nl,
write("5 - Выход в основное меню"),nl,
write("=>"),
readint(I),
clearwindow,
I>0,I<=5,
save_bd(I),
clearwindow,!,
removewindow.
/* Процедура создания новой базы данных, стр.10 */
working(6):-
makewindow(10,43,120,"Создание базы данных BSTUD",6,18,8,40),
sound(5,220),
nl,
retractall(_,студент),
абитурьент(N,фио(Fam,Nam,Otch),Pol,List,оцен(E1,E2,E3)),
N=N1, Fam1=Fam, Nam1=Nam,
Otch1=Otch, List1=List, Sum=E1+E2+E3,
assertz(студент(N1,фио(Fam1,Nam1,Otch1),List,Sum)),
fail.
working(6):-
write(" База BSTUD создана."),
nl,
write(" Не забудьте сохранить ее!"),
nl,nl,
write(" Нажмите на любую клавишу"),
readchar(_),
removewindow,!.
/* Процедура выхода, стр.10 */
working(7):-!.
/* Обработка ошибки пользователя, стр.10 */
working(_):-
makewindow(16,74,79,"ОШИБКА ВВОДА",6,18,8,40),
nl,
write(" Введите число от 0 до 7,"),nl,
write(" соответствующее выбранному пункту"),nl,nl,nl,
write(" Нажмите на любую клавишу"),
sound(20,494),
sound(30,392),
readchar(_),
removewindow.
/* Процедура коррекции данных в базе, стр.10 */