menu:-message.

region(afar,amhara,'benishangul gumuz',gambela,harari,oromiya,somali,snnp,tigray).

%tour(cityName,season,description,Travel_cost,hotelReservation,distance,contactInformation,tour_type,traveAgency,path)

tour('Dahir Dar',amhara,'all season','found at the middle of lake tana and abay',200,'summer land',570,'Ethio Majestic','Natural Land Escapes','Lake Tana','NTO','Debre markos').
tour('Dahir Dar',amhara,'all season','found at the middle of lake tana and abay',200,'summer land',570,'Ethio Majestic','Natural Land Escapes','River Abay',_,'Debre markos').
tour('Dahir Dar',amhara,'all season','found at the middle of lake tana and abay',200,'ethio star',570,'Ethio Majestic','Natural Land Escapes','Lake Tana','NTO','Debre markos').
tour('Dahir Dar',amhara,'all season','found at the middle of lake tana and abay',200,'ethio star',570,'Ethio Majestic','Natural Land Escapes','River Abay','NTO','Debre markos').
tour('Lalibela',ahmara,'all season','Eighth Wonder of the World',300,'Lalibela Hotel',642,'Ethio Majestic','Historic site','Lalibela','NTO','Bahir Dar').
tour('Axum',tigray,'all season','home to the Queen of Sheba and obelisk of axum',550,'Roha Hotel',1100,'Ethio Majestic','Historic site','Obelisk of Axum','NTO','Mekele').
tour('Gondar',amhara,'all season','major highlands of Africa',250,'Gondar Hotel',570,'Ethio Majestic','Sanctuaries and Parks','Simien Mountain National Park','NTO','Bahir Dar').
tour('Afar',afar,'all season','Awash National Park is one of the finest reserves in Ethiopia',700,'Afar Hotel',2800,'Ethio Majestic','Sanctuaries and Parks','Awash National Park','NTO','Mekele').
tour('Lalibela',ahmara,'Tahsas 29','Eighth Wonder of the World',300,'Lalibela Hotel',642,'Ethio Majestic','Holiday celebration','Lalibela rock hewn','NTO','Bahir Dar').
tour('Axum',tigray,'Hidar 21','home to the Queen of Sheba and obelisk of axum',550,'Roha Hotel',1100,'Ethio Majestic','Holiday celebration','Axum Tsion Mariam','NTO','Mekele').
tour('Mekele',tigray,'all season','city of Atse Yohannis castle and Museum',300,'Milano Hotel',785,'Ethio Majestic','Museum',' Museum of Atse Yohannis','NTO','Woldya').

tourT('Dahir Dar',amhara,'all season','found at the middle of lake tana and abay',200,'ethio star',570,'Ethio Majestic','Natural Land Escapes','Lake Tana','NTO','Debre markos').
tourT('Dahir Dar',amhara,'all season','found at the middle of lake tana and abay',200,'ethio star',570,'Ethio Majestic','Natural Land Escapes','River Abay','NTO','Debre markos').
tourT('Lalibela',ahmara,'all season','Eighth Wonder of the World',300,'Lalibela Hotel',642,'Ethio Majestic','Historic site','Lalibela','NTO','Bahir Dar').
tourT('Axum',tigray,'all season','home to the Queen of Sheba and obelisk of axum',550,'Roha Hotel',1100,'Ethio Majestic','Historic site','Obelisk of Axum','NTO','Mekele').
tourT('Gondar',amhara,'all season','major highlands of Africa',250,'Gondar Hotel',570,'Ethio Majestic','Sanctuaries and Parks','Simien Mountain National Park','NTO','Bahir Dar').
tourT('Afar',afar,'all season','Awash National Park is one of the finest reserves in Ethiopia',700,'Afar Hotel',2800,'Ethio Majestic','Sanctuaries and Parks','Awash National Park','NTO','Mekele').
tourT('Lalibela',ahmara,'Tahsas 29','Eighth Wonder of the World',300,'Lalibela Hotel',642,'Ethio Majestic','Holiday celebration','Lalibela rock hewn','NTO','Bahir Dar').
tourT('Axum',tigray,'Hidar 21','home to the Queen of Sheba and obelisk of axum',550,'Roha Hotel',1100,'Ethio Majestic','Holiday celebration','Axum Tsion Mariam','NTO','Mekele').
tourT('Mekele',tigray,'all season','city of Atse Yohannis castle and Museum',300,'Milano Hotel',785,'Ethio Majestic','Museum',' Museum of Atse Yohannis','NTO','Woldya').

reservation('Bahir Dar','Summer Land',amhara).
reservation('Bahir Dar','Ethio Star',amhara).
reservation('Bahir Dar','Papyrus',amhara).
reservation('Gondar','Gondar Hotel',amhara).
reservation('Mekele','Milano Hotel',tigray).
reservation('Axum','Roha Hotel',tigray).
reservation('Afar','Afar Hotel',afar).
reservation('Lalibela','Lalibela Hotel',amhara).

%reservation(A,C,B):-tour(A,B,_,_,_,C,_,_,_,_,_,_).



user(dawit,dave).

citys('Bahir Dar','River Abay','Natural Land escape',amhara).
citys('Bahir Dar','Lake Tana','Natural Land escape',amhara).
citys('Gondar','Fasil Castle','Historic sight',amhara).
citys('Mekele','Atse Yohannis Castle','Museum',tigray).
citys('Lalibela','Lalibela Rock hewn','Holiday celebration',amhara).
citys('Axum','Axum Tsion Mariam','Holiday celebration',tigray).

cost(bahirdar,200,lake_tana).
cost(bahirdar,200,river_abay).
cost(gondar,250,fasil).
cost(mekele,300,atse_Yohannis_Castle ).

neareset(bahirdar,570,lake_tana).
neareset(bahirdar,570,river_abay).
neareset(gondar,670,fasil).
neareset(mekele,785,atse_Yohannis_Castle).


toursite(A,B):-citys(A,B,_,_).
cityreservation(A,B):-reservation(A,B,_).
cs(X,Z):-	citys(X,_,_,Z).	
cit(X):-citys(X,_,_,_).

toursiteType1(A,B,C,E,G,I):-tourT(A,B,C,_,E,_,G,_,'Historic site',I,_,_).
toursiteType2(A,B,C,E,G,I):-tourT(A,B,C,_,E,_,G,_,'Holiday celebration',I,_,_).
toursiteType3(A,B,C,E,G,I):-tourT(A,B,C,_,E,_,G,_,'Museum',I,_,_).
toursiteType4(A,B,C,E,G,I):-tourT(A,B,C,_,E,_,G,_,'Sanctuaries and Parks',I,_,_).
toursiteType5(A,B,C,E,G,I):-tourT(A,B,C,_,E,_,G,_,'Natural Land Escapes',I,_,_).


message:-write('==================================================='),nl,
         write('=====   TOUR & TRAVEL GUIDE EXPERT SYSTEM    ======'),nl,
	     write('=====  GROUP MEMBERS                         ======'),nl,
		 write('=====   BEKELE HAILE ID No: 069/2000         ======'),nl,
		 write('=====   DAWIT ABRHA  ID No: 103/2000         ======'),nl,
		 write('=====   DAWIT ANEGAGRIE  ID No: 105/2000     ======'),nl,
	     write('=====            Enter go.                   ======'),nl,
	     write('==================================================='),nl,nl,
	  write('*******************************************************************************************'),nl,
      write('*******************************************************************************************'),nl,
	  write('***********                                                                     ***********'),nl,
	  write('***********             TOUR & TRAVEL GUIDE EXPERT SYSTEM                       ***********'),nl,
	  write('***********                                                                     ***********'),nl,
	  write('*******************************************************************************************'),nl,
	  write('*******************************************************************************************'),nl.
:-message.
go:- write('Please remember to end every entry with an (.) ! This is really important! Thank you.'),nl, 
write('Enter 1 to search by region. '),nl,
      write('Enter 2 to search by city. '),nl,
	  write('Enter 3 to search the nearest city to Addis Ababa. '),nl,
	  write('Enter 4 to search the city with the minimum travel cost. '),nl,
      write('Enter 5 by sight type(Cultural, museum, historic places, parks). '),nl,
	  write('Enter 6 to add knowledge. '),nl,
      read(R), choice(R).


choice(1):- write('Enter 1 to display available regions. '),nl,
			write('Enter 2 to display all the cities available in a region. '),nl,
			write('Enter 3 to display reservations available in a region. '),nl,
			read(R1), choice1(R1).
