Buscar

SIstema de locadora em Prolog, Programação lógica

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

%menu
main:-
	assertz(loca(0,0,0,0,0,0,0)),
	assertz(gente(0,0,0,0,0)),	
	assertz(produtos(0,0,0,0,0)),
	write('MENU PRINCIPAL'),nl,
	write('DIGITE'),nl,
	write('1 CADASTRAR'),nl,
	write('2 LISTAR'),nl,
	write('3 PESQUISAR: '),nl,
	write('4 SAIR: '),nl,
	read(OP),
	opcao(OP),!.
%1° opcao
opcao(OP):-
	OP==1,
	cadastrar,!.
%2° opcao
opcao(OP):-
	OP==2,
	listar,!.
%2° opcao
opcao(OP):-
	OP==3,
	pesquisar,!.
%3° opcao
opcao(OP):-
	OP==4,
	write('FINALIZADO...'),!.
%invalido..
	opcao(_):-
	write("NUMERO INVALIDO.."),nl,
	main,!.
%menu cadastrar
cadastrar:-
	nl,nl,
	write('MENU CADASTRAR'),nl,
	write('DIGITE'),nl,
	write('1 CLIENTES'),nl,
	write('2 DVDs'),nl,
	write('3 LOCACAO'),nl,
	write('4 SAIR: '),nl,
	read(OP),
	c_opcao(OP),!.
%menu listar
listar:-
	nl,nl,
	write('MENU LISTAR'),nl,
	write('DIGITE'),nl,
	write('1 CLIENTES'),nl,
	write('2 DVDs'),nl,
	write('3 LOCACAO'),nl,
	write('4 SAIR: '),nl,
	read(OP),
	l_opcao(OP),!.
%menu pesquisar
pesquisar:-
	nl,nl,
	write('MENU PESQUISAR'),nl,
	write('DIGITE'),nl,
	write('1 CLIENTES'),nl,
	write('2 DVDs'),nl,
	write('3 LOCACAO'),nl,
	write('4 SAIR: '),nl,
	read(OP),
	p_opcao(OP),!.
%opcao de cadastrar 1
c_opcao(OP):-
	OP==1,
	clientes_c,!.
%opcao de cadastrar 2
c_opcao(OP):-
	OP==2,
	dvd_c,!.
%opcao de cadastrar 3
c_opcao(OP):-
	OP==3,
	locacao_c,!.
%opcao de cadastrar 4
c_opcao(OP):-
	OP==4,
	main,!.
%opcao de cadastrar 4
c_opcao(_):-
	write('INVALIDO...'),
	cadastrar,!.
%cadastrar clientes
clientes_c:-
	nl,nl,
	write('CADASTRO CLIENTES'),nl,
	write('DIGITE -1 NO CODIGO PARA FINALIZAR'),nl,
	write('Codigo: '), 
	read(C),	
	C \= -1,
	write('CPF: '),
	read(CP),
	write('NOME: '),
	read(N),
	write('TELEFONE: '),
	read(T),
	write('ENDERECO: '),
	read(E),
	buscar(C,CP,N,T,E),!.
%cadastrar dvd
dvd_c:-
	nl,nl,
	write('CADASTRO DVD'),nl,
	write('DIGITE -1 NO CODIGO PARA FINALIZAR'),nl,
	write('Codigo: '), 
	read(C),
	C \= -1,
	write('NOME: '),
	read(N),
	write('TIPO: '),
	read(T),
	write('PRODUTORA: '),
	read(P),
	write('QUANTIDADE DE ITENS: '),
	read(Q),
	buscar_n(C,N,T,P,Q),!.
%cadastrar locacao
locacao_c:-
	nl,nl,
	write('CADASTRO LOCACAO'),nl,
	write('DIGITE NUMEROS NO CODIGO -1 PARA FINALIZAR'),nl,
	write('Codigo: '), 
	read(C),
	C \= -1,
	write('NOME DO FILME: '),
	read(N),
	write('CPF DO CLIENTES: '),
	read(CP),
	write('DATA DE LOCACAO: '),
	read(DA),
	write('DATA DE DEVOLUCAO: '),
	read(DV),
	write('VALOR DE LOCACAO: '),
	read(VL),
	write('QUANTIDADE DE ITENS: '),
	read(QI),
	buscar_l(C,N,CP,DA,DV,VL,QI),!.
%opcao de listar 1
l_opcao(OP):-
	OP==1,
	write('LISTANDO CLIENTES...'),
	listing(gente),
	listar,!.
%opcao de listar 2
l_opcao(OP):-
	OP==2,
	write('LISTANDO DVDs...'),
	listing(produtos),
	listar,!.
%opcao de listar 3
l_opcao(OP):-
	OP==3,
	nl,write('LISTANDO LOCACAO...'),
	listing(loca),
	listar,!.
%opcao de listar 4
l_opcao(OP):-
	OP==4,	
	main,!.
