public static DataTable GetCroaziere(string connectionString)
        {
            using (SqlConnection con = new SqlConnection(connectionString))
            {
                con.Open();
                string cmdText = "Select * from Croaziere;";

                using (SqlCommand cmd = new SqlCommand(cmdText, con))
                {
                    using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
                    {
                        DataTable table = new DataTable();

                        adapter.Fill(table);

                        table.Columns.Add("Circuit");
                        foreach (DataRow row in table.Rows)
                        {
                            List <int> porturi = row["Lista_porturi"].ToString().Split(',').Select(x => Int32.Parse(x)).ToList();

                            string circuit = SqlDataAcces.GetCircuitByArray(porturi);

                            row["Circuit"] = circuit;
                        }

                        return(table);
                    }
                }
            }
        }
Exemplo n.º 2
0
        public static void Actualizeaza(string connectionString)
        {
            SqlDataAcces.ClearDB(connectionString, "Distante");
            List <string> porturi = SqlDataAcces.NumePorturi;

            string filePath = "Resurse//Harta_Distantelor.txt";

            using (StreamReader reader = new StreamReader(filePath))
            {
                foreach (string item in porturi)
                {
                    List <int> line = reader.ReadLine().Split(' ').Select(x => Int32.Parse(x)).ToList();

                    using (SqlConnection con = new SqlConnection(connectionString))
                    {
                        con.Open();
                        string cmdText = "Insert into Distante (ID_Port, ID_Port_Destinatie, Nume_Port_Destinatie,Distanta) values (@id1, @id2, @nume, @dist);";

                        int index = 1;
                        foreach (int dist in line)
                        {
                            using (SqlCommand cmd = new SqlCommand(cmdText, con))
                            {
                                cmd.Parameters.AddWithValue("id1", porturi.IndexOf(item) + 1);
                                cmd.Parameters.AddWithValue("id2", index);
                                cmd.Parameters.AddWithValue("nume", porturi[index]);
                                cmd.Parameters.AddWithValue("dist", dist);

                                cmd.ExecuteNonQuery();
                            }
                        }
                    }
                }
            }
        }
        public static void Generare(string connectionString)
        {
            SqlDataAcces.ClearDB(SqlDataAcces.ConnectionString, "Croaziere");
            List <List <DistantaModel> > distante = SqlDataAcces.GetDistante();
            int index = 0;
            int numberOfIterations = 0;

            for (int i = 1; i < 13; i++)
            {
                for (int j = i + 1; j < 13; j++)
                {
                    for (int k = j + 1; k < 13; k++)
                    {
                        int distance = distante[0][i].Distanta + distante[i][j].Distanta + distante[j][k].Distanta + distante[k][i].Distanta;
                        if (distance >= 800 && distance <= 1100)
                        {
                            index++;
                            List <int> listaPorturi = new int[] { i, j, k, i }.ToList();
                            int        pret = distance * 2;
                            SqlDataAcces.SalveazaCroaziera(index, 3, listaPorturi, pret, distance);
                        }

                        numberOfIterations++;
                    }
                }
            }
            for (int i = 1; i < 13; i++)
            {
                for (int j = i + 1; j < 13; j++)
                {
                    for (int k = j + 1; k < 13; k++)
                    {
                        for (int n = k + 1; n < 13; n++)
                        {
                            for (int m = n + 1; m < 13; m++)
                            {
                                int distance = distante[0][i].Distanta + distante[i][j].Distanta + distante[j][k].Distanta + distante[k][n].Distanta + distante[n][m].Distanta + distante[m][i].Distanta;
                                if (distance >= 800 && distance <= 1600)
                                {
                                    index++;
                                    List <int> listaPorturi = new int[] { i, j, k, n, m, i }.ToList();
                                    int        pret = distance * 2;
                                    SqlDataAcces.SalveazaCroaziera(index, 5, listaPorturi, pret, distance);
                                }
                                numberOfIterations++;
                            }
                        }
                    }
                }
            }
            for (int i = 1; i < 13; i++)
            {
                for (int j = i + 1; j < 13; j++)
                {
                    for (int k = j + 1; k < 13; k++)
                    {
                        for (int n = k + 1; n < 13; n++)
                        {
                            for (int m = n + 1; m < 13; m++)
                            {
                                for (int x = m + 1; x < 13; x++)
                                {
                                    for (int y = x + 1; y < 13; y++)
                                    {
                                        for (int z = y + 1; z < 13; z++)
                                        {
                                            int distance = distante[0][i].Distanta + distante[i][j].Distanta + distante[j][k].Distanta + distante[k][n].Distanta + distante[n][m].Distanta +
                                                           distante[m][x].Distanta + distante[x][y].Distanta + distante[y][z].Distanta + distante[y][0].Distanta;
                                            if (distance >= 800 && distance <= 10000)
                                            {
                                                index++;
                                                List <int> listaPorturi = new int[] { i, j, k, n, m, x, y, i }.ToList();
                                                int        pret = distance * 2;
                                                SqlDataAcces.SalveazaCroaziera(index, 8, listaPorturi, pret, distance);
                                            }
                                            numberOfIterations++;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }

            MessageBox.Show("Generate toate croazierele in " + numberOfIterations.ToString() + " de iteratii.");
        }