2021. május 3., hétfő

2021.05.03. Cukrászda - OOP program - osztályon belüli lista

 Feladat: cukrászda

Az adatok sorrendben a következők:

tipus

a termék típusa

elnevezes

a termék neve

egysegar

a termék egységára (ft)

hetfo

az adott termékből hétfőn eladott darabszám

 

vasarnap

az adott termékből vasárnap eladott darabszám

 

A feladatok a következők:

1. Olvasd be a cukraszda.txt vesszővel tagolt fájlból az összes adatot egy osztálypéldányokat

tartalmazó listába! Az osztályban a napi adatoknak hozz létre egy listát. Írd ki az adatokat.

2. Írd ki a képernyőre azoknak a réteseknek és tortaszeleteknek a nevét és az árát, amikből

legalább 150 darabot adtak el vasárnap.

3. Írd ki a legdrágább tortaszelet nevét!

4. Írd ki, hogy mennyi bevétele származott a cukrászdának a fagylaltokból a hétvégi három napon.

5. Írd ki egy új fájlba soronként szóközzel elválasztva az olyan termékek nevét és típusát, amelyekből a pénteki bevétel nagyobb volt, mint a vasárnapi.

6. Melyik termék hozott a legkevesebb bevételt a héten?

7. Emelt: Melyik terméktípus hozott a legkevesebb bevételt a héten?


TXT (ne innen másold):

fagylalt,Áfonyafagyi,110,600,784,736,720,976,1472,1760

rétes,Almás rétes,180,89,155,93,217,196,179,147

csiga,Csokis csiga,125,109,187,213,178,138,211,276

tortaszelet,Csokoládétorta,118,75,73,87,88,102,165,180

csiga,Diós csiga,132,133,76,154,100,171,130,163

rétes,Diós rétes,235,120,109,98,105,320,144,190

tortaszelet,Dobostorta,195,90,88,102,103,117,180,195

fagylalt,Eperfagyi,110,966,1284,1176,1170,1236,1314,1368

tortaszelet,Erdőkrémtorta,190,120,101,126,129,135,175,200

fagylalt,Fahéjfagyi,110,630,735,771,801,849,969,1023

csiga,Fahéjas csiga,120,130,95,165,123,144,185,217

tortaszelet,Fahéjtorta,178,69,125,168,171,180,217,245

fagylalt,Írkrémfagyi,110,450,438,522,528,612,990,1080

tortaszelet,Írkrémtorta,198,44,58,65,64,55,93,111

csiga,Kakaós csiga,120,108,147,221,204,162,264,255

tortaszelet,Kávétorta,124,106,105,130,129,153,159,189

rétes,Mákos rétes,200,88,115,119,194,228,237,277

fagylalt,Mogyorófagyi,110,768,1164,1095,1209,1149,1230,1404

tortaszelet,Oroszkrémtorta,195,77,91,102,101,108,169,179

tortaszelet,Puncstorta,188,95,70,77,68,97,143,165

fagylalt,Sztracsatellafagyi,110,1040,912,1800,1460,1780,1988,1728

rétes,Túrós rétes,205,109,138,81,188,159,219,173

