logo search
Моделирование систем / Моделирование систем / Теория / Dop / АИС_Конспект

Приложение №.4. Программа «Внешняя база данных»

Требуется создать базу данных, в которой хранится информация о физическом лице с атрибутами: Почтовый индекс(PostIndex), Фамилия с инициалами (Name). Разместить цепочку термов в оперативной памяти. Действия над термами: добавление, просмотр списка термов, удаление, замена терма на новый.

Программа:

domains

db_selector=dbp%селектор

%домен терма и терм:

persons=person(string PostIndex,string Name)

predicates

browse %просмотр термов

dbadd %добавление термов

getmemory %выделение памяти

menu %меню

process(integer Job)%выбор пользователя

%исходные данные:

person_rec(string PostIndex,string Name)

%зацикливание

repeat

clauses

repeat.

repeat:-repeat.

%набор фактов

person_rec("123789","Иванова А.С").

person_rec("123567","Квасова О.П").

person_rec("123700","Зверева А.И").

%меню программы

menu:-

repeat,

write("1 – Новая запись\n2 – Просмотр”),

write(“\n3-Удаление\n4-Замена\n5-EXIT\n\n"),

readint(Job),process(Job),Job=5,!.

%выделить память

getmemory:-

db_create(dbp,"persons_list",in_memory).

%заполнение базы

dbadd:-

person_rec(PIndex,Name),

chain_insertz(dbp,chain1,persons,person(PIndex,Name),_)

,fail.

%вывод значений термов

browse:-

chain_terms(dbp,chain1,persons,

person(PIndex,Name),Ref),

write(PIndex," ",Name," ",Ref,"\n"),fail.

browse:-write("\nPress key !\n"),readchar(_),!.

%реакция на выбор в меню

process(1):- %заполнить базу

dbadd.

process(2):- %просмотр

browse.

process(3):- %уничтожение терма

write("Input post index > "),readln(PIndex),

chain_terms(dbp,chain1,persons,person(PIndex,_),Ref),

term_delete(dbp,chain1,Ref).

process(4):- %замена терма

write("Input post index for search > "),

readln(PIndex),

chain_terms(dbp,chain1,persons,person(PIndex,_),Ref),

write("Input new index >"),readln(PInew),nl,

write("Input new name >"),readln(Name),

term_replace(dbp,persons,Ref,person(PInew,Name)).

process(5):- %завершение работы

write("Exit !\n"),db_close(dbp),

db_delete("persons_list",in_memory).

goal

getmemory,menu.