コード例 #1
0
        // Metodi - kuitataan haluttu määrä työntekijällä maksamattomina olevista korvauksista maksetuiksi
        public void KuittaaMaksetuiksi(Tyontekija valittu_tyontekija)
        {
            if (valittu_tyontekija.Maksamattomat == 0)
            {
                Console.WriteLine("Ei maksamattomia korvauksia");
                return;
            }
            Console.WriteLine("Maksamattomia korvauksia: " + valittu_tyontekija.Maksamattomat);
            Console.WriteLine("Kuinka suurella summalla haluat kuitata korvauksia maksetuiksi?");
            double maksa_korvauksia = Convert.ToDouble(Console.ReadLine());

            valittu_tyontekija.MaksaKorvauksia(maksa_korvauksia);
            Console.WriteLine("\nHenkilölle " + valittu_tyontekija.getName() + " maksettu " + maksa_korvauksia);
            Console.WriteLine("Maksettuja: " + valittu_tyontekija.Maksetut + "  Maksamattomia: " + valittu_tyontekija.Maksamattomat);
            return;
        }
コード例 #2
0
 // Metodi - poista työntekijälle kirjattu matka esim. kirjoitusvirheiden varalta
 public void PoistaMatka(Tyontekija valittu_tyontekija)
 {
     while (true)
     {
         if (valittu_tyontekija.getMatkat().Count > 0)
         {
             var matkalista = valittu_tyontekija.getMatkat();
             Console.WriteLine("Valitse minkä työmatkan haluat poistaa, 'P' palaa valikkoon: ");
             for (int i = 0; i < matkalista.Count(); i++)
             {
                 Console.WriteLine("{0} - {1}", i + 1, matkalista[i].Tiedot());
             }
             string poista = Console.ReadLine();
             if (poista == "P" && poista == "p")
             {
                 return;
             }
             else if (Convert.ToInt32(poista) - 1 >= 0 && Convert.ToInt32(poista) - 1 < matkalista.Count())
             {
                 double korvaus = matkalista[Convert.ToInt32(poista) - 1].Korvaukset();
                 valittu_tyontekija.Maksamattomat = (korvaus * -1);
                 matkalista.RemoveAt(Convert.ToInt32(poista) - 1);
                 Console.WriteLine("Matka poistettu\n");
                 continue;
             }
             else
             {
                 Console.WriteLine("Väärä syöte\n");
                 return;
             }
         }
         else
         {
             Console.WriteLine("Henkilöllä ei ole tallennettuja matkoja");
             return;
         }
     }
 }
コード例 #3
0
        // Metodi - syötetään matkakohtaiset tiedot tallennusta varten
        public void MatkanTallennus(Tyontekija valittu_tyontekija)
        {
            double kk      = 0.44;  // Korvausten arvot, oletuksena vuoden 2021 arvot
            double puoliPR = 20;
            double kokoPR  = 44;

            Console.WriteLine("Oletusarvona vuoden 2021 korvaukset: Kilometrikorvaus {0} e/kk, Puolipäiväraha {1}e, Päiväraha {2}e", kk, puoliPR, kokoPR);
            Console.WriteLine("Haluatko muuttaa käytössä olevat korvaukset? K/E");
            string vastaus = Console.ReadLine();

            if (vastaus == "K")
            {
                MuutaKorvaukset(kk, puoliPR, kokoPR, out kk, out puoliPR, out kokoPR);     // Siirretty omaksi funktiokseen
            }

            Console.WriteLine("Anna matkan päivämäärä muodossa p.kk.v");
            string pvm = Console.ReadLine();

            Console.WriteLine("Anna lähtöaika (muoto 12:34)");
            string lahto = Console.ReadLine();

            Console.WriteLine("Anna paluuaika (muoto 15:22)");
            string paluu = Console.ReadLine();

            Console.WriteLine("Anna matkatut kilometrit");
            int kilometrit = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("\n");

            Matka uusi = new Matka(pvm, lahto, paluu, kilometrit, kk, puoliPR, kokoPR);  // Uusi Matka-objekti, jolle syötetään tarvittavat tiedot korvauslaskuja varten

            Console.WriteLine(uusi.Tiedot());
            valittu_tyontekija.Maksamattomat = uusi.Korvaukset();                       // Maksamattomat-metodin "set" komennolla lisätään valitulle työntekijälle matkan korvaukset
            valittu_tyontekija.AddMatka(uusi);                                          // Tallennetaan Matka työntekijälle
            Console.WriteLine("Työntekijälle kertynyt maksamattomia korvauksia: " + valittu_tyontekija.Maksamattomat);
        }
コード例 #4
0
        // Työntekijä-objektien lisääminen/poistaminen
        public List <Tyontekija> LuoPoistaTyontekija(List <Tyontekija> henkilot)
        {
            List <Tyontekija> newlist = new List <Tyontekija>();

            foreach (var x in henkilot)
            {
                newlist.Add(x);
            }
            while (true)
            {
                Console.WriteLine("Valitse toiminto: ");
                Console.WriteLine("1 - Luo työntekijä ");
                Console.WriteLine("2 - Poista työntekijä");
                Console.WriteLine("3 - Tallenna muutokset ja palaa alkuun");
                Console.WriteLine("4 - Hylkää muutokset ja palaa alkuun");

                string valinta = Console.ReadLine();
                Console.WriteLine("\n");
                switch (valinta)
                {
                case "1":

                    Console.WriteLine("Anna työntekijän nimi");
                    string nimi = Console.ReadLine();
                    if (!String.IsNullOrEmpty(nimi))
                    {
                        Tyontekija uusi = new Tyontekija(nimi);
                        newlist.Add(uusi);
                        Console.WriteLine("Työntekijä luotu\n");
                        continue;
                    }
                    else
                    {
                        Console.WriteLine("Et antanut nimeä.");
                        continue;
                    }

                case "2":
                    if (newlist.Count() == 0)
                    {
                        Console.WriteLine("Ei poistettavia työntekijöitä\n");
                        continue;
                    }
                    else
                    {
                        Console.WriteLine("Valitse poistettavaa henkilöä vastaava numero: \n");
                        for (int i = 0; i < newlist.Count(); i++)
                        {
                            Console.WriteLine("{0} - {1}", i + 1, newlist[i].getName());
                        }
                        string poista = Console.ReadLine();
                        if (Convert.ToInt32(poista) - 1 >= 0 && Convert.ToInt32(poista) - 1 < newlist.Count())
                        {
                            newlist.RemoveAt(Convert.ToInt32(poista) - 1);
                            continue;
                        }
                        else
                        {
                            Console.WriteLine("Väärä syöte\n");
                            continue;
                        }
                    }

                case "3":
                    return(newlist);

                case "4":
                    return(henkilot);

                default:
                    continue;
                }
            }
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: forsoll1/Testirepo12321
        static void Main(string[] args)
        {
            List <Tyontekija> henkilot = new List <Tyontekija>();
            Funktiot          funktio  = new Funktiot();


            // Yritetään lukea tiedosto, johon tallennettu ohjelman käsittelemät tiedot
            // Tiedoston path ongelma? Mikä olisi optimaalinen? Muutenkin tiedostoon tallentamisen varmuus täysi mysteeri.

            try
            {
                deser();
            }
            catch (Exception)
            {
                Console.WriteLine("");
            }


            // Päävalikko

            while (true)
            {
                Console.WriteLine("\nValitse toiminto:");
                Console.WriteLine("1 - Luo tai poista työntekijä");
                Console.WriteLine("2 - Kirjaa työmatkoja ja tarkastele työntekijöiden matkatietoja");
                Console.WriteLine("3 - Kertyneiden korvausten tarkastelu");
                Console.WriteLine("4 - Poistu ohjelmasta");
                string valinta = Console.ReadLine();
                Console.WriteLine("\n");

                if (valinta == "1")
                {
                    henkilot = funktio.LuoPoistaTyontekija(henkilot);
                    ser();                      // Huom. ser-funktio tallentaa (potentiaalisesti) muuttuneet tiedot tiedostoon.
                                                // Jos teet muutoksia ohjelman rakenteeseen pidä huoli, että ser-tulee kutsuttua uusien tietojen tallennusta varten.
                }
                else if (valinta == "2")
                {
                    TyontekijoidenKasittely();
                    ser();
                }
                else if (valinta == "3")
                {
                    funktio.KorvaustenTarkastelu(henkilot);
                }
                else if (valinta == "4")
                {
                    break;
                }
            }



            // Funktio - Lisätään matkoja työntekijälle ja tulostetaan työntekijäkohtaista tietoa

            void TyontekijoidenKasittely()
            {
                if (henkilot.Count == 0)
                {
                    return;
                }

                Tyontekija valittu_tyontekija = funktio.TyontekijanValinta(henkilot);   // Tässä vaiheessa valitaan funktion avulla työntekijä, johon toiminnot kohdistuvat

                while (true)
                {
                    Console.WriteLine("\nValittu työntekijä: " + valittu_tyontekija.getName());
                    Console.WriteLine("\nMitä haluat tehdä?");
                    Console.WriteLine("1 - Kirjaa uusi matka");
                    Console.WriteLine("2 - Kuittaa korvauksia maksetuiksi");
                    Console.WriteLine("3 - Katso maksamattomat ja maksetut korvaukset");
                    Console.WriteLine("4 - Työntekijän työmatkat");
                    Console.WriteLine("5 - Poista tallennettu työmatka");
                    Console.WriteLine("6 - Palaa alkuvalikkoon");
                    Console.WriteLine("7 - Valitse uusi työntekijä");

                    string vastaus = Console.ReadLine();
                    Console.WriteLine("\n");


                    if (vastaus == "1")
                    {
                        funktio.MatkanTallennus(valittu_tyontekija);
                    }

                    else if (vastaus == "2")
                    {
                        funktio.KuittaaMaksetuiksi(valittu_tyontekija);
                    }

                    else if (vastaus == "3")
                    {
                        Console.WriteLine("\nHenkilölle " + valittu_tyontekija.getName() + " maksamattomat korvaukset: " + valittu_tyontekija.Maksamattomat);
                        Console.WriteLine("Henkilölle " + valittu_tyontekija.getName() + " maksetut korvaukset: " + valittu_tyontekija.Maksetut);
                    }

                    else if (vastaus == "4")
                    {
                        if (valittu_tyontekija.getMatkat().Count > 0)
                        {
                            var matkalista = valittu_tyontekija.getMatkat();    // Haetaan valitun työntekijän Matkat-listaan tallennetut Matka-objektit.
                            Console.WriteLine("Työmatkojen tiedot: ");
                            foreach (Matka x in matkalista)
                            {
                                Console.WriteLine(x.Tiedot());                  // Tulostetaan tallennettujen matkojen tiedot Matka-luokasta löytyvän Tiedot-metodin avulla.
                            }
                        }
                        else
                        {
                            Console.WriteLine("Henkilöllä ei ole tallennettuja matkoja");
                        }
                    }

                    else if (vastaus == "5")
                    {
                        funktio.PoistaMatka(valittu_tyontekija);
                    }

                    else if (vastaus == "6")
                    {
                        return;
                    }

                    else if (vastaus == "7")
                    {
                        valittu_tyontekija = funktio.TyontekijanValinta(henkilot);
                        continue;
                    }
                }
            }

            // Funktio - Kirjoitetaan henkilot-listan kaikki sisältö xml-tiedostoon. Täyttä voodoota, toimii lähinnä tuurilla.

            void ser()
            {
                // Alustaa tiedoston, muutoin voi tulla ongelmia esim. jos yritetään tallentaa tyhjää listaa työntekijätietojen poistamisen jälkeen.
                try
                {
                    FileStream fileStream = File.Open(Environment.CurrentDirectory + "\\mytext.xml", FileMode.Open);
                    fileStream.SetLength(0);
                    fileStream.Close();
                }
                catch (Exception)
                {
                    Console.WriteLine("");
                }


                Stream stream = File.OpenWrite(Environment.CurrentDirectory + "\\mytext.xml");
                DataContractSerializer DataSer = new DataContractSerializer(typeof(List <Tyontekija>));

                DataSer.WriteObject(stream, henkilot);
                stream.Close();
            }

            // Funktio - Puretaan xml-tiedoston sisältö, muunnetaan luettavaan muotoon ja luodaan henkilot-lista sen pohjalta.

            void deser()
            {
                Stream stream = File.OpenRead(Environment.CurrentDirectory + "\\mytext.xml");

                XmlDictionaryReader    reader = XmlDictionaryReader.CreateTextReader(stream, new XmlDictionaryReaderQuotas());
                DataContractSerializer seri   = new DataContractSerializer(typeof(List <Tyontekija>));

                henkilot = (List <Tyontekija>)seri.ReadObject(reader, true);

                reader.Close();
                stream.Close();
            }
        }