예제 #1
0
        // Lädt die Daten aller Parkhäuser aus einer Datei
        private void LadenParkhaueser()
        {
            string Textzeile;

            // Öffne Textdatei zum Lesen
            // Hier fehlt noch die Fehlerbehandlung, falls Datei nicht geöffnet werden kann
            System.IO.StreamReader file = new System.IO.StreamReader(@"Parkhaeuser.txt");

            // Schleife bis alle Textzeilen gelesen wurden
            while ((Textzeile = file.ReadLine()) != null)
            {
                // Prüfe Datenzeile und erzeuge Parkhaus, wenn Datenzeile OK ist.
                // Die Funktion Parkhaus.ErzeugeParkhaus gibt ein Parkhaus-Objekt zurück,
                // wenn die Datenzeile Ok ist, sonst wird null zurückgegeben.
                Parkhaus ph = Parkhaus.ErzeugeParkhaus(Textzeile);
                if (ph != null)
                {
                    // Datenzeile war OK und Parkhaus wurde erzeugt
                    // Füge Parkhaus zur Parkhausliste hinzu
                    Parkhaeuser.Add(ph);
                }
            }

            // Schliesse Datei nachdem alle Daten gelesen wurden
            file.Close();
        }
예제 #2
0
        // Kontruktor für den Stellplatz zuweisen Dialog
        public FormStellplatzZuweisen(Verwaltung pVerwaltung, Fahrzeug pFahrzeug)
        {
            verwaltung = pVerwaltung;
            fahrzeug   = pFahrzeug;

            // Initialisiere alle Elemente des Dialogs
            // Der Inhalt dieser Funktion wird von Visual Studio erzeugt und soll nicht mauell verändert werden
            InitializeComponent();

            // Fülle Combobox mit allen vorhandenen Parkhäusern
            for (int iParkhaus = 0; iParkhaus < verwaltung.AnzahlParkhaeuser; iParkhaus++)
            {
                // Hole Parkhaus-Objekt aus der Parkhausliste
                Parkhaus ph = verwaltung.ParkhausGet(iParkhaus);

                // Füge Parkhaus (Nummer, Ort, Strasse) zur Combobox hinzu
                comboBoxParkhaus.Items.Add("Parkhaus " + ph.ParkhausNummer + ", " + ph.Ort + ", " + ph.Strasse);
            }

            // Füge zusätzlichen Eintrag "Zuweisung löschen" hinzu, wenn Fahrzeug bereits einen zugwiesenen Stellplatz hat
            if ((fahrzeug.ParkhausNummer > 0) && (fahrzeug.StellplatzNummer > 0))
            {
                comboBoxParkhaus.Items.Add("Stellplatzzuweisung löschen");
            }

            // Wähle erstes (Index = 0) Parkhaus aus
            comboBoxParkhaus.SelectedIndex = 0;
        }
예제 #3
0
        // Weist einem Fahrzeug ein Parkhaus mit Stellplatz zu
        public void StellplatzZuweisen(Fahrzeug fz, int ParkhausNummer, int StellplatzNummer)
        {
            if ((ParkhausNummer > 0) && (StellplatzNummer > 0))
            {
                // Parkhaus suchen
                for (int iParkhaus = 0; iParkhaus < AnzahlParkhaeuser; iParkhaus++)
                {
                    Parkhaus ph = ParkhausGet(iParkhaus);
                    if (ph.ParkhausNummer == ParkhausNummer)
                    {
                        // Parkhaus gefunden, Stellplatz suchen
                        for (int iStellplatz = 0; iStellplatz < ph.AnzahlStellplaetze; iStellplatz++)
                        {
                            Stellplatz sp = ph.StellPlaetze[iStellplatz];
                            if (sp.Nummer == StellplatzNummer)
                            {
                                // Stellplatz gefunden, Parkhaus und Stellplatz dem Fahrzeug zuweisen
                                fz.ParkhausNummer   = ph.ParkhausNummer;
                                fz.StellplatzNummer = sp.Nummer;
                            }
                        }
                    }
                }
            }
            // Stellplatzzuweisung löschen
            else
            {
                fz.ParkhausNummer   = 0;
                fz.StellplatzNummer = 0;
            }

            // Aktualisiert die Stellplatzzuordnugen in allen Parkhäusern
            StellplatzZuordnungAktualisieren();
        }
예제 #4
0
        // Wird aufgerufen wenn ein anderes Parkhaus in der ComboBox ausgewählt wurde
        private void comboBoxParkhaus_SelectedIndexChanged(object sender, EventArgs e)
        {
            // Prüfe ob Parkhaus ausgewählt wurde (Liste könnte auch leer sein)
            if (comboBoxParkhaus.Items.Count > 0)
            {
                // Nachdem ein anderes Parkhaus gewählt wurde, muss die ComboBox mit den
                // verfügbaren Stellplätzen neu gefüllt werden.
                // Lösche zunächst alle Einträge in der ComboBox für Stellpätze
                comboBoxStellplatz.Items.Clear();

                // Am Ende der Liste in der Parkhaus-ComboBox existiert eventuell der Spezialeintrag "Zuweisung löschen".
                // Falls dieser ausgwählt wurde, wird die Stellpatz-ComboBox nicht gefüllt.
                // Ein echtes Parkhaus wurde ausgewählt, wenn der Index in der Combobox kleiner als AnzahlParkhaeuser ist.
                if (comboBoxParkhaus.SelectedIndex < verwaltung.AnzahlParkhaeuser)
                {
                    // Hole Parkhaus-Objekt aus Parkhaus-Liste
                    // Der Index des ausgewählten Parkhauses in der ComboBox kann direkt verwendet werden,
                    //  um auf die Parkhausliste zuzugreifen.
                    Parkhaus ph = verwaltung.ParkhausGet(comboBoxParkhaus.SelectedIndex);

                    // Fülle ComboBox mit Stellplätzen
                    for (int iStellplatz = 0; iStellplatz < ph.AnzahlStellplaetze; iStellplatz++)
                    {
                        Stellplatz sp = ph.StellPlaetze[iStellplatz];

                        // Es werden nur folgende Stellpätze angezeigt:
                        //   - Stellplatztyp (PKW, LKW, Motorrad) muss identisch mit dem Fahrzeugtyp sein
                        //   - der Stellplatz muss frei sein
                        if ((fahrzeug.Typ == sp.Typ) && (sp.FreierStellplatz() == true))
                        {
                            comboBoxStellplatz.Items.Add(sp.Nummer);
                        }
                    }
                }
                else
                {
                    comboBoxStellplatz.Items.Add("-");
                }

                // Wähle ersten Stellplatz in der ComboBox aus, wenn mindestens ein Stellplatz vorhanden ist
                if (comboBoxStellplatz.Items.Count > 0)
                {
                    comboBoxStellplatz.SelectedIndex = 0;
                }
            }
        }
