Evitar a inserção no dicionario se houver repetiçao de dados

1 resposta
Alkamavo

bem camaradas…tenho esta abelhuda…

pretendo inserir um acidente no dicionario…
mas pretendo evitar inserir num mesmo acidente um condutor repetido, evitar que um carro seja inserido 2 vezs num mesmo acidente, e evitar que insira 2 vezs o mesmo acidente no dicionario(isso ja consegui evitar ). mas as restantes coisas esta um bicho.

vou postar aki o codigo :

Interface Acidente e sua implementaçao.

import java.io.Serializable;

public interface Acidente extends Serializable {

	// Retorna o ID de um acidente
	String getID();

	// Retorna o Condutor de um dado veiculo envolvido em um acidente
	String getDriver();

	// Retorna a matricula de um dado Veiculo envolvido em um acidente
	String getMatricula();

	// retorna o nome do propritetario de um veiculo envolvido em um acidente.
	String Get_Prop();

	// printa o acidente
	void PrintAcidente();

	//

}

public class CondutorClasse implements Condutor {

	protected String condutorName;
	protected Veiculo v;

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * @param condutorName
	 * @param v
	 */
	protected CondutorClasse(String condutorName, Veiculo v) {
		super();
		this.condutorName = condutorName;
		this.v = v;
	}
	protected CondutorClasse(){
		condutorName="";
		v=new VeiculoClasse();
	}

	public String getCondutor() {
		// TODO Auto-generated method stub
		return condutorName;
	}

	public Veiculo getVeiculo() {
		// TODO Auto-generated method stub
		return v;
	}

	public boolean onecondutor(Condutor aux) {
		if (this.condutorName.equals(aux.getCondutor())){
			return false;
			// TODO Auto-generated method stub
		}
		return true;
	}
}

agora esta a minha Interface gestor e a sua implementação.

import java.io.Serializable;
import java.util.ArrayList;

import DataEstrutures.List;

public interface GestaoPrincipal extends Serializable {

	// Inserir um veiculo retorn 1 se for inserido com sucesso e 0 se nao for
	// inserido
	int InserirVeiculo(String matricula, Proprietario<String> p);

	// Insere um acidente no sistema.retorna 1 se for inserido e 0 se nao.
	int InserirAcidente(String ID, Acidente Vaux);

	// remove um acidente no sistema, retorna 1 se for retirado e 0 se nao.
	int removerAcidente(String ID);

	// Consulta um acidente através do seu ID retorna 1 se o acidente existir e
	// 0 se nao

	int ConsultaAcidente(String ID);

	// Consulta o cadrastro de Um veiculo.Retorna 1 se a matricula de um dado
	// veiculo esta envolvido em um acidente e o 0 se a matricula nao esta
	// associada a nenhum veiculo
	
	ArrayList<String> ConsultaCadastroVeiculo(String matricula);

	// Consulta o cadrastro de um condutor ou do proprietario de um veiculo
	// retorna 1 se o proprietario ou o condutor estiver Cadastrado e 0 se nao.
	int ConsultaCadrastroProprietario(String nome);

	// Lista os piores COndutores do Sistema.
	List<Condutor> PioresCondutores();

}

import java.util.ArrayList;

import DataEstrutures.BinarySearchTree;
import DataEstrutures.Dictionary;
import DataEstrutures.Entry;
import DataEstrutures.Iterator;
import DataEstrutures.List;
import DataEstrutures.OrderedDictionary;

public class GestorP implements GestaoPrincipal {

	protected Dictionary<String, Acidente> Acidentes;
	protected Dictionary<String, List<Acidente>> Cadastro_proprietario;
	protected Dictionary<String, List<Acidente>> Cadastro_veiculo;
	protected Dictionary<String, Proprietario<String>> Veiculo;
	protected OrderedDictionary<String, List<Integer>> PioresCondutores;
	protected int ContaAcidentes;
	protected int ContaVeiculos;

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public GestorP() {

		Acidentes = new BinarySearchTree<String, Acidente>();
		Cadastro_proprietario = new BinarySearchTree<String, List<Acidente>>();
		Cadastro_veiculo = new BinarySearchTree<String, List<Acidente>>();
		Veiculo = new BinarySearchTree<String, Proprietario<String>>();
		PioresCondutores = new BinarySearchTree<String, List<Integer>>();
		ContaAcidentes = 0;
		ContaVeiculos = 0;

	}

	public int ConsultaAcidente(String ID) {
		Acidente aux = Acidentes.find(ID);
		if (aux == null) {
			return 0;
		}
		// TODO Auto-generated method stub
		aux.PrintAcidente();
		return 1;
	}

	public ArrayList<String> ConsultaCadastroVeiculo(String matricula) {

		Iterator<Entry<String, Acidente>> aux = Acidentes.iterator();
		// int num_acidentes = 0;
		ArrayList<String> IDs = new ArrayList<String>();

		while (aux.hasNext()) {

			Acidente auxl = (Acidente) aux.next();
			auxl = Acidentes.find(matricula);

			if (auxl != null) {
				// num_acidentes++;
				IDs.add(auxl.getID());

			}

		}

		return IDs;

	}

	public int ConsultaCadrastroProprietario(String nome) {
		// TODO Auto-generated method stub
		return 0;
	}

	public int InserirAcidente(String ID, Acidente Vaux) {
		Acidente aux = Acidentes.find(ID);

		if (aux == null) {
			Acidentes.insert(ID, Vaux);
			ContaAcidentes++;
			return 1;
		}
// aki isto funciona lindamente...tento inserir no dicionario.se o acidente ja la estiver o cara diz k ja existe...beleza

		if (aux.getID().compareToIgnoreCase(Vaux.getID()) == 0) {
			return 2;



		} //aki nao funciona..

           else if (aux.getDriver().compareToIgnoreCase(Vaux.getDriver())== 0) {
			return 3;
		}
		return 0;
	}


