Programiranje 3 - GUI nakupovalni listek

Programiranje 3 - GUI nakupovalni listek

Avtor: Petra Adamič

Opis problema in ideja rešitve

Opis problema


Sestavi uporabniški vmesnik, ki omogoča enostavno sestavljanje in urejanje nakupovalnega listka. Vsebino nakupovalnega listka hranimo na datoteki, ob zagonu jo program prikaže, omogoča urejanje (izločanje postavk, dodajanje postavk), ob zaključku pa se vsebina spet shrani na datoteko.


Ideja rešitve


Naredimo uporabniški vmesnik, kjer imamo del, kamor se izpiše vsebina nakupovalnega listka ter dve vnosni polji ter dva gumba za dodajanje ali odstranjevanje postavk na listek.

Razlaga algoritma

Ob zagonu aplikacije se na glavno prikazovalno okno, ki ga ustvarimo s pomočjo ukaza RichTextBox, izpiše vsebina datoteke. Datoteko odpremo v pomožni metodi Listek, ki vrne seznam. Vsak element seznama predstavlja vrstico datoteke oziroma postavko na listku.

Ko vpišemo novo postavko, jo s pomočjo gumba Dodaj postavko potrdimo in zapišemo na listek. To storimo tako, da najprej izbrišemo celotno datoteko in nato postavko dodamo seznamu prejšnjih postavk, to pa zopet napišemo na datoteko.

Če želimo neko postavko izbrisati, jo iz seznama odstranimo in na datoteko znova napišemo nov seznam. S tem že sproti spreminjamo datoteko.

public partial class GlavnaForma : Form
    {
        public GlavnaForma()
        {
            InitializeComponent();
        }
        //spremenljivka z imenom datoteke
        private string datoteka="listek.txt";

        public List<string> Listek()
        {
            List<string> sez= new List<string>();
            string vrstica = "";
            using (StreamReader beri = new StreamReader(datoteka))
            {
                while ((vrstica = beri.ReadLine()) != null)
                {
                    sez.Add(vrstica);
                }
            }
           return sez;
        }


        private void GlavnaForma_Load(object sender, EventArgs e)
       {
           List<string> sez = Listek();
           for (int i = 0; i < sez.Count; i++)
           {
               rtbIzpis.Text += sez[i];
               rtbIzpis.Text += Environment.NewLine;//ali "\n"
           }
       }

        private void btDodaj_Click(object sender, EventArgs e)
        {
            List<string> sez = Listek();
           sez.Add(tbDodaj.Text);
           if (File.Exists(datoteka))
           {
               File.Delete(datoteka);
           }
           StreamWriter pisi = new StreamWriter(datoteka);
           for (int i = 0; i < sez.Count; i++)
           {
               pisi.WriteLine(sez[i]);
           }
               pisi.Close();
               rtbIzpis.Text = "";
               GlavnaForma_Load(sender,e);
               tbDodaj.Text = "";
        }

        private void btOdstrani_Click(object sender, EventArgs e)
        {
            List<string> sez = Listek();
            sez.Remove(tbOdstrani.Text);
            if (File.Exists(datoteka))
            {
                File.Delete(datoteka);
            }
            StreamWriter pisi = new StreamWriter(datoteka);
            for (int i = 0; i < sez.Count; i++)
            {
                pisi.WriteLine(sez[i]);
            }
            pisi.Close();
            rtbIzpis.Text = "";
            GlavnaForma_Load(sender, e);
            tbOdstrani.Text = "";
        }
    }

Testni primeri

(listek-izgled.PNG)
primer izgleda aplikacije

Filmček

0%
0%