From ae43af0c921b75aec6547b55d7d2f6785213e65a Mon Sep 17 00:00:00 2001 From: Jonas Hinterdorfer Date: Fri, 9 Jan 2026 09:09:13 +0100 Subject: [PATCH] refactor: update class information and implement shuttle tasks --- SpaceShuttle/Program.cs | 83 +++++++++++++++++++++++++++---- SpaceShuttle/SpaceShuttle.cs | 8 +-- SpaceShuttle/SpaceShuttleName.cs | 8 +-- SpaceShuttle/SpaceShuttleStart.cs | 12 +++-- 4 files changed, 92 insertions(+), 19 deletions(-) diff --git a/SpaceShuttle/Program.cs b/SpaceShuttle/Program.cs index 43cf470..b4e0309 100644 --- a/SpaceShuttle/Program.cs +++ b/SpaceShuttle/Program.cs @@ -1,18 +1,15 @@ /*-------------------------------------------------------------- -* HTBLA-Leonding / Class: 1xHIF +* HTBLA-Leonding / Class: 4CHIF *-------------------------------------------------------------- -* Musterlösung-HA +* Hinterdorfer Jonas *-------------------------------------------------------------- * Description: SpaceShuttle *-------------------------------------------------------------- */ using System; -using System.Collections.Generic; using System.Linq; -using System.Threading; -using SpaceShuttle; using SpaceShuttle.Tools; Console.WriteLine("Space-Shuttle"); @@ -38,30 +35,96 @@ var shuttleStart = new CsvImport() #region Task1 -//ToDo: Task1 +Console.WriteLine("\nTask 1: All Space Shuttles"); +Console.WriteLine("=========================="); +var task1 = shuttle.Select(s => s); + +foreach (var s in task1) +{ + Console.WriteLine($"{s.Name,-15} {s.OVNo,-10} {s.Remark}"); +} #endregion #region Task2 -//ToDo: Task2 +Console.WriteLine("\nTask 2: All Shuttle Starts ordered by Launch Date"); +Console.WriteLine("=================================================="); +var task2 = shuttleStart.OrderBy(s => s.LaunchDate); + +foreach (var s in task2) +{ + Console.WriteLine($"{s.No,3} {s.LaunchDate:dd.MM.yyyy} {s.Mission,-15} {s.Shuttle,-15} {s.LaunchPad,-10}"); +} #endregion #region Task3 - join -//ToDo: Task3 +Console.WriteLine("\nTask 3: Shuttle Starts with Name Origin (Join)"); +Console.WriteLine("==============================================="); +var task3 = shuttleStart.Join( + shuttleName, + start => start.Shuttle, + name => name.ShuttleName, + (start, name) => new { start.No, start.LaunchDate, start.Mission, start.Shuttle, name.ShipLiveNameFrom, name.NameFrom } +); + +foreach (var s in task3) +{ + Console.WriteLine($"{s.No,3} {s.LaunchDate:dd.MM.yyyy} {s.Mission,-15} {s.Shuttle,-15} {s.ShipLiveNameFrom,-20}"); +} #endregion #region Task4 - join-join -//ToDo: Task4 +Console.WriteLine("\nTask 4: Complete Shuttle Information (Double Join)"); +Console.WriteLine("==================================================="); +var task4 = shuttleStart.Join( + shuttleName, + start => start.Shuttle, + name => name.ShuttleName, + (start, name) => new { start, name } +).Join( + shuttle, + temp => temp.start.Shuttle, + sh => sh.Name, + (temp, sh) => new { temp.start.No, temp.start.LaunchDate, temp.start.Mission, temp.start.Shuttle, sh.OVNo, temp.name.NameFrom } +); + +foreach (var s in task4.Take(10)) +{ + Console.WriteLine($"{s.No,3} {s.LaunchDate:dd.MM.yyyy} {s.Mission,-15} {s.Shuttle,-15} {s.OVNo,-10}"); +} #endregion #region Task5 - join-group -//ToDo: Task5 +Console.WriteLine("\nTask 5: Shuttle Starts Grouped by Shuttle (Join-Group)"); +Console.WriteLine("======================================================="); +var task5 = shuttleStart + .Join( + shuttle, + start => start.Shuttle, + sh => sh.Name, + (start, sh) => new { start, sh } +).GroupBy( + x => new { x.start.Shuttle, x.sh.OVNo } +).Select( + g => new { + g.Key.Shuttle, + g.Key.OVNo, + Count = g.Count(), + FirstLaunch = g.Min(s => s.start.LaunchDate), + LastLaunch = g.Max(s => s.start.LaunchDate) + } +); + +foreach (var s in task5) +{ + Console.WriteLine($"{s.Shuttle,-15} {s.OVNo,-10} Missions: {s.Count,3} First: {s.FirstLaunch:dd.MM.yyyy} Last: {s.LastLaunch:dd.MM.yyyy}"); +} #endregion diff --git a/SpaceShuttle/SpaceShuttle.cs b/SpaceShuttle/SpaceShuttle.cs index 4622899..a9bb8c7 100644 --- a/SpaceShuttle/SpaceShuttle.cs +++ b/SpaceShuttle/SpaceShuttle.cs @@ -1,7 +1,7 @@ /*-------------------------------------------------------------- -* HTBLA-Leonding / Class: 1xHIF +* HTBLA-Leonding / Class: 4CHIF *-------------------------------------------------------------- -* Musterlösung-HA +* Hinterdorfer Jonas *-------------------------------------------------------------- * Description: SpaceShuttle *-------------------------------------------------------------- @@ -11,5 +11,7 @@ namespace SpaceShuttle; public class SpaceShuttle { - //ToDo: Properties for SpaceShuttle + public string Name { get; set; } = string.Empty; + public string OVNo { get; set; } = string.Empty; + public string Remark { get; set; } = string.Empty; } \ No newline at end of file diff --git a/SpaceShuttle/SpaceShuttleName.cs b/SpaceShuttle/SpaceShuttleName.cs index 7307bed..919c9d0 100644 --- a/SpaceShuttle/SpaceShuttleName.cs +++ b/SpaceShuttle/SpaceShuttleName.cs @@ -1,7 +1,7 @@ /*-------------------------------------------------------------- -* HTBLA-Leonding / Class: 1xHIF +* HTBLA-Leonding / Class: 4CHIF *-------------------------------------------------------------- -* Musterlösung-HA +* Hinterdorfer Jonas *-------------------------------------------------------------- * Description: SpaceShuttle *-------------------------------------------------------------- @@ -11,5 +11,7 @@ namespace SpaceShuttle; public class SpaceShuttleName { - //ToDo: Properties for SpaceShuttleName + public string ShuttleName { get; set; } = string.Empty; + public string ShipLiveNameFrom { get; set; } = string.Empty; + public string NameFrom { get; set; } = string.Empty; } \ No newline at end of file diff --git a/SpaceShuttle/SpaceShuttleStart.cs b/SpaceShuttle/SpaceShuttleStart.cs index ea646bc..d5c95fa 100644 --- a/SpaceShuttle/SpaceShuttleStart.cs +++ b/SpaceShuttle/SpaceShuttleStart.cs @@ -1,7 +1,7 @@ /*-------------------------------------------------------------- -* HTBLA-Leonding / Class: 1xHIF +* HTBLA-Leonding / Class: 4CHIF *-------------------------------------------------------------- -* Musterlösung-HA +* Hinterdorfer Jonas *-------------------------------------------------------------- * Description: SpaceShuttle *-------------------------------------------------------------- @@ -13,5 +13,11 @@ using System; public class SpaceShuttleStart { - //ToDo: Properties for SpaceShuttleStart + public int No { get; set; } + public DateTime LaunchDate { get; set; } + public string Mission { get; set; } = string.Empty; + public string Shuttle { get; set; } = string.Empty; + public string LaunchPad { get; set; } = string.Empty; + public string LandingSite { get; set; } = string.Empty; + public string Notes { get; set; } = string.Empty; } \ No newline at end of file