Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
T
Terminkalender für Arztpraxis
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Package Registry
Model registry
Operate
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
yaglibe96316
Terminkalender für Arztpraxis
Commits
6ef5dced
Commit
6ef5dced
authored
3 months ago
by
taskinse96322
Browse files
Options
Downloads
Patches
Plain Diff
Add new file
parent
01497ffe
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
Code OOP
+228
-0
228 additions, 0 deletions
Code OOP
with
228 additions
and
0 deletions
Code OOP
0 → 100644
+
228
−
0
View file @
6ef5dced
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
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment