예제 #1
0
 public Csoport(string[] sor, Nyom nyom)
 {
     sávID     = sor[2];
     csopID    = sor[6];
     osztályok = str2oszt(sor[2], nyom);
     krétakód  = sor[7];
 }
예제 #2
0
 static public void Write(Nyom nyom, string str)
 {
     if (debugmode)
     {
         Színes.Write($"{nyom.szöveg} {str}");
     }
 }
예제 #3
0
            /// <summary>
            /// Az osztály évfolyama és szekciója alapján visszaadja az osztályt magát.
            /// </summary>
            /// <param name="neve">Az osztály neve, pl. "11.f" vagy "nyf"</param>
            /// <returns></returns>
            public static bool TryGet(string évf, string szek, Nyom nyom, out Osztály result)
            {
                DebugConsole.WriteLine(nyom, $"Keresem: { évf} { szek}");
                int ix = Osztály.lista.FindIndex(x => x.évfolyam == évf && x.szekció == szek);

                result = ix >= 0 ? Osztály.lista[ix] : null;
                return(ix >= 0);
            }
예제 #4
0
            /// <summary>
            /// Az osztály sorszáma alapján visszaadja az osztályt magát. Hibakezel.
            /// </summary>
            /// <param name="neve">Az osztály neve, pl. "11.f" vagy "nyf"</param>
            /// <returns></returns>
            public static bool TryGet(int sorszám, Nyom nyom, out Osztály result)
            {
                DebugConsole.WriteLine(nyom, $"Keresem: {sorszám}");

                int ix = Osztály.lista.FindIndex(x => x.sorszám == sorszám);

                result = ix >= 0? Osztály.lista[ix]:null;
                return(ix >= 0);
            }
예제 #5
0
 public Tanár(string[] sortömb, Nyom nyom)
 {
     sorszám = sortömb[0];
     kr      = sortömb[1];
     st      = sortömb[2];
     mg      = sortömb[3];
     lista.Add(this);
     DebugConsole.Write($"[blue]{{({lista.Count})}}");                 // nyomkövetés
 }
예제 #6
0
            public int maxtagoltság;             // a nagy diákórarendben a lehetséges legtöbb egyszerre tartott órája az osztálynak (pl. ha 11 csoportra bontják valamikor, akkor akár 11!)

            public Osztály(string[] sortömb, Nyom nyom)
            {
                sorszám  = int.Parse(sortömb[0]);
                név      = sortömb[3];
                évfolyam = sortömb[1].ToUpper();                // Az azonosításhoz mindenképpen nagybetűsítünk! ("NY", "KNY")
                szekció  = sortömb[2].ToUpper();                // Az azonosításhoz mindenképpen nagybetűsítünk! ("A", "F", ...)

                lista.Add(this);

                DebugConsole.Write($"[blue]{{({lista.Count})}}");
            }
예제 #7
0
            public Terem(string[] sortömb, Nyom nyom)
            {
                sorszám = sortömb[0];
                kr      = sortömb[1];
                st      = sortömb[2];
                emelet  = int.Parse(sortömb[3]);
                szárny  = sortömb[4];

                lista.Add(this);

                DebugConsole.Write($"[blue]{{({lista.Count})}}");                 // nyomkövetés
            }
예제 #8
0
            public Óra(string[] sortömb, Nyom nyom)
            {
                tanár    = Tanár.lista.First(t => t.kr == sortömb[0]);
                tantárgy = new Tantárgy(sortömb, nyom);
                csoport  = new Csoport(sortömb, nyom);
                nap      = int.Parse(nap2int[sortömb[3]]);
                hanyadik = int.Parse(sortömb[4]);
                terem    = Terem.lista.First(t => t.kr == sortömb[5]);

                lista.Add(this);

                DebugConsole.Write($"[red]{{({lista.Count})}}");
            }
예제 #9
0
            /// <summary>
            /// Beimportálja a Kódolás munkalapból lementett tsv-fájlt, létrehozza az órákat mint külön objektumokat és az így keletkezett óralista alkotja majd az adatbázist, amire a későbbiekben minden hivatkozik.
            /// </summary>
            /// <param name="fajlnev">A beolvasandó fájl neve</param>
            ///
            public static void AdatbázisImport(string fajlnev, Nyom nyom)
            {
                DebugConsole.WriteLine(nyom, "indul");

                foreach (Óra óra in File.ReadAllLines(fajlnev)
                         .Skip(1)
                         .Select(s => new Óra(s.Split('\t'), nyom / "Óra")))
                {
                    DebugConsole.Write(óra.ToString());
                }
                Console.WriteLine();

                DebugConsole.WriteLine(nyom, $" Mostantól létezik a teremadatbázis: [blue]{{{Terem.lista.Count}}} db terem");
            }
