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…