Egy lehetséges megoldás:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace cukraszdaReload
{
    public class Cuki
    {
        public string tipus;
        public string nev;
        public int ar;
        public List<int> napok;
        public Cuki(string sor)
        {
            List<string> atmeneti = sor.Split(',').ToList();
            tipus = atmeneti[0];
            nev = atmeneti[1];
            ar = Convert.ToInt32(atmeneti[2]);
            napok = new List<int>();
            for (int i = 3; i < atmeneti.Count; i++)
            {
                napok.Add(Convert.ToInt32(atmeneti[i]));
            }
        }
        public override string ToString()//Ez egy extra szép megoldás             
        {
            string text = string.Empty;
            text += $"\nTermék típusa: {tipus}";
            text += $"\nTermék neve: {nev}";
            text += $"\nTermék ára: {ar} ft";
            text += $"\nTermék eladása:\n";
            string[] hetNapjai = { "hétfő""kedd""szerda""csütörtök""péntek""szombat""vasárnap" };
            for (int i = 0; i < napok.Count; i++)
            {
                text += hetNapjai[i] + ": " + napok[i] + " db\n";
            }
            return text;
        }
        public void kiir() //Ez az extra egyszerű megoldás 
        {
            Console.WriteLine("Termék típusa: " + tipus);
            Console.WriteLine("Termék neve: " + nev);
            Console.WriteLine("Termék ára: " + ar + " ft");
            Console.WriteLine("Termék eladása hétfőtől péntekig (db): ");
            for (int i = 0; i < napok.Count; i++)
            {
                Console.WriteLine(napok[i]);
            }
        }
    }
    class Program
    {
        static void vasarnapSzazOtven(List<Cuki> a)
        {
            for (int i = 0; i < a.Count; i++)
            {
                if (a[i].tipus == "rétes" || a[i].tipus == "tortaszelet")
                {
                    if (a[i].napok[6] >= 150)
                    {
                        Console.WriteLine($"{a[i].nev}: {a[i].ar} Ft");
                    }
                }
            }
        }
        static void legdragabb(List<Cuki> a)
        {
            int legdragabb = a[0].ar;
            string nev = a[0].nev;
            for (int i = 0; i < a.Count; i++)
            {
                if ()
                if (a[i].ar > legdragabb && a[i].tipus == "tortaszelet")
                {
                    legdragabb = a[i].ar;
                    nev = a[i].nev;
                }
            }
            Console.WriteLine($"Legdrágább tortaszelet: {nev}");
        }
        //másik megoldás:
        static void legdragabb1(List<Cuki> a)
        {
            int legdragabb = a[0].ar;
            string nev = a[0].nev;
            for (int i = 0; i < a.Count; i++)
            {
                if (a[i].tipus == "tortaszelet")
                {
                    if (a[i].ar > legdragabb)
                    {
                        legdragabb = a[i].ar;
                        nev = a[i].nev;
                    }
                }
            }
            Console.WriteLine($"Legdrágább tortaszelet: {nev}");
        }
        static void bevetel(List<Cuki> a)
        {
            int bevetel = 0;
            int hetvege = 0;
            for (int i = 0; i < a.Count; i++)
            {
                if (a[i].tipus == "fagylalt")
                {
                    hetvege = (a[i].napok[4] + a[i].napok[5] + a[i].napok[6])* a[i].ar;
                    bevetel += hetvege; //bevetel = bevetel + hetvege;
                }
            }
            Console.WriteLine($"A hétvégi 3 nap bevétele a fagylaltokból: {bevetel} Ft");
        }
        static void fajlbaIras(List<Cuki> a)
        {
            StreamWriter sw = new StreamWriter("kiiras.txt");
            for (int i = 0; i < a.Count; i++)
            {
                if (a[i].napok[4] > a[i].napok[6])
                {
                    sw.WriteLine($"{a[i].tipus} {a[i].nev}");
                }
            }
            sw.Close();
        }
        static void legkevesebbBevetel(List<Cuki> a)
        {
            int legkevesebb = a[0].napok.Sum()*a[0].ar;
            int osszeg = 0;
            string nev = a[0].nev;
            for (int i = 0; i < a.Count; i++)
            {
                osszeg = a[i].napok.Sum() * a[i].ar;
                if (osszeg < legkevesebb)
                {
                    legkevesebb = osszeg;
                    nev = a[i].nev;
                }
            }
            Console.WriteLine($"A legkevesebb bevételt hozta: {nev}");
        }
        static void Main(string[] args)
        {
            List<Cuki> cukraszda = new List<Cuki>();
            foreach (var i in File.ReadAllLines("cukraszda.txt"))
            {
                cukraszda.Add(new Cuki(i));
            }
            for (int i = 0; i < cukraszda.Count; i++)
            {
                Console.WriteLine(cukraszda[i]);
            }
            Console.ReadLine();
            for (int i = 0; i < cukraszda.Count; i++)
            {
                cukraszda[i].kiir();
                Console.WriteLine();
            }
            //Hogyan hivatkozunk az osztályon belüli lista elemeire?: 
            for (int i = 0; i < cukraszda.Count; i++)
            {
                Console.WriteLine(i);
                for (int j = 0; j < 7; j++)
                {
                    Console.WriteLine(cukraszda[i].napok[j]);
                }
                Console.WriteLine();
            }
            //1.Olvasd be a cukraszda.txt vesszővel tagolt fájlból az összes adatot egy osztálypéldányokat 
            //tartalmazó listába! Az osztályban a napi adatoknak hozz létre egy listát.Írd ki az adatokat. 
            //2.Írd ki a képernyőre azoknak a réteseknek és tortaszeleteknek a nevét és az árát, amikből 
            //legalább 150 darabot adtak el vasárnap. 
            Console.WriteLine("2. feladat");
            vasarnapSzazOtven(cukraszda);
            //3.Írd ki a legdrágább tortaszelet nevét! 
            Console.WriteLine("\n3. feladat");
            legdragabb(cukraszda);
            //4.Írd ki, hogy mennyi bevétele származott a cukrászdának a fagylaltokból a hétvégi három napon. 
            Console.WriteLine("\n4. feladat");
            bevetel(cukraszda);
            //5.Írd ki egy új fájlba soronként szóközzel elválasztva az olyan termékek nevét és típusát, amelyekből a pénteki bevétel nagyobb volt, mint a vasárnapi. 
            Console.WriteLine("\n5. feladat");
            fajlbaIras(cukraszda);
            //6.Melyik termék hozott a legkevesebb bevételt a héten ? 
            Console.WriteLine("\n6. feladat");
            legkevesebbBevetel(cukraszda);
            //7.Emelt : Melyik terméktípus hozott a legkevesebb bevételt a héten? 
            Console.ReadLine();
        }
    }
}


2021.05.03. Adatbázis-kezelés programok telepítése

  ingyenes szoftverek

A Xampp és a dbForge programok kellenek.