refactor: update class information and implement shuttle tasks

This commit is contained in:
Jonas Hinterdorfer 2026-01-09 09:09:13 +01:00
parent 158e3f5f07
commit ae43af0c92
4 changed files with 92 additions and 19 deletions

View File

@ -1,18 +1,15 @@
/*-------------------------------------------------------------- /*--------------------------------------------------------------
* HTBLA-Leonding / Class: 1xHIF * HTBLA-Leonding / Class: 4CHIF
*-------------------------------------------------------------- *--------------------------------------------------------------
* Musterlösung-HA * Hinterdorfer Jonas
*-------------------------------------------------------------- *--------------------------------------------------------------
* Description: SpaceShuttle * Description: SpaceShuttle
*-------------------------------------------------------------- *--------------------------------------------------------------
*/ */
using System; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading;
using SpaceShuttle;
using SpaceShuttle.Tools; using SpaceShuttle.Tools;
Console.WriteLine("Space-Shuttle"); Console.WriteLine("Space-Shuttle");
@ -38,30 +35,96 @@ var shuttleStart = new CsvImport<SpaceShuttle.SpaceShuttleStart>()
#region Task1 #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 #endregion
#region Task2 #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 #endregion
#region Task3 - join #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 #endregion
#region Task4 - join-join #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 #endregion
#region Task5 - join-group #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 #endregion

View File

@ -1,7 +1,7 @@
/*-------------------------------------------------------------- /*--------------------------------------------------------------
* HTBLA-Leonding / Class: 1xHIF * HTBLA-Leonding / Class: 4CHIF
*-------------------------------------------------------------- *--------------------------------------------------------------
* Musterlösung-HA * Hinterdorfer Jonas
*-------------------------------------------------------------- *--------------------------------------------------------------
* Description: SpaceShuttle * Description: SpaceShuttle
*-------------------------------------------------------------- *--------------------------------------------------------------
@ -11,5 +11,7 @@ namespace SpaceShuttle;
public class 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;
} }

View File

@ -1,7 +1,7 @@
/*-------------------------------------------------------------- /*--------------------------------------------------------------
* HTBLA-Leonding / Class: 1xHIF * HTBLA-Leonding / Class: 4CHIF
*-------------------------------------------------------------- *--------------------------------------------------------------
* Musterlösung-HA * Hinterdorfer Jonas
*-------------------------------------------------------------- *--------------------------------------------------------------
* Description: SpaceShuttle * Description: SpaceShuttle
*-------------------------------------------------------------- *--------------------------------------------------------------
@ -11,5 +11,7 @@ namespace SpaceShuttle;
public class SpaceShuttleName 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;
} }

View File

@ -1,7 +1,7 @@
/*-------------------------------------------------------------- /*--------------------------------------------------------------
* HTBLA-Leonding / Class: 1xHIF * HTBLA-Leonding / Class: 4CHIF
*-------------------------------------------------------------- *--------------------------------------------------------------
* Musterlösung-HA * Hinterdorfer Jonas
*-------------------------------------------------------------- *--------------------------------------------------------------
* Description: SpaceShuttle * Description: SpaceShuttle
*-------------------------------------------------------------- *--------------------------------------------------------------
@ -13,5 +13,11 @@ using System;
public class SpaceShuttleStart 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;
} }