	public int InserirVeiculo(String matricula, Proprietario<String> p) {
		Proprietario<String> aux = Veiculo.find(matricula);
		if (aux == null) {
			Veiculo.insert(matricula, p);
			ContaVeiculos++;
			return 1;

		}
		// TODO Auto-generated method stub
		return 0;
	}

	public List<Condutor> PioresCondutores() {
		// TODO Auto-generated method stub
		return null;
	}

	public int removerAcidente(String ID) {
		Acidente aux = Acidentes.find(ID);
		if (aux == null) {
			return 0;

		}
		// TODO Auto-generated method stub
		Acidentes.remove(ID);
		ContaAcidentes--;
		return 1;

	}

}

e agora a main…

import static java.lang.System.out;

import java.util.ArrayList;
import java.util.Scanner;

import DataEstrutures.DoublyLinkedList;
import DataEstrutures.List;

public class Main {

	/**
	 * @param args
	 */

	public static int Comandos(String cmd) {

		// inserir veiculo

		if ((cmd.compareToIgnoreCase("IV") == 0))
			return 1;

		// Inserir acidente

		else if (cmd.compareToIgnoreCase("IA") == 0)
			return 2;

		// Remover acidente

		else if (cmd.compareToIgnoreCase("RA") == 0)
			return 3;

		// Consultar acidente

		else if (cmd.compareToIgnoreCase("CA") == 0)
			return 4;

		// Consulta Cadastro de um veiculo
		else if (cmd.compareToIgnoreCase("CV") == 0)
			return 5;

		// Consulta Cadastro de um proprietario ou condutor

		else if (cmd.compareToIgnoreCase("CP") == 0)
			return 6;

		// Pesquisa os Piores Condutores

		else if (cmd.compareToIgnoreCase("PC") == 0)
			return 7;

		// salvar o ficheiro e sair do sistema

		else if (cmd.compareToIgnoreCase("S") == 0)
			return 8;

		else
			return -1;
	}

	public static void main(String[] args) {

		out.println("Bem-Vindo ao Sistema de Gestao de Acidentes");
		         out.println("\t"+"Digite a Sua Operação");
		out.print(">>> ");
		Scanner console = new Scanner(System.in);
		GestaoPrincipal aux = new GestorP();

		int fisco;
		ArrayList<String> Cadastro = new ArrayList<String>();

		for (;;) {
			String linha = console.nextLine();
			String cmd = linha.substring(0, 2);

			switch (Comandos(cmd)) {

			case 1:
				String Matricula = linha.substring(3, linha.length());
				Proprietario<String> linha2 = new ProprietarioClasse<String>(
						console.nextLine());
				fisco = aux.InserirVeiculo(Matricula, linha2);

				if (fisco == 0) {
					out.println("Existencia do Veiculo referido");

				} else
					out.println("Inserçao do Veiculo Com Sucesso");
				break;

			case 2:
				String ID = linha.substring(3, linha.length());

				String Matricula_2 = console.nextLine();
				String nomeC = console.nextLine();
				Proprietario<String> linha_2 = new ProprietarioClasse<String>(
						console.nextLine());
				
				Veiculo ax = new VeiculoClasse(linha_2, Matricula_2);

				String matricula2 = console.nextLine();
				String nomeD = console.nextLine();
				Proprietario<String> linha3 = new ProprietarioClasse<String>(
						console.nextLine());
				Veiculo bx = new VeiculoClasse(linha3, matricula2);
				
				
				Condutor a = new CondutorClasse(nomeC, ax);
				Condutor b = new CondutorClasse(nomeD, bx);

				List<Condutor> Vaux = new DoublyLinkedList<Condutor>();
				Vaux.addFirst(a);
				Vaux.addLast(b);

				Acidente aux2 = new AcidenteClasse(ID, Vaux);

				fisco = aux.InserirAcidente(ID, aux2);
				if (fisco == 1) {
					out.println("Inserçao do Acidente com Sucesso");
				} else if(fisco==2){
					out.println("Existencia de Acidente Referido");
						}
				else if(fisco==3){
					out.println("Existencia de Condutores repetidos");
				        }
			
				break;

			case 3:
				String ID_1 = linha.substring(3, linha.length());
				fisco = aux.removerAcidente(ID_1);
				if (fisco == 1) {
					out.println("Acidente  removido Com Sucesso");
				} else
					out.println("Acidente inexistente");
				break;

			case 4:
				String ID_2 = linha.substring(3, linha.length());
				fisco = aux.ConsultaAcidente(ID_2);
				if (fisco == 0) {
					out.println("Acidente inexistente");
				}
				break;

			case 5:
				String Matri = linha.substring(3, linha.length());
				Cadastro = aux.ConsultaCadastroVeiculo(Matri);
				if (Cadastro == null) {
					System.out.println("Inexistencia de Veiculo referido");
				} else { 
					// aux.ConsultaCadastroVeiculo(Matri);
					System.out.println("numero de Acidentes :"
							+ aux.ConsultaCadastroVeiculo(Matri).size());

					for (int i = 0; i < aux.ConsultaCadastroVeiculo(Matri)
							.size(); i++) {
						out.println(Cadastro.get(i));
					}
				}
				break;

			default:
				out.println("Comando Invalido");

			}
			// TODO Auto-generated method stub

		}
	}
}

bem isso é so parte do projecto tem interfaces k nao meti pk n é la k ta a abelha…e n kero cansar com linhas de codigo…

1 Resposta

Alkamavo

Bagulho…resolvido :oops:

Criado 22 de janeiro de 2008
Ultima resposta 24 de jan. de 2008
Respostas 1
Participantes 1