Jump to content
InvisionCommunity.de - Der Deutsche Invision Community Support
Sign in to follow this  
Thomas

swi-prolog - kann mir da wer helfen?

Recommended Posts

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×