Skip to content
Snippets Groups Projects
Commit 6ef5dced authored by taskinse96322's avatar taskinse96322
Browse files

Add new file

parent 01497ffe
No related branches found
No related tags found
No related merge requests found
Code OOP 0 → 100644
using System;
using System.Collections.Generic;
using System.Linq;
namespace ArztpraxisTerminplanung
{
public abstract class Benutzer
{
public int Id { get; set; }
public string Name { get; set; }
protected Benutzer(int id, string name)
{
Id = id;
Name = name;
}
}
public class Arzt : Benutzer
{
public Arzt(int id, string name) : base(id, name)
{
}
}
public class Patient : Benutzer
{
public string Telefonnummer { get; set; }
public Patient(int id, string name, string telefonnummer) : base(id, name)
{
Telefonnummer = telefonnummer;
}
public void ZeigeDetails()
{
Console.WriteLine($"[ID: {Id}] {Name} - Telefonnummer: {Telefonnummer}");
}
}
public class Termin
{
public int Id { get; set; }
public DateTime Datum { get; set; }
public Arzt Arzt { get; set; }
public Patient Patient { get; set; }
public Termin(int id, DateTime datum, Arzt arzt, Patient patient)
{
Id = id;
Datum = datum;
Arzt = arzt;
Patient = patient;
}
public void ZeigeDetails()
{
Console.WriteLine($"[Termin ID: {Id}] - {Datum:dd.MM.yyyy HH:mm} - Arzt: {Arzt.Name} - Patient: {Patient.Name}, Telefonnummer: {Patient.Telefonnummer}");
}
}
public class TerminManager
{
private readonly List<Termin> _termine = new();
public void ZeigeVerfuegbareTermine(DateTime tag)
{
var belegteSlots = _termine
.Where(t => t.Datum.Date == tag.Date)
.Select(t => t.Datum.TimeOfDay)
.ToHashSet();
var freieSlots = Enumerable.Range(8, 10)
.SelectMany(stunde => Enumerable.Range(0, 60 / 30)
.Select(minute => new TimeSpan(stunde, minute * 30, 0)))
.Select(zeit => tag.Date.Add(zeit))
.Where(slot => !belegteSlots.Contains(slot.TimeOfDay));
Console.WriteLine("\nVerfügbare Termine:");
foreach (var slot in freieSlots)
{
Console.WriteLine($"- {slot:HH:mm}");
}
}
public void TerminHinzufuegen(Termin termin)
{
if (termin.Datum <= DateTime.Now)
{
throw new InvalidOperationException("Termine in der Vergangenheit können nicht hinzugefügt werden.");
}
if (_termine.Any(t => t.Datum == termin.Datum && t.Arzt.Id == termin.Arzt.Id))
{
throw new InvalidOperationException("Konflikt: Der Arzt hat bereits einen Termin zu dieser Zeit.");
}
_termine.Add(termin);
Console.WriteLine("Termin wurde erfolgreich hinzugefügt.");
}
public void TerminEntfernen(int terminId)
{
var termin = _termine.Find(t => t.Id == terminId);
if (termin == null)
{
throw new KeyNotFoundException("Kein Termin mit dieser ID gefunden.");
}
_termine.Remove(termin);
Console.WriteLine("Termin wurde erfolgreich entfernt.");
}
public void ZeigeTerminuebersicht()
{
if (_termine.Count == 0)
{
Console.WriteLine("Es sind derzeit keine vergebenen Termine.");
return;
}
Console.WriteLine("\nVergebene Termine:");
foreach (var termin in _termine)
{
termin.ZeigeDetails();
}
}
}
class Program
{
static void Main(string[] args)
{
var arzt = new Arzt(1, "Dr. Schmidt");
var patienten = new List<Patient>
{
new Patient(1, "Max Mustermann", "0123-456789"),
new Patient(2, "Erika Musterfrau", "0987-654321")
};
var terminManager = new TerminManager();
while (true)
{
Console.WriteLine("\nTerminplanungssystem für Kardiologie");
Console.WriteLine("1. Verfügbare Termine anzeigen");
Console.WriteLine("2. Termin hinzufügen");
Console.WriteLine("3. Termin löschen");
Console.WriteLine("4. Terminübersicht");
Console.WriteLine("5. Patient hinzufügen");
Console.WriteLine("6. Beenden");
Console.Write("Bitte wählen Sie eine Option: ");
string input = Console.ReadLine();
try
{
int option = int.Parse(input);
switch (option)
{
case 1:
Console.Write("Geben Sie das Datum ein (dd.MM.yyyy): ");
DateTime tag = DateTime.Parse(Console.ReadLine());
terminManager.ZeigeVerfuegbareTermine(tag);
break;
case 2:
Console.Write("Datum und Uhrzeit (dd.MM.yyyy HH:mm): ");
DateTime datum = DateTime.Parse(Console.ReadLine());
if (datum <= DateTime.Now)
{
Console.WriteLine("Fehler: Termine in der Vergangenheit können nicht gebucht werden.");
break;
}
Console.WriteLine("Wählen Sie einen Patienten:");
for (int i = 0; i < patienten.Count; i++)
{
Console.WriteLine($"{i + 1}. {patienten[i].Name}");
}
int patientWahl = int.Parse(Console.ReadLine());
var patient = patienten[patientWahl - 1];
var neuerTermin = new Termin(new Random().Next(1000), datum, arzt, patient);
terminManager.TerminHinzufuegen(neuerTermin);
break;
case 3:
Console.Write("Geben Sie die ID des zu löschenden Termins ein: ");
int terminId = int.Parse(Console.ReadLine());
terminManager.TerminEntfernen(terminId);
break;
case 4:
terminManager.ZeigeTerminuebersicht();
break;
case 5:
Console.Write("Geben Sie den Namen des neuen Patienten ein: ");
string name = Console.ReadLine();
Console.Write("Geben Sie die Telefonnummer des neuen Patienten ein: ");
string telefonnummer = Console.ReadLine();
var neuerPatient = new Patient(patienten.Count + 1, name, telefonnummer);
patienten.Add(neuerPatient);
Console.WriteLine("\nPatient wurde hinzugefügt. Aktuelle Patientenliste:");
foreach (var p in patienten)
{
p.ZeigeDetails();
}
break;
case 6:
Console.WriteLine("Programm wird beendet.");
return;
default:
Console.WriteLine("Ungültige Eingabe. Bitte wählen Sie eine Option zwischen 1 und 6.");
break;
}
}
catch (Exception ex)
{
Console.WriteLine($"Fehler: {ex.Message}");
}
}
}
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment