/// <summary> /// get a bus stop from the user /// </summary> /// <param name="myBusCollection">the Collection of all the bus </param> /// <param name="myUniqueStops">a list of stop</param> /// <returns></returns> public static BusStop GetBusStop(BusCollection myBusCollection, ref List <BusStop> myUniqueStops) { BusStop ret = new BusStop(); int realChoice = 0; string choice = ""; bool keyOk = false; while (!keyOk) { Console.WriteLine("enter bus station key"); ret.m_mylocation.m_busStationKey = Program_6077_5711_01.getInt(choice, ref realChoice); if (myBusCollection.keyExist(realChoice)) { Console.WriteLine("ERROR bus key taken!!"); } else { keyOk = true; } } if (!myBusCollection.keyExist(ret.m_mylocation.m_busStationKey)) { myBusCollection.m_BusKeysList.Add(ret.m_mylocation.m_busStationKey); myUniqueStops.Add(ret); } return(ret); }
public static BusRoute initializeBus(BusRoute myBusRoute, BusCollection myBusCollection, List <BusStop> myUniqueStops) { Random r = new Random(); int myRandom = 0; myBusRoute.m_Area = Areas[r.Next(Areas.Length)]; do { myBusRoute.m_BusLine = r.Next(1000); } while (myBusCollection.busLineExist(myBusRoute)); for (int adDStop = 0; adDStop < 10; adDStop++) { BusStop myNewStop = new BusStop(); int Stop_random = r.Next(stopName.Length); myNewStop.m_mylocation.m_busStationKey = myStops[Stop_random].m_busStationKey; myNewStop.m_mylocation.m_latitude = myStops[Stop_random].m_latitude; myNewStop.m_mylocation.m_location = myStops[Stop_random].m_location; myNewStop.m_mylocation.m_longitude = myStops[Stop_random].m_longitude; myNewStop.m_mylocation.m_location = myStops[Stop_random].m_location; if (adDStop == 0) { myBusRoute.m_FirstStation = stopName[Stop_random]; } else if (adDStop == 9) { myBusRoute.m_LastStation = stopName[Stop_random]; } if (!myBusRoute.stopExist(myNewStop)) { notUseDStops[Stop_random]++; } if (!myBusCollection.keyExist(myStops[myRandom].m_busStationKey)) { myBusCollection.m_BusKeysList.Add(myStops[adDStop].m_busStationKey); myUniqueStops.Add(myNewStop); } myRandom = r.Next(myStops.Length); //myBusRoute.m_Stations.Add(myStops[myRandom]); myBusRoute.add(myNewStop, myBusRoute.m_Stations.Count()); } return(myBusRoute); }
/// <summary> /// initialize a busCollection with 10 bus routs which contain at least 40 stops /// </summary> public static void initializeBusRoute(ref BusCollection myBusCollection, ref List <BusStop> myUniqueStops) { //BusCollection myBusCollection = new BusCollection(); Random r = new Random(); BusRoute myBusRoute = new BusRoute(); BusRoute[] myRoutes = new BusRoute[Areas.Length]; int myRandom; /////////////////////////////////////////// /// INITAILIZEING 40 STOPS ////////////////////////////////////////// for (int i = 0; i < stopName.Length; i++) { myStops[i] = new stopLocation(); myStops[i].m_location = stopName[i]; myStops[i].m_longitude = r.Next(34, 36) + (float)(r.NextDouble() % 0.2 + 0.3); if (myStops[i].m_longitude < 35) { myStops[i].m_longitude += (float)r.NextDouble(); } myStops[i].m_latitude = r.Next(31, 34) + (float)(r.NextDouble() % 0.3); if (myStops[i].m_longitude < 33) { myStops[i].m_longitude += (float)r.NextDouble(); } do { myStops[i].m_busStationKey = r.Next(10000000); } while (myBusCollection.keyExist(myStops[i].m_busStationKey)); } /////////////////////////////////////////// /// INITAILIZEING 10 BUS ROUTES ////////////////////////////////////////// for (int i = 0; i < 10; i++) { myBusRoute = new BusRoute(); myBusRoute = initializeBus(myBusRoute, myBusCollection, myUniqueStops); myBusCollection.addFirstBusRoute(myBusRoute); } /////////////////////////////////////////// /// ALL STOP ARE USED CHECK ////////////////////////////////////////// bool addedNewBus = false; bool foundFirst = false; string last = ""; myBusRoute = new BusRoute(); for (int i = 0; i < stopName.Length; i++) { if (notUseDStops[i] == 0) { BusStop myNewStop = new BusStop(); myNewStop.m_mylocation.m_busStationKey = myStops[i].m_busStationKey; myNewStop.m_mylocation.m_latitude = myStops[i].m_latitude; myNewStop.m_mylocation.m_location = myStops[i].m_location; myNewStop.m_mylocation.m_longitude = myStops[i].m_longitude; myNewStop.m_mylocation.m_location = myStops[i].m_location; addedNewBus = true; notUseDStops[i]++; myBusRoute.add(myNewStop, myBusRoute.m_Stations.Count()); last = myStops[i].m_location; if (!foundFirst) { myBusRoute.m_FirstStation = last; foundFirst = true; } if (!myBusCollection.keyExist(myStops[i].m_busStationKey)) { myBusCollection.m_BusKeysList.Add(myStops[i].m_busStationKey); myUniqueStops.Add(myNewStop); } } } if (foundFirst) { myBusRoute.m_LastStation = last; myBusRoute.m_Area = Areas[r.Next(Areas.Length)]; do { myBusRoute.m_BusLine = r.Next(1000); } while (myBusCollection.busLineExist(myBusRoute)); } myBusCollection.addFirstBusRoute(myBusRoute); ///////////////////////////////////////////////// // 10 STOPS ARE USED IN MORE THAN 1 BUS LINE ////////////////////////////////////////////////// BusRoute myNewRoute = new BusRoute(); for (int i = 0; i < 10; i++) { if (notUseDStops[i] < 2) { BusStop myNewStop = new BusStop(); myNewStop.m_mylocation.m_busStationKey = myStops[i].m_busStationKey; myNewStop.m_mylocation.m_latitude = myStops[i].m_latitude; myNewStop.m_mylocation.m_location = myStops[i].m_location; myNewStop.m_mylocation.m_longitude = myStops[i].m_longitude; notUseDStops[i]++; myNewRoute.add(myNewStop, myNewRoute.m_Stations.Count()); if (!myBusCollection.keyExist(myStops[i].m_busStationKey)) { myBusCollection.m_BusKeysList.Add(myStops[i].m_busStationKey); myUniqueStops.Add(myNewStop); } } } }