From 0ab754b3a3b8a5a989d22b17d04c534737ddbce4 Mon Sep 17 00:00:00 2001 From: oprof00 Date: Tue, 6 Oct 2026 20:29:53 +0200 Subject: [PATCH] szobak letrehozasa es listazasa. tanulok hozzaadasa szobahoz. szoba tisztantartasanak, valamint telitettsegenek nyilvantartasa --- KoliMester3000/Program.cs | 80 +++++++++- KoliMester3000/components/roomManagger.cs | 182 ++++++++++++++++++++++ 2 files changed, 259 insertions(+), 3 deletions(-) create mode 100644 KoliMester3000/components/roomManagger.cs diff --git a/KoliMester3000/Program.cs b/KoliMester3000/Program.cs index d2b64d9..6625468 100644 --- a/KoliMester3000/Program.cs +++ b/KoliMester3000/Program.cs @@ -1,10 +1,84 @@ -namespace KoliMester3000 +using System; + +namespace KoliMester3000 { internal class Program { static void Main(string[] args) { - Console.WriteLine("c# c# indul a varazs"); + while (true) + { + Console.WriteLine("KoliMester 3000"); + Console.WriteLine("1 - Szoba létrehozása"); + Console.WriteLine("2 - Szobák lekérése"); + Console.WriteLine("3 - Lakó hozzáadása szobához"); + Console.WriteLine("66 - Konzol kiürítése"); + Console.WriteLine("67 - Kilépés"); + Console.Write("Írj be egy számot a folytatáshoz: "); + + bool valid = int.TryParse(Console.ReadLine(), out int menuNumber); + if (valid) + { + switch (menuNumber) + { + case 1: + Console.Clear(); + Console.Write("Szoba neve: "); + string roomName = Console.ReadLine(); + Console.Write("Férőhely: "); + int space; + while (!int.TryParse(Console.ReadLine(), out space) || space <= 0) + { + Console.Write("Kérlek érvényes pozitív számot adj meg a férőhelyhez: "); + } + + components.roomManagger.createRoom(roomName, space); + + Console.WriteLine("Nyomj meg egy gombot a folytatáshoz..."); + Console.ReadKey(); + Console.Clear(); + break; + + case 2: + Console.Clear(); + components.roomManagger.showRooms(); + Console.WriteLine("Nyomj meg egy gombot a visszatéréshez a főmenübe..."); + Console.ReadKey(); + Console.Clear(); + break; + + case 3: + Console.Clear(); + Console.Write("Melyik szobába szeretnél lakót tenni? (Szoba neve): "); + string targetRoom = Console.ReadLine(); + Console.Write("Lakó neve: "); + string residentName = Console.ReadLine(); + + components.roomManagger.addResidentToRoom(targetRoom, residentName); + + Console.WriteLine("Nyomj meg egy gombot a folytatáshoz..."); + Console.ReadKey(); + Console.Clear(); + break; + + case 66: + Console.Clear(); + break; + + case 67: + Environment.Exit(0); + break; + + default: + Console.WriteLine("Nincs ilyen menüpont!\n"); + break; + } + } + else + { + Console.WriteLine("Érvénytelen bemenet, számot adj meg!\n"); + } + } } } -} +} \ No newline at end of file diff --git a/KoliMester3000/components/roomManagger.cs b/KoliMester3000/components/roomManagger.cs new file mode 100644 index 0000000..13d2967 --- /dev/null +++ b/KoliMester3000/components/roomManagger.cs @@ -0,0 +1,182 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Text.Json; + +namespace KoliMester3000.components +{ + public class Room + { + public string roomNameC { get; set; } + public int roomSpaceC { get; set; } + public bool roomFullC { get; set; } + public bool cleanNeddedC { get; set; } + public List residents { get; set; } = new List(); + } + + internal class roomManagger + { + private static readonly string directoryPath = @"C:\kolimester"; + private static readonly string filePath = Path.Combine(directoryPath, "rooms.json"); + + private static List loadRooms() + { + if (!File.Exists(filePath)) + { + return new List(); + } + + try + { + string json = File.ReadAllText(filePath); + if (string.IsNullOrWhiteSpace(json)) + { + return new List(); + } + return JsonSerializer.Deserialize>(json) ?? new List(); + } + catch + { + return new List(); + } + } + + private static void saveRooms(List rooms) + { + if (!Directory.Exists(directoryPath)) + { + Directory.CreateDirectory(directoryPath); + } + + var options = new JsonSerializerOptions { WriteIndented = true }; + string json = JsonSerializer.Serialize(rooms, options); + File.WriteAllText(filePath, json); + } + + public static void createRoom(string roomName, int space) + { + Console.WriteLine("letrehozas"); + Console.WriteLine($"nev: {roomName}"); + Console.WriteLine($"hely: {space}"); + + var newRoom = new Room + { + roomNameC = roomName, + roomSpaceC = space, + roomFullC = false, + cleanNeddedC = false, + residents = new List() + }; + + List roomsList = loadRooms(); + roomsList.Add(newRoom); + saveRooms(roomsList); + + Console.WriteLine("Szoba sikeresen hozzáadva és mentve!\n"); + } + + public static void showRooms() + { + Console.WriteLine("- MENTETT SZOBÁK LISTÁJA -"); + + List roomsList = loadRooms(); + + if (roomsList.Count == 0) + { + Console.WriteLine("Még nincsenek mentett szobák.\n"); + return; + } + + int index = 1; + foreach (var room in roomsList) + { + string lakok; + if (room.residents != null && room.residents.Count > 0) + { + lakok = string.Join(", ", room.residents); + } + else + { + lakok = "Nincs lakó"; + } + + int lakokSzama = 0; + if (room.residents != null) + { + lakokSzama = room.residents.Count; + } + + string teleVanSzoveg; + if (room.roomFullC) + { + teleVanSzoveg = "Igen"; + } + else + { + teleVanSzoveg = "Nem"; + } + + string takaritasSzoveg; + if (room.cleanNeddedC) + { + takaritasSzoveg = "Igen"; + } + else + { + takaritasSzoveg = "Nem"; + } + + Console.WriteLine($"{index}. Szoba neve: {room.roomNameC}"); + Console.WriteLine($"Férőhely: {room.roomSpaceC} (Jelenlegi lakók száma: {lakokSzama})"); + Console.WriteLine($"Lakók: {lakok}"); + Console.WriteLine($"Tele van?: {teleVanSzoveg}"); + Console.WriteLine($"Takarítás szükséges?: {takaritasSzoveg}"); + Console.WriteLine(new string('-', 30)); + + index++; + } + Console.WriteLine(); + } + + public static void addResidentToRoom(string targetRoomName, string studentName) + { + List roomsList = loadRooms(); + + Room foundRoom = null; + foreach (var r in roomsList) + { + if (r.roomNameC.Equals(targetRoomName, StringComparison.OrdinalIgnoreCase)) + { + foundRoom = r; + break; + } + } + + if (foundRoom == null) + { + Console.WriteLine($"Nincs '{targetRoomName}' nevű szoba a rendszerben.\n"); + return; + } + + if (foundRoom.residents == null) + { + foundRoom.residents = new List(); + } + + if (foundRoom.residents.Count >= foundRoom.roomSpaceC) + { + Console.WriteLine($"A(z) {foundRoom.roomNameC} szoba már megtelt! Nem adható hozzá új lakó.\n"); + return; + } + + foundRoom.residents.Add(studentName); + if (foundRoom.residents.Count >= foundRoom.roomSpaceC) + { + foundRoom.roomFullC = true; + } + + saveRooms(roomsList); + Console.WriteLine($"'{studentName}' sikeresen hozzáadva a(z) {foundRoom.roomNameC} szobához!\n"); + } + } +} \ No newline at end of file