Sunteți pe pagina 1din 5

Studiul de caz

Abordând principiile programării logice elaborați un program-soft a unui sector de evidență,


ce permite utilizatorului să gestioneze o bază de date a entități economice conform
specificului activității desfășurate, în baza tematicii propuse .

Se cere:

1) Programul urmează să includă următoarele predicate standard de lucru:


a) cu ferestre;
b) cu fișiere;
c) cu BD dinamică;
d) și alte predicate necesare.
2) Programul, prin meniu, urmează să execute următoarele operații asupra datelor din BD:

a) adăugarea datelor;

b) afişarea datelor;

c) redactarea;

d) ștergerea datelor;

e) ieşirea din program.

După executarea fiecărei operații, programul urmează să revină în meniu sau să iasă din
program cu salvarea ulterioară a modificărilor efectuate. Luați în considerație erorile care pot
fi comise de utilizatori la executarea operațiilor.
Programul:

domains

abonat,nr_tel,adresa,pachet,contract=string

file=f

database

servicii(abonat,nr_tel,adresa,pachet,contract)

predicates

nume_abonat(string,string,string,string,string)

nr_abonat(string,string,string,string,string)

menu

option(integer)

start

afisare

clauses

nume_abonat(Abonat,Nr,A,P,C):-servicii(Abonat,Nr,A,P,C).

nr_abonat(Abonat,Nr,A,P,C):-servicii(Abonat,Nr,A,P,C).

menu:-

makewindow(1,0,7,"",0,0,25,80),

makewindow(2,7,3,"***Meniu***",3,4,15,25),

makewindow(3,7,3," Otiunea aleasa ",3,30,20,40),

shiftwindow(2),

write("1-Adaugarea datelor"),nl,

write("2-Afisarea datelor dupa numele abonatului"),nl,


write("3-Afisarea datelor dupa nr de telefon"),nl,

write("4-Afisarea tuturor datelor"),nl,

write("5-Redactarea"),nl,

write("6-Stergerea datelor"),nl,

write("0-Iesire"),nl,

shiftwindow(3),cursor(1,1),

readint(C),

option(C).

option(1):- clearwindow,

write("Abonat"),nl,readln(Name),nl,

write("Telefon"),nl,readln(Nr),nl,

write("Adresa"),nl,readln(Adresa),nl,

write("Pachet"),nl,readln(Pachet),nl,

write("Contract"),nl,readln(Contract),nl,

assert(servicii(Name,Nr,Adresa,Pachet,Contract)),

write("Datele au fost adaugate in baza"),menu.

option(2):- clearwindow,

write("Nume abonat:"),nl,readln(Abonat),nume_abonat(Abonat,Nr,A,P,C),nl,

write("Datele despre abonatul", Abonat),nl,

write("Numar de telefon:",Nr),nl,

write("Adresa:",A),nl,

write("Pachet:",P),nl,

write("Contract:",C),nl,
readchar(_),menu.

option(3):- clearwindow,

write("Nr de telefon:"),nl,readln(Nr),nr_abonat(Abonat,Nr,A,P,C),nl,

write("Abonatul cu numarul respectiv este:",Abonat),nl,

write("Adresa:",A),nl,

write("Pachet:",P),nl,

write("Contract:",C),nl,

readchar(_),menu.

option(4):- clearwindow,

afisare,readchar(_),menu.

option(5):- clearwindow,

write("Abonat"),nl,

readln(Name),

write("Nr nou de telefon"),nl,readln(Nr),

retract(servicii(Name,_,Adresa,Pachet,Contract)),

assert(servicii(Name,Nr,Adresa,Pachet,Contract)),nl,

write("Modificarile au fost salvate"),readchar(_),

menu.

option(6): clearwindow,

write("Nr de tel care doriti sa-l stergeti"),

nl,readln(Nr),retract(servicii(_,Nr,_,_,_)),

nl,write("Datele despre abonat au fost sterse din baza de date"),readchar(_),

menu.
option(0):-save("servicii.ddb"),retractall(_).

option(_):-menu.

afisare if write("Abonatii firmei:"),nl,

servicii(Name,Nr,Adresa,Pachet,Contract),

nl,write("Abonat:",Name),

nl,write("Telefon:",Nr),

nl,write("Adresa:",Adresa),

nl,write("Pachet:",Pachet),

nl,write("Contract:",Contract),nl,fail.

afisare if write("Nu sunt date in BD"),nl.

start:-

existfile("servicii.ddb"),!,

consult("servicii.ddb"),menu.

start:-openwrite(f,"servicii.ddb"),closefile(f),menu.

goal

start.

S-ar putea să vă placă și