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); } } } }
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."); }