%opcao de listar invalido
l_opcao(_):-
	write('INVALIDO..'),
	dvd_l,!.
%funcao criada para identificar 2 cpfs iguais
buscar(C,CP,N,T,E):-
	gente(C,CP,N,T,E),
	write(CP:'<-CPF, '),
	write(C:'<-CODIGO, '),
	write(N:'<-NOME, '),
	write(T:'<-TELEFONE, '),
	write(E:'<-ENDERECO;'),nl,fail.
%voltar para main se tiver 2 cpfs iguais
buscar(_,CP,_,_,_):-
	gente(_,CP,_,_,_),
	write('CPF EXISTENTE...'),
	main,!.
%cadastra o cliente
buscar(C,CP,N,T,E):-	
	assertz(gente(C,CP,N,T,E)),
	write('CADASTRADO...'),
	clientes_c.
%funcao criada para identificar 2 filmes com o mesmo nome
buscar_n(C,N,T,P,Q):-
	produtos(C,N,T,P,Q),
	write(C:'<-CODIGO, '),
	write(N:'<-NOME, '),
	write(T:'<-TIPO '),
	write(P:'<-PRDUTORA, '),
	write(Q:'<-QUANTIDADE;'),nl,fail.
%volta para menu em caso de ja existir este nome
buscar_n(_,N,_,_,_):-
	produtos(_,N,_,_,_),
	write('NOME EXISTENTE...'),nl,
	main,!.
%cadastra filme
buscar_n(C,N,T,P,Q):-	
	assertz(produtos(C,N,T,P,Q)),
	write('CADASTRADO...'),
	dvd_c.
%funcao criada para cadastrar locacoes
buscar_l(C,N,CP,DA,DV,VL,QI):-
	loca(C,N,CP,DA,DV,VL,QI),
	write(C:'<-CODIGO, '),
	write(N:'<-NOME, '),
	write(CP:'<-CPF, '),	
	write(DA:'<-DATA DE LOCACAO, '),
	write(DV:'<-DATA DEVOLUCAO '),
	write(VL:'<-VALOR DE LOCACAO, '),
	write(QI:'<-QUANTIDADE DE ITENS;'),nl,fail.
%cadastra locacao
buscar_l(C,CP,N,DA,DV,VL,QI):-
	gente(_,CP,_,_,_),
	produtos(_,N,_,_,Q),
	Q>=QI,
	write('CADASTRADO...'),	
	assertz(loca(C,CP,N,DA,DV,VL,QI)),nl,
	locacao_c,!.
%evita cadastro o volta para o menu principal
buscar_l(_,_,_,_,_,_,_):-	
	write('FILME OU CPF NAO EXISTENTE OU'),nl,
	write('QUANTIDADE DE ITENS INSUFICIENTE...'),nl,
	main,!.
%opcao de pesquisar 1
p_opcao(OP):-
	OP==1,
	write('DIGITE CPF DO CLIENTE :'),
	read(CP),
	clientes_p(CP),!.
%opcao de pesquisar 2
p_opcao(OP):-
	OP==2,
	write('DIGITE NOME DO FILME :'),
	read(N),
	dvd_p(N),!.
%opcao de pesquisar 3
p_opcao(OP):-
	OP==3,
	write('DIGITE CPF DO CLIENTE :'),
	read(CP),
	write('DIGITE NOME DO FILME :'),
	read(N),
	write('DIGITE CODIGO DE LOCACAO :'),
	read(C),
	locacao_p(C,CP,N),!.
%opcao de pesquisar 4
p_opcao(OP):-
	OP==4,
	main,!.
%opcao de pesquisar invalido
p_opcao(_):-
	write('INVALIDO..'),
	pesquisar,!.
clientes_p(CP):-
	gente(C,CP,N,T,E),
	write('CODIGO':C),nl,
	write('CPF':CP),nl,
	write('NOME':N),nl,
	write('TELEFONE':T),nl,
	write('ENDERECO':E),nl,
	pesquisar,!.
clientes_p(_):-
	write('NAO EXISTE'),nl,
	main,!.
dvd_p(N):-
	produtos(C,N,T,P,Q),
	write('CODIGO':C),nl,
	write('NOME':N),nl,
	write('TIPO':T),nl,
	write('PRODUTORA':P),nl,
	write('QUANTIDADE':Q),nl,
	pesquisar,!.
dvd_p(_):-
	write('NAO EXISTE'),nl,
	main,!.
locacao_p(C,CP,N):-
	loca(C,CP,N,DA,DV,VL,QI),
	write('CODIGO':C),nl,
	write('NOME':N),nl,
	write('CPF':CP),nl,
	write('DATA DE LOCACAO':DA),nl,
	write('DATA DEVOLUCAO':DV),nl,
	write('VALOR DE LOCACAO':VL),nl,
	write('QUANTIDADE DE ITENS':QI),nl,
	pesquisar,!.
locacao_p(_):-
	write('NAO EXISTE'),nl,
	main,!.

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais