Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Naloga4._1
- {
- public enum Prehranjevanje { rastlinojedec, mesojedec, vsejedec };
- public enum Spol { moski, zenska };
- public enum Status { študent, upokojenec, zaposlen };
- interface IPRODAJNI
- {
- void ProdajKarto(Termin termin, Obiskovalec obiskovalec);
- void PrekliciKarto(Termin termin, Obiskovalec obiskovalec);
- //bool MestoProsto(Termin termin);
- double IzračunajCeno(Obiskovalec obiskovalec);
- }
- class Izlet:IPRODAJNI
- {
- private string naziv;
- private double cena;
- //Ne pozabi da si spremenil na static
- private int trajanjeIzleta;
- private static Termin[] termini;
- public string Naziv
- {
- get { return naziv; }
- set { naziv = value; }
- }
- public double Cena
- {
- get { return cena; }
- set { cena = value; }
- }
- public int TrajanjeIzleta
- {
- get { return trajanjeIzleta; }
- set { trajanjeIzleta = value; }
- }
- public Termin[] Termini
- {
- get { return termini; }
- set { termini = value; }
- }
- public Izlet(string _naziv, double _cena, int _trajanjeIzleta, Termin[] _termini)
- {
- Naziv = _naziv;
- Cena = _cena;
- TrajanjeIzleta = _trajanjeIzleta;
- Termini = _termini;
- }
- //METODA: ProdajKarto
- public void ProdajKarto(Termin termin, Obiskovalec obiskovalec)
- {
- Termin t = najdiTermin(termin);
- if (t != null)
- {
- t.PrijaviObiskovalca(obiskovalec);
- }
- else
- {
- Console.WriteLine("Termin ne obstaja");
- }
- }
- //METODA:PrekliciKarto
- public void PrekliciKarto(Termin termin, Obiskovalec obiskovalec)
- {
- Termin t = najdiTermin(termin);
- if (t != null)
- {
- t.OdjaviObiskovalca(obiskovalec);
- Console.WriteLine("Obiskovalec {0} {1} je odjavljen s seznama.", obiskovalec.Ime, obiskovalec.Priimek);
- }
- else
- {
- Console.WriteLine("Obiskovalec ni na seznamu.");
- }
- }
- ///POMOŽNA METODA
- public Termin najdiTermin(Termin t)
- {
- for(int i = 0; i <termini.Length; i++)
- {
- if(termini[i].ZačetekOgleda==t.ZačetekOgleda && termini[i].KonecOgleda == t.KonecOgleda)
- {
- return termini[i];
- }
- }
- return null;
- }
- //INTERFACE metoda IzračunajCeno
- public double IzračunajCeno(Obiskovalec obiskovalec)
- {
- double cena = Cena;
- if (obiskovalec.Status == Status.upokojenec)
- {
- return cena = cena * 0.90;
- }
- else if (obiskovalec.Status == Status.študent)
- {
- return cena = cena * 0.85;
- }
- else
- return cena;
- }
- public bool MestoProsto(Termin termin)
- {
- Termin t = najdiTermin(termin);
- if (t != null)
- {
- return t.prostoMesto();
- }
- else
- {
- Console.WriteLine("Termin ne obstaja");
- return false;
- }
- }
- /// POMOŽNA METODA
- public static void Temp()
- {
- foreach(Termin t in termini)
- {
- Console.WriteLine(t.ZačetekOgleda + "" + t.KonecOgleda);
- }
- }
- }
- class Termin
- {
- private DateTime začetekOgleda;
- private DateTime konecOgleda;
- private Zival dodeljenaŽival;
- public DateTime ZačetekOgleda
- {
- get { return začetekOgleda; }
- set { začetekOgleda = value; }
- }
- public DateTime KonecOgleda
- {
- get { return konecOgleda; }
- set { konecOgleda = value; }
- }
- public Zival DodeljenaŽival
- {
- get { return dodeljenaŽival; }
- set { dodeljenaŽival = value; }
- }
- public Termin(DateTime _začetekOgleda, DateTime _konecOgleda, Zival _dodeljenaZival)
- {
- ZačetekOgleda = _začetekOgleda;
- KonecOgleda = _konecOgleda;
- DodeljenaŽival = _dodeljenaZival;
- }
- //Seznam na izlet prijavljenih obiskovalcev
- public Obiskovalec[] seznam = new Obiskovalec[5];
- private int steviloPrijavljenih = 0;
- ///Helper metoda za INTERFACE ProdajKarto
- public void PrijaviObiskovalca(Obiskovalec novObiskovalec)
- {
- //mislim da je seznam.Length-1 napaka, sm dal stran
- if (steviloPrijavljenih == seznam.Length)
- {
- Console.WriteLine("Seznam je poln");
- }
- else
- {
- seznam[steviloPrijavljenih] = novObiskovalec;
- steviloPrijavljenih++;
- Console.WriteLine("Obiskovalec {0} {1} je dodan na seznam", novObiskovalec.Ime, novObiskovalec.Priimek);
- }
- }
- ///Helper metoda za INTERFACE PrekliciKarto
- public void OdjaviObiskovalca(Obiskovalec obiskovalec)
- {
- for(int i = 0; i < seznam.Length; i++)
- {
- if (seznam[i].Email == obiskovalec.Email)
- {
- seznam[i] = null;
- steviloPrijavljenih--;
- break;
- }
- }
- Obiskovalec[] novSeznam = new Obiskovalec[seznam.Length];
- for(int i = 0; i < novSeznam.Length; i++)
- {
- if (seznam[i] != null)
- {
- novSeznam[i] = seznam[i];
- }
- }
- seznam = novSeznam;
- }
- ///Helper metoda za INTERFACE MestoProsto
- public bool prostoMesto()
- {
- return seznam.Length > steviloPrijavljenih + 1;
- }
- }
- class Obiskovalec
- {
- private string ime;
- private string priimek;
- private Spol spol;
- private DateTime datumRojstva;
- private string email;
- private Status status;
- public string Ime
- {
- get { return ime; }
- set { ime = value; }
- }
- public string Priimek
- {
- get { return priimek; }
- set { priimek = value; }
- }
- public Spol Spol
- {
- get { return spol; }
- set { spol = value; }
- }
- public DateTime DatumRojstva
- {
- get { return datumRojstva; }
- set { datumRojstva = value; }
- }
- public string Email
- {
- get { return email; }
- set { email = value; }
- }
- public Status Status
- {
- get { return status; }
- set { status = value; }
- }
- public Obiskovalec(string _ime, string _priimek, Spol _spol, DateTime _datumRojstva, string _email, Status _status)
- {
- Ime = _ime;
- Priimek = _priimek;
- Spol = _spol;
- DatumRojstva = _datumRojstva;
- Email = _email;
- Status = _status;
- }
- public bool Enakost(Obiskovalec ob1, Obiskovalec ob2)
- {
- if (ob1.ime == ob2.ime && ob1.priimek == ob2.priimek && ob1.spol == ob2.spol && ob1.DatumRojstva == ob2.DatumRojstva)
- {
- Console.WriteLine("Osebi sta enaki");
- return true;
- }
- else
- {
- Console.WriteLine("Osebi sta različni");
- return false;
- }
- }
- }
- class Zival
- {
- private string poreklo;
- private int starost;
- private double teza;
- private Kartoteka kartoteka;
- private DnevnikHranjenja dnevnik;
- private Spol spol;
- //Getterji setterji
- public Spol _spol
- {
- get { return spol; }
- set { spol = value; }
- }
- public Kartoteka _kartoteka
- {
- get { return kartoteka; }
- set { kartoteka = value; }
- }
- public DnevnikHranjenja _dnevnik
- {
- get { return dnevnik; }
- set { dnevnik = value; }
- }
- public int _starost
- {
- get { return starost; }
- set { starost = value; }
- }
- public double _teza
- {
- get { return teza; }
- set { teza = value; }
- }
- public string _poreklo
- {
- get { return poreklo; }
- set { poreklo = value; }
- }
- public Zival()
- {
- }
- public Zival(string _poreklo, int _starost, double _teza, Spol Sp, Kartoteka Kart)
- {
- poreklo = _poreklo;
- starost = _starost;
- teza = _teza;
- _spol = Sp;
- _kartoteka = Kart;
- }
- ////3. Konstruktor
- //public Zival(Spol spol,string _poreklo, int _starost, double _teza, Kartoteka _kartoteka, DnevnikHranjenja _dnevnik) : this(_poreklo, _starost, _teza)
- //{
- // kartoteka = _kartoteka;
- // dnevnik = _dnevnik;
- // spol = _spol;
- //}
- //Virtualna metoda, ki jo predefiniramo v izpeljanih razredih
- public virtual void Izpis()
- {
- Console.WriteLine("\nPoreklo: {0}, starost {1}, teza {2},\nKartoteka: Opis težav: {3}, " +
- "Datum pregleda: {4}", poreklo, starost,
- teza, kartoteka._opisTezav, kartoteka._datum);
- }
- }
- class OdraslaZival : Zival
- {
- private int steviloPotomcev;
- public int _steviloPotomcev
- {
- get { return steviloPotomcev; }
- set { steviloPotomcev = value; }
- }
- //public OdraslaZival(int potomci, string _poreklo, int _starost, double _teza, Kartoteka _kartoteka, DnevnikHranjenja _dnevnik, Spol _spol)
- // :base(_spol, _poreklo, _starost, _teza, _kartoteka, _dnevnik)
- //{
- // _steviloPotomcev = potomci;
- // //Kaj je praviln način nastavljanja vrednosti v konstruktorju?
- // /*Popravi poimenovanja v vseh tak ko si tu naredo */
- //}
- public OdraslaZival(int SteviloPotomcev, string _poreklo, int _starost, double _teza, Spol Sp, Kartoteka Kart)
- : base(_poreklo, _starost, _teza, Sp, Kart)
- {
- _steviloPotomcev = SteviloPotomcev;
- }
- /*3 naloga*/
- public sealed override void Izpis()
- {
- base.Izpis();
- Console.WriteLine("Potomci: {0} \n", _steviloPotomcev);
- }
- }
- class Mladic : Zival
- {
- private Prehranjevanje prehranjevanje;
- public Prehranjevanje _prehranjevanje
- {
- get { return prehranjevanje; }
- set { prehranjevanje = value; }
- }
- public Mladic(Prehranjevanje Hranjenje, string _poreklo, int _starost, double _teza, Spol Sp, Kartoteka _kartoteka)
- : base(_poreklo, _starost, _teza, Sp, _kartoteka)
- {
- _prehranjevanje = Hranjenje;
- }
- //public Mladic(Prehranjevanje hrana, string _poreklo, int _starost, double _teza, Kartoteka _kartoteka, DnevnikHranjenja _dnevnik, Spol _spol)
- // : base(_spol,_poreklo, _starost, _teza, _kartoteka, _dnevnik)
- //{
- // hrana = _prehranjevanje;
- //}
- public override void Izpis()
- {
- base.Izpis();
- Console.WriteLine("Žival je {0}\n ", _prehranjevanje);
- }
- }
- class Kartoteka
- {
- private DateTime datum;
- private string opisTezav;
- public DateTime _datum
- {
- get { return datum; }
- set { datum = value; }
- }
- public string _opisTezav
- {
- get { return opisTezav; }
- set { opisTezav = value; }
- }
- //default constructor
- public Kartoteka()
- {
- }
- public Kartoteka(DateTime _datum, string _opisTezav)
- {
- datum = _datum;
- opisTezav = _opisTezav;
- }
- public void Izpis()
- {
- Console.WriteLine("Datum: {0}, opis težav: {1}", datum, opisTezav);
- }
- }
- abstract class DnevnikHranjenja
- {
- private double kolicinaObroka;
- private DateTime datumObroka;
- private decimal porabaVode;
- public decimal _porabaVode
- {
- get { return porabaVode; }
- set { porabaVode = value; }
- }
- //Getterji setterji
- public double _kolicinaObroka
- {
- get { return kolicinaObroka; }
- set { kolicinaObroka = value; }
- }
- public DateTime _datumObroka
- {
- get { return datumObroka; }
- set { datumObroka = value; }
- }
- //Privzeti konstruktor
- public DnevnikHranjenja()
- {
- }
- //Drugi konstruktor
- public DnevnikHranjenja(double _kolicinaObroka, DateTime _datumObroka)
- {
- kolicinaObroka = _kolicinaObroka;
- datumObroka = _datumObroka;
- }
- public void Izpis()
- {
- Console.WriteLine("Količina: {0}, datum obroka {1}", kolicinaObroka, datumObroka);
- }
- ///Metoda za izračun porabljene vode glede na datum
- public decimal porabljenaVoda(DateTime zacetek, DateTime konec)
- {
- double razlika = (konec - zacetek).TotalDays;
- decimal poraba = (decimal)razlika * 10;
- //shranimo porabo v _porabaVode
- _porabaVode = poraba;
- return poraba;
- }
- ///Metoda za izračun porabljene vode glede na datum in vreme
- public decimal porabljenaVoda(DateTime zacetek, DateTime konec, string pogoji)
- {
- //shranimo klic prejsnje funkcije v porabo
- decimal poraba = porabljenaVoda(zacetek, konec);
- if (pogoji.ToLower() == "sončno" || pogoji.ToLower() == "soncno")
- {
- decimal rezultat = (poraba * 150) / 100;
- _porabaVode = rezultat;
- Console.WriteLine("Poraba v sončnem vremenu je {0} litrov", rezultat);
- return rezultat;
- }
- else
- {
- decimal rezultat = (poraba * 90) / 100;
- _porabaVode = rezultat;
- Console.WriteLine("Poraba deževnem vremenu je {0} litrov", rezultat);
- return rezultat;
- }
- }
- ///Abstraktna metoda
- public abstract void izracunajKalorijeObroka();
- }
- class Zajtrk : DnevnikHranjenja
- {
- private double beljakovine;
- private double ogljikoviHidrati;
- //get set
- public double _beljakovine
- {
- get { return beljakovine; }
- set { beljakovine = value; }
- }
- public double _ogljikoviHidrati
- {
- get { return ogljikoviHidrati; }
- set { ogljikoviHidrati = value; }
- }
- public Zajtrk(double Beljakovine, double OgljikoviHidrati, double _kolicinaObroka, DateTime _datumObroka)
- : base(_kolicinaObroka, _datumObroka)
- {
- _beljakovine = Beljakovine;
- _ogljikoviHidrati = OgljikoviHidrati;
- }
- //Prekrijemo metodo nadrazreda
- public new void Izpis()
- {
- Console.WriteLine("Beljakovine: {0}g, OgljikoviHidrati: {1}g", _beljakovine, _ogljikoviHidrati);
- }
- public override void izracunajKalorijeObroka()
- {
- double skupneCal = _beljakovine * 4.0 + _ogljikoviHidrati * 4.1;
- Console.WriteLine("Skupaj: {0} kalorij", skupneCal);
- }
- }
- class Vecerja : DnevnikHranjenja
- {
- private double beljakovine;
- private double ogljikoviHidrati;
- private double mascobe;
- public double _beljakovine
- {
- get { return beljakovine; }
- set { beljakovine = value; }
- }
- public double _ogljikoviHidrati
- {
- get { return ogljikoviHidrati; }
- set { ogljikoviHidrati = value; }
- }
- public double _mascobe
- {
- get { return mascobe; }
- set { mascobe = value; }
- }
- public Vecerja(double Beljakovine, double OgljikoviHidrati, double Mascobe, double _kolicinaObroka, DateTime _datumObroka)
- : base(_kolicinaObroka, _datumObroka)
- {
- _beljakovine = Beljakovine;
- _ogljikoviHidrati = OgljikoviHidrati;
- _mascobe = Mascobe;
- }
- public new void Izpis()
- {
- Console.WriteLine("Beljakovine: {0}g, OgljikoviHidrati: {1}g", _beljakovine, _ogljikoviHidrati);
- }
- public override void izracunajKalorijeObroka()
- {
- double skupneCal = _beljakovine * 4.0 + _ogljikoviHidrati * 4.1 + _mascobe * 9.0;
- Console.WriteLine("Skupaj: {0} kalorij", skupneCal);
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- #region
- //zival1.Izpis();
- ////zival2.Izpis();
- //Console.WriteLine("");
- ////zival3.Izpis();
- //Console.WriteLine("");
- /*--- DRUGA NALOGA---*/
- //dnevnik1.porabljenaVoda(new DateTime(2019, 3, 20), new DateTime(2019, 3, 27));
- //dnevnik1.porabljenaVoda(new DateTime(2019, 3, 20), new DateTime(2019, 3, 27), "slabo");
- //dnevnik2.porabljenaVoda(new DateTime(2019, 5, 10), new DateTime(2019, 6, 27), "sončno");
- /*-- PRVA NALOGA-- */
- //DnevnikHranjenja dnevnik1 = new DnevnikHranjenja(3, new DateTime(2019, 3, 4));
- //Zival zival1 = new Zival(Spol.moski,"Afrika", 22, 150, kartoteka1, dnevnik1);
- //DnevnikHranjenja dnevnik2 = new DnevnikHranjenja(10, new DateTime(2019, 3, 4));
- //Zival zival2 = new Zival(Spol.zenska,"Afrika", 32, 400, kartoteka2, dnevnik2);
- //DnevnikHranjenja dnevnik3 = new DnevnikHranjenja(2, new DateTime(2019, 3, 4));
- //Zival zival3 = new Zival(Spol.zenska,"Afrika", 5, 22, kartoteka3, dnevnik3);
- /*--- TRETJA NALOGA---*/
- //Kartoteka kartoteka1 = new Kartoteka(new DateTime(2014, 4, 21), "Klopni menigitis");
- //Kartoteka kartoteka2 = new Kartoteka(new DateTime(2013, 4, 10), "Pljučnica");
- //Kartoteka kartoteka3 = new Kartoteka(new DateTime(2012, 3, 5), "Depresija");
- //Zajtrk zajtrk = new Zajtrk(50, 200, 0.5, new DateTime(2019, 3, 4));
- //Vecerja vecerja = new Vecerja(40, 60, 20, 0.3, new DateTime(2019, 3, 4));
- //OdraslaZival odraslaZival = new OdraslaZival(4, "Azije", 28, 80, Spol.moski, kartoteka1);
- //Mladic mladic = new Mladic(Prehranjevanje.vsejedec, "Azija", 3, 10, Spol.zenska, kartoteka2);
- ////zajtrk.Izpis();
- ////vecerja.Izpis();
- //odraslaZival.Izpis();
- //mladic.Izpis();
- //zajtrk.izracunajKalorijeObroka();
- //vecerja.izracunajKalorijeObroka();
- #endregion
- Kartoteka k1 = new Kartoteka(new DateTime(2019, 9, 9), "Bronhitis");
- Zival zival1 = new Zival("Severna Amerika", 18, 240, Spol.moski, k1);
- Obiskovalec obiskovalec1 = new Obiskovalec("Miha", "Novak", Spol.moski, new DateTime(1999, 08, 30), "miha@yahoo.com", Status.študent);
- Obiskovalec obiskovalec2 = new Obiskovalec("Jona", "Potrč", Spol.zenska, new DateTime(1996, 02, 19), "jona@yahoo.com", Status.študent);
- Obiskovalec obiskovalec3 = new Obiskovalec("Jure", "Meh", Spol.moski, new DateTime(1990, 02, 22), "jure@yahoo.com", Status.zaposlen);
- Obiskovalec obiskovalec4 = new Obiskovalec("Žiga", "Petelin", Spol.zenska, new DateTime(2000, 08, 19), "ziga@yahoo.com", Status.zaposlen);
- Obiskovalec obiskovalec5 = new Obiskovalec("Janez", "Novak", Spol.moski, new DateTime(1912, 03, 19), "janez@yahoo.com", Status.upokojenec);
- Obiskovalec obiskovalec6 = new Obiskovalec("Tadej", "Tomič", Spol.moski, new DateTime(1992, 05, 19), "tadej@yahoo.com", Status.študent);
- Termin termin1 = new Termin(new DateTime(2012, 12, 19), new DateTime(2012, 12, 19), zival1);
- Termin termin2 = new Termin(new DateTime(2019, 5, 5), new DateTime(2019, 5, 6), zival1);
- Termin termin3 = new Termin(new DateTime(2019, 5, 6), new DateTime(2019, 5, 7), zival1);
- Termin termin4 = new Termin(new DateTime(2019, 5, 7), new DateTime(2019, 5, 8), zival1);
- Termin termin5 = new Termin(new DateTime(2019, 5, 9), new DateTime(2019, 5, 10), zival1);
- Termin termin6 = new Termin(new DateTime(2019, 8, 8), new DateTime(2019, 8, 9), zival1);
- Termin[] terminiIzletov = new Termin[5];
- terminiIzletov[0] = termin1;
- terminiIzletov[1] = termin2;
- terminiIzletov[2] = termin3;
- terminiIzletov[3] = termin4;
- terminiIzletov[4] = termin5;
- Izlet izlet1 = new Izlet("Ogled grizzlijev", 80, 12, terminiIzletov);
- obiskovalec1.Enakost(obiskovalec2, obiskovalec1);
- obiskovalec1.Enakost(obiskovalec1, obiskovalec1);
- //Tu bo obvestilo o napačnem terminu
- izlet1.ProdajKarto(termin6,obiskovalec1);
- //Prodaj karto
- izlet1.ProdajKarto(termin1,obiskovalec1);
- izlet1.ProdajKarto(termin1,obiskovalec2);
- izlet1.ProdajKarto(termin1,obiskovalec3);
- izlet1.ProdajKarto(termin1,obiskovalec4);
- izlet1.ProdajKarto(termin1,obiskovalec5);
- izlet1.ProdajKarto(termin1,obiskovalec5);
- //Prekliči karto
- //izlet1.PrekliciKarto(termin1, obiskovalec1);
- //Izračunaj ceno
- double cena=izlet1.IzračunajCeno(obiskovalec1);
- Console.WriteLine(cena);
- //Prosto mesto
- Console.WriteLine(izlet1.MestoProsto(termin1));
- Console.WriteLine(izlet1.MestoProsto(termin2));
- Console.WriteLine("Prosto mesto: {0}", termin2.prostoMesto() ? "Da" : "Ne");
- //Izlet.Temp();
- Console.ReadLine();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement