Информационно-справочная система, обеспечивающая работу с базой данных Bit
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 */
correct(1):-
makewindow(4,26,48,"Изменение данных",0,0,25,80),
nl,
accept(N),
X=N,
абитурьент(X,фио(Fam,Nam,Otch),Pol,List,оцен(E1,E2,E3)),
clearwindow,nl,
write("Порядковый номер абитурьента : "),write(N),nl,
write("Фамилия : "),write(Fam),nl,
write("Имя : "),write(Nam),nl,
write("Отчество : "),write(Otch),nl,
write("Пол : "),write(Pol),nl,
write("Номер экзаменационного листа : "),write(List),nl,nl,
write("Оценки за экзамены - "),nl,nl,
write("За первый: "),write(E1),write(" "),
write("За второй: "),write(E2),write(" "),
write("За третий: "),write(E3),
nl,nl,nl,
write("Введите фамилию : "),readln(Fam1),
write("Введите имя : "),readln(Nam1),
write("Введите отчество : "),readln(Otch1),
write("Введите пол : "),readln(Pol1),
write("Введите номер экзаменационного листа: "),readln(List1),
write("Введите оценки за экзамены - "),nl,
write("За первый : "),readln(Ekz1),
write("За второй : "),readln(Ekz2),
write("За третий : "),readln(Ekz3),nl,
X1=X,
retract(абитурьент(X,фио(Fam,Nam,Otch),Pol,List,оцен(E1,E2,E3))),
skip(Fam1,Fam,Fam2),
skip(Nam1,Nam,Nam2),
skip(Otch1,Otch,Otch2),
skip(Pol1,Pol,Pol2),
skip1(List1,List,List2),
skip1(Ekz1,E1,E11),
skip1(Ekz2,E2,E22),
skip1(Ekz3,E3,E33),
assertz(абитурьент(X1,фио(Fam2,Nam2,Otch2),Pol2,List2,оцен(E11,E22,E33))),
!,
mesage,
removewindow.
/* Процедура добавления новых записей, стр.11 */
correct(2):-
makewindow(9,26,48,"Ввод новых данных",0,0,25,80),
repeat,
nl,
write("Введите порядковый номер абитурьента: "),readint(K),nl,
write("Введите фамилию : "),readln(F),nl,
write("Введите имя : "),readln(N),nl,
write("Введите отчество : "),readln(O),nl,
write("Введите пол : "),readln(P),nl,
write("Введите номер экзаменационного листа: "), readint(L),nl,
write("Введите оценки за экзамены -"),nl,nl,
write(" За первый : "),readint(E1),nl,
write(" За второй : "),readint(E2),nl,
write(" За третий : "),readint(E3),nl,
N1=K,
Fam=F,Nam=N,Otch=O,
Pol=P,List=L,
Ekz1=E1,Ekz2=E2,Ekz3=E3,
assertz(абитурьент(N1,фио(Fam,Nam,Otch),Pol,List,оцен(Ekz1,Ekz2,Ekz3))),
ask,!,
mesage,
removewindow.
correct(_).
/* Процедура просмотра базы, стр.11 */
view(1):-
makewindow(16,31,26,"Просмотp основной базы",0,0,25,80),
nl,nl,
write("╔═══════════════════════════════════════════════════════╗"),nl,
write("║