choice1(1):-region(X1,X2,X3,X4,X5,X6,X7,X8,X9),write('The available regions with tour sites are:'),nl,write(X1),nl,
            write(X2),nl,write(X3),nl,write(X4),nl,write(X5),nl,write(X6),nl,write(X7),nl,write(X8),nl,write(X9),nl,nl,
			write('Continue (y/n) '),read(D),(D=y,go),nl.
   	
choice1(2):-write('Enter the region name:'),nl,read(R),nl,
			write('The cities available in '),write(R),write(' region is/are:'),(R=Z,cs(X,Z),nl,write(X),nl,fail,nl),nl.
choice1(2):-write('Continue (y/n) '),read(D),(D=y,go),nl.							
choice1(3):-write('Enter the region name:'),nl,read(R),nl,
			write('Hotels and Reservations available in:'),write(R),write(' are:'),(R=Z,reservation(X,Y,Z),nl,nl,write('****************************'),nl,
			write('City name: '),write(X),nl,write('Reservation and Hotel: '),write(Y),nl,fail,nl),nl.
choice1(3):-write('Continue (y/n)'),read(D),(D=y,go),nl.			 
	
 choice(2):-write('Enter 1 to display all available cities.'),nl,
		   write('Enter 2 to display all the cities with available information.'),nl,
	       write('Enter 3 to display tour sights available in a city.'),nl,
		   write('Enter 4 to display reservations available in a city.'),nl,
	       read(R2), choice2(R2).
 
 choice2(1):-write('The cities available with tour site are:'),nl,cit(X),write(X),nl,fail,nl.
  choice2(1):-write('Continue (y/n)'),read(D),(D=y,go),nl.
%tour('Dahir Dar',amhara,winter,'found at the middle of lake tana and abay',200,'summer land,ethio star','570','travel agencies','Natural Land Escapes','Lake Tana, River Abay','NTO','Debre markos').
 choice2(2):-write('The cities available are:'),tour(A,B,C,D,E,F,G,H,I,J,K,L),(B=amhara),nl,nl,
             write('**********************************************************************************************'),nl,
			 write('City name: '),write(A),write('     '),write('Region: '),write(B),write('     '),write('Season: '),write(C),write('     '),nl,
			 write('Description: '),write(D),write('     '),write('Travel cost: '),write(E),write('     '),write('Hotels and Reservations: '),write(F),write('     '),nl,
			 write('Distance: '),write(G),write('     '),write('Contact Information: '),write(H),write('     '),write('Tour type: '),write(I),write('     '),nl,
			 write('Tour sight: '),write(J),write('     '),write('Travel agency: '),write(K),write('     '),write('City through: '),write(L),nl,fail,nl,nl.
  choice2(2):-write('Continue (y/n)'),read(D),(D=y,go),nl.
 
 choice2(3):-write('Enter city name '),nl,read(R),nl,write('The tour site/s in '),write(R),write(' city is/are'),
			(R=A,toursite(A,B),nl,nl,write('****************************'),nl,write(B),nl,fail,nl),nl,nl,nl.
 choice2(3):-write('Continue (y/n) '),read(D),(D=y,go),nl.
 
 choice2(4):-write('Enter city name '),nl,read(R),nl,write('The reservation/s in '),write(R),write(' city is/are'),
			(R=A,cityreservation(A,B),nl,nl,write('****************************'),nl,write(B),nl,fail,nl),nl.
 choice2(4):-write('Continue (y/n) '),read(D),(D=y,go),nl.
choice(3):- min(T),searchmin(T).
			min(T):- neareset(X,T,_),not(lend(X)),!.
			lend(X):- neareset(X,N,_), neareset(_,M,_),M <N.
			searchmin(I):-neareset(A,I,B),nl,write('******************************'),nl,
	        write('Tour site= '),write(B),nl,
			write('Nearest City= '),write(A),nl,write('Distance= '),write(I),tab(1),write('kms'),fail,nl.
	choice(3):-write('Continue (y/n) '),read(D),(D=y,go),nl.

