コード例 #1
0
        private void excluirCaminho(object sender, EventArgs e)
        {
            string cidade1 = (cbxCidade1.SelectedItem == null ? null : cbxCidade1.SelectedItem.ToString()),
                   cidade2 = (cbxCidade2.SelectedItem == null ? null : cbxCidade2.SelectedItem.ToString());

            if (cidade1 == null || cidade2 == null)
            {
                MessageBox.Show("Selecione duas cidades");
                return;
            }

            foreach (Caminho c in caminhos)
            {
                if ((c.Cidades[0] == cidade1 && c.Cidades[1] == cidade2) || (c.Cidades[1] == cidade1 && c.Cidades[0] == cidade2))
                {
                    if (MessageBox.Show("Deseja realmente excluir o caminho entre " + cidade1 + " e " + cidade2 + "?", "Exclusão", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
                    {
                        caminhos.Remove(c);
                        MessageBox.Show("Caminho removido!");

                        grafo = new GrafoCaminhos(caminhos, cidades.Keys.ToList());
                        mapa.Invalidate();

                        return;
                    }
                    else
                    {
                        return;
                    }
                }
            }

            MessageBox.Show("Caminho não existente.");
        }
コード例 #2
0
        private void excluirCidade(object sender, EventArgs e)
        {
            if (cbxCidades.SelectedIndex >= 0)
            {
                if (MessageBox.Show("Deseja realmente excluir " + cbxCidades.SelectedItem.ToString() + "? \n (Todas as ligações com ela serão excluidas junto)",
                                    "Exclusão",
                                    MessageBoxButtons.YesNo,
                                    MessageBoxIcon.Warning) == DialogResult.Yes)
                {
                    string nomeCidade = cbxCidades.SelectedItem.ToString();
                    cidades.Remove(nomeCidade);

                    //Remove a cidade selecionada dos combobox.
                    cbxCidade1.Items.RemoveAt(cbxCidades.SelectedIndex);
                    cbxCidade2.Items.RemoveAt(cbxCidades.SelectedIndex);
                    cbxCidades.Items.RemoveAt(cbxCidades.SelectedIndex);

                    //Remove todos os caminhos em que a cidade destino ou a cidade inicial é a cidade a ser removida
                    foreach (Caminho c in caminhos)
                    {
                        if (c.Cidades[0] == nomeCidade || c.Cidades[1] == nomeCidade)
                        {
                            caminhos.Remove(c);
                        }
                    }

                    grafo = new GrafoCaminhos(caminhos, cidades.Keys.ToList());
                    mapa.Invalidate();
                }
            }
        }
コード例 #3
0
        private void incluirCidade(object sender, EventArgs e)
        {
            string cidade = Microsoft.VisualBasic.Interaction.InputBox("Digite o nome da cidade", "Inclusão de cidade", "");

            if (cidade != null && cidade.Trim() != "")
            {
                cidade = cidade.Trim();

                if (cidade.Length > 15)
                {
                    cidade = cidade.Substring(0, 15);
                }

                if (cidades.ContainsKey(cidade))
                {
                    MessageBox.Show("Cidade ja existente");
                    return;
                }

                cidades.Add(cidade, localCidade);
                showMousePos = false;

                cbxCidades.Items.Add(cidade);
                cbxCidade1.Items.Add(cidade);
                cbxCidade2.Items.Add(cidade);

                grafo = new GrafoCaminhos(caminhos, cidades.Keys.ToList());
                MessageBox.Show("Cidade incluida com sucesso!");
            }
        }
コード例 #4
0
        private void carregarCidades(object sender, EventArgs e)
        {
            if (dlgOpen.ShowDialog() == DialogResult.OK)
            {
                cbxCidades.Items.Clear();
                cbxCidade1.Items.Clear();
                cbxCidade2.Items.Clear();

                StreamReader sr = new StreamReader(dlgOpen.FileName);
                try
                {
                    string linha = sr.ReadLine();
                    while (linha != null && linha.Trim() != "")
                    {
                        PointF p = new PointF();
                        p.X = Convert.ToSingle(linha.Substring(16, 5));
                        p.Y = Convert.ToSingle(linha.Substring(22, 5));

                        //Adiciona a cidade em todos os combobox.
                        string nomeCidade = linha.Substring(0, 15).Trim();
                        cbxCidades.Items.Add(nomeCidade);
                        cbxCidade1.Items.Add(nomeCidade);
                        cbxCidade2.Items.Add(nomeCidade);

                        cidades[linha.Substring(0, 15).Trim()] = p;
                        linha = sr.ReadLine();
                    }

                    grafo = new GrafoCaminhos(caminhos, cidades.Keys.ToList());

                    cidadesMenu.Visible         = true;
                    pnlCaminhos.Visible         = true;
                    this.Size                   = new Size(929, 563);
                    carregarCidadesMenu.Visible = false;

                    mapa.Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Right;

                    mapa.Invalidate();
                }
                catch (Exception ex)
                {
                    cbxCidades.Items.Clear();
                    cbxCidade1.Items.Clear();
                    cbxCidade2.Items.Clear();
                    MessageBox.Show("Formato de arquivo inválido! \n" + ex.Message);
                }

                sr.Close();
            }
        }
コード例 #5
0
        private void inserirCaminho(object sender, EventArgs e)
        {
            string cidade1 = (cbxCidade1.SelectedItem == null ? null : cbxCidade1.SelectedItem.ToString()),
                   cidade2 = (cbxCidade2.SelectedItem == null ? null : cbxCidade2.SelectedItem.ToString());

            if (cidade1 == null || cidade2 == null)
            {
                MessageBox.Show("Selecione duas cidades");
                return;
            }

            foreach (Caminho c in caminhos)
            {
                if ((c.Cidades[0] == cidade1 && c.Cidades[1] == cidade2) || (c.Cidades[1] == cidade1 && c.Cidades[0] == cidade2))
                {
                    MessageBox.Show("Caminho já existente!");
                    return;
                }
            }

            try
            {
                string result = Microsoft.VisualBasic.Interaction.InputBox("Digite a velocidade do percurso", cidade1 + " -> " + cidade2, "0");
                if (result == null)
                {
                    throw new Exception();
                }
                int velocidade = Math.Abs(Convert.ToInt32(result));

                result = Microsoft.VisualBasic.Interaction.InputBox("Digite a distância do percurso", cidade1 + " -> " + cidade2, "0");
                if (result == null)
                {
                    throw new Exception();
                }
                int distancia = Math.Abs(Convert.ToInt32(result));

                caminhos.Add(new Caminho(cidade1, cidade2, distancia, velocidade));

                grafo = new GrafoCaminhos(caminhos, cidades.Keys.ToList());
                mapa.Invalidate();
            }
            catch
            {
                MessageBox.Show("Informações inválidas, inclusão de caminho cancelada");
                return;
            }
        }
コード例 #6
0
        private void carregarCaminhos(object sender, EventArgs e)
        {
            if (dlgOpen.ShowDialog() == DialogResult.OK)
            {
                caminhos.Clear();

                StreamReader sr = new StreamReader(dlgOpen.FileName);
                try
                {
                    string linha = sr.ReadLine();
                    while (linha != null && linha.Trim() != "")
                    {
                        string cidade1 = linha.Substring(0, 15).Trim(),
                               cidade2 = linha.Substring(15, 15).Trim();

                        //Faz com que tenha apenas caminhos entre cidades existentes
                        if (!cidades.ContainsKey(cidade1) || !cidades.ContainsKey(cidade2))
                        {
                            throw new Exception();
                        }

                        caminhos.Add(new Caminho(cidade1, cidade2, Convert.ToInt32(linha.Substring(31, 3).Trim()), Convert.ToInt32(linha.Substring(35, 4))));

                        linha = sr.ReadLine();
                    }

                    grafo = new GrafoCaminhos(caminhos, cidades.Keys.ToList());

                    mapa.Invalidate();
                }
                catch (Exception ex)
                {
                    caminhos.Clear();
                    MessageBox.Show("Formato de arquivo inválido ou cidade inexistente! \n" + ex.Message);
                }

                sr.Close();
            }
        }