//Summiert die Ergebnisse aller Kriterien (Unterkriterium und Oberkriterium) private void funktionsabdeckungsgrad_aufsummieren(Nutzwert NWAobjekt) { bool change = funktionsabdeckungsgrad_aufsummieren_check(NWAobjekt); double temp_beitrag = 0; if (change == false) { List <Kriterium> list = NWAobjekt.getKriterium(db).getUnterKriterium(db); if (list.Count > 0) { foreach (Kriterium temp in list) { temp_beitrag += temp.getNutzwert(db: db, ProjektID: NWAobjekt.getProjektID(), ProduktID: NWAobjekt.getProduktID()).getBeitragAbsolut() * NWAobjekt.getAbstufung(); } NWAobjekt.setBeitragAbsolut(temp_beitrag); NWAobjekt.setBeitragAbsolutCheck(true); db.update(NWAobjekt); } } List <Kriterium> temp_oberkriterien = NWAobjekt.getKriterium(db).getOberKriterium(db); if (temp_oberkriterien.Count > 0) { funktionsabdeckungsgrad_aufsummieren(temp_oberkriterien[0].getNutzwert(db, NWAobjekt.getProjektID(), NWAobjekt.getProduktID())); } }
//Hauptfunktion der Nutzwertanalyse, die in die anderen Funktionen verzweigt public void funktionsabdeckungsgrad_berechnen(Nutzwert NWAobjekt) { NWAobjekt.setBeitragAbsolutCheck(false); db.update(NWAobjekt); List <Kriterium> list = NWAobjekt.getKriterium(db).getUnterKriterium(db); if (list.Count > 0) { foreach (Kriterium temp_obj in list) { funktionsabdeckungsgrad_berechnen(temp_obj.getNutzwert(db: db, ProjektID: NWAobjekt.getProjektID(), ProduktID: NWAobjekt.getProduktID())); } } else { double temp_beitrag = funktionsabdeckungsgrad_beitrag(NWAobjekt); if (temp_beitrag != 0) { double beitrag_absolut = funktionsabdeckungsgrad_beitrag_absolut(NWAobjekt.getKriterium(db).getOberKriterium(db)[0].getNutzwert(db, NWAobjekt.getProjektID(), NWAobjekt.getProduktID()), temp_beitrag); NWAobjekt.setBeitragAbsolut(beitrag_absolut * NWAobjekt.getAbstufung()); } else { NWAobjekt.setBeitragAbsolut(0); } NWAobjekt.setBeitragAbsolutCheck(true); db.update(NWAobjekt); funktionsabdeckungsgrad_aufsummieren(NWAobjekt); } }
//Funktion der Nutzwertanalyse, ruft die Zaehler und Nenner Funktion und verarbeitet die Ergebnisse in der Funktion private double funktionsabdeckungsgrad_beitrag_absolut(Nutzwert NWAobjekt, double beitrag_einzel) { int nenner = funktionsabdeckungsgrad_beitrag_nenner(NWAobjekt); double result = beitrag_einzel * (double)NWAobjekt.getGewichtung() / (double)nenner; List <Kriterium> list = NWAobjekt.getKriterium(db).getOberKriterium(db); foreach (Kriterium temp_objekt in list) { result = funktionsabdeckungsgrad_beitrag_absolut(temp_objekt.getNutzwert(db: db, ProjektID: NWAobjekt.getProjektID(), ProduktID: NWAobjekt.getProduktID()), result); } return(Math.Round(result, 3)); }
private bool funktionsabdeckungsgrad_aufsummieren_check(Nutzwert NWAobjekt) { List <Kriterium> list = NWAobjekt.getKriterium(db).getUnterKriterium(db); foreach (Kriterium temp_obj in list) { if (new Nutzwert(ProjektID: 0, ProduktID: 0, KriteriumID: NWAobjekt.getKriteriumID()).getErfuellung() != false) { if (temp_obj.getNutzwert(db, NWAobjekt.getProjektID(), NWAobjekt.getProduktID()).getBeitragAbsolutCheck() == false) { return(true); } } } return(false); }
//Funktion zur Berechnung des Nenners innerhalb der Nutzweranalysefunktion private int funktionsabdeckungsgrad_beitrag_nenner(Nutzwert NWAobjekt) { int nenner = 0; List <Kriterium> temp_krit = NWAobjekt.getKriterium(db).getOberKriterium(db); if (temp_krit.Count > 0) { List <Kriterium> list = temp_krit[0].getUnterKriterium(db); foreach (Kriterium temp_obj in list) { nenner += temp_obj.getGewichtung(db: db, ProjektID: NWAobjekt.getProjektID(), ProduktID: NWAobjekt.getProduktID()); } } else { nenner = NWAobjekt.getGewichtung(); } if (nenner == 0) { return(0); } return(nenner); }
public void BuildDataTable(bool erfuellung, bool anforderungen, bool gewichtung, bool nutzwert, bool prozent, int ProjektID, int[] ProduktID, DatabaseAdapter db, bool produkte) { dt = new DataGridView(); dt.ColumnCount = 1; dt.Columns[dt.ColumnCount - 1].Name = CONST_NUM; dt.Columns[dt.ColumnCount - 1].Width = 50; dt.ColumnCount += 1; dt.Columns[dt.ColumnCount - 1].Name = CONST_BEZ; dt.Columns[dt.ColumnCount - 1].Width = 300; if (gewichtung) { dt.ColumnCount += 1; dt.Columns[dt.ColumnCount - 1].Name = CONST_GEW; dt.Columns[dt.ColumnCount - 1].Width = 50; } if (anforderungen) { dt.ColumnCount += 1; dt.Columns[dt.ColumnCount - 1].Name = CONST_ANF; dt.Columns[dt.ColumnCount - 1].Width = 50; } Produkt temp_produkt = new Produkt(ProduktID[0]); ControllerNutzwert cntrl_nutzwer = new ControllerNutzwert(db, null); if (produkte) { foreach (int produkt in ProduktID) { temp_produkt = db.get(new Produkt(produkt))[0]; dt.ColumnCount += 1; string column_name = temp_produkt.getBezeichnung(); if (temp_produkt.getBezeichnung().Length > CONST_PROD_LENGTH) { column_name = column_name.Substring(0, CONST_PROD_LENGTH); } dt.Columns[dt.ColumnCount - 1].Name = column_name; } } dt.ColumnCount += 1; dt.Columns[dt.ColumnCount - 1].Name = CONST_KOM; dt.Columns[dt.ColumnCount - 1].Width = 300; Nutzwert temp_nwa = db.get(new Nutzwert(KriteriumID: 1, ProjektID: ProjektID, ProduktID: temp_produkt.getProduktID()))[0]; Kriterium root_kriterium = temp_nwa.getKriterium(db).getRootKriterium(db)[0]; if (root_kriterium.getErfuellung(db: db, ProjektID: ProjektID, ProduktID: temp_produkt.getProduktID()) == true || anforderungen == false) { if (prozent) { dt.ColumnCount += 1; dt.Columns[dt.ColumnCount - 1].Name = CONST_PROZ; dt.Columns[dt.ColumnCount - 1].Width = 50; } } int row = dt.Rows.Add(); dt.Rows[row].Cells[CONST_NUM].Value = "0"; dt.Rows[row].Cells[CONST_BEZ].Value = root_kriterium.getBezeichnung(); dt.Rows[row].Cells[CONST_KOM].Value = root_kriterium.getNutzwert(db, ProjektID, temp_produkt.getProduktID()).getKommentar(); if (anforderungen) { if (root_kriterium.getNutzwert(db, 0, 0).getGewichtung() == 0) { dt.Rows[row].Cells[CONST_ANF].Value = "-"; } else { dt.Rows[row].Cells[CONST_ANF].Value = "X"; } } if (produkte) { foreach (int produkt in ProduktID) { temp_produkt = db.get(new Produkt(produkt))[0]; string column_name = temp_produkt.getBezeichnung(); if (temp_produkt.getBezeichnung().Length > CONST_PROD_LENGTH) { column_name = column_name.Substring(0, CONST_PROD_LENGTH); } if (erfuellung == false) { cntrl_nutzwer.funktionsabdeckungsgrad_berechnen(root_kriterium.getNutzwert(db, ProjektID, temp_produkt.getProduktID())); } if (anforderungen == true) { dt.Rows[row].Cells[column_name].Value = root_kriterium.getNutzwert(db, ProjektID, temp_produkt.getProduktID()).getErfuellung(); } else { dt.Rows[row].Cells[column_name].Value = root_kriterium.getNutzwert(db, ProjektID, temp_produkt.getProduktID()).getBeitragAbsolut(); } if (erfuellung) { if (root_kriterium.getGewichtung(db: db, ProjektID: ProjektID, ProduktID: temp_produkt.getProduktID()) > 0) { dt.Rows[row].Cells[column_name].Value = "X"; } else { dt.Rows[row].Cells[column_name].Value = "-"; } } else { dt.Rows[row].Cells[column_name].Value = root_kriterium.getNutzwert(db, ProjektID, temp_produkt.getProduktID()).getBeitragAbsolut(); } } } if (root_kriterium.getGewichtung(db: db, ProjektID: ProjektID, ProduktID: temp_produkt.getProduktID()) > 0 || anforderungen == false) { if (gewichtung) { dt.Rows[row].Cells[CONST_GEW].Value = root_kriterium.getGewichtung(db, ProjektID, temp_produkt.getProduktID()); } if (prozent) { dt.Rows[row].Cells[CONST_PROZ].Value = cntrl_nutzwer.prozent(root_kriterium.getNutzwert(db: db, ProjektID: ProjektID, ProduktID: temp_produkt.getProduktID())); } } addtorow(root_kriterium, erfuellung, anforderungen, gewichtung, nutzwert, prozent, ProjektID, ProduktID, db, cntrl_nutzwer, "0", produkte); }