den loopar oändligt eftersom conditionen för loopen aldrig bryts. minBool måste bli false när du uppnått ditt mål och vill gå ur loopen.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace Bokhyllan
{
class Bok
{
public string Titel; //Sparar bokens titel
public string Skribent; //sparar bokens författare
public string Typ; //sparar bokentypen
public int Utgivningsår; //sparar utgivningsåret
public Bok(string Titel, string Skribent, string Typ, int Utgivningsår)
{
this.Titel = Titel; //mottagen titel tilldelas objektet Titel
this.Skribent = Skribent; //mottagen skribent tilldelas objektet Skribent
this.Typ = Typ; //mottagen typ tilldelas objektet typ
this.Utgivningsår = Utgivningsår; //mottaget utgivningsår tilldelas objektet utgivningsår
}
// Bokens underklasser, roman, tidskrit och novellsamling
public class Roman : Bok
{
public Roman(string Titel, string Skribent, string Typ, int Utgivningsår) : base(Titel, Skribent, Typ, Utgivningsår)
{
Typ = "Roman";
}
public override string ToString()
{
return base.ToString(); // returnerar override metoden och namnen på alla dess värden
}
}
public class Tidskrift : Bok
{
public Tidskrift(string Titel, string Skribent, string Typ, int Utgivningsår) : base(Titel, Skribent, Typ, Utgivningsår)
{
Typ = "Tidskrift";
}
public override string ToString()
{
return base.ToString(); // returnerar override metoden och namnen på alla dess värden
}
}
public class Novellsamling : Bok
{
public Novellsamling(string Titel, string Skribent, string Typ, int Utgivningsår) : base(Titel, Skribent, Typ, Utgivningsår)
{
Typ = "Novellsamling";
}
public override string ToString()
{
return base.ToString(); // returnerar override metoden och namnen på alla dess värden
}
}
static void Main(string[] args)
{
bool isRunning = true; // boolen isRunning är sann tills användaren avslutar programmet
List<Bok> bokLista = new List<Bok>(); // skapar listan med alla böcker
string[] namn = new string[2];
Console.Write("\n\tVar god skriv in ditt förnamn: ");
namn[0] = Console.ReadLine();
Console.Write("\tVar god skriv in ditt efternamn: ");
namn[1] = Console.ReadLine(); // ReadLine väntar på användarens inmatning och används -
// för att programmet ska stanna upp.
Console.Clear(); // Rensar konsolfönstret
Console.WriteLine("\n\t---------------------------");
Console.WriteLine("\tVälkommen till biblioteket!");
Console.WriteLine("\t---------------------------");
DateTime time = DateTime.Now; // metod för dagens datum och tid.
Console.WriteLine("\tDatum: " + time.ToShortDateString()); // skriver ut endast dagens datum.
Console.WriteLine("\tTid: " + time.ToShortTimeString()); // skriver ut endast dagens tid.
DateTime currentDatetime = DateTime.Now; // Hämtar dagens tid och datum
int currentHour = currentDatetime.Hour; // initierar timmar
int startMorningHour = 6; // initierar morgon
int startAfternoonHour = 12; // initierar eftermiddag
int startEveningHour = 17; // initierar kväll
int startNightHour = 22; // initierar natt
// om morgontimmen är mindre eller lika med timman i stunden och timman är mindre än eftermiddagstimman
// så skrivs det ut God morgon [användarens namn] och så vidare.
if (startMorningHour <= currentHour && currentHour < startAfternoonHour)
{
Console.WriteLine("\n\tGod morgon," + " " + namn[0] + " " + namn[1] + "!");
}
if (startAfternoonHour <= currentHour && currentHour < startEveningHour)
{
Console.WriteLine("\n\tGod eftermiddag," + " " + namn[0] + " " + namn[1] + "!");
}
if (startEveningHour <= currentHour && currentHour < startNightHour)
{
Console.WriteLine("\n\tGod kväll," + " " + namn[0] + " " + namn[1] + "!");
}
if (startNightHour <= currentHour && currentHour < startMorningHour)
{
Console.WriteLine("\n\tGod natt," + " " + namn[0] + " " + namn[1] + "!");
}
Console.Write("\tVar vänlig ange en siffra mellan 1-4\n\t"); //informerar användaren om menyval
while (isRunning)
{ // Skriver ut menyn
Console.WriteLine("\n\t[1] Registrera en ny bok");
Console.WriteLine("\t[2] Visa böcker");
Console.WriteLine("\t[3] Rensa sparade böcker");
Console.Write("\t[4] Avsluta\n\t");
if (int.TryParse(Console.ReadLine(), out int menyVal)) // Hindrar att programmet kraschar vid felaktig inmatning
{
switch (menyVal)
{
case 1: // skapa en ny bok
{
SkapaNyBok();
break;
}
case 2:
Console.WriteLine("\n\tDina sparade böcker visas nedan");
foreach (Bok item in bokLista)
{
Console.Clear();
Console.WriteLine("\n\tTitel: " + item.Titel + "\n\tFörfattare: " + item.Skribent +
"\n\tUtgivningsår: " + item.Utgivningsår);
}
if (bokLista.Count == 0)
{
Console.Clear();
Console.WriteLine("\n\tDet finns inga sparade böcker.");
}
break;
case 3:
if (bokLista.Count == 0)
{
Console.Clear();
Console.WriteLine("\n\tDet finns inga sparade böcker.");
}
else
{
bokLista.Clear();
Console.WriteLine("\n\tDin boklista är nu rensad!");
break;
}
break;
case 4:
isRunning = false;
break;
default:
Console.Clear();
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("\n\tOgiltigt menyval, välj mellan 1-4!");
Console.ResetColor();
break;
}
}
}
}
public static void SkapaNyBok()
{
Console.Clear(); //Rensar konsolfönstret.
Console.Write("\n\tTitel: ");
string Titel = Console.ReadLine();
Console.Write("\tFörfattare: ");
string Skribent = Console.ReadLine();
Console.Write("\tUtgivningsår: ");
int Utgivningsår = 0;
bool lyckad = int.TryParse(Console.ReadLine(), out Utgivningsår);
if (!lyckad)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("\n\tFel inmatning, testa igen.");
Console.ResetColor();
Console.Clear();
Console.Write("\t");
}
else
{
}
bool minBool = true;
while (minBool)
{ // skriver ut menyn för typ av bok
Console.WriteLine("\n\tÄr boken en [1] Roman, [2] Tidskrift eller [3] Novellsamling?");
if (int.TryParse(Console.ReadLine(), out int Bokval))
{
switch (Bokval)
{
case 1:
{
Bok a = new Roman(Titel, Skribent, " ", Utgivningsår));
Console.Write("\t");
break;
}
case 2:
{
Bok a = new Roman(Titel, Skribent, " ", Utgivningsår));
Console.Write("\t");
break;
}
case 3:
{
Bok a = new Roman(Titel, Skribent, " ", Utgivningsår));
Console.Write("\t");
break;
}
default:
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("\n\tOgiltigt val!");
Console.ResetColor();
break;
}
minBool = false;
}
}
else
{
Console.WriteLine("\n\tVälj mellan 1-3");
}
}
}
}
}
Tack
Men nu sparas inga böcker och SkapaNyBok() metoden hittar inte min lista. Hur ska jag göra?