예제 #10
0
            /// <summary>
            /// Az osztálykódokból álló listákat az osztályok listáinak elemeiből álló osztálylistává alakítja.
            /// </summary>
            /// <param name="kód"></param>
            /// <returns></returns>
            public static List <Osztály> str2oszt(string kód, Nyom nyom)            // a kód egy ilyen : "9.abd,10.ef,11.bcd,12.aef"
            {
                DebugConsole.WriteLine(nyom, "indul");

                List <Osztály> osztálylista = new List <Osztály>();

                customsávkódok = DB_Beolvas("DB_customsávkódok.tsv", 0, 1, nyom / "DB_beolvas:customsávkódok");

                string[] évfolyamonként = kód.Split(',');                 // évfolyamonként: [ "9.abd"  ,  "10.ef"  ,  "11.bcd"  ,  "12.aef" ]
                foreach (string évfolyamrész in évfolyamonként)           // egy évfolyamrész: "11.bcd"
                {
                    string[] évfolyamsplit = évfolyamrész.Split('.');
                    if (évfolyamsplit.Length == 1)                                               // ez csak a kny, nye, nyf, oktv, stb. esetében lehet, szóval ez egy custom sávnév kell legyen.
                    {
                        osztálylista.AddRange(str2oszt(customsávkódok[évfolyamsplit[0]], nyom)); // csak akkor lehet végtelen kör, ha az adatbázisban kör van!
                    }
                    else
                    {
                        string évf = évfolyamsplit[0];
                        foreach (char betű in évfolyamsplit[1])
                        {
                            Osztály osztály;
                            if (!Osztály.TryGet(évf.ToUpper(), betű.ToString().ToUpper(), nyom / "osztály.TryGet", out osztály))
                            {
                                new Probléma(nyom, $"[red]{{BAJ VAN!}} nem találtam meg az osztályt az évfolyam és szekció alapján. ");
                            }
                            osztálylista.Add(osztály);
                        }
                    }
                }

                if (sávbontás_részletezése)
                {
                    DebugConsole.WriteLine(nyom, $"A \"{kód}\" kódból a következő osztályokat fejtettem vissza:");
                    foreach (var item in osztálylista)
                    {
                        DebugConsole.WriteLine(nyom, $"évfolyam: {item.évfolyam}, szekció: {item.szekció}, név: {item.név}");
                    }
                }

                return(osztálylista);
            }
예제 #11
0
 public Tantárgy(string[] sortömb, Nyom nyom)
 {
     név = sortömb[1];
     lista.Add(this);
     DebugConsole.WriteLine(nyom, $"{név} tantárgy létrehozva");
 }
예제 #12
0
 public Nyom(Nyom ny, string s)
 {
     szöveg = ny.szöveg + s + elválasztójel;
 }
예제 #13
0
        /// <summary>
        /// Beolvassa az n oszlopos "fajlnev" nevű fájlt és létrehoz az alapján egy szótárt amelynek kulcsait a táblázat "keyCol"-ik oszlop, értékeit pedig a "keyValue"-ik oszlop szolgáltatja.
        /// </summary>
        /// <param name="fajlnev">A fájl, amiben az adatbázis van.</param>
        /// <param name="keyCol">A kulcsokat tartalmazó oszlop sorszáma.</param>
        /// <param name="valueCol">Az értékeket tartalmzó oszlop sorszáma.</param>
        /// <returns>Az a Dictionary, amiben csak ez a két oszlop szerepel beolvasva.</returns>
        public static Dictionary <string, string> DB_Beolvas(string fajlnev, int keyCol, int valueCol, Nyom nyom)
        {
            DebugConsole.WriteLine($"DB_Beolvas({ fajlnev},{ keyCol},{ valueCol}):");

            Dictionary <string, string> db = new Dictionary <string, string>();

            foreach (string[] sortömb in File.ReadAllLines(fajlnev, Encoding.UTF8).Select(sor => sor.Split('\t')))
            {
                db.Add(sortömb[keyCol], sortömb[valueCol]);
            }
            return(db);
        }
예제 #14
0
 public Probléma(Nyom nyom, string s)
 {
     this.szöveg = nyom.szöveg + s;
     lista.Add(this);
     DebugConsole.WriteLine(szöveg);
 }
예제 #15
0
 public static void Init(Nyom nyom)
 {
     nap2int = DB_Beolvas("DB_napok.tsv", 0, 1, nyom / "DB_Beolvas:nap2int");
 }
