Za potrebe auto placa kreirana je baza podataka u kojoj se vodi evidencija o svim vozilima.
Dijagram za postojeću bazu dat je na slici:

slika baze za B1 zadatak sa Maturskog 2021

SQL Query za kreiranje i popunjavanje baze u MS SQL Serveru: ( LINK->Preuzmi fajl, levi klik- Save Link As...)

ili, ako ste za druge formate, možete preuzeti: Access ACCDB bazu, ili Access MDB bazu ili upit koji pokrećete na MySql-u nakon kreiranja baze B31 (LINK - preuzmi upit, levi klik- Save Link As...)

Zadatak:

Kreirati desktop aplikaciju koja će omogućiti rad sa postojećom bazom.

Unošenje podataka o gorivu obavlja se preko obrasca čiji je izgled dat na slici nastavku:

zadata slika

  • U okviru sa listom prikazuju se podaci o gorivu sortirani po šifri u rastući niz.
  • Ukoliko gorivo sa unetom šifrom postoji prikazuju se podaci o njemu.
  • Obezbediti da korisnik dobije poruku o uspešnom upisu/brisanju/izmeni podataka, kao i o obrađenim greškama.

Uputstvo za rad:

  • Prvo postaviti komponente: 3x TextBox, 4x Button, 6x Label, 1x ListBox
  • Zatim isprogramirati dugme za izlaz: Application.Exit();
  • Dvoklikom na formu, isprogramirati da se prilikom učitavanja forme popuni ListBox1 sa podacima iz tabele.

Savet: Ovo uraditi u posebnoj metodi koja se onda poziva iz Form1.Load().

Prvo treba da se prilikom inicijalizacije komponenti, u konstruktoru, podese tab stopovi za List box.

Klik na dugme ispod da vidite primer kako se to može uraditi:



            
            listBox1.UseCustomTabOffsets = true;
            listBox1.CustomTabOffsets.Clear();
            listBox1.CustomTabOffsets.Add(20);
            listBox1.CustomTabOffsets.Add(95);

Zatim napraviti metodu UnesiListu() koja će se pozivati svaki put kada treba uneti listu sa podacima:


void UnesiListu()
   {
       listBox1.Items.Clear();
       ***Connection konekcija = new ***Connection(konSTR);
       string Upit = "SELECT GorivoID AS 'Sifra',Naziv,Opis FROM Gorivo ORDER BY GorivoID";
       try
       {
           konekcija.Open();
           ***Command komanda = new ***Command(Upit, konekcija);
           ***DataReader rd = komanda.ExecuteReader();
           while (rd.Read())
               listBox1.Items.Add(rd[0] + "\t" + rd[1] + "\t" + rd[2]);
           konekcija.Close();
       }
       catch (Exception a)
       {
           MessageBox.Show(a.Message);
           MessageBox.Show("Greska!");
       }
   }

*********** *************

  • Kada se unese šifra, treba da se označi gorivo sa tom šifrom u ListBox-u, a ako ne postoji, onda se ne označava:

 // kako ovo uraditi?

  • Klikom na dugme "Obriši" treba da se izabrano gorivo obriše iz tabele (i iz baze)

// kako ovo uraditi?

Obratite pažnju da se prilikom brisanja goriva, treba ili obrisati sva vozila koja koriste to gorivo, ili im postaviti da koriste drugo gorivo. Brisanje neće biti moguće ako postoji neko vozilo koje je ostalo da koristi to gorivo. zbog referencijalnog integriteta - GorivoID je strani ključ u tabeli vozilo!



***Connection konekcija = new ***Connection(konSTR);
string upit1 = "DELETE FROM Gorivo WHERE GorivoID = @sifra1 ";
string upit2 = "DELETE FROM Vozilo WHERE GorivoID = @sifra2 ";

string sifra = tb_sifra.Text;
try
{
    konekcija.Open();
    ***Command komanda1 = new ***Command(upit1, konekcija);
    ***Command komanda2 = new ***Command(upit2, konekcija);
    komanda1.Parameters.AddWithValue("@sifra1", sifra);
    komanda2.Parameters.AddWithValue("@sifra2", sifra);
    komanda2.ExecuteNonQuery();
    komanda1.ExecuteNonQuery();
    MessageBox.Show("Uspesno obrisano");
    listBox1.Refresh();
    UnesiListu();
    konekcija.Close();
 }
catch (Exception a)
{
    MessageBox.Show(a.Message);
    MessageBox.Show("Greska!");
  }
  • Klikom na dugme "Izmeni" treba da se izmene podaci o izabranom gorivu

// kako ovo uraditi?

  • Klikom na dugme "Upiši" treba da se upiše novi red u tabelu o gorivu
// kako ovo uraditi?



***Connection konekcija = new ***Connection(konSTR);
string upit = "insert into gorivo(GorivoID,Naziv,Opis)" + "values(@sifra,@naziv,@opis)";

string sifra = tb_sifra.Text;
string naziv = tb_naziv.Text;
string opis = tb_opis.Text;

try
{
    konekcija.Open();
    ***Command komanda = new ***Command(upit, konekcija);
    komanda.Parameters.AddWithValue("@sifra", sifra);
    komanda.Parameters.AddWithValue("@naziv", naziv);
    komanda.Parameters.AddWithValue("@opis", opis);
    komanda.ExecuteNonQuery();
    MessageBox.Show("Uspesno upisano");
    listBox1.Refresh();
    UnesiListu();
    konekcija.Close();
}
catch (Exception a)
{
    MessageBox.Show(a.Message);
    MessageBox.Show("Greska!");
}

Last modified: Thursday, 2 October 2025, 11:25 AM