public Csoport(string[] sor, Nyom nyom) { sávID = sor[2]; csopID = sor[6]; osztályok = str2oszt(sor[2], nyom); krétakód = sor[7]; }
static public void Write(Nyom nyom, string str) { if (debugmode) { Színes.Write($"{nyom.szöveg} {str}"); } }
/// <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); }
/// <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); }
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 }
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})}}"); }
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 }
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})}}"); }
/// <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"); }
/// <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); }
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"); }
public Nyom(Nyom ny, string s) { szöveg = ny.szöveg + s + elválasztójel; }
/// <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); }
public Probléma(Nyom nyom, string s) { this.szöveg = nyom.szöveg + s; lista.Add(this); DebugConsole.WriteLine(szöveg); }
public static void Init(Nyom nyom) { nap2int = DB_Beolvas("DB_napok.tsv", 0, 1, nyom / "DB_Beolvas:nap2int"); }
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); } }