예제 #16
0
        static void Main(string[] args)
        {
            Console.WriteLine("Legyen debug-módban? (\'1\': igen, más: nem)");
            DebugConsole.debugmode = Console.ReadKey().KeyChar == '1';
            Console.WriteLine();
            if (DebugConsole.debugmode)
            {
                Console.WriteLine("Részletezze a sávok szétbontását is? (\'1\': igen, más: nem)");
                Csoport.sávbontás_részletezése = Console.ReadKey().KeyChar == '1';
            }
            Console.WriteLine();
            Console.WriteLine("\nKis türelem...");

            Nyom nyom = new Nyom("Main");

            // beolvassuk az órarendet
            // beolvassuk az adatbázisokat, amiket használunk: ékezetek átírása TeX-re, ...
            tex2ék = DB_Beolvas("DB_ékezet.tsv", 1, 0, nyom / "DB_Beolvas:tex2ék");
            ék2tex = DB_Beolvas("DB_ékezet.tsv", 0, 1, nyom / "DB_Beolvas:ék2tex");

            Óra.Init(nyom);             // ez a nap2int-et tölti be.
            // Tanárok beolvasása
            Órarend.TanárImport("DB_tanárok.tsv", nyom / "TanárImport");

            // Termek beolvasása
            Órarend.TeremImport("DB_termek.tsv", nyom / "TeremImport");

            // Osztályok beolvasása
            Órarend.OsztályImport("DB_osztályok.tsv", nyom / "OsztályImport");

            // Krétás adatbázis beolvasása és a tanárokhoz, termekhez, osztályokhoz csatolása.
            Órarend.AdatbázisImport("DB_kreta.tsv", nyom / "AdatbázisImport");

            Órarend.TanáriÓrarendKészítése(nyom / "TanáriÓrarendKészítése");
            Órarend.TeremÓrarendKészítése(nyom / "TeremÓrarendKészítése");
//			Órarend.Üresteremórarend(nyom / "Üresteremórarend");

            Órarend.DiákÓrarendKészítése(nyom / "DiákÓrarendKészítése");

            Órarend.DiákÓrarendKészítéseHTML(nyom / "DiákÓrarendKészítéseHTML");


            // teszt// Órarend.str2oszt("knyef,9.d", nyomkövetés);

            DebugConsole.WriteLine("===============");
            DebugConsole.WriteLine(" Program vége.");
            DebugConsole.WriteLine("===============");
            DebugConsole.WriteLine(" A következő problémák adódtak: ");
            DebugConsole.WriteLine("===============");

            Probléma.Összes_Kiírása();

            Console.WriteLine("\nVége, nyomj egy gombot!");
            Console.ReadKey();
            // Tesztek:
            //	string x = "Árvíztűrő tükörfúrógép";
            //	Konzol.WriteLine(Translate(x, ék2tex));

            Console.WriteLine("\nHányszor compile-oljam a TANÁROK digitális órarendjét?");
            int TanárDCompNum = int.Parse(Console.ReadKey().KeyChar.ToString());

            Console.WriteLine("\nHányszor compile-oljam a TANÁROK nyomtatható órarendjét?");
            int TanárPCompNum = int.Parse(Console.ReadKey().KeyChar.ToString());

            Console.WriteLine("\nHányszor compile-oljam a TERMEK digitális órarendjét?");
            int TeremDCompNum = int.Parse(Console.ReadKey().KeyChar.ToString());

            Console.WriteLine("\nHányszor compile-oljam a TERMEK nyomtatható órarendjét?");
            int TeremPCompNum = int.Parse(Console.ReadKey().KeyChar.ToString());

            Console.WriteLine("\nHányszor compile-oljam a DIÁKOK digitális órarendjét?");
            int DiákDCompNum = int.Parse(Console.ReadKey().KeyChar.ToString());

            Console.WriteLine("\nHányszor compile-oljam a DIÁKOK nyomtatható órarendjét?");
            int DiákPCompNum = int.Parse(Console.ReadKey().KeyChar.ToString());

            Console.WriteLine("\nMehet? ('1': igen, más: nem )");
            if (Console.ReadKey().KeyChar == '1')
            {
                Console.WriteLine();
                TeX2pdf("TanarNezo3.tex", TanárDCompNum);
                TeX2pdf("TanarNezo3Nyomtatott.tex", TanárPCompNum);
                TeX2pdf("TeremNezo31.tex", TeremDCompNum);
                TeX2pdf("TeremNezoNyomtatott.tex", TeremPCompNum);
                TeX2pdf("DiakNezo.tex", DiákDCompNum);
                TeX2pdf("DiakNezoNyomtatott.tex", DiákPCompNum);
            }
        }