/* * Title: ISK - 3. Abgabe * Description: einfache Prologdatenstrukturen * authors Gerald Haider, Thomas Scheichenstein, Christoph Bartenstein * version 0.1 * This document is copyright (C) 2002 Gerald Haider, and it's free. * You can distribute it under the terms of the GNU General Public License, * which you can get at http://www.gnu.org/copyleft/gpl.html. */ % the knowledge :-) sports(S):- member(S, [surfen, schwimmen, tennis]). %zeiten(Z):- member(Z, [heute,'14 uhr','16 uhr']). trainer(T) :- member(T, [sepp,horst,detlef]). % start of the main program start :- write('Holi-Handy Sport-Bestellsystem v0.1'),nl,nl, write('Eine Bestellung von folgenden Sportarten ist möglich: tennis'),nl, write(' schwimmen'),nl, write(' surfen'),nl,nl, write('Folgende Animateure sind verfügbar: sepp'),nl, write(' horst'),nl, write(' detlef'),nl,nl, write('Animatuere und die jeweiligen Sportarten stehen 24 Stunden täglich zur Verfügung'),nl,nl, write('Bitte beachten Sie bei der Eingabe folgende Regeln:'),nl, write('Grundsyntax: Uhrzeit Sportart Trainer'),nl,nl, write('Die Uhrzeit muss im 24-Stunden-Format HHMM eingeben werden!'),nl, write('also z.B.: 2105 für 9.05 pm'),nl,nl, write('Was wünschen sie?'), nl, readln(Input), nth0(0,Input,Time), nth0(1,Input,Sport), nth0(2,Input,Trainer), % IF ( valid(Time,Sport,Trainer) ) % THEN -> ( write('Eingabe ist gültig!'),nl, check_db, append_data(Time,Sport,Trainer), write('Daten wurden gespeichert! -->Programm wird beendet.'),nl, write('Um erneut zu bestellen geben Sie wiederum start. ein') ) % ELSE ; ( nl, write('Fehlerhafte Eingabe!'),nl, write('Die Daten wurden NICHT gespeichert!'),nl, fail ) . % checking if valid input valid(A,B,C) :- valid_time(A), sports(B), trainer(C). %valid_sport(X) :- sportarten(X). %valid_trainer(Y) :- trainer(Y). valid_time(Z) :- % simple checking if this is a valid time... % a little complicate but it works ;-) %IF ( Z =< 2400 ) % THEN -> ( %write('ttrue1111'), %IF ( Z >= 0 ) % THEN -> ( %write('true2'), true ) % ELSE ; ( %write('fail2'), fail ) ) % ELSE ; ( %write('fail1'), fail ) . read_data(X) :- open('bestelliste.txt',read,File_read),read(File_read,X),close(File_read). append_data(A,B,C) :- read_data(M), merge(M,[[A,B,C]],Temp), open('bestelliste.txt',write,File_write),writeq(File_write,Temp), write(File_write,'.'),close(File_write). check_db :- % check if there is a database file... %IF ( exists_file('bestelliste.txt') ) % THEN -> ( true ) % ELSE ; ( open('bestelliste.txt',write,File_new), write(File_new,'[].'),close(File_new) ) .