choice(4):- minn(T),searchnl(T).
			minn(T):- cost(X,T,_),not(lendd(X)),!.
			lendd(X):- cost(X,N,_), cost(_,M,_),M <N.
			searchnl(I):-cost(A,I,B),nl,write('******************************'),nl,
	        write('Tour site= '),write(B),nl,
			write('Nearest City= '),write(A),nl,write('Travel cost= '),write(I),tab(1),write('Birr'),fail,nl.
choice(4):-	write('Continue (y/n) '),read(D),(D=y,go),nl.
 
choice(5):- write('Enter 1 to display all historical tour sites.'),nl,
		    write('Enter 2 to display all holiday celebration tour sites. '),nl,
	        write('Enter 3 to display all museum tour sites. '),nl,
		    write('Enter 4 to display sanctuaries and parks tour sites. '),nl,
			write('Enter 5 to display all natural land escape tour sites. '),nl,
	        read(R5), choice5(R5).
%tour('Dahir Dar',amhara,winter,'found at the middle of lake tana and abay',200,'summer land',570,'travel agencies','Natural Land Escapes','Lake Tana','NTO','Debre markos').

  
 choice5(1):-toursiteType1(A,B,C,E,G,I),write('**********************************************************************************************'),nl,
			 write('City name: '),write(A),write('     '),write('Region: '),write(B),write('     '),write('Season: '),write(C),write('     '),nl,nl,
			 write('Travel cost: '),write(E),write('     '),
			 write('Distance: '),write(G),write('     '),
			 write('Tour site: '),write(I),nl,fail,nl,nl.
	choice5(1):- write('Continue (y/n) '),read(D),(D=y,go),nl.
			 
 choice5(2):-toursiteType2(A,B,C,E,G,I),write('**********************************************************************************************'),nl,
			 write('City name: '),write(A),write('     '),write('Region: '),write(B),write('     '),write('Season: '),write(C),write('     '),nl,nl,
			 write('Travel cost: '),write(E),write('     '),
			 write('Distance: '),write(G),write('     '),
			 write('Tour site: '),write(I),nl,fail,nl,nl.
	choice5(2):- write('Continue (y/n) '),read(D),(D=y,go),nl.
			 
 choice5(3):-toursiteType3(A,B,C,E,G,I),write('**********************************************************************************************'),nl,
			 write('City name: '),write(A),write('     '),write('Region: '),write(B),write('     '),write('Season: '),write(C),write('     '),nl,nl,
			 write('Travel cost: '),write(E),write('     '),
			 write('Distance: '),write(G),write('     '),
			 write('Tour site: '),write(I),nl,fail,nl,nl.
	choice5(3):- write('Continue (y/n) '),read(D),(D=y,go),nl.
			 
 choice5(4):-toursiteType4(A,B,C,E,G,I),write('**********************************************************************************************'),nl,
			 write('City name: '),write(A),write('     '),write('Region: '),write(B),write('     '),write('Season: '),write(C),write('     '),nl,nl,
			 write('Travel cost: '),write(E),write('     '),
			 write('Distance: '),write(G),write('     '),
			 write('Tour site: '),write(I),nl,fail,nl,nl.
	 choice5(4):-write('Continue (y/n) '),read(D),(D=y,go),nl.

 choice5(5):-toursiteType5(A,B,C,E,G,I),write('**********************************************************************************************'),nl,
			 write('City name: '),write(A),write('     '),write('Region: '),write(B),write('     '),write('Season: '),write(C),write('     '),nl,nl,
			 write('Travel cost: '),write(E),write('     '),
			 write('Distance: '),write(G),write('     '),
			 write('Tour site: '),write(I),nl,fail,nl,nl.
  choice5(5):-write('Continue (y/n) '),read(D),(D=y,go),nl.


choice(6):-write('Enter user name:'),nl,read(U),nl,write('Enter password:'),nl,read(P),nl,(user(A,B),U=A,P=B,write('Enter your fact'),nl,
		   read(T),inputTextFile('project.pl',T),nl,write('Knowledge successfully entered')),nl.
		   %write('Continue (y/n) '),read(D),(D=y,go),nl.
inputTextFile(F,T):-append(F),nl, write(T), told.   
cls:- jok.
jok:-put(27),put(91),put(56),put(74). 
%:-message.
:-clear_screen.
:-jok.


% HERE ARE THE NEWLY ADDED KNOWLEDGES.
