Ejemplo n.º 1
0
        /**
         * Versucht die Instanz aus dem Parameter dem Vektor hinzuzufuegen.
         *
         * Ist die Parameter-Instanz "null" wird nichts hinzugefuegt und FALSE zurueckgegeben.
         *
         * @return TRUE wenn die Instanz dem Vektor hinzugefuegt werden konnte, sonst FALSE
         */
        public bool addClsTypAbfrage(clsTypAbfrage pClsTypAbfrage)
        {
            /*
             * Pruefung: Parameterinstanz ungleich "null" ?
             */
            if (pClsTypAbfrage != null)
            {
                try
                {
                    /*
                     * Ist die Parameterinstanz vorhanden, wird diese dem Vektor hinzugefuegt.
                     */
                    getVektor().Add(pClsTypAbfrage);

                    /*
                     * Der Aufrufder bekommt TRUE zurueck, da die Parameterinstanz hinzugefuegt wurde.
                     */
                    return(true);
                }
                catch (Exception err_inst)
                {
                    System.Console.WriteLine("Fehler: errAddClsTypAbfrage " + err_inst.Message);
                }
            }

            /*
             * Vorgaberueckgabe ist FALSE (Fehler oder Parameterinstanz nicht gesetzt)
             */
            return(false);
        }
Ejemplo n.º 2
0
        /**
         * Erstellt mit den Parameterangaben eine Fragensitzung mit einer
         * zufaelligen Reihenfolge der Fragen aus dem Fragenkatalog.
         *
         * @return TRUE wenn die Fragensitzung erstellt werden konnte, sonst FALSE
         */
        private bool erstelleZufallsFragenSitzung(int pAnzahlGesamtFragen, int pAnzahlAbfragen, int pUntergrenze, int pObergrenze)
        {
            int    index_fragen_katalog        = 0;
            int    index_lern_fabrik           = 0;
            int    zaehler_such_schleife       = 0;
            int    zaehler_reset_vorh_string   = 0;
            String str_bereits_vorhandene_ids  = "";
            bool   knz_naechster_wert_gefunden = false;

            Random inst_zufallsgenerator = new Random();

            clsTypAbfrage inst_cls_abfrage = null;

            zaehler_reset_vorh_string = pAnzahlGesamtFragen;

            index_lern_fabrik = 1;

            while ((index_lern_fabrik <= pAnzahlAbfragen) && (index_lern_fabrik < 3212))
            {
                /*
                 * Uebersteigt die Anzahl der Zufallsfragen die Gesamtanzahl aller Fragen,
                 * wird der String mit den bereits aufgenommenen Fragennummern wieder
                 * auf einen Leerstring gestellt.
                 *
                 * Ansonsten wuerde die Funktion 100 mal versuchen eine neue Fragennummer
                 * zu ermitteln, welches nicht gehen wuerde, da schon alle Grundfragen im
                 * String vorhanden waeren. Der Prozess wird beschleunigt.
                 */
                if (index_lern_fabrik > zaehler_reset_vorh_string)
                {
                    str_bereits_vorhandene_ids = "";

                    zaehler_reset_vorh_string = index_lern_fabrik + pAnzahlGesamtFragen;
                }

                /*
                 * Das Kennzeichen fuer die erfolgreiche Ermittlung eines neuen
                 * Fragenindexes wird fuer die neue Suche auf FALSE gestellt.
                 */
                knz_naechster_wert_gefunden = false;

                /*
                 * Der Endlosschleifenverhinderungszaehler wird auf 0 gestellt.
                 */
                zaehler_such_schleife = 0;

                /*
                 * While-Schleife fuer die Ermittlung eines Fragenindexes
                 */
                while (((knz_naechster_wert_gefunden == false) && (zaehler_such_schleife < 1000)))
                {
                    /*
                     * Neuer Fragenindex
                     *
                     * Es wird per Zufall ein Index zwischen der Ober- und Untergrenze ausgewaehlt
                     */
                    index_fragen_katalog = inst_zufallsgenerator.Next(0, pObergrenze);

                    if ((pUntergrenze > 0) && (index_fragen_katalog < pUntergrenze))
                    {
                        /*
                         * Einhaltung Untergrenze
                         *
                         * Ist die Untergrenze groesser als 0, darf der Index nicht
                         * kleiner als der Index der Untergrenze sein.
                         *
                         * Ist der Index kleiner als die Untegrenze, ist in diesem
                         * Durchgang kein neuer gueltiger Fragenindex ermittelt worden.
                         */
                    }
                    else if ((pObergrenze > 0) && (index_fragen_katalog > pObergrenze))
                    {
                        /*
                         * Einhaltung Obergrenze
                         *
                         * Ist die Obergrenze groesser als 0, darf der Index nicht
                         * groesser als der Index der Obergrenze sein.
                         *
                         * Ist der Index kleiner als die Obergrenze, ist in diesem
                         * Durchgang kein neuer gueltiger Fragenindex ermittelt worden.
                         */
                    }
                    else
                    {
                        /*
                         * Vermeidung doppelter Fragen
                         *
                         * Es werden alle schon einmal benutzten Indexe in einer Stringvariable
                         * kommasepariert gespeichert.
                         *
                         * Es wird geprueft, ob der aktuelle Index sich bereits in diesem
                         * Stringspeicher befindet. Die Funktion "IndexOf" muss -1 fuer
                         * "nicht gefunden" zurueck liefern.
                         *
                         * Ist der Index enthalten, ist die Variable "knz_naechster_wert_gefunden" FALSE.
                         * Ist der Index nicht enthalten, ist die Variable "knz_naechster_wert_gefunden" TRUE.
                         *
                         * Die Variable "knz_naechster_wert_gefunden" steuert diese Suchschleife.
                         *
                         * Die Pruefung auf "Index schon vorhanden" wird nur 100 mal gemacht.
                         * Beim 101 Durchlauf wird der gefundene Fragenindex ungeprueft uebernommen.
                         * Die Variable  "knz_naechster_wert_gefunden" wird dann auf TRUE gestellt.
                         */
                        if (zaehler_such_schleife < 100)
                        {
                            knz_naechster_wert_gefunden = str_bereits_vorhandene_ids.IndexOf("," + index_fragen_katalog + ",") == -1;
                        }
                        else
                        {
                            knz_naechster_wert_gefunden = true;
                        }
                    }

                    /*
                     * Am Schleifenende wid der Schleifenzaehler um eins hochgezaehlt.
                     */
                    zaehler_such_schleife = zaehler_such_schleife + 1;
                }

                /*
                 * Pruefung: Neuen Frageindex gefunden?
                 */
                if (knz_naechster_wert_gefunden)
                {
                    /*
                     * Ist der aktuelle Fragenindex in Ordnung, wird eine neue Instanz
                     * der Klasse "clsTypAbfrage" erstellt.
                     *
                     * Diese Instanz bekommt den Fragenindex aus dem Fragenkatalog zugewiesen.
                     *
                     * Auf die Zaehlervariablen wird ein Reset gemacht.
                     */
                    inst_cls_abfrage = new clsTypAbfrage();

                    inst_cls_abfrage.setIndexFragenKatalog(index_fragen_katalog);

                    inst_cls_abfrage.reset();

                    /*
                     * Die Instanz wird dem Vektor fuer die Abfragen hinzugefuegt.
                     */
                    addClsTypAbfrage(inst_cls_abfrage);

                    /*
                     * Der neu aufgenommene Fragenindex wird in der Speichervariablen
                     * fuer die schon benutzten Fragenindexe aufgenommen.
                     */
                    str_bereits_vorhandene_ids = str_bereits_vorhandene_ids + "," + index_fragen_katalog + ",";
                }

                /*
                 * Der Index fuer die Lernfabrik wird um 1 erhoeht
                 */
                index_lern_fabrik++;
            }

            return(true);
        }