예제 #5
0
        // Speichert die Daten aller Parkhäuser in einer Datei
        // Die Daten eines Parkhauses sind in einer Zeile gespeichert
        // Die einzelnen Daten eines Parkhauses sind durch das Zeichen ; getrennt
        private void SpeichernParkhaueser()
        {
            // Öffne Datei zum Schreiben der Parkhausdaten
            System.IO.StreamWriter file = new System.IO.StreamWriter("Parkhaeuser.txt");

            // Schleife über alle Parkhaeuser
            for (int ii = 0; ii < AnzahlParkhaeuser; ii++)
            {
                // Hole Parkhausobjekt aus der Parkhausliste
                Parkhaus ph = ParkhausGet(ii);

                // Wandle Parkhausobjekt in String und speichere diesen als Textzeile in Datei
                file.WriteLine(ph.ToString());
            }

            // Schliesse Datei nachdem alle Daten geschrieben wurden
            file.Close();
        }
        // Aktualisiert die Darstellung der Parkhäuser im Hauptfenster
        private void ViewParkhaeuser_Update()
        {
            // Lösche alle Einträge im Listview
            listViewParkhaeuser.Items.Clear();

            // Füge die Daten aller Parkhäuser zum Listview hinzu
            for (int ii = 0; ii < Verwaltung.AnzahlParkhaeuser; ii++)
            {
                // Hole Parkhausobjekt aus der Parkhausliste
                Parkhaus ph = Verwaltung.ParkhausGet(ii);

                // Alle dargestellten Daten eines Parkhauses werden in ein Array kopiert
                // Das Array entspricht einer Zeile im Listview
                // Jedes Array-Element entspricht dabei einer Spalte im Listview
                string[] ListviewZeile = new string[7];

                // Spalten 1: Parkhausnummer
                ListviewZeile[0] = ph.ParkhausNummer.ToString();

                // Spalten 2 - 4: Addresse
                ListviewZeile[1] = ph.PLZ;
                ListviewZeile[2] = ph.Ort;
                ListviewZeile[3] = ph.Strasse;

                // Spalte 5: Anzahl der PKW Stellplätze (Belegt/Frei)
                ListviewZeile[4] = ph.AnzahlStellplaetze_Belegt_Typ("PKW").ToString() + " von " + ph.AnzahlStellplaetze_Typ("PKW").ToString();

                // Spalte 6: Anzahl der LKW Stellplätze (Belegt/Frei)
                ListviewZeile[5] = ph.AnzahlStellplaetze_Belegt_Typ("LKW").ToString() + " von " + ph.AnzahlStellplaetze_Typ("LKW").ToString();

                // Spalte 7: Anzahl der Motorrad Stellplätze (Belegt/Frei)
                ListviewZeile[6] = ph.AnzahlStellplaetze_Belegt_Typ("Motorrad").ToString() + " von " + ph.AnzahlStellplaetze_Typ("Motorrad").ToString();

                // Füge neue Zeile  mit Parkhausdaten zum Listview hinzu
                listViewParkhaeuser.Items.Add(new ListViewItem(ListviewZeile));
            }
            // Passe die Breite aller Spalten so an, dass alle Daten sichtbar sind
            foreach (ColumnHeader ch in listViewParkhaeuser.Columns)
            {
                ch.Width = -2;
            }
        }
예제 #7
0
        // Funktion wird aufgerufen wenn der Übernehmen Button gedrückt wurde
        // Die Funktion weist dem Fahrzeug den ausgewählten Stellplatz im ausgewählten Parkhaus zu.
        private void buttonUebernehmen_Click(object sender, EventArgs e)
        {
            // Es muss ein Parkhaus und ein Stellplatz ausgewählt ein
            if ((comboBoxParkhaus.Items.Count > 0) && (comboBoxStellplatz.Items.Count > 0))
            {
                // Am Ende der Liste in der Parkhaus-ComboBox existiert eventuell der Spezialeintrag "Zuweisung löschen".
                // Ein echtes Parkhaus wurde ausgewählt, wenn der Index in der Combobox kleiner als AnzahlParkhaeuser ist.
                if (comboBoxParkhaus.SelectedIndex < verwaltung.AnzahlParkhaeuser)
                {
                    // Hole Parkhaus-Objekt aus Parkhaus-Liste
                    // Der Index des ausgewählten Parkhauses in der ComboBox kann direkt verwendet werden,
                    //  um auf die Parkhausliste zuzugreifen.
                    Parkhaus ph = verwaltung.ParkhausGet(comboBoxParkhaus.SelectedIndex);

                    // Lese Stellplatznummer aus der ComboBox und wandle sie in einen int Wert um
                    // Der Index des ausgewählten Stellplatzes in der ComboBox kann NICHT direkt verwendet werden,
                    //   um auf die Stellplatzliste zuzugreifen, da nicht alle Stellplätze (nicht frei, falscher Typ)
                    //   in die ComboBox eingetragen wurden.
                    int StellplatzNummer = 0;

                    if (Int32.TryParse(comboBoxStellplatz.Text, out StellplatzNummer) == true)
                    {
                        // Die Stellplatzzuweisung für das Fahrzeug mit der ausgewählten
                        //   Parkhaus-und Stellplatznummer wird von der Verwaltungsklasse durchgeführt
                        verwaltung.StellplatzZuweisen(fahrzeug, ph.ParkhausNummer, StellplatzNummer);
                    }
                }
                // Spezialeintrag "Zuweisung löschen" wurde gewählt
                else
                {
                    // Durch übergabe der 0 für die Parkhaus und Stellplatznummer wird die Zuweisung gelöscht
                    //
                    verwaltung.StellplatzZuweisen(fahrzeug, 0, 0);
                }
            }
        }
        // Speichert alle Daten, Dialogfenster wird anschliesen geschlossen
        private void buttonUebernehmen_Click(object sender, EventArgs e)
        {
            string PLZ;
            string Ort;
            string Strasse;
            int    AnzahlStellplaetze;

            // Alle Parkhausdaten aus den Texboxen auslesen
            Parkhaus.TextToPLZ(textBoxPLZ.Text, out PLZ);
            Parkhaus.TextToOrt(textBoxOrt.Text, out Ort);
            Parkhaus.TextToStrasse(textBoxStrasse.Text, out Strasse);
            Parkhaus.TextToAnzahlStellplaetze(textBoxAnzahlParkplaetze.Text, out AnzahlStellplaetze);

            // Neues Parkhaus mit eingegebenen Daten erzeugen
            Parkhaus = new Parkhaus(ParkhausNummer, AnzahlStellplaetze, PLZ, Ort, Strasse);

            // Zwischenlösung bis Stellplatztypen geändert werden können
            // 5% der Stellplätze werden Motorrad bzw. LKW-Stellplätze
            for (int iStellplatz = 0; iStellplatz < AnzahlStellplaetze / 20; iStellplatz++)
            {
                Parkhaus.StellPlaetze[iStellplatz].Typ = "Motorrad";
                Parkhaus.StellPlaetze[(AnzahlStellplaetze / 20) + iStellplatz].Typ = "LKW";
            }
        }
        // Anzeige der Fahrzeugdaten in der LabelBox.
        private void showExtendedFahrzeugInformations_Click(object sender, EventArgs e)
        {
            if (lBFahrzeugInformationen.SelectedItem.ToString() != "")
            {
                cBParkhaus.Text  = "Parkhaus";
                cBParkplatz.Text = "Stellplatz";
                List <Parkhaus>        parkhaus = FP.getParkhaus();
                System.IO.StreamReader file     = new System.IO.StreamReader(@"Fahrzeuge.txt", true);
                string line;
                while ((line = Convert.ToString(file.ReadLine())) != null)
                {
                    string[] splitchar           = line.Split(';');
                    string   fahrzeugInformation = lBFahrzeugInformationen.SelectedItem.ToString();
                    string[] kennzeichen         = fahrzeugInformation.Split('\t');

                    if (splitchar[2] == kennzeichen[0])
                    {
                        label1.Text = splitchar[0];                 //Marke
                        label2.Text = splitchar[1];                 //Modell
                        label3.Text = splitchar[2];                 //Kennzeichen
                        label4.Text = splitchar[3];                 //Erstzulassung
                        label5.Text = splitchar[4];                 //Preis
                        label6.Text = splitchar[5];                 //Parkhaus
                                                                    //--
                        label10.Text = splitchar[6];                //Stellplatz
                        label14.Text = (FP.steuerEinzeln(splitchar[2])).ToString();
                        label15.Text = FP.steuerAlle().ToString();

                        int stellplatzTyp = parkhaus[Convert.ToInt32(label6.Text) - 1].parkplaetze[Convert.ToInt32(label10.Text) - 1].Stellplatztyp;
                        if (stellplatzTyp == 0)
                        {
                            lblHeader.Text = "PKW";
                        }
                        else if (stellplatzTyp == 1)
                        {
                            lblHeader.Text = "Motorrad";
                        }
                        else
                        {
                            lblHeader.Text = "LKW";
                        }

                        if (splitchar[5] != "")
                        {
                            Parkhaus parkhausObj = parkhaus[Convert.ToInt32(splitchar[5]) - 1];

                            label7.Text = parkhausObj.Ort;              //Ort
                            label8.Text = parkhausObj.PLZ.ToString();   //PLZ
                            label9.Text = parkhausObj.Straße;           //Straße
                        }
                        else
                        {
                            label7.Text = "";
                            label8.Text = "";
                            label9.Text = "";
                        }
                        if (splitchar.Length == 8)
                        {
                            label11.Text = splitchar[7];
                            lblHubraum.Show();
                            lblZuladung.Hide();
                            lblAnzAchsen.Hide();
                            lblLeistung.Hide();
                            lblSchadstoffklasse.Hide();
                            label11.Show();
                            label12.Hide();
                            label13.Hide();
                            break;
                        }
                        else if (splitchar.Length == 9)
                        {
                            label11.Text = splitchar[7];
                            label12.Text = splitchar[8];
                            lblAnzAchsen.Show();
                            lblZuladung.Show();
                            lblHubraum.Hide();
                            lblLeistung.Hide();
                            lblSchadstoffklasse.Hide();
                            label11.Show();
                            label12.Show();
                            label13.Hide();
                            break;
                        }
                        else if (splitchar.Length == 10)
                        {
                            label11.Text = splitchar[7];
                            label12.Text = splitchar[8];
                            label13.Text = splitchar[9];
                            lblHubraum.Show();
                            lblLeistung.Show();
                            lblSchadstoffklasse.Show();
                            lblAnzAchsen.Hide();
                            lblZuladung.Hide();
                            label11.Show();
                            label12.Show();
                            label13.Show();
                            break;
                        }
                    }
                }
                file.Close();
                showFahrzeugInformationen();

                cBParkhaus.Items.Clear();
                for (int i = 0; i < parkhaus.Count(); i++)
                {
                    cBParkhaus.Items.Add(i + 1);
                }
            }
        }
예제 #10
0
 // Fügt ein Parkhaus zur Liste hinzu
 public void ParkhausHinzufuegen(Parkhaus value)
 {
     Parkhaeuser.Add(value);
 }
예제 #11
0
        // Trägt das Kennzeichen jedes Fahrzeugs, das einen Stellplatzeintag besitzt,
        // in den jeweiligen Stellplatz des jeweiligen Parkhauses ein.
        // Die Funktion muss nach folgenden Aktionen aufgerufen werden:
        //    - nach dem Laden der Parkhäuser und Fahrzeuge
        //    - nach dem Löschen eines Fahrzeuges
        //    - nach dem Hinzufügen eines Fahrzeuges
        //    - nach der Zuweisung eines Stellplatzes zu einem Parkhaus
        //    - nach dem Löschen eines Parkhauses
        private void StellplatzZuordnungAktualisieren()
        {
            // Alle Stellplatzzuweisungen in allen Parkhäusern löschen
            for (int iParkhaus = 0; iParkhaus < AnzahlParkhaeuser; iParkhaus++)
            {
                Parkhaus ph = Parkhaeuser[iParkhaus];

                // Lösche alle Kennzeichen aus allen Stellplätzen
                for (int iStellplatz = 0; iStellplatz < ph.AnzahlStellplaetze; iStellplatz++)
                {
                    ph.StellPlaetze[iStellplatz].Kennzeichen = "";
                }
            }

            // Suche für alle Fahrzeuge mit zugeordenten Stellplatz das Stellplatzobjekt
            for (int iFahrzeug = 0; iFahrzeug < AnzahlFahrzeuge; iFahrzeug++)
            {
                Fahrzeug fz = Fahrzeuge[iFahrzeug];

                int ZugeordnetesParkhaus   = fz.ParkhausNummer;
                int ZugeordneterStellplatz = fz.StellplatzNummer;

                // Für gültige Stellplatzzuordnung müssen Parkhaus- und Stellplatznummer größer 0 sein
                if ((ZugeordnetesParkhaus > 0) && (ZugeordneterStellplatz > 0))
                {
                    // Wird auf true gesetzt, wenn Stellplatz gefunden wurde
                    bool StellplatzGefunden = false;

                    // Suche zugeordnetes Parkhause
                    for (int iParkhaus = 0; (iParkhaus < AnzahlParkhaeuser) && (StellplatzGefunden == false); iParkhaus++)
                    {
                        Parkhaus ph = Parkhaeuser[iParkhaus];
                        if (ph.ParkhausNummer == ZugeordnetesParkhaus)
                        {
                            // Parkhaus gefunden, suche zugeordneten Stellplatz
                            for (int iStellplatz = 0; (iStellplatz < ph.AnzahlStellplaetze) && (StellplatzGefunden == false); iStellplatz++)
                            {
                                Stellplatz sp = ph.StellPlaetze[iStellplatz];
                                // Zuweisung wenn
                                //   - Stellplatznummer übereinstimmt und
                                //   - Stellplatztyp mit Fahrzeugtyp übereinstimmt und
                                //   - Stellplatz frei ist
                                if ((ZugeordneterStellplatz == sp.Nummer) &&
                                    (sp.Typ == fz.Typ) &&
                                    (sp.Kennzeichen.Length == 0))
                                {
                                    sp.Kennzeichen     = fz.Kennzeichen;
                                    StellplatzGefunden = true;
                                }
                            }
                        }
                    }
                    // Lösche Stellplatzzuordnung im Fahrzeug,
                    //  - wenn der Parkhaus oder Stellplatz nicht gefunden wurde oder
                    //  - wenn der Stellplatz nicht frei ist
                    if (StellplatzGefunden == false)
                    {
                        fz.ParkhausNummer   = 0;
                        fz.StellplatzNummer = 0;
                    }
                }
            }
        }
예제 #12
0
        // Erzeugt ein Parkhaus Objekt aus einer Datenzeile.
        // Die Datenzeile wird geprüft.
        // Sind die Daten OK wird ein Parkhausobjekt erzeugt und zurückgegeben.
        // Sind die Daten nicht OK wird kein Parkhausobjekt erzeugt und es wird null zurückgegeben.
        // Jede Datenzeile muss folgendermassen aufgebaut sein
        // <Parkhausnummer>;<Ort>;<PLZ>;<Strasse>;<Typ Stellplatz 1>;<Typ Stellplatz 2>; .... <Typ Stellplatz N>
        // Beispiel: 1;Köln;51105;Westerwaldstr. 99;P;P;P;P;P;P;P
        public static Parkhaus ErzeugeParkhaus(
            string Datenzeile)
        {
            Parkhaus ph = null;

            int    Parkhausnummer     = 0;
            string Ort                = "";
            string PLZ                = "";
            string Strasse            = "";
            int    AnzahlStellplaetze = 0;

            bool DatenOk = true;

            string[] DataArray = Datenzeile.Split(';');

            // 4 Datenelemente (Nummer, Ort, PLZ, Strasse), dann nur noch Stellplatztypen
            AnzahlStellplaetze = DataArray.Length - 4;

            // Prüfe und kopiere Parkhausnummer
            if (DatenOk)
            {
                DatenOk = TextToParkhausnummer(DataArray[0], out Parkhausnummer);
            }

            // Prüfe und kopiere Ort
            if (DatenOk)
            {
                DatenOk = TextToOrt(DataArray[1], out Ort);
            }

            // Prüfe und kopiere PLZ
            if (DatenOk)
            {
                DatenOk = TextToPLZ(DataArray[2], out PLZ);
            }

            // Prüfe und kopiere Strasse
            if (DatenOk)
            {
                DatenOk = TextToStrasse(DataArray[3], out Strasse);
            }

            if (DatenOk)
            {
                // Erzeuge Parkhaus mit Stellplätzen
                ph = new Parkhaus(Parkhausnummer, AnzahlStellplaetze, PLZ, Ort, Strasse);

                // Setze Stellplatztyp für alle Stellplätze
                // In der Datenzeile steht
                //   L für LKW
                //   M für Motorrad
                //   alle anderen Werte für PKW
                for (int iStellplatz = 0; iStellplatz < ph.AnzahlStellplaetze; iStellplatz++)
                {
                    Stellplatz sp = ph.StellPlaetze[iStellplatz];
                    if (DataArray[4 + iStellplatz] == "L")
                    {
                        ph.StellPlaetze[iStellplatz].Typ = "LKW";
                    }
                    else if (DataArray[4 + iStellplatz] == "M")
                    {
                        ph.StellPlaetze[iStellplatz].Typ = "Motorrad";
                    }
                    else
                    {
                        ph.StellPlaetze[iStellplatz].Typ = "PKW";
                    }
                }
            }

            return(ph);
        }