Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Beziehung zwischen Collections herstellen

Empfohlene Antworten

Veröffentlicht

Hallo zusammen,

bearbeite gerade eine Aufgabe in der Berufsschule, Thema Aggregationsklassen.

3 Klassen

Arztpraxis, Behandlung, Patient und eine Windows Forms Oberfläche.

post-95454-1443044990499_thumb.png

Der obere Teil funktioniert ich kann einen Patient erstellen und diesen auch als Auswahl zur Verfügung stellen.

Problem:

Nun soll ich jedem Patient beliebig viele Behandlungen zuordnen bzw. Hinzufügen können.

Ich vermute man muss die Behandlungs Objekte in eine Collection speichern und diese der Patienten Collection zuordnen, aber ich hab keine Ahnung wie man das implementiert.

Anbei häng ich mal den ganzen Programmcode an.


namespace Arztpraxis

{

    public partial class Form1 : Form

    {

        public Patient Patient;

        public Praxis Praxis = new Praxis();

        public Behandlung Behandlung;

        public Form1()

        {


            InitializeComponent();

        }


        private void button3_Click(object sender, EventArgs e)

        {

            Patient = new Patient(tbName.Text, tbVorname.Text, dtGeburtsdatum.Text, cbVersicherungsStatus.Text);

            Praxis.createAccount(this.Patient);

            string test = Praxis.patientenAnzeigen();

            comboBox1.Items.Add(test);

            MessageBox.Show("Neuer Patient erfolgreich angelegt!\n" + Praxis.patientenAnzeigen());


        }


        private void Form1_Load(object sender, EventArgs e)

        {


        }


        private void btnAnzeigen_Click(object sender, EventArgs e)

        {

           MessageBox.Show( Praxis.patientenAnzeigen());

        }


        private void button2_Click(object sender, EventArgs e)

        {

            Behandlung = new Behandlung(tbKörperTemperatur.Text, tbBlutdruck.Text, tbSymptome.Text, dtBehandlungsDatum.Value);


        }


        private void button1_Click(object sender, EventArgs e)

        {

           string gefunden=  Praxis.patientSuchen(dtGeburtsdatum.Text,tbName.Text);

            comboBox1.SelectedIndex = comboBox1.FindStringExact(gefunden);

        }


        private void button1_MouseCaptureChanged(object sender, EventArgs e)

        {


        }

    }

}



namespace Arztpraxis

{

    public class Praxis

    {


        public List<Patient> diePatienten = new List<Patient>();

        public List<Behandlung> behandlung = new List<Behandlung>();



        public Praxis()

        {


        }





    public void createAccount(Patient derPatient)

        {


            diePatienten.Add(derPatient);


        }


    public string patientenAnzeigen()

    {


        string Patient = "";


        foreach (var test in diePatienten)

        {


            Patient = test.Vorname + ", " + test.Name + ", " + test.Geburtsdatum;

        }

        return Patient;

    }


    public string patientSuchen(string Geburtstag, string Name)

    {

        foreach(var test in diePatienten)

        {

     if(test.Geburtsdatum == Geburtstag && test.Name == Name)

     {

         return test.Vorname + ", " + test.Name + ", " + test.Geburtsdatum;

     }


     }

        return "";

    }


    public void patientBehandeln()

    {


    }


    }

}



namespace Arztpraxis

{

    public class Patient

    {


        #region fields∝


        private string name;


        public string Name

        {

            get { return name; }

            set { name = value; }

        }

        private string vorname;


        public string Vorname

        {

            get { return vorname; }

            set { vorname = value; }

        }

        private string geburtsdatum;


        public string Geburtsdatum

        {

            get { return geburtsdatum; }

            set { geburtsdatum = value; }

        }

        private string versicherungStatus;


        public string VersicherungStatus

        {

            get { return versicherungStatus; }

            set { versicherungStatus = value; }

        }


        #endregion


        #region constructor

        public Patient(string _name, string _vorname, string _geburtsdatum, string _versicherungsstatus)

        {


            Name = _name;

            Vorname = _vorname;

            Geburtsdatum = _geburtsdatum;

            VersicherungStatus = _versicherungsstatus;


        }


}



namespace Arztpraxis

{

    public class Behandlung

    {



        #region fields∝


        private string koerperTemperatur;


        public string KoerperTemperatur

        {

            get { return koerperTemperatur; }

            set { koerperTemperatur = value; }

        }

        private string blutdruck;


        public string Blutdruck

        {

            get { return blutdruck; }

            set { blutdruck = value; }

        }

        private string symptome;


        public string Symptome

        {

            get { return symptome; }

            set { symptome = value; }

        }

        private DateTime behandlungsDatum;


        public DateTime BehandlungsDatum

        {

            get { return behandlungsDatum; }

            set { behandlungsDatum = value; }

        }



        #endregion


        #region constructor


        public Behandlung(string _koerperTemperatur, string _blutdruck, string _symptome, DateTime _behandlungsDatum)

        {

            koerperTemperatur = _koerperTemperatur;

            blutdruck = _blutdruck;

            symptome = _symptome;

            behandlungsDatum = _behandlungsDatum;

        }


        #endregion

    }

}


Freue mich auf jedes konstruktive Feedback.:)

Viele Grüße

  • Autor

Also das im Prinzip beim Anlegen eines Patient auch ein Behandlungs-Objekt instanziert wird und dieses in eine Behandlung-Collection gespeichert wird?

Aber dann hab ich ja immernoch das Problem das ich nicht beliebig viele Behandlungen einem Patient zuordnen kann,

oder? :)

Hi,

wenn du einen Patienten instanziiert hast, kannst du doch an die collection beliebig viele behandlungen anfügen.

Im groben beispiel etwa so:


public class Patient

{

  public string Name {get; set;}

  public List<Behandlung> Behandlungen {get;set;}

}


public class Behandlung

{

  public string Text {get;set;}

}



public class Test

{

  public void DoIt()

  {

    var patient = new Patient();


    var behandlung = new Behandlung() { Text = "Behandlung"};


    patient.Behandlungen.Add(behandlung)


    for(int i=0;i<100;i++)

    {

       patient.Behandlungen.add(new Behandlung {Text = "Behandlung"+i});

    }

  }

}


Der Liste können beliebig viele Objekte hinzugefügt werden. Alternativ wäre auch volgendes möglich: Hier hast du einzelne Collections für Patienten und für Behandlungen. Somit kannst du leicht alle behandlungen zu allen Patienten anzeigen, wenn du die Liste Behandlungen ausgibst. Filtern nach einzelnen patienten ist wie im Beispeil gezeigt auch möglich.

public class Patient

{

  public string Name {get; set;}


}


public class Behandlung

{

public Patient Patient {get;set;}

  public string Text {get;set;}

}



public class Test

{

  public void DoIt()

  {


    var patient1 = new Patient {Name="Test1"};

    var patient2 = new Patient {Name="Test2"};


    var behandlungen = new List<Behandlung>();


    var behandlung = new Behandlung(){Patient=patient1,Text="text zu patient1"};

    behandlungen.add(behandlung);



    for(int i=0;i<100;i++)

    {

      behandlungen.add(new Behandlung(){Patient=patient2,Text="text"+i+" zu patient1"}

    }



    var behandlungenZuPatient1 = behandlungen.Where(w=>w.Patient==patient1);

    var behandlungenZuPatient2 = behandlungen.Where(w=>w.Patient==patient2);

  }

}

Gruß

Jogibaer0411

  • Autor

Super, erstmal Vielen Dank für die umfassende Antwort Jogibaer0411 :)

Das hat mich auch ein Stück weitergebracht, aber letztlich hänge ich immernoch an der Umsetzung mit Windows Forms.

post-95454-14430449905596_thumb.png

ich habe denke ich den Hinzufügen Button fast richtig implementiert, aber ich muss dem Hinzufügen Button ja irgendwie sagen welcher Patient in der combobox ausgewählt worden ist, das ich auch dem richtigen Patienten die richtige Behandlung zuordnen kann.

Ich hoffe ich drück mich verständlich aus.:D

a

  • Autor

Ja der aktuelle schon,

wenn ich jetzt aber 20 Patienten anlege und Patient #4 in der combobox auswähle und eine Behandlung hinzufüge, wird die Behandlung Patient 20# , also dem zuletz erstellten zugeordnet oder nicht?

eigentlich sollte das nicht so sein.

aber diene Methode PatientenAnzeigen() gibt eh immer nur einen string aus den letzten zurück.

Das sollte so umgebaut werden, dass der ganze Patient zurückgegeben wird. Und dann natürlich auch nicht nur den letzten. :-)

Deine Suche nach dem Patienten kannst du auch vereinfachen:


gesuchterPatient= diePatienten.FirstOrDefault(f=>f.Vorname=="VORNAME"&&f.Name=="NAME");

Der Aufruf gibt dir entweder die erste übereinstimmung oder NULL zurück.

du solltest die Felder dann erst aktualisieren wenn sich gesuchterPatient geändert hat

Stichwort: OnPropertyChanged

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.