Arkanium77

Записная книжка

Apr 2nd, 2019
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 4.85 KB | None | 0 0
  1. domains
  2.   name, fone = symbol
  3.  
  4. facts
  5.   p(name, fone)    
  6.  
  7. predicates
  8.   nondeterm repeat()
  9.   nondeterm prnP()
  10.   nondeterm prnP2()
  11.   nondeterm addIt(symbol,symbol)
  12.   nondeterm removeIt(symbol,symbol)
  13.   nondeterm removeIt(symbol)
  14.   nondeterm removeIt()
  15.  
  16.   nondeterm editIt(symbol,symbol,symbol,symbol)
  17.   nondeterm editIt(symbol,symbol)
  18.  
  19.   nondeterm findIt(symbol,symbol)
  20.   nondeterm findByName(symbol)
  21.   nondeterm findByNumber(symbol)
  22.  
  23.   nondeterm menu()
  24.   nondeterm do(integer)
  25.   nondeterm punkt(integer)
  26.  
  27.   nondeterm enterAdd(symbol,symbol)
  28.   nondeterm enterEdit(symbol,symbol)
  29.   nondeterm enterEdit(symbol,symbol,symbol,symbol)
  30.   nondeterm editpp(integer)
  31.   nondeterm enterDelete(symbol,symbol)
  32.   nondeterm enterDelete(symbol)
  33.   nondeterm deletepp(integer)
  34.   nondeterm findpp(integer)
  35.  
  36. clauses
  37.    repeat.
  38.    repeat:-repeat.
  39.    
  40.    menu:-
  41.     repeat,
  42.     nl,nl,write("              МЕНЮ"),nl,
  43.     write("1. Добавление"),nl,
  44.     write("2. Изменение"),nl,
  45.     write("3. Удаление"),nl,
  46.     write("4. Поиск"),nl,
  47.     write("5. Вывод"),nl,
  48.     write("6. ВЫХОД"),nl,nl,
  49.     write("Введите номер пункта меню: "),
  50.     readint(Х),
  51.     do(Х).
  52.  
  53.    do(6):-!.
  54.    do(Х):-
  55.     punkt(Х),
  56.     fail.
  57.  
  58.  
  59.    punkt(1) :-
  60.     enterAdd(X,Y),
  61.     addIt(X,Y),nl,!.
  62.    punkt(2) :-
  63.     write("Выберете режим изменения"),nl,
  64.     write("1. Полный"),nl,
  65.     write("2. По имени"),nl,
  66.     write("Введите номер пункта меню: "),
  67.     readint(D),
  68.     editpp(D),!.
  69.    punkt(3) :-
  70.     write("Выберете режим удаления"),nl,
  71.     write("1. УДАЛИТЬ ВСЁ"),nl,
  72.     write("2. По имени"),nl,
  73.     write("3. Полный"),nl,
  74.     write("Введите номер пункта меню: "),
  75.     readint(D),
  76.     deletepp(D),!.
  77.    punkt(4):-
  78.     write("Выберете режим поиска:"),nl,
  79.     write("1. По номеру"),nl,
  80.     write("2. По имени"),nl,
  81.     write("Введите номер пункта меню: "),
  82.     readint(D),
  83.     findpp(D),!.
  84.    punkt(5):- prnP2(),!.
  85.    
  86.    punkt(6):- !.   
  87.    punkt(_) :- write("Такого пункта НЕТ"), nl, !.
  88.    
  89.    
  90.  
  91.    enterAdd(X,Y):-
  92.     write("\nВведите имя: "),
  93.     readln(X),
  94.     write("\nВведите номер: "),
  95.     readln(Y).
  96.    
  97.    
  98.    
  99.    
  100.    
  101.    editpp(1):-enterEdit(X,Y,X1,Y1),editIt(X,Y,X1,Y1),!.
  102.    editpp(_):-enterEdit(X,Y),editIt(X,Y),!.
  103.    
  104.    enterEdit(X,Y):-
  105.     write("\nВведите имя изменяемой записи: "),
  106.     readln(X),
  107.     write("\nВведите новый номер: "),
  108.     readln(Y).
  109.    
  110.    enterEdit(X,Y,XNew,YNew):-
  111.     write("\nВведите имя изменяемой записи: "),
  112.     readln(X),
  113.     write("\nВведите номер изменяемой записи: "),
  114.     readln(Y),
  115.     nl,
  116.     write("\nВведите новое имя записи: "),
  117.     readln(XNew),
  118.     write("\nВведите новый номер записи: "),
  119.     readln(YNew).
  120.    
  121.    
  122.    
  123.    
  124.    
  125.    deletepp(1):- removeIt(),!.
  126.    deletepp(2):- enterDelete(X),removeIt(X),!.
  127.    deletepp(_):- enterDelete(X,Y),removeIt(X,Y),!.
  128.    
  129.    enterDelete(X,Y):-
  130.     write("\nВведите имя удаляемой записи: "),
  131.     readln(X),
  132.     write("\nВведите номер удаляемой записи: "),
  133.     readln(Y),nl.
  134.    
  135.    enterDelete(X):-
  136.     write("\nВведите имя удаляемой записи: "),
  137.     readln(X), nl.
  138.    
  139.    
  140.    
  141.    findpp(1):-
  142.     write("\nВведите номер для поиска записи: "),
  143.     readln(X), nl,
  144.     findByNumber(X),!.
  145.    findpp(_):-
  146.     write("\nВведите имя для поиска записи: "),
  147.     readln(X), nl,
  148.     findByName(X),!.
  149.    
  150.    %punkt(3) :- %Ветвление
  151.    %    enterAdd(X,Y).
  152.    
  153.    
  154.    
  155.    
  156.    
  157.  
  158.    
  159.    
  160.    prnP2 :-
  161.          write("   Записная книжка:"), nl,
  162.          prnP,
  163.          %write("   ВСЕ!"),
  164.          nl, nl.
  165.  
  166.    prnP :-
  167.          p(X,Y),
  168.          write(X, " - ", Y),
  169.          nl,
  170.          fail.
  171.    prnP.
  172.    
  173.    addIt(X,Y):- assert(p(X,Y)).
  174.    
  175.    removeIt(X,Y):- retract(p(X,Y)).
  176.    removeIt(X):- retract(p(X,_)),!.
  177.    removeIt():- retractall(p(_,_)).
  178.    
  179.    editIt(X,Y,NewX,NewY):-
  180.     removeIt(X,Y),
  181.     addIt(NewX,NewY).
  182.    
  183.    editIt(X,NewY):-
  184.     removeIt(X,_),
  185.     addIt(X,NewY).
  186.    
  187.    findIt(X,F):-
  188.     p(X,F),
  189.     write(X, " - ", F),
  190.         nl.
  191.    findByName(X):-findIt(X,_),fail.
  192.    findByNumber(X):-findIt(_,X),fail.
  193.  
  194.  
  195. goal
  196.     consult("C:\\stud\\409\\6\\fb1.txt"),
  197.     %prnP2,
  198.     %findByName("Иванов"),
  199.     %punkt(1),
  200.     menu,
  201.     %editIt("Luk","8-800-555-35-35"),
  202.     %prnP2,
  203.     save("C:\\stud\\409\\6\\fb1.txt").
Advertisement
Add Comment
Please, Sign In to add comment