public Tietovarasto() { if (File.Exists("AutoSave.txt")) // jos "AutoSave.txt" tiedosto on olemassa tietovarastoa luotaessa, niin haetaan sen sisältämät tiedot ohjelmaan { string rivi = ""; string[] jaettu = new string[12]; fin = File.OpenText("AutoSave.txt"); Asunto asunto; string katuosoite; string postinumero; string kunta; string os; string asuntotyyppi; string huoneistotyyppi; int pinta_ala; string rahoitustapa; double kustannus1; double kustannus2; string vapautuu; string status; string muutto; while (!fin.EndOfStream) // haetaan tiedoston sisältämät tiedot rivi riviltä tietovarastoon { rivi = fin.ReadLine(); jaettu = rivi.Split(';'); katuosoite = jaettu[0]; postinumero = jaettu[1]; kunta = jaettu[2]; os = jaettu[0] + " " + jaettu[1] + " " + jaettu[2]; asuntotyyppi = jaettu[3]; huoneistotyyppi = jaettu[4]; int.TryParse(jaettu[5], out pinta_ala); rahoitustapa = jaettu[6]; double.TryParse(jaettu[7], out kustannus1); double.TryParse(jaettu[8], out kustannus2); vapautuu = jaettu[9]; status = jaettu[10]; muutto = jaettu[11]; if (jaettu[3] == "omakotitalo") { asunto = new Omakotitalo(katuosoite, postinumero, kunta, asuntotyyppi, huoneistotyyppi, pinta_ala, rahoitustapa, kustannus1, kustannus2, vapautuu, status, muutto); } else if (jaettu[3] == "paritalohuoneisto") { asunto = new Paritalohuoneisto(katuosoite, postinumero, kunta, asuntotyyppi, huoneistotyyppi, pinta_ala, rahoitustapa, kustannus1, kustannus2, vapautuu, status, muutto); } else if (jaettu[3] == "rivitalohuoneisto") { asunto = new Rivitalohuoneisto(katuosoite, postinumero, kunta, asuntotyyppi, huoneistotyyppi, pinta_ala, rahoitustapa, kustannus1, kustannus2, vapautuu, status, muutto); } else { asunto = new Kerrostalohuoneisto(katuosoite, postinumero, kunta, asuntotyyppi, huoneistotyyppi, pinta_ala, rahoitustapa, kustannus1, kustannus2, vapautuu, status, muutto); } this.Add(os, asunto); } fin.Close(); } }
public static void Main(string[] args) { Tietovarasto tietovarasto = new Tietovarasto(); Asunto omakotitalo; Asunto paritalohuoneisto; Asunto rivitalohuoneisto; Asunto kerrostalohuoneisto; bool lopeta = false; bool takaisin = false; bool paavalikkoon = false; bool poistettiin; bool muokattiin; bool loydettiin; char valinta; string[] hakutermi = new string[3]; string vastaanotto; while (!lopeta) // pääohjelmasilmukka { Console.Write("PÄÄVALIKKO (l = lisää, p = poista, m = muokkaa, h = hae, t = tallenna muutokset, s = sulje ohjelma)\nAnna valintasi: "); char.TryParse(Console.ReadLine(), out valinta); switch (valinta) { case 'l': // lisää asunto while (!paavalikkoon) // lisää-toiminnon ohjelmasilmukka { Console.Write(">LISÄÄ (o = omistusasunto, v = vuokra-asunto, t = takaisin)\nAnna valintasi: "); char.TryParse(Console.ReadLine(), out valinta); switch (valinta) { case 'o': // lisää omistusasunto while (!takaisin) // lisää omistusasunto -toiminnon ohjelmasilmukka { Console.Write(">>OMISTUSASUNTO (o = omakotitalo, p = paritalohuoneisto, r = rivitalohuoneisto, k = kerrostalohuoneisto, t = takaisin)\nAnna valintasi: "); char.TryParse(Console.ReadLine(), out valinta); switch (valinta) { case 'o': // lisää omakotitalo (omistusasunto) Console.WriteLine(">>>OMAKOTITALO"); omakotitalo = new Omakotitalo(); omakotitalo.KysyTiedot(); omakotitalo.KysyMyytavanTiedot(); tietovarasto.LisaaAsunto(omakotitalo); break; case 'p': // lisää paritalohuoneisto (omistusasunto) Console.WriteLine(">>>PARITALOHUONEISTO"); paritalohuoneisto = new Paritalohuoneisto(); paritalohuoneisto.KysyTiedot(); paritalohuoneisto.KysyMyytavanTiedot(); tietovarasto.LisaaAsunto(paritalohuoneisto); break; case 'r': // lisää rivitalohuoneisto (omistusasunto) Console.WriteLine(">>>RIVITALOHUONEISTO"); rivitalohuoneisto = new Rivitalohuoneisto(); rivitalohuoneisto.KysyTiedot(); rivitalohuoneisto.KysyMyytavanTiedot(); tietovarasto.LisaaAsunto(rivitalohuoneisto); break; case 'k': // lisää kerrostalohuoneisto (omistusasunto) Console.WriteLine(">>>KERROSTALOHUONEISTO"); kerrostalohuoneisto = new Kerrostalohuoneisto(); kerrostalohuoneisto.KysyTiedot(); kerrostalohuoneisto.KysyMyytavanTiedot(); tietovarasto.LisaaAsunto(kerrostalohuoneisto); break; case 't': // mene takaisin lisää-toiminnon alkuun takaisin = true; break; } } break; case 'v': // lisää vuokra-asunto while (!takaisin) // lisää vuokra-asunto -toiminnon ohjelmasilmukka { Console.Write(">>VUOKRA-ASUNTO (o = omakotitalo, p = paritalohuoneisto, r = rivitalohuoneisto, k = kerrostalohuoneisto, t = takaisin)\nAnna valintasi: "); char.TryParse(Console.ReadLine(), out valinta); switch (valinta) { case 'o': // lisää omakotitalo (vuokra-asunto) Console.WriteLine(">>>OMAKOTITALO"); omakotitalo = new Omakotitalo(); omakotitalo.KysyTiedot(); omakotitalo.KysyVuokrattavanTiedot(); tietovarasto.LisaaAsunto(omakotitalo); break; case 'p': // lisää paritalohuoneisto (vuokra-asunto) Console.WriteLine(">>>PARITALOHUONEISTO"); paritalohuoneisto = new Paritalohuoneisto(); paritalohuoneisto.KysyTiedot(); paritalohuoneisto.KysyVuokrattavanTiedot(); tietovarasto.LisaaAsunto(paritalohuoneisto); break; case 'r': // lisää rivitalohuoneisto (vuokra-asunto) Console.WriteLine(">>>RIVITALOHUONEISTO"); rivitalohuoneisto = new Rivitalohuoneisto(); rivitalohuoneisto.KysyTiedot(); rivitalohuoneisto.KysyVuokrattavanTiedot(); tietovarasto.LisaaAsunto(rivitalohuoneisto); break; case 'k': // lisää kerrostalohuoneisto (vuokra-asunto) Console.WriteLine(">>>KERROSTALOHUONEISTO"); kerrostalohuoneisto = new Kerrostalohuoneisto(); kerrostalohuoneisto.KysyTiedot(); kerrostalohuoneisto.KysyVuokrattavanTiedot(); tietovarasto.LisaaAsunto(kerrostalohuoneisto); break; case 't': // mene takaisin lisää-toiminnon alkuun takaisin = true; break; } } break; case 't': // mene takaisin päävalikkoon paavalikkoon = true; break; } takaisin = false; } // lisää-toiminto päättyy break; case 'p': // poista asuntoja while (!paavalikkoon) // poista-toiminnon ohjelmasilmukka { Console.Write(">POISTA (o = osoitteella, v = välitystilanteella, k = kaikki, t = takaisin)\nAnna valintasi: "); char.TryParse(Console.ReadLine(), out valinta); switch (valinta) { case 'o': // poista osoitteen perusteella (poistetaan yksi kerrallaan) Console.Write("Katuosoite: "); hakutermi[0] = Console.ReadLine(); Console.Write("Postinumero: "); hakutermi[1] = Console.ReadLine(); Console.Write("Kunta: "); hakutermi[2] = Console.ReadLine(); poistettiin = tietovarasto.PoistaAsunto(hakutermi); if (poistettiin == true) { Console.WriteLine("Asunto poistettiin onnistuneesti..."); } else { Console.WriteLine("Asuntoa ei löytynyt..."); } break; case 'v': // poista välitystilanteen perusteella (voidaan poistaa yksi tai useampia kerralla) while (!takaisin) // poista välitystilanteella -toiminnon ohjelmasilmukka (tarkennetaan määritelmää) { Console.Write(">>VÄLITYSTILANTEELLA (p = peruutetut, v = valmiit, t = takaisin)\nAnna valintasi: "); char.TryParse(Console.ReadLine(), out valinta); switch (valinta) { case 'p': // poista asunnot, joiden välitystilanne on "peruutettu" poistettiin = true; while (poistettiin) { poistettiin = tietovarasto.PoistaStatuksella("peruutettu"); } Console.WriteLine("Kaikki välitystilanteeltaan perutut poistettiin onnistuneesti..."); break; case 'v': // poista asunnot, joiden välitystilanne on "valmis" poistettiin = true; while (poistettiin) { poistettiin = tietovarasto.PoistaStatuksella("valmis"); } Console.WriteLine("Kaikki välitystilanteeltaan valmiit poistettiin onnistuneesti..."); break; case 't': // mene takaisin poista-toiminnon alkuun takaisin = true; break; } } break; case 'k': // poista kaikki asunnot tietovarastosta while (!takaisin) // poista kaikki -toiminnon ohjelmasilmukka (varmista poisto) { Console.Write("Oletko varma, että haluat poistaa kaikkien asuntojen tiedot? (k = kyllä, e = ei)\nAnna valintasi: "); char.TryParse(Console.ReadLine(), out valinta); switch (valinta) { case 'k': // poista kaikki tietovarasto.PoistaKaikkiAsunnot(); Console.WriteLine("Kaikki asunnot poistettiin onnistuneesti..."); takaisin = true; break; case 'e': // en haluakaan poistaa mitään Console.WriteLine("Asuntojen poistaminen peruutettu..."); takaisin = true; break; } } break; case 't': // mene takaisin päävalikkoon paavalikkoon = true; break; } takaisin = false; } // poista-toiminto päättyy break; case 'm': // muokkaa asunnon tietoja Console.WriteLine(">MUOKKAA\nAnna muokattavan asunnon osoite: "); // määritetään, mitä asuntoa halutaan muokata Console.Write("Katuosoite: "); hakutermi[0] = Console.ReadLine(); Console.Write("Postinumero: "); hakutermi[1] = Console.ReadLine(); Console.Write("Kunta: "); hakutermi[2] = Console.ReadLine(); loydettiin = tietovarasto.HaeAsuntoaOsoitteella(hakutermi); if (!loydettiin) { Console.WriteLine("Osoitetta ei löytynyt..."); } while (!paavalikkoon && loydettiin) // muokkaa-toiminnon ohjelmasilmukka (asunto pysyy valittuna, kunnes käydään taas päävalikossa) { Console.Write(">>{0} {1} {2} (r = rahoitustapaa, k = kustannuksia, v = vapautumisajankohtaa, s = välitystilannetta, m = muuton ajankohtaa, t = takaisin)\nAnna valintasi: ", hakutermi[0], hakutermi[1], hakutermi[2]); char.TryParse(Console.ReadLine(), out valinta); switch (valinta) { case 'r': // muokkaa asunnon rahoitustapaa while (!takaisin) // muokkaa rahoitustapaa -toiminnon ohjelmasilmukka { Console.Write("Anna uusi rahoitustapa (o = omistusasunto, v = vuokra-asunto, t = takaisin): "); char.TryParse(Console.ReadLine(), out valinta); switch (valinta) { case 'o': // valitaan rahoitustavaksi omistusasunto vastaanotto = "omistusasunto"; muokattiin = tietovarasto.MuokkaaAsunnonRahoitustapaa(hakutermi, vastaanotto); if (muokattiin) { Console.WriteLine("Asunnon rahoitustapaa muokattiin onnistuneesti..."); takaisin = true; } break; case 'v': // valitaan rahoitustavaksi vuokra-asunto vastaanotto = "vuokra-asunto"; muokattiin = tietovarasto.MuokkaaAsunnonRahoitustapaa(hakutermi, vastaanotto); if (muokattiin) { Console.WriteLine("Asunnon rahoitustapaa muokattiin onnistuneesti..."); takaisin = true; } break; case 't': // takaisin muokkaa-toiminnon alkuun takaisin = true; break; } } break; case 'k': // muokkaa asunnon kustannuksia Console.WriteLine("Anna uudet kustannukset: "); muokattiin = tietovarasto.MuokkaaAsunnonKustannuksia(hakutermi); if (muokattiin) { Console.WriteLine("Asunnon kustannuksia muokattiin onnistuneesti..."); } break; case 'v': // muokkaa asunnon vapautumisajankohtaa Console.Write("Anna uusi vapautumisajankohta: "); vastaanotto = Console.ReadLine(); muokattiin = tietovarasto.MuokkaaAsunnonVapautumista(hakutermi, vastaanotto); if (muokattiin) { Console.WriteLine("Asunnon vapautumisajankohtaa muokattiin onnistuneesti..."); } break; case 's': // muokkaa asunnon välitystilannetta while (!takaisin) // muokkaa välitystilannetta -toiminnon ohjelmasilmukka { Console.Write("Anna uusi välitystilanne (e = esittelyssä, v = varattu, p = peruutettu, s = valmis, t = takaisin): "); char.TryParse(Console.ReadLine(), out valinta); switch (valinta) { case 'e': // valitaan välitystilanteeksi "esittelyssä" ja määritetään muuton ajankohdaksi "ei määritetty" vastaanotto = "esittelyssä"; muokattiin = tietovarasto.MuokkaaAsunnonStatusta(hakutermi, vastaanotto); tietovarasto.MuokkaaAsunnonMuuttoa(hakutermi, "ei määritetty"); if (muokattiin) { Console.WriteLine("Asunnon välitystilannetta muokattiin onnistuneesti..."); takaisin = true; } break; case 'v': // valitaan välitystilanteeksi "varattu" ja kysytään muuton ajankohta vastaanotto = "varattu"; muokattiin = tietovarasto.MuokkaaAsunnonStatusta(hakutermi, vastaanotto); Console.Write("Anna muuton ajankohta: "); tietovarasto.MuokkaaAsunnonMuuttoa(hakutermi, Console.ReadLine()); if (muokattiin) { Console.WriteLine("Asunnon välitystilannetta muokattiin onnistuneesti..."); takaisin = true; } break; case 'p': // valitaan välitystilanteeksi "peruutettu" ja määritetään muuton ajankohdaksi "ei määritetty" vastaanotto = "peruutettu"; muokattiin = tietovarasto.MuokkaaAsunnonStatusta(hakutermi, vastaanotto); tietovarasto.MuokkaaAsunnonMuuttoa(hakutermi, "ei määritetty"); if (muokattiin) { Console.WriteLine("Asunnon välitystilannetta muokattiin onnistuneesti..."); takaisin = true; } break; case 's': // valitaan välitystilanteeksi "valmis" vastaanotto = "valmis"; muokattiin = tietovarasto.MuokkaaAsunnonStatusta(hakutermi, vastaanotto); if (muokattiin) { Console.WriteLine("Asunnon välitystilannetta muokattiin onnistuneesti..."); takaisin = true; } break; case 't': // mene takaisin muokkaa-toiminnon alkuun takaisin = true; break; } } break; case 'm': // muokkaa asunnon muuttoajankohtaa Console.Write("Anna uusi muuttoajankohta: "); vastaanotto = Console.ReadLine(); muokattiin = tietovarasto.MuokkaaAsunnonMuuttoa(hakutermi, vastaanotto); if (muokattiin) { Console.WriteLine("Asunnon muuttoajankohtaa muokattiin onnistuneesti..."); } break; case 't': // mene takaisin päävalikkoon paavalikkoon = true; break; } takaisin = false; } // muokkaa toiminto päättyy break; case 'h': // hae asuntoja while (!paavalikkoon) // hae asuntoja -toiminnon ohjelmasilmukka { Console.Write(">HAE (k = kaikki, p = postinumerolla, a = asunnon tyypillä, h = huoneiston tyypillä, r = rahoitustavalla, s = välitystilanteella, t = takaisin)\nAnna valintasi: "); char.TryParse(Console.ReadLine(), out valinta); switch (valinta) { case 'k': // hae kaikki asunnot Console.WriteLine(">>KAIKKI"); hakutermi[1] = "Kaikki"; vastaanotto = tietovarasto.HaeAsuntoja(hakutermi); Console.Write(vastaanotto); break; case 'p': // hae asuntoja postinumeron perusteella (kaikki asunnot, joilla on sama postinumero) Console.WriteLine(">>POSTINUMEROLLA"); Console.Write("Anna asunnon postinumero: "); hakutermi[0] = Console.ReadLine(); // kysytään postinumero, jolla haetaan asuntoja hakutermi[1] = "Postinumero"; // tarpeellinen määritys, jotta metodin sisällä tiedetään millä perusteella asuntoja haetaan vastaanotto = tietovarasto.HaeAsuntoja(hakutermi); Console.Write(vastaanotto); break; case 'a': // hae asuntoja asuntotyypillä while (!takaisin) // hae asuntotyypillä -toiminnon ohjelmasilmukka { Console.Write(">>ASUNTOTYYPILLÄ (o = omakotitalo, p = paritalohuoneisto, r = rivitalohuoneisto, k = kerrostalohuoneisto, t = takaisin)\nAnna valintasi: "); char.TryParse(Console.ReadLine(), out valinta); switch (valinta) { case 'o': // hae omakotitalot hakutermi[0] = "omakotitalo"; hakutermi[1] = "Asunnon tyyppi"; vastaanotto = tietovarasto.HaeAsuntoja(hakutermi); Console.Write(vastaanotto); break; case 'p': // hae paritalohuoneistot hakutermi[0] = "paritalohuoneisto"; hakutermi[1] = "Asunnon tyyppi"; vastaanotto = tietovarasto.HaeAsuntoja(hakutermi); Console.Write(vastaanotto); break; case 'r': // hae rivitalohuoneistot hakutermi[0] = "rivitalohuoneisto"; hakutermi[1] = "Asunnon tyyppi"; vastaanotto = tietovarasto.HaeAsuntoja(hakutermi); Console.Write(vastaanotto); break; case 'k': // hae kerrostalohuoneistot hakutermi[0] = "kerrostalohuoneisto"; hakutermi[1] = "Asunnon tyyppi"; vastaanotto = tietovarasto.HaeAsuntoja(hakutermi); Console.Write(vastaanotto); break; case 't': // mene takaisin hakutoiminnon alkuun takaisin = true; break; } } break; case 'h': // hae asuntoja huoneistotyypillä Console.WriteLine(">>HUONEISTOTYYPILLÄ"); Console.Write("Anna huoneiston tyyppi: "); hakutermi[0] = Console.ReadLine(); hakutermi[1] = "Huoneiston tyyppi"; vastaanotto = tietovarasto.HaeAsuntoja(hakutermi); Console.Write(vastaanotto); break; case 'r': // hae asuntoja rahoitustavan perusteella while (!takaisin) // hae rahoitustavalla -toiminnon ohjelmasilmukka { Console.Write(">>RAHOITUSTAVALLA (o = omistusasunto, v = vuokra-asunto, t = takaisin)\nAnna valintasi: "); char.TryParse(Console.ReadLine(), out valinta); switch (valinta) { case 'o': // hae omistusasunnot hakutermi[0] = "omistusasunto"; hakutermi[1] = "Rahoitustapa"; vastaanotto = tietovarasto.HaeAsuntoja(hakutermi); Console.Write(vastaanotto); break; case 'v': // hae vuokra-asunnot hakutermi[0] = "vuokra-asunto"; hakutermi[1] = "Rahoitustapa"; vastaanotto = tietovarasto.HaeAsuntoja(hakutermi); Console.Write(vastaanotto); break; case 't': // mene takaisin hakutoiminnon alkuun takaisin = true; break; } } break; case 's': // hae asuntoja välitystilanteen perusteella while (!takaisin) // hae välitystilanteella -toiminnon ohjelmasilmukka { Console.Write(">>VÄLITYSTILANTEELLA (e = esittelyssä, v = varattu, p = peruutettu, s = valmis, t = takaisin)\nAnna valintasi: "); char.TryParse(Console.ReadLine(), out valinta); switch (valinta) { case 'e': // hae asuntoja, joiden välitystilanne on "esittelyssä" hakutermi[0] = "esittelyssä"; hakutermi[1] = "Välitystilanne"; vastaanotto = tietovarasto.HaeAsuntoja(hakutermi); Console.Write(vastaanotto); break; case 'v': // hae asuntoja, joiden välitystilanne on "varattu" hakutermi[0] = "varattu"; hakutermi[1] = "Välitystilanne"; vastaanotto = tietovarasto.HaeAsuntoja(hakutermi); Console.Write(vastaanotto); break; case 'p': // hae asuntoja, joiden välitystilanne on "peruutettu" hakutermi[0] = "peruutettu"; hakutermi[1] = "Välitystilanne"; vastaanotto = tietovarasto.HaeAsuntoja(hakutermi); Console.Write(vastaanotto); break; case 's': // hae asuntoja, joiden välitystilanne on "valmis" hakutermi[0] = "valmis"; hakutermi[1] = "Välitystilanne"; vastaanotto = tietovarasto.HaeAsuntoja(hakutermi); Console.Write(vastaanotto); break; case 't': // mene takaisin hakutoiminnon alkuun takaisin = true; break; } } break; case 't': // mene takaisin päävalikkoon paavalikkoon = true; break; } takaisin = false; } // hae-toiminto päättyy break; case 't': // tallenna tietovarasto while (!paavalikkoon) // tallenna toiminnon ohjelmasilmukka { Console.Write(">TALLENNA (k = kyllä, e = ei)\nHaluatko varmasti tallentaa muutokset? "); char.TryParse(Console.ReadLine(), out valinta); switch (valinta) { case 'k': // tallenna tietovarasto.Tallenna(); Console.WriteLine("Muutokset tallennettu onnistuneesti..."); paavalikkoon = true; break; case 'e': // en tallennakaan paavalikkoon = true; Console.WriteLine("Muutoksia ei tallennettu..."); break; } } // tallenna-toiminto päättyy break; case 's': // sulje ohjelma while (!lopeta) // sulje-toiminnon ohjelmasilmukka (kysytään, haluatko tallentaa ennen sulkemista) { Console.Write(">SULJE (t = tallenna muutokset ja sulje, s = sulje tallentamatta)\nHaluatko tallentaa muutokset ennen ohjelman sulkemista? "); char.TryParse(Console.ReadLine(), out valinta); switch (valinta) { case 't': // tallenna tietovarasto ja sulje ohjelma tietovarasto.Tallenna(); lopeta = true; break; case 's': // en halua tallentaa tietovarastoa ennen sulkemista while (!lopeta && !takaisin) // sulje tallentamatta -toiminnon ohjelmasilmukka (varmistetaan valinta) { Console.Write(">>SULJE TALLENTAMATTA (k = kyllä, e = ei)\nOletko aivan varma, että haluat sulkea ohjelman tallentamatta muutoksia? "); char.TryParse(Console.ReadLine(), out valinta); switch (valinta) { case 'k': // lopeta tallentamatta lopeta = true; break; case 'e': // haluan sittenkin vaihtaa valintaani takaisin = true; break; } } break; } takaisin = false; } // sulje-toiminto päättyy break; } paavalikkoon = false; } // pääohjelmasilmukka päättyy }