Информационно-справочная система, обеспечивающая работу с базой данных Bit
write("╠════╦═════════════════════╦═══╦═════╦══════════════════╣"),nl,
write("║ ║ ФИО ║ ║ No ║оценки за экзамены║"),nl,
write("║ No ╠═══════╦════╦════════╣Пол║ экз.╠═════╦══════╦═════╣"),nl,
write("║ ║Фамилия║Имя ║Отчество║ ║листа║1 экз║ 2 экз║3 экз║"),nl,
write("╠════╬═══════╬════╬════════╬═══╬═════╬═════╬══════╬═════╣"),nl,
абитурьент(N,фио(Fam,Nam,Otch),Pol,List,оцен(E1,E2,E3)),
cursor(Z,_),
cursor(Z,2),write(N),
cursor(Z,5),write("║",Fam),
cursor(Z,18),write("║",Nam),
cursor(Z,30),write("║",Otch),
cursor(Z,43),write("║ ",Pol),
cursor(Z,49),write("║ ",List),
cursor(Z,55),write("║ ",E1),
cursor(Z,62),write("║ ",E2),
cursor(Z,69),write("║ ",E3),
cursor(Z,0),write("║"),
cursor(Z,76),write("║"),
nl,
fail.
view(1):-
write("╚════╩═══════╩════╩════════╩═══╩═════╩═════╩══════╩═════╝"),
nl,
cursor(22,26),
write("Нажмите на любую клавишу"),
readchar(_),
removewindow.
view(2):-
nl,
makewindow(13,31,26,"Просмотр новой базы данных",0,0,25,80),
write("╔═══════════════════════════════════════════════════════╗"),nl,
write("║ СПИСОК СТУДЕНТОВ ║"),nl,
write("╠════╦════════════════════════════════════╦═════╦═══════╣"),nl,
write("║ ║ ФИО ║ No ║ сумма ║"),nl,
write("║ No ╠════════════╦═══════════╦═══════════╣ экз.║ балов ║"),nl,
write("║ ║ Фамилия ║ Имя ║ Отчество ║листа║ ║"),nl,
write("╠════╬════════════╬═══════════╬═══════════╬═════╬═══════╣"),nl,
студент(N,фио(Fam,Nam,Otch),List,Sum),
cursor(Z,_),
cursor(Z,11),write(N),
cursor(Z,14),write("║",Fam),
cursor(Z,27),write("║",Nam),
cursor(Z,39),write("║",Otch),
cursor(Z,52),write("║ ",List),
cursor(Z,58),write("║ ",Sum),
cursor(Z,9),write("║"),
cursor(Z,66),write("║"),
nl,
fail.
view(2):-
write("╚════╩════════════╩═══════════╩═══════════╩═════╩═══════╝"),
nl,
cursor(22,26),
write("Нажмите на любую клавишу"),
readchar(_),
removewindow.
view(_).
/* Вспомагательная процедура к процедуре */
/* correct(1) и working(2), стр.11 */
accept(N):-
nl,
cursor(10,0),
write(" 1 - известен номер абитурьента"),nl,
write(" 2 - известна фамилия"),nl,
write(" =>"),
readint(X),
acp(X,N).
acp(1,N):-
nl,
write(" Введите номер абитурьента: "),nl,
write(" >"),
readint(N),
абитурьент(P,_,_,_,_),
P=N.
acp(1,N):-
N=0.
acp(2,N):-
nl,
write(" Введите фамилию абитурьента: "),nl,
write(" >"),
readln(L),
абитурьент(Y,фио(L,_,_),_,_,_),
N=Y.
acp(2,N):-
N=0.
/* Вспомагательная процедура к correct(1), стр.11 */
skip("",Fam,Fam2):-
Fam2=Fam,
!.
skip(Fam1,_,Fam2):-
Fam2=Fam1,
!.
skip1("",Fam,Fam2):-
Fam2=Fam,
!.
skip1(Fam1,_,Fam2):-
str_int(Fam1,Fam3),
Fam2=Fam3,
!.
/* Процедура чтения с диска, стр.12 */
load_bd(1):-
retractall(_,абитурьент),nl,nl,
write(" Введите имя файла :"),
readln(N),
existfile(N),
consult(N,абитурьент),
ok,
!.
load_bd(1):-
io_error,
!.
load_bd(2):-
retractall(_,абитурьент),
existfile("bit.dat"),
consult("bit.dat",абитурьент),
ok,
!.
load_bd(2):-
io_error,
!.
load_bd(3):-
retractall(_,студент),nl,nl,
write(" Введите имя файла :"),
readln(N),
existfile(N),
consult(N,студент),
ok,
!.
load_bd(3):-
io_error,
!.
load_bd(4):-
retractall(_,студент),
existfile("bstud.dat"),
consult("bstud.dat",студент),
ok,
!.
load_bd(4):-
io_error,
!.
load_bd(_).
/* Процедура записи на диск, стр.12 */
save_bd(1):-
nl,nl,
write(" Введите имя файла : "),
readln(N),
save(N,абитурьент),nl,
ok,
!.
save_bd(1):-
error.
save_bd(2):-
save("bit.dat",абитурьент),
ok,
!.
save_bd(2):-
error.
save_bd(3):-
nl,nl,
write(" Введите имя файла : "),
readln(N),
save(N,студент),nl,
ok,
!.
save_bd(3):-
error.
save_bd(4):-
save("bstud.dat",студент),
ok,
!.
save_bd(4):-
error.
save_bd(_).
/* Процедура запроса на окончание ввода в correct(2), стр.12 */
ask:-
makewindow(10,43,120,"Вопрос",6,18,8,40),nl,nl,
write(" Продолжить процесс ввода данных? "),nl,nl,
write(" [Д]а/[Н]ет"),
readchar(Ch),
removewindow,
clearwindow,
Ch='Н',!.
/* Вывод предупреждения о необходимости сохранения данных, стр.12 */
mesage:-
makewindow(17,74,79,"Предупреждение",6,18,8,40),nl,
write(" Не забудьте сохранить "),nl,
write(" вновь введенные данные!"),nl,nl,
write(" Нажмите на любую клавишу"),
readchar(Ch),
removewindow.
/* Процедуры вывода сообщения об ошибке, стр.12 */
error:-
makewindow(15,74,79,"ОШИБКА",6,18,8,40),
cursor(2,16),
write("ОШИБКА"),nl,nl,
write(" Нажмите на любую клавишу"),
sound(70,294),
readchar(_),
removewindow,