/// <summary> /// Inicializa as variáveis do formulário e monta o grafo a partir da árvore de cidades recebida /// </summary> /// <param name="cidades">Árvore das cidades que serão desenhadas no mapa</param> public frmMapaCidade(ref ArvoreDeBusca <Cidade> cidades) { InitializeComponent(); grafoMapa = new GrafoCidades(null); PercorrerArvore(ref cidades.raiz); pnlMapa.Invalidate(); }
private void btnManutCidade_Click(object sender, EventArgs e) { frmManutCidade ManutCidade = new frmManutCidade(); // chama o formulário de manutenção de cidades ManutCidade.ShowDialog(this); grafoCaminhos = new GrafoCidades(null); cidades = new String[GrafoCidades.NUM_VERTICES]; cbxDestino.Items.Clear(); cbxOrigem.Items.Clear(); // Lê os arquivos novamente para atualizar as alterações FileStream arqCidades = new FileStream("arqCidades.cid", FileMode.OpenOrCreate); RegistroCidade regCidade = new RegistroCidade(); for (int i = 0; i < arqCidades.Length / Cidade.TAMANHO_DO_REGISTRO; i++) { Cidade novaCidade = new Cidade("", 0D, 0D); regCidade.LerRegistro(arqCidades, i, ref novaCidade); cidades[i] = novaCidade.ToString(); cbxDestino.Items.Add(novaCidade.ToString()); cbxOrigem.Items.Add(novaCidade.ToString()); grafoCaminhos.NovoVertice(novaCidade); } arqCidades.Close(); FileStream arqCaminhos = new FileStream("arqCaminhos.cam", FileMode.OpenOrCreate); RegistroCaminho regCaminho = new RegistroCaminho(); for (int i = 0; i < arqCaminhos.Length / Caminho.TAMANHO_DO_REGISTRO; i++) { Caminho novoCaminho = new Caminho(new Cidade("", 0D, 0D), new Cidade("", 0D, 0D), int.MaxValue); regCaminho.LerRegistro(arqCaminhos, i, ref novoCaminho); int cid1 = IndiceDe(novoCaminho.Saida.ToString()); int cid2 = IndiceDe(novoCaminho.Destino.ToString()); if (cid1 > 0 && cid2 > 0) { grafoCaminhos.NovaAresta(cid1, cid2, novoCaminho.Distancia); } } arqCaminhos.Close(); panel1.Invalidate(); // atualiza o panel1 }
private void frmBuscaCaminhos_Load(object sender, EventArgs e) { grafoCaminhos = new GrafoCidades(null); cidades = new String[GrafoCidades.NUM_VERTICES]; FileStream arqCidades = new FileStream("arqCidades.cid", FileMode.OpenOrCreate); // abre o arquivo, criando-o se não existir RegistroCidade regCidade = new RegistroCidade(); for (int i = 0; i < arqCidades.Length / Cidade.TAMANHO_DO_REGISTRO; i++) //Enquanto houver registros para ler, o faz { Cidade novaCidade = new Cidade("", 0D, 0D); regCidade.LerRegistro(arqCidades, i, ref novaCidade); // lê o registro e o armazena em novaCidade cidades[i] = novaCidade.ToString(); cbxDestino.Items.Add(novaCidade.ToString()); cbxOrigem.Items.Add(novaCidade.ToString()); grafoCaminhos.NovoVertice(novaCidade); } arqCidades.Close(); // fecha o arquivo de cidades FileStream arqCaminhos = new FileStream("arqCaminhos.cam", FileMode.OpenOrCreate); // abre o arquivo, criando-o se não existir RegistroCaminho regCaminho = new RegistroCaminho(); for (int i = 0; i < arqCaminhos.Length / Caminho.TAMANHO_DO_REGISTRO; i++) //Enquanto houver registros para ler, o faz { Caminho novoCaminho = new Caminho(new Cidade("", 0D, 0D), new Cidade("", 0D, 0D), int.MaxValue); regCaminho.LerRegistro(arqCaminhos, i, ref novoCaminho); // lê o registro e o armazena em novoCaminho int cid1 = IndiceDe(novoCaminho.Saida.ToString()); int cid2 = IndiceDe(novoCaminho.Destino.ToString()); if (cid1 > 0 && cid2 > 0) // se as duas cidades existirem { grafoCaminhos.NovaAresta(cid1, cid2, novoCaminho.Distancia); // cria uma novas aresta entre essa cidades } } arqCaminhos.Close(); //fecha o arquivo de caminhos panel1.Invalidate(); }