Thomas 0 Report post Posted January 15, 2004 hyhy! wir haben in der schule die aufgabe bekommen nen bibliotheksprogramm in prolog zu realisieren! ich bin soweit "fertig" ich habe zwar hier und da noch paar sache ndie ich noch machen will, abe rnicht bevor das problem gelöst ist! also hier mal der quell code des programmes: % Autor: Thomas % EMail: thomas@saldix.de % Datum: 14.01.2004 % Datei: programm.pl % Zusaetzliche Datei: datensaetze.pl %--begin: start start:- begruessung, daten_laden, menue. %--end: start %--begin: begruessung begruessung:- writeln('Herzlich Willkommen zur Bibliotheksverwaltung!'),nl. %--end: begruessung %--begin: daten laden daten_laden:- consult('datensaetze.pl'). %--end: daten laden %--begin: menue menue:- nl,writeln('------ Main Menue------'), writeln('Katalog................(1)'), writeln('Leserdatei*************(2)'), writeln('Ausleihe / Rueckgabe...(3)'), writeln('Ende*******************(0)'),nl, write('Ihre Wahl:'), get_char(Ch),skip(10), ausfuehren(Ch), Ch \='0',!,menue. %--end: menue %--begin: katalog ausfuehren('1'):- katalog. %--begin: katalog - menue katalog:- write('------ Katalog Menue ------'),nl, writeln('Katalog Anzeigen.(1)'), writeln('Buch hinzufuegen*(2)'), writeln('Buch loeschen....(3)'), writeln('Menue************(0)'), write('Ihre Wahl:'), get_char(Ch3),skip(10), katalog(Ch3), Ch3 \='0',!,katalog. katalog. %--end: katalog - menue katalog('1'):- write('------ Anzeige Katalog ------'),nl, katalog(Titel,Autor,Jahr,Sig), write('Titel: '),write(Titel),nl, write('Autor: '),write(Autor),nl, write('Erscheinungsjahr: '), write(Jahr),nl, write('Signatur: '),write(Sig),nl,nl,fail. katalog('1'). katalog('2'):- write('------ Buch hinzufuegen ------'),nl, writeln('Buchtitel?'), lese_string(Titel),nl, writeln('Autor?'), lese_string(Autor),nl, writeln('Erscheinungsjahr?'), lese_string(Jahr),nl, writeln('Buchsignaturr?'), lese_string(Sig),nl, assertz(katalog(Titel,Autor,Jahr,Sig)),speichern,nl. katalog('2'). katalog('3'):- buch_loeschen, speichern. buch_loeschen:- write('------ Buch loeschen ------'),nl, writeln('Buchtitel?'), lese_string(Titel),nl, writeln('Buchsignatur?'), lese_string(Sig),nl, retract(katalog(Titel,_,_,Sig)),fail. buch_loeschen. %--end katalog %--begin: leserdatei ausfuehren('2'):- leserdatei. %--begin: katalog - menue leserdatei:- write('------ Leserdatei Menue ------'),nl, writeln('Lesedatei Anzeigen.(1)'), writeln('Leser hinzufuegen**(2)'), writeln('Leser loeschen.....(3)'), writeln('Menue**************(0)'), write('Ihre Wahl:'), get_char(Ch4),skip(10), leserdatei(Ch4), Ch4 \='0',!,leserdatei. leserdatei. %--end: katalog - menue leserdatei('1'):- write('------ Lerserdatei ------'),nl, leserdatei(Lesernummer,Name,Vorname), write('Lesernummer: '),write(Lesernummer),nl, write('Nachname: '),write(Name),nl, write('Vorname: '),write(Vorname),nl,nl,fail. leserdatei('1'). leserdatei('2'):- writeln('------ Leser hinzufuegen ------'),nl, writeln('Lesernummer?'), lese_string(Lesernummer),nl, writeln('Nachname?'), lese_string(Name),nl, writeln('Vorname?'), lese_string(Vorname),nl, assertz(leserdatei(Lesernummer,Name,Vorname)),speichern,nl. leserdatei('3'):- leser_loeschen, speichern. leser_loeschen:- writeln('------ Leser loeschen ------'),nl, writeln('Lesernummer?'), lese_string(Lesernummer),nl, writeln('Nachname?'), lese_string(Name),nl, writeln('Vorname?'), lese_string(Vorname),nl, retract(leserdatei(Lesernummer,Name,Vorname)),fail. leser_loeschen. %--end: leserdatei %--begin: ausleihe ausfuehren('3'):- ausleihen. %--begin: ausleihe - menue ausleihen:- write('------ Ausleihe / Rueckgabe Menue ------'),nl, writeln('Ausgeliehen.(1)'), writeln('Eingabe*****(2)'), writeln('Loeschen....(3)'), writeln('Menue*******(0)'), write('Ihre Wahl:'), get_char(Ch2),skip(10), ausleihen(Ch2), Ch2 \='0',!,ausleihen. ausleihen. %--end: ausleihe - menue ausleihen('1'):- write('------ Anzeige Ausgeliehen ------'),nl, ausleihe(Sig,Lesernummer,Rueckgabedatum), write('Signatur: '),write(Sig),nl, write('Lesernummer: '),write(Lesernummer),nl, write('Rueckgabedatum: '),write(Rueckgabedatum),nl,nl,fail. ausleihen('1'). ausleihen('2'):- write('------ Eingabe Ausleihen ------'),nl, writeln('Buchsignatur?'), lese_string(Sig),nl, writeln('Lesernummer?'), lese_string(Lesernummer),nl, writeln('Rueckgabedatum?'), lese_string(Rueckgabedatum),nl, assertz(ausleihe(Sig,Lesernummer,Rueckgabedatum)),speichern,nl. ausleihen('3'):- rueckgabe, speichern. rueckgabe:- write('------ Rueckgabe ------'),nl, writeln('Buchsignatur?'), lese_string(Sig),nl, writeln('Lersernummer?'), lese_string(Lesernummer),nl, retract(ausleihe(Sig,Lesernummer,_)),fail. rueckgabe. %--end: ausleihe %----------------------------------------------------------------------------- %--begin: speichern speichern:- writeln('Daten werden nun gepeichert....'), tell('datensaetze.pl'), listing(katalog), listing(leserdatei), listing(ausleihe),told, writeln('Daten wurden gespeichert.....'). %--end: speihcern lese_string(E):- readln([E|_], _, _, " 0123456789",uppercase), !. lese_string(''). mit der regel speichern, speicher man halt die die sachen in die datei datensaetze.pl ab! aber er hat da noch unendlcih viele sachen hinein! hier der code von der datensaetze.pl: katalog :- write('------ Katalog Menue ------'), nl, writeln('Katalog Anzeigen.(1)'), writeln('Buch hinzufuegen*(2)'), writeln('Buch loeschen....(3)'), writeln('Menue************(0)'), write('Ihre Wahl:'), get_char(A), skip(10), katalog(A), A\='0', !, katalog. katalog. katalog('1') :- write('------ Anzeige Katalog ------'), nl, katalog(A, B, C, D), write('Titel: '), write(A), nl, write('Autor: '), write(B), nl, write('Erscheinungsjahr: '), write(C), nl, write('Signatur: '), write(D), nl, nl, fail. katalog('1'). katalog('2') :- write('------ Buch hinzufuegen ------'), nl, writeln('Buchtitel?'), lese_string(A), nl, writeln('Autor?'), lese_string(B), nl, writeln('Erscheinungsjahr?'), lese_string(C), nl, writeln('Buchsignaturr?'), lese_string(D), nl, assertz(katalog(A, B, C, D)), nl. katalog('2'). katalog('3') :- buch_loeschen. :- dynamic katalog/4. katalog(buch1, ich1, '1901', sig1). katalog(buch2, ich2, '1902', sig2). katalog(buch3, ich3, '1903', sig3). katalog(ww, ww, ww, ww). leserdatei :- write('------ Leserdatei Menue ------'), nl, writeln('Lesedatei Anzeigen.(1)'), writeln('Leser hinzufuegen**(2)'), writeln('Leser loeschen.....(3)'), writeln('Menue**************(0)'), write('Ihre Wahl:'), get_char(A), skip(10), leserdatei(A), A\='0', !, leserdatei. leserdatei. leserdatei('1') :- write('------ Lerserdatei ------'), nl, leserdatei(A, B, C), write('Lesernummer: '), write(A), nl, write('Nachname: '), write(B), nl, write('Vorname: '), write(C), nl, nl, fail. leserdatei('1'). leserdatei('2') :- writeln('------ Leser hinzufuegen ------'), nl, writeln('Lesernummer?'), lese_string(A), nl, writeln('Nachname?'), lese_string(B), nl, writeln('Vorname?'), lese_string(C), nl, assertz(leserdatei(A, B, C)), nl. leserdatei('3') :- leser_loeschen. :- dynamic leserdatei/3. leserdatei(lnum1, name1, vorname1). leserdatei(lnum2, name2, vorname2). leserdatei(lnum3, name3, vorname3). :- dynamic ausleihe/3. ausleihe(sig1, lnum1, '1.1.1904'). ausleihe(sig2, lnum2, '2.2.1904'). das einziegste was eigendlci hdrin stehen sollte ist: :- dynamic katalog/4. katalog(buch1, ich1, '1901', sig1). katalog(buch2, ich2, '1902', sig2). katalog(buch3, ich3, '1903', sig3). katalog(ww, ww, ww, ww). :- dynamic leserdatei/3. leserdatei(lnum1, name1, vorname1). leserdatei(lnum2, name2, vorname2). leserdatei(lnum3, name3, vorname3). :- dynamic ausleihe/3. ausleihe(sig1, lnum1, '1.1.1904'). ausleihe(sig2, lnum2, '2.2.1904'). was ja an der ganzen sache am koriosisten ist das er vor ":- dynamic katalog/4." und vor ":- dynamic leserdatei/3" den ganen rotz schreibt, aber nicht vor ":- dynamic ausleihe/3." obwohl das speichern überhaupt nicht anders gelöst wurde! weiß da einer rat? Share this post Link to post