Ejemplo n.º 3
0
        /**
         * Erstellt mit den Parameterangaben eine Fragensitzung nach
         * Reihenfolge der Fragen im Fragenkatalog.
         *
         * @return TRUE wenn die Fragensitzung erstellt werden konnte, sonst FALSE
         */
        private bool erstelleFragenSitzungReihenfolge(int pAnzahlGesamtFragen, int pAnzahlAbfragen, int pUntergrenze, int pObergrenze)
        {
            bool fkt_ergebnis = false;

            int index_fragen_katalog = 0;
            int index_ab             = 0;
            int index_bis            = 0;

            bool knz_rueckwaerts = false;

            if (pUntergrenze > pObergrenze)
            {
                index_ab  = pObergrenze;
                index_bis = pUntergrenze;
            }
            else
            {
                index_ab  = pUntergrenze;
                index_bis = pObergrenze;
            }

            if (index_ab < 0)
            {
                index_ab = 0;
            }

            if (index_bis > pAnzahlGesamtFragen)
            {
                index_bis = pAnzahlGesamtFragen - 1;
            }

            clsTypAbfrage inst_cls_abfrage = null;

            if (knz_rueckwaerts)
            {
                index_fragen_katalog = index_bis;

                while (index_fragen_katalog >= index_ab)
                {
                    inst_cls_abfrage = new clsTypAbfrage();

                    inst_cls_abfrage.setIndexFragenKatalog(index_fragen_katalog);

                    inst_cls_abfrage.reset();

                    addClsTypAbfrage(inst_cls_abfrage);

                    index_fragen_katalog--;
                }
            }
            else
            {
                index_fragen_katalog = index_ab;

                while (index_fragen_katalog <= index_bis)
                {
                    inst_cls_abfrage = new clsTypAbfrage();

                    inst_cls_abfrage.setIndexFragenKatalog(index_fragen_katalog);

                    inst_cls_abfrage.reset();

                    addClsTypAbfrage(inst_cls_abfrage);

                    index_fragen_katalog++;
                }
            }

            fkt_ergebnis = true;

            return(fkt_ergebnis);
        }