Ytterligare en nybörjare med "Bussen" i C#
Hej!
Till den som eventuellt orkar läsa igenom min kod så håller jag på med slutuppgiften "Bussen" i programmering 1 på distans. Jag är nästan färdig med koden, men har ett problem jag ännu inte lyckats lösa. I metoden "add passengers" vill jag att om man fyller i felaktig information så ska inte denna info lagras, utan man ska få fylla i passagerarens info på nytt. Får inte det till att funka på ett smidigt sätt, är det någon som har tips? Ser koden bra ut för övrigt eller finns det förbättringsförslag jag inte tänkt på? Har inte heller lagt till kommentarer än.
Tacksam för eventuell feedback!
using System;
using System.Collections.Generic;
namespace Bussen
{
class Person
{
private int ålder;
private string kön;
public int Ålder
{
get
{
return ålder;
}
set
{
if (value >= 0)
{
ålder = value;
}
else
{
Console.WriteLine("Åldern kan inte vara negativ.");
}
}
}
public string Kön
{
get
{
return kön;
}
set
{
string lowercaseValue = value.ToLower();
if (lowercaseValue == "man" || lowercaseValue == "kvinna")
{
kön = lowercaseValue;
}
else
{
Console.WriteLine("Ogiltigt kön. Du måste fylla i antingen 'man' eller 'kvinna'.");
}
}
}
}
class Buss
{
private List<Person> passagerare;
private int antal_passagerare;
public Buss()
{
passagerare = new List<Person>();
}
public void Run()
{
Console.WriteLine("Welcome to the awesome Buss-simulator");
Console.WriteLine("Vänligen välj ett av alternativen ur menyn.");
Console.WriteLine("Använd endast siffror.");
Console.WriteLine("");
int meny;
do
{
Console.WriteLine("1. Lägg till passagerare ");
Console.WriteLine("2. Skriv ut alla bussens passagerare ");
Console.WriteLine("3. Beräkna den totala åldern på bussens passagerare ");
Console.WriteLine("4. Beräkna den genomsnittliga åldern på bussens passagerare ");
Console.WriteLine("5. Visa åldern på bussens äldsta passagerare ");
Console.WriteLine("6. Sök efter passagerare i en viss ålder ");
Console.WriteLine("7. Sortera bussen efter passagerarnas åldrar ");
Console.WriteLine("8. Ta reda på passagerarnas kön ");
Console.WriteLine("9. Låt en passagerare stiga av bussen ");
Console.WriteLine("10. Avsluta programmet ");
meny = Convert.ToInt32(Console.ReadLine());
switch (meny)
{
case 1:
add_passenger();
break;
case 2:
print_buss();
break;
case 3:
calc_total_age();
break;
case 4:
calc_average_age();
break;
case 5:
max_age();
break;
case 6:
find_age();
break;
case 7:
sort_buss();
break;
case 8:
print_sex();
break;
case 9:
getting_off();
break;
case 10:
meny = 0;
break;
default:
Console.WriteLine("Felaktig inmatning. Skriv endast heltal mellan 1-10.");
break;
}
} while (meny != 10);
}
public void add_passenger()
{
Console.Clear();
Console.WriteLine("Hur många passagerare vill du lägga till? ");
Console.WriteLine("Du kan högst lägga till 25 passagerare. ");
try
{
int säten = Convert.ToInt32(Console.ReadLine());
if (säten > 25)
{
Console.WriteLine("Max antal passagerare är 25. Vänligen försök igen. ");
}
else
{
for (int i = 0; i < säten; i++)
{
Console.WriteLine("För att lägga till en ny passagerare så fyller du i passagerarens ålder samt kön. ");
Console.Write("Ålder: ");
int ålder = Convert.ToInt32(Console.ReadLine());
Console.Write("Kön: ");
string kön = Console.ReadLine();
passagerare.Add(new Person {Ålder = ålder, Kön = kön });
antal_passagerare++;
}
}
}
catch
{
Console.WriteLine("Du kan endast lägga till en passagerare i taget genom att fylla i passagerarens ålder och sedan kön.");
Console.WriteLine("Använd endast heltal för att fylla i åldern.");
}
}
public void print_buss()
{
Console.Clear();
Console.WriteLine("Här är listan på bussens passagerare: ");
if (antal_passagerare == 0)
{
Console.WriteLine("Det finns inga passagerare på bussen.");
}
else
{
for (int i = 0; i < antal_passagerare; i++)
{
Console.WriteLine($"Passageraren är {passagerare[i].Ålder} år gammal och är en {passagerare[i].Kön}.");
}
}
Console.WriteLine("");
}
public int calc_total_age()
{
Console.Clear();
if (antal_passagerare == 0)
{
Console.WriteLine("Det finns inga passagerare på bussen.");
Console.WriteLine("");
return -1;
}
int total_ålder = 0;
for (int i = 0; i < antal_passagerare; i++)
{
total_ålder += passagerare[i].Ålder;
}
Console.WriteLine($"Den gemensamma totalåldern för bussens passagerare är {total_ålder} år.");
Console.WriteLine("");
return total_ålder;
}
public int calc_average_age()
{
Console.Clear();
if (antal_passagerare == 0)
{
Console.WriteLine("Det finns inga passagerare på bussen.");
Console.WriteLine("");
return -1;
}
int genomsnitt = 0;
for (int i = 0; i < antal_passagerare; i++)
{
genomsnitt += passagerare[i].Ålder;
}
int medelålder = genomsnitt / antal_passagerare;
Console.WriteLine($"Den genomsnittliga åldern på passagerarna är {medelålder} år.");
Console.WriteLine("");
return medelålder;
}
public int max_age()
{
Console.Clear();
if (antal_passagerare == 0)
{
Console.WriteLine("Det finns inga passagerare på bussen.");
Console.WriteLine("");
return -1;
}
int maxålder = passagerare[0].Ålder;
for (int i = 1; i < antal_passagerare; i++)
{
if (passagerare[i].Ålder > maxålder)
{
maxålder = passagerare[i].Ålder;
}
}
Console.WriteLine($"Passageraren med högst ålder på bussen är {maxålder} år gammal.");
Console.WriteLine("");
return maxålder;
}
public void find_age()
{
Console.Clear();
Console.WriteLine("Vad vill du söka efter? ");
Console.WriteLine("1. En specifik ålder ");
Console.WriteLine("2. En åldersgrupp ");
Console.WriteLine("Svara med en siffra. Tryck 0 för att återvända till huvudmenyn. ");
Console.WriteLine("");
int val;
int key;
bool hittad;
do
{
val = Convert.ToInt32(Console.ReadLine());
if (val == 1)
{
Console.WriteLine("Vilken ålder vill du söka efter? Svara i heltal.");
key = Convert.ToInt32(Console.ReadLine());
hittad = false;
for (int i = 0; i < antal_passagerare; i++)
{
if (passagerare[i].Ålder == key)
{
Console.WriteLine($"Passageraren med åldern {key} år sitter på plats {i}");
Console.WriteLine("Tryck 0 för att återvända till huvudmenyn eller välj att söka efter ny ålder.");
Console.WriteLine("");
hittad = true;
}
}
if (!hittad)
{
Console.WriteLine("Det finns ingen passagerare på bussen med denna ålder.");
Console.WriteLine("Tryck 0 för att återvända till huvudmenyn eller välj att söka efter ny ålder.");
Console.WriteLine("");
}
}
else if (val == 2)
{
Console.WriteLine("Vilken är den lägsta åldern du vill söka efter? ");
int lägst = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Vilken är den högsta åldern du vill söka efter? ");
int högst = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Eventuella passagerare i denna åldersgrupp sitter på plats: ");
hittad = false;
for (int i = 0; i < antal_passagerare; i++)
{
if (passagerare[i].Ålder >= lägst && passagerare[i].Ålder <= högst)
{
Console.WriteLine($"{i}");
hittad = true;
}
Console.WriteLine("Tryck 0 för att återvända till huvudmenyn eller välj att söka efter ny ålder.");
Console.WriteLine("");
}
if (!hittad)
{
Console.WriteLine("Det finns inga passagerare inom denna åldersgrupp.");
Console.WriteLine("Tryck 0 för att återvända till huvudmenyn eller välj att söka efter ny ålder.");
Console.WriteLine("");
}
}
} while (val != 0);
Console.WriteLine("Det finns inga passagerare med denna ålder. Tryck 0 för att återvända till huvudmenyn.");
}
public void sort_buss()
{
Console.Clear();
for (int i = 0; i < antal_passagerare - 1; i++)
{
for (int j = 0; j < antal_passagerare - 1; j++)
{
if (passagerare[j].Ålder > passagerare[j + 1].Ålder)
{
var temp = passagerare[j];
passagerare[j] = passagerare[j + 1];
passagerare[j + 1] = temp;
}
}
}
Console.WriteLine("Bussen har sorterats efter passagerarnas åldrar.");
Console.WriteLine("");
for (int i = 0; i < antal_passagerare; i++)
{
Console.WriteLine($"Passagerare {i + 1}. Ålder: {passagerare[i].Ålder}");
}
Console.WriteLine("");
Console.WriteLine("");
}
public void print_sex()
{
Console.Clear();
Console.WriteLine("Platserna är numrerade från 0-24.");
Console.WriteLine("");
Console.WriteLine("Platser med manliga passagerare:");
for (int i = 0; i < antal_passagerare; i++)
{
if (passagerare[i].Kön.ToLower() == "man")
{
Console.WriteLine($"Plats {i}");
}
}
Console.WriteLine("");
Console.WriteLine("Platser med kvinnliga passagerare:");
for (int i = 0; i < antal_passagerare; i++)
{
if (passagerare[i].Kön.ToLower() == "kvinna")
{
Console.WriteLine($"Plats {i}");
}
}
Console.WriteLine("");
}
public void getting_off()
{
//har ännu inte börjat på denna metod
}
}
class Program
{
public static void Main(string[] args)
{
var minbuss = new Buss();
minbuss.Run();
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}