Untitled

mail@pastecode.io avatar
unknown
plain_text
2 years ago
9.5 kB
4
Indexable
Never
meny menuu = new meny(); //skapar en instans av klassen meny

menuu.displaymeny();

//IKitchenmach[] apparater = new IKitchenmach[] { new Osthyvel(), new Smörkniv(), new Slickepott };

//SkrivUtApparater();

//void SkrivApparater()
//{
//    Console.WriteLine("======Amazing Kitchen======");

//    foreach (var apparat in apparater)
//    {
//        Console.WriteLine($"Typ: {apparat.Type}\nSort: {apparat.Brand}\nFunkar: {apparat.Working}");

//        Console.WriteLine("- - - - - - - - - - - -");
//    }

//    Console.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~");
//}



interface IKitchenmach  ///interface
{
    public string Type { get; set; }
    public string Brand { get; set; }
    public bool Working { get; set; }
}


class meny
{

    List<IKitchenmach> redskap = new List<IKitchenmach>()   //lista av objekt (generiska List-klassen som kan skapa en lista)
{
    new köksapparater ("Osthyvel", "IKEA", true ),
    new köksapparater ("Smörkniv", "Mora", false ),
    new köksapparater ("Slickepott", "Duka", true )


};

    public void displaymeny()     //en metod för att skriva ut huvudmenyn
    {

        Console.WriteLine("======Amazing Kitchen======");
        Console.WriteLine("1. Använd köksapparat");
        Console.WriteLine("2. Lägg till köksapparat");
        Console.WriteLine("3. Lista köksapparater");
        Console.WriteLine("4. Ta bort köksapparater");
        Console.WriteLine("5. Avsluta");


        int option = int.Parse(Console.ReadLine());


        switch (option)

        {
            case 1:  //To do - Ändra första bokstav på klasserna och metoder till stor 
                choosetool();
                break;
            case 2:
                addtool();
                break;
            case 3:
                //listtools();
                break;
            case 4:
                //deltools();
                break;
            case 5:
                exit();
                break;
            default:
                // code block
                break;

        }

    }

    public void choosetool() //metod
    {
        Console.WriteLine("Vilken köks-'apparat' vill du använda");
        int order = 1;
        foreach (var tool in redskap)

        {
            Console.WriteLine(order + ". " + tool.Type); //definerat "order" som börjar från 0, be programmet att lägga till ++1 för varje type som används i varje körning
            order++;

        }
        string info = Console.ReadLine(); //användaren att lägga till ett val och OM valet är en int så fortsätter till nästa rad
        int dittVal = 0;
        if (int.TryParse(info, out dittVal))
        {

            if (dittVal <= redskap.Count && dittVal >= 1) //Om valet är ENDAST är mindre eller lika med antal redskap och inte mindre än 1 kör koden
            {

                int selectedIndex = dittVal - 1;   // Eftersom vi visar listan med int + 1, så hittar vi index genom val - 1

                if (redskap[selectedIndex].Working == true) //Om redskap [i varje vald index].Working (se där uppe om det är true eller false) är true då ska du skriva ut redskap fungerar och används
                    // Med hjälp av index så kan vi få reda på apparat typ.
                    Console.WriteLine("\n" + redskap[selectedIndex].Type + " används!!"); //om inte den är trasig.

                else

                    Console.WriteLine("\n" + redskap[selectedIndex].Type + " är trasig!!");


                choosetool();

            }
            else  //om vi anger felaktig tal eller input gå tillbaka till "choosetool();"

            {
                Console.WriteLine("Talen var felaktiga");
                choosetool();
            }

        }
        else  //annars gå tillbaka till meny
        {
            displaymeny();
        }
        

    }

    public void addtool() //metod
        
    { 

        Console.WriteLine("Ange en köksapparat du vill lägga till");
        var newapparat = Console.ReadLine();

        Console.WriteLine("Ange en märket på köksapparaten");
        var märket = Console.ReadLine();

        Console.WriteLine("Ange om köksapparat fungerar (j/n)");
        var working = Console.ReadLine();

        bool fungerar = false;

        if (working == "j")
        {
            fungerar = true;
        }
        //else
        //{
        //    //fungerar = false;  //Kan tas bort då boolen utgår från att den ej fungerar om inte "j" trycks in.
        //}
        Console.WriteLine("Tilllagd!");

        var köksapp = new köksapparater(newapparat, märket, fungerar);

        redskap.Add(köksapp);

        displaymeny();

    }

    static void listtools()
    {
        Console.WriteLine("Dessa köks-'apparater' finns");
        int order = 1;
        foreach (var tool in redskap)

        {
            Console.WriteLine(order + ". " + tool.Type + ". " + tool.Brand + ". " + tool.Working); //definerat "order" som börjar från 0, be programmet att lägga till ++1 för varje type som används i varje körning
            order++;

        }

        displaymeny();
    }

    //public void deltools() //metod

    //{

    //Den ska lista appraterna

    //    Console.WriteLine("Ange en köksapparat du vill ta bort");




    //    redskap.Remove(köksapp);

    //    displaymeny();

    //}

    static void exit()
    {
        Console.WriteLine("Välkommen åter!");
        Environment.Exit(0);
    }

}

class köksapparater : IKitchenmach  //ny klass som ärver av interfacet - 
{
    public string Type { get; set; }   //properties
    public string Brand { get; set; }
    public bool Working { get; set; }
    public köksapparater(string type, string brand, bool working) //"base till underklasserna" - konstruktorn (en metod som körs bara om objektet ska skapas)
    {
        Type = type;     //sparar till värdet i property:n 
        Brand = brand;
        Working = working;
    }

    public class Osthyvel : köksapparater
    {
        public Osthyvel(string type, string brand, bool working) : base(type, brand, working) //  konstruktor i klassen
                                                                                              //anropar base
        {
            //    this.Type = type; 
            //    this.Brand = brand;           Värde är redan sparat i anropet till base
            //    this.Working = working;
        }
    }

    public class Smörkniv : köksapparater
    {
        public Smörkniv(string type, string brand, bool working) : base(type, brand, working) //  konstruktor i klassen
        {
            //this.Type = type;
            //this.Brand = brand;
            //this.Working = working;
        }

        public class Slickepott : köksapparater
        {
            public Slickepott(string type, string brand, bool working) : base(type, brand, working) //  konstruktor i klassen 
            {
                //this.Type = type;
                //this.Brand = brand;
                //this.Working = working;
            }


        }


    }

}


//för att lägga till och ta bort ex
//var names = new List<string> { "<name>", "Scott", "Kendra"};
//names.Add("Maria");
//names.Add("Bill");
//names.Remove("Ana");
//foreach (var name in names)
//{
//    Console.WriteLine(name);
//}








//Skapa ett program som:
//Huvudmeny
//- Skriver ut en huvudmeny innehållande ett antal val (1. Använd köksapparat 2. Lägg till köksapparat 3. Lista köksapparater 4. Ta bort köksapparat 5. Avsluta). [1]
//-Låter användaren ange ett val i huvudmenyn och läser in valet. [2]


//Val 1.Använd köksapparat
//- Skriver ut en undermeny. [3]
//-Låter användaren ange ett val i undermenyn för att välja köksapparat och läser in valet. [4]
//-Skriver ut ett meddelande om att köksapparaten är trasig om den är trasig. Annars ska ett meddelande skrivas ut om att köksapparaten används. [5]
//-Går tillbaka till huvudmenyn. [6]


//Val 2.Lägg till köksapparat
//- Låter användaren mata in typ, märke och skick (t.ex. ”Våffeljärn”,
//”Electrolux”, ”j”). [7] Om användaren matar in ett litet j betyder det att
//köksapparaten fungerar. Annars om användaren matar in ett litet n
//betyder det att köksapparaten är trasig. [8]
//-Lagrar köksapparaten i en lista och skriver ut ett meddelande om att
//köksapparaten har lagts till. [9]
//-Går tillbaka till huvudmenyn. [10]

//Val 3.Lista köksapparater
//- Skriver ut en lista över alla köksapparater (inklusive alla som har lagts
//till). I listan ska typ, märke och skick skrivas ut. [11]
//-Går tillbaka till huvudmenyn. [12]

//Val 4.Ta bort köksapparat
//- Skriver ut en numrerad lista över alla köksapparater. [13]
//-Låter användaren ange vilken köksapparat som ska tas bort och läser in
//valet. [14]
//-Tar bort köksapparat från listan över lagrade köksapparater och skriver
//ut ett meddelande om att köksapparaten har tagits bort. [15]
//-Går tillbaka till huvudmenyn. [16]

//Val 5
//- Avslutar huvudmenyn. [17]
//Övrigt:
//-När programmet startar ska det finnas ett antal köksapparater lagrade i
//en lista redo att användas. [18]
//-Programmet ska felhantera all inmatning. [19]