Programmering 1 C# Bussen
Hej!
Jag har som många andra fastnat lite i mitt slutprojekt Bussen.
Jag har lusläst varenda tråd om det i forumet och testat mig fram men får inte riktigt till det.
Jag är rädd för att jag har krånglat till det för mig själv alldeles för mycket med onödig kod.
Om någon har lust att titta på min kod och hjälpa mig förstå var det gått fel så vore jag tacksam vill verkligen lära mig!
Mina frågeställningar är:
1. jag har ett max antal platser på min buss som är 25. I metoden calc_total_age vill jag att programmet ska addera samtliga passagerares ålder. Behöver jag deklarera ytterligare en int i Buss som håller koll på hur många platser som tas upp eller kan jag använda mig av buss_seats?
Om jag vill att programmet ska säga till att det är fullt på bussen när användaren försöker lägga till fler än 25 passagerare i metoden add_passenger, bör jag ha en if sats eller en foreach som går igenom den eventuella nya int:en?
Tack så hemskt mkt på förhand!!!
using System;
namespace Buss
{
class Program
{
public static void Main(string[] args)
{
var miniBuss = new Buss();
miniBuss.run();
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
class Passenger
{
private int age;
private string gender;
private string paymentMethod;
private string ageGroup;
public Passenger(int _age, string _gender, string _paymentMethod, string _ageGroup) // Constructor sätter information om passageraeren
// tar emot info från add_passenger
{
age = _age;
gender = _gender;
paymentMethod = _paymentMethod;
ageGroup = _ageGroup;
}
public override string ToString() // omvandla tecken till skicka information om passagerare till metoden print_buss
{
return string.Format($"Denna passagerare finns på bussen:\n Ålder:{age} \n Kön: {gender} \n Betalsätt: {paymentMethod} \n Yrkesklass: {ageGroup}");
}
public int GetAge()
{
return age;
}
}
class Buss
{
private int buss_seats = 25; // Max antal sittplatser
private int passenger = 0;
private Passenger[] passenger_info; // Vektor lagrar information om passageraren
public void run()
{
int menu = 4;
do // Skapar en loop som går runt med 4st alternativ som leder vidare till metoder
{
Console.WriteLine("-----------------------------------------");
Console.WriteLine("|Hej busschaufför, vänligen gör ett val:|");
Console.WriteLine("| |");
Console.WriteLine("|1. Visa alla passagerare. |");
Console.WriteLine("|2. Lägg till passagerare. |");
Console.WriteLine("|3. Visa total ålder på passagerare. |");
Console.WriteLine("|4. Avsluta programmet. |");
Console.WriteLine("-----------------------------------------");
do
{
try
{
menu = int.Parse(Console.ReadLine());
}
catch // Om användaren anger input annat än siffror
{
Console.WriteLine("Fel format, vänligen ange ett val mellan 1-4");
}
} while (menu !=4); // loopar så länge input är felaktig
switch (menu) // Knappvalen användaren gör leder till olika metoder/case
{
case 1:
print_info();
break;
case 2:
add_passenger();
break;
case 3:
Calc_total_age();
break;
case 4:
Console.WriteLine(" Programmet avslutas, hejdå! ");
break;
default:
Console.WriteLine("Felaktig inmatning, vänligen ange en siffra mellan 1-4");
break;
}
} while (menu != 4); // Loopar så länge användaren inte väljer menyval 4 som avslutar
}
public void print_info()
{
foreach (var platser in passenger_info) // Går igenom hela vektorn Passenger_info och skriver ut det som finns lagrat
{
if (platser != 0)
{
Console.WriteLine(platser);
}
}
}
public void add_passenger()
{
{// Skapar bools för att kontrollera så att användarens input är i rätt format och datatyper som spar inputen
bool validAge = false;
bool validGender = false;
bool validageGroup = false;
bool validPaymentMethod = false;
int ageInput = 0;
string genderInput = "";
string ageGroupInput = "";
string paymentMethodInput = "";
Console.WriteLine("Lägg till passagerare: ");
while (!validAge)
{
Console.Clear();
Console.WriteLine("Ålder:");
try
{
ageInput = int.Parse(Console.ReadLine());
validAge = true;
}
catch
{
Console.WriteLine("Felaktig input, vänligen ange heltal");
}
while (!validGender)
{
Console.WriteLine("Välj kön: \n Kvinna = K \n Man = M\n Okänd = O");
switch (Console.ReadLine().ToLower())
{
case "k":
genderInput = "Kvinna";
validGender = true;
break;
case "m":
genderInput = "Man";
validGender = true;
break;
case "o":
genderInput = "Okänd";
validGender = true;
break;
default:
Console.WriteLine("felaktig input");
validGender = false;
break;
}
}
while (!validageGroup)
{
Console.WriteLine("Välj åldersgrupp:\n Barn = B \n Ungdom = U \n Vuxen = V \n Pensionär = P \n");
switch (Console.ReadLine().ToLower())
{
case "b":
ageGroupInput = "Barn";
validageGroup = true;
break;
case "u":
ageGroupInput = "Ungdom";
validageGroup = true;
break;
case "v":
ageGroupInput = "Vuxen";
validageGroup = true;
break;
case "p":
ageGroupInput = "Pensionär";
validageGroup = true;
break;
default:
Console.WriteLine("Felaktig input");
validageGroup = false;
break;
}
}
while (!validPaymentMethod)
{
Console.WriteLine("Välj betalsätt: \n Månadskort = M\n Reskassa = R\n Bankkort = B\n Plankare = P\n");
switch (Console.ReadLine().ToLower())
{
case "m":
paymentMethodInput = "Månadskort";
validPaymentMethod = true;
break;
case "r":
paymentMethodInput = "Reskassa";
validPaymentMethod = true;
break;
case "b":
paymentMethodInput = "Bankkort";
validPaymentMethod = true;
break;
case "p":
paymentMethodInput = "Plankare";
validPaymentMethod = true;
break;
default:
Console.WriteLine("Felaktig input");
validPaymentMethod = false;
break;
}
}
for (int i = 0; i < buss_seats; i++)
{
if (passenger_info[i] == 0)
{
passenger_info[passenger++] = new Passenger(ageInput, genderInput, ageGroupInput, paymentMethodInput);
break;
}
}
}
}
}
public void Calc_total_age()
{ int sum = 0;
for (int i =0; i<passenger; i++)
{
sum += passenger[i];
}
Console.WriteLine("Den totala åldern för passagerarna är" + sum + ":");
(if passenger == 0)
Console.WriteLine("Det är tom på bussen");
}
}
}