/* Predykat glowny */
/* UWAGA: Wczytywanie termu należy każdorazowo konczyć kropką + Enter */

poczatek :- 
	abolish(student, 3),
	abolish(wyklad, 2),
	write('Zaladowac baze danych?'), nl,
	get_single_char(X),
	( X = 116,
          [baza]
        ; !
        ),
	menu.	

menu :- 
	write(' 1. - dopisywanie studenta'), nl,
	write(' 2. - dopisywanie wykladu'), nl,
	write(' 3. - usuwanie studenta'),nl,
	write(' 4. - usuwanie wykladu'),nl,
	write(' 5. - przegladanie '),nl,
	write(' 6. - koniec '), nl,
	read(X),
	wykonaj(X).

wykonaj(1):-
	write('Podaj numer studenta'), nl,
	read(Nr), nl,
	write('Podaj nazwisko studenta'), nl,
	read(Nazw), nl,
	write('Podaj rok studenta'), nl,
	read(Rok), nl,
	assertz(student(Nr,Nazw,Rok)),
	write('Nastepny student?'),
	read(Odp),
	( Odp = t,
          wykonaj(1)
        ; menu
        ).


wykonaj(2):-
	write('Podaj rok'), nl,
	read(Rok),!, nl,
	write('Podaj nazwe wykladu'), nl,
	read(Wykl),!, nl,
	assertz(wyklad(Rok, Wykl)),
	write('Nastepny wyklad?'), nl,
	read(Odp),
	( Odp = t,
          wykonaj(2)
        ;
          menu
        ).

wykonaj(3) :-
	write('Podaj nazwisko'), nl,
	read(Nazw), !, nl,
	( retract(student(_,Nazw,_)), !
        ;
	  write('Nie bylo nazwiska w bazie')
        ), nl,
	write('Nastepny student?'), nl,
	read(Odp), nl,
	( Odp = t,
          wykonaj(3)
        ;
          menu
        ).

wykonaj(4) :-
	write('Podaj wyklad'),
	read(Wykl), !,
	( retract(wyklad(_,Wykl))
        ;
          write('Nie bylo wykladu w bazie')
        ),
	write('Nastepny wyklad?'),
	read(Odp),
	( Odp = t,
          wykonaj(4)
        ;
        menu
        ).

wykonaj(5) :-
	menu_przegladania.

wykonaj(6):-
	write('Zachowac zmiany w bazie?'),
	read(X),
	( X = t,
	  tell('baza'),
	  zapis(stud),
	  zapis(wykl),
	  told
        ;
        !
        ).

menu_przegladania:-
	write(' 1. - spis wykladow studenta'), nl,
	write(' 2. - koniec przegladania'),nl,
	read(X),
	przegladaj(X).

przegladaj(1):-
	write('Podaj nazwisko studenta'),
	read(Nazw),
	podaj_wyklady(Nazw),nl,
	write('Przegladamy dalej studentow?'),
	read(Odp),
	( Odp = t,
          przegladaj(1)
        ; menu_przegladania
        ).

przegladaj(2) :-
	menu.

podaj_wyklady(Nazw) :-
	student(_,Nazw,Rok),
	wyklad(Rok, Wykl),
	write(Wykl),nl,
	fail.

podaj_wyklady(_).


zapis(stud):-
	student(X,Y,Z),
	write(student(X,Y,Z)), write('.'), nl,
	fail.
zapis(stud).
zapis(wykl):-
	wyklad(X,Y),
	write(wyklad(X,Y)), write('.'), nl,
	fail.
zapis(wykl).