Professional Documents
Culture Documents
SEMINARSKI RAD
Zrenjanin, 9.4.2015.
SADRŽAJ
1. UVOD ............................................................................................................................................... 3
2. KORIŠTENE TEHNOLOGIJE ........................................................................................................ 4
3. KREIRANJE APLIKACIJE ............................................................................................................. 6
4. ZAKLjUČAK ................................................................................................................................. 21
5. LITERATURA ............................................................................................................................... 22
6. LISTING KODOVA ....................................................................................................................... 23
2
1. UVOD
Za ovaj seminarski rad kreirana je aplikacija koja može poslužiti za prodavnicu automobila.
Korisnik aplikacije ima mogućnost da unese neke statičke podatke kao što su podaci o
automobilima, prodavcima i načinima plaćanja, koje može dodavati, menjati, brisati i imati
pregled o njima u DataGridView kontroli. Radi upotrebljivosti aplikacije, omogućen je unos
kupovine od strane nekog kupca, koju vrši izabrani prodavac, načini plaćanja i valute, kao i unos
datuma kupovine. Može se izabrati i više od jednog automobila pomoću komande
CheckedListBox. Svaki kupac sadrži sledeće podatke: ime, prezime, adresa. Za svaki unos se
može napraviti izmena, tako npr. prodavac se može zameniti nekim drugim prodavcem. Kada
korisnik želi da unese još nekog prodavca, kupca ili vrstu plaćanja, potrebno je da klikne na
dugme Dodaj a zatim Potvrdi. Korisnik u svakom trenutku može odustati klikom na dugme
Odustani. Isto tako može obrisati ono što je prethodno uneto. Kada se izvrši unos Kupaca
podacima je omogućen prikaz u DataGridView kontroli.
TextBox
Label
DataGridView
ComboBox
CheckedListBox
DateTimePicker
ReportViewer
MenuStrip
3
2. KORIŠTENE TEHNOLOGIJE
Prilikom kreiranja ove aplikacije koristio sam programski jezik C# i .NET okruženje. C#
predstavlja jezik koji je razvijen od strane Microsofta. Razvijen sa ciljem kako bi se radilo sa
.NET okruženjem.
4
Slika 1.Dijagram arhitektonskih komponenata .NET Frameworka
5
3. KREIRANJE APLIKACIJE
Kreiramo novu aplikaciju pod nazivom Seminarski. Prvo dodajemo novu bazu u projekat pod
nazivom: AutomobiliDB. Kako bi smo dodali novu bazu objekat kliknemo desnim tasterom miša
na ime projekta i izaberemo Add → New Item. Zatim u prozoru koji nam se otvori odaberemo
Service-Based Database i upišemo AutomobiliDB.
Nakon toga nam se pojavljuje prozor Data Source Configuration Wizard koji zatvaramo, pošto
ćemo podešavanja izvršiti kasnije. Kako bi smo dodali tabele u bazu kliknemo na desnim
tasterom na folder Tables i izaberemo opciju Add New Table.
6
Slika 4.Dodavanje novih tabela u bazu
Posle toga u bazu dodajemo u bazu šest novih tabela pod nazivima: Automobil, Kupovina,
Kupac, Automobil_Kupovina, Placanje, Prodavac.
Za kolonu Kupac_ID namestimo da je primarni ključ. Posle toga za ovu kolonu namestimo
osobinu Identity Specification → Is Identity postaviti na Yes. Završavamo tako sto snimamo
tabelu pod nazivom Kupac.
7
U okviru tabele Kupovina dodajemo sledeće kolone:
Za kolonu Kupovina_ID namestimo da je primarni ključ. Posle toga za ovu kolonu namestimo
osobinu Identity Specification → Is Identity postaviti na Yes. Završavamo tako sto snimamo
tabelu pod nazivom Kupovina.
Za kolonu Automobil _ID namestimo da je primarni ključ. Posle toga za ovu kolonu namestimo
osobinu Identity Specification → Is Identity postaviti na Yes. Završavamo tako sto snimamo
tabelu pod nazivom Automobil.
8
U okviru tabele Placanje dodajemo sledeće kolone:
Za kolonu Placanje_ID namestimo da je primarni ključ. Posle toga za ovu kolonu namestimo
osobinu Identity Specification → Is Identity postaviti na Yes. Završavamo tako sto snimamo
tabelu pod nazivom Placanje.
Za kolonu Prodavac_ID namestimo da je primarni ključ. Posle toga za ovu kolonu namestimo
osobinu Identity Specification → Is Identity postaviti na Yes. Završavamo tako što snimamo
tabelu pod nazivom Prodavac.
Nakon toga dodajemo dijagram desnim klikom na Database Diagrams i odabirom opcije Add
New Diagram. Nakon toga u prozoru koji nam se pojavi izaberemo opciju Yes. Nakon toga
selektujemo sve tabele i dodamo ih pomoću opcije Add. Posle dodavanja tabele povezujemo
kolone sa primarnim ključem sa kolonama koje imaju isti naziv u drugim tabelama. Povezujemo:
9
Slika 11. Izgled dijagrama koji prikazuje veze između tabela
Posle kreiranog modela dodajemo pet klasa u projekat. Imena klasa su: Automobil, Kupovina,
Prodavac, Automobil_Kupovina, Placanje, Kupac.
Posle dodatih klasa u aplikaciju dodajemo pet novih formi. Prva forma koju dodajemo je
frmKupac. Izgled ove forme je prikazan na sledećoj slici.
10
Slika 12. Izgled forme frmKupac
Imena komponenti su:
Tekstualna polja
o TxtIme
o TxtPrezime
o TxtAdresa
Dugmići:
o btnDodaj
o btnPromeni
o btnObrisi
o btnPotvrdi
o btnOdustani
DataGridView kontrola:
o dgKupci
11
Za DataGridView kontrolu osobinu Anchor postaviti na Top, Bottom, Left, Right, a za sve ostale
komponente osobinu Anchor postaviti na Top.
Korisniku se u okviru forme frmKupac omogućava da unese sledeće podatke u tekstualna polja
ime Kupaca, prezime Kupaca, adresa Kupaca. Pored toga korisnik ima mogućnost da podatke
koje uneo prikaže u DataGridView tako što će kliknuti na dugme Dodaj, a zatim na dugme
Potvrdi. Jedna od mogućnosti koju korisnik ima posle dodavanja Kupaca u DataGridView je da
promeni neke od podataka vezane za Kupaca klkom na dugme Promeni, a nakon toga klikom na
dugme Potvrdi. Korisnik ima i mogućnost da izbriše nekog od dodatih Kupaca u DataGridView
tako što selektuje tog pevača u DataGridView i klikne dugme Obriši, pa na dugme Potvrdi.
Ukoliko se korisnik predomisli on ima mogućnost da nakon klika na dugme Dodaj, Promeni ili
Obrisi obustavi akciju koju je želeo da izvede klikom na dugme Odustani.
U sledećem koraku dodajemo formu pod nazivom frmKupovina. Izgled ove forme je prikazan
na sledećoj slici:
12
Imena komponenti su:
DateTimePicker kontrola:
o dtDatumNarudzbine
ComboBox kontrole
o cbxKupac
o cbxPlacanje
CheckedListBox
o clbxAutomobil
Dugmići
o btnDodaj
o btnPromeni
o btnObrisi
o btnPotvrdi
o btnOdustani
DataGridView kontrole
o dgNarudzbine
o dgAutomobil
Za DataGridView kontrolu osobinu Anchor postaviti na Top, Bottom, Left, Right, a za sve ostale
komponente osobinu Anchor postaviti na Top.
U okviru forme frmKupovina korisnik ima mogućnost da izabere datum kupovine, nekog od
kupaca u ComboBox kontroli cbxKupac, neku od ponuđenih načina plaćanja u okviru ComboBox
kontrole cbxPlacanje i nekog od ponuđenih automobila u okviru CheckedListBox kontrole
clbxAutomobil. Korisnik kao mogućnost ima da te podatke prikaže u DataGridView tako što će
kliknuti na dugme Dodaj, a nakon toga na dugme Potvrdi. Sledeća od mogućnosti kada je dodao
podatke za prijavu korisnik može i da promeni neki od podataka vezano za korisnika klikom na
dugme Promeni, a zatim klikom na dugme Potvrdi. Pored ovih opcija korisnik može da izbriše
prijavu koju je uneo u DataGridView tako što selektuje narudžbinu koju želi da obriše u
DataGridView i pritisne dugme Obrisi, a posle toga dugme Potvrdi. Ukoliko se korisnik
predomisli on ima mogućnost da nakon klika na dugme Dodaj, Promeni ili Obrisi obustavi
akciju koju je želeo da izvede klikom na dugme Odustani.
13
Dodajemo treću formu pod nazivom frmAutomobil. Izgled ove forme je prikazan na sledećoj
slici.
Tekstualna polja
o TxtAutomobilc
o TxtBoja
o TxtBrojStampe
Dugmići
o btnDodaj
o btnPromeni
o btnObrisi
o btnPotvrdi
o btnOdustani
14
ComboBox kontrola:
o cbxProdavac
DataGridView kontrola:
o dgAutomobil
Za DataGridView kontrolu osobinu Anchor postaviti na Top, Bottom, Left, Right, a za sve ostale
komponente osobinu Anchor postaviti na Top.
U sledećem koraku dodajemo formu pod nazivom frmProdavac. Izgled ove forme je prikazan
na sledećoj slici:
15
Tekstualna polja
o txtIme
o txtPrezime
o txtDuznost
Dugmići
o btnDodaj
o btnPromeni
o btnObrisi
o btnPotvrdi
o btnOdustani
DataGridView kontrola
o dgProdavac
Za DataGridView kontrolu osobinu Anchor postaviti na Top, Bottom, Left, Right, a za sve ostale
komponente osobinu Anchor postaviti na Top.
U okviru forme frmProdavac korisnik ima mogućnost da unese sledeće podatke u tekstualna
polja i upiše ih u bazu: ime i prezime prodavca, kao i dužnost koju obavlja. Korisnik može te
podatke da prikaže u DataGridView tako što će pritisnuti na dugme Dodaj, a potom na dugme
Potvrdi. Sledeća od mogućnosti kada je dodao podatke za zaposlenog korisnik može i da
promeni neki od podataka vezano za prodavca klikom na dugme Promeni, a zatim klikom na
dugme Potvrdi. Nakon toga ovih korisnik može da obriše prodavca koju je uneo u DataGridView
tako što selektuje prodavca kojeg želi da obriše u DataGridView i pritisne dugme Obrisi, a zatim
dugme Potvrdi. Ukoliko se korisnik predomisli on ima mogućnost da nakon klika na dugme
Dodaj, Promeni ili Obrisi obustavi akciju koju je želeo da izvede klikom na dugme Odustani.
16
Dodajemo petu formu pod nazivom frmPlacanje. Izgled forme je prikazan na sledećoj slici.
Tekstualna polja
o txtNaziv
o txtTip
Dugmići
o btnDodaj
o btnPromeni
o btnObrisi
o btnPotvrdi
o btnOdustani
DataGridView kontrola
o dgPlacanje
17
Za DataGridView kontrolu osobinu Anchor postaviti na Top, Bottom, Left, Right, a za sve ostale
komponente osobinu Anchor postaviti na Top.
U okviru forme frmPlacanje korisnik ima na raspolaganju mogućnost da unese sledeće podatke u
tekstualna polja i upiše ih u bazu: način plaćanja i valutu plaćanja. Kao mogućnost korisnik ima i
da te podatke prikaže u DataGridView tako što će pritisnuti na dugme Dodaj, a potom na dugme
Potvrdi. Sledeća od mogućnosti kada je dodao podatke za pesmu korisnik može i da promeni
neki od podataka vezano za korisnika klikom na dugme Promeni, a zatim klikom na dugme
Potvrdi. Pored ovih opcija korisnik može da obriše uslugu koju je uneo u DataGridView tako što
selektuje pesmu koju želi da obriše u DataGridView i pritisne dugme Obrisi, a zatim dugme
Potvrdi. Ukoliko se korisnik predomisli on ima mogućnost da nakon klika na dugme Dodaj,
Promeni ili Obrisi obustavi akciju koju je želeo da izvede klikom na dugme Odustani.
Dodajemo još jednu formu koju ćemo koristiti kao izveštaje. Za naziv forme stavljamo
frmIzvestajAuto. Prikaz forme je prikazan na sledećoj slici.
Combobox
o cbxProdavac
18
ReportViewer
o reportViewer1
Osobinu Anchor za labelu i combobox stavimo na Top, a za reportviewer Top, Bottom, Left,
Right. U sledećem koraku dodajemo izveštaj rptAutomobil, a izvor podataka je objekat
rptAutomobil.
U okviru forme frmIzvestajAutomobil korisnik ima mogućnost da odabere nekog prodavca koga
je prethodno uneo u bazu i koji je izvršio neku prodaju i da za tog zaposlenog dobije sledeće
podatke: broj šasije, naziv automobila, boju automobila, kao i prikaz imena i prezimena
prodavca. Korisnik ima i mogućnost da odabere izveštaj za sve prodavce koji se nalaze u bazi
podataka.
Nakon toga prelazimo na glavnu formu, gde osobinu IsMdiContainer postavljamo na True. Posle
toga na glavnu formu stavljamo Menu Strip kontrolu koja poseduje sledeće stavke:
Stavka Podaci
Stavka Izvestaji
19
Slika 17. Izgled glavne forme
Na glavnoj formi korisnik ima mogućnost da odabere jednu od stavki Podaci ili Izvestaji, ako
odabere stavku Podaci pojavljuju mu se sledeće podstavke Placanje, Kupac, Prodavac,
Automobil i Kupovina. Klikom na podstavku Placanje prelazimo na formu frmPlacanje, klikom
na podstavku Kupac prelazimo na formu frmKupac, klikom na podstavku Prodavac prelazimo
na formu frmProdavac, klikom na podstavku Automobil prelazimo na formu frmAutomobil,
klikom na podstavku Kupovina prelazimo na formu frmKupovina. Klikom na stavku Izvestaji
korisniku se pojavljuje podstavka Automobil. Ukoliko korisnik klikne na podstavku Automobil
prelazi na formu frmIzvestajAutomobil.
Na kraju kreiranja svake forme, treba povezati događaje sa određenim dugmadima i stavkama
menija.
20
4. ZAKLjUČAK
21
5. LITERATURA
1. http://www.academia.edu
4. www.mikroknjiga.rs/Knjige/CT4/01_CT4.pdf
22
6. LISTING KODOVA
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ProdavnicaAutomobila
{
public partial class Placanje
{
partial void OnNacinChanging(string value)
{
if (string.IsNullOrEmpty(value))
throw new Exception("Nacin placanja mora biti unet!");
}
23
ctx.SaveChanges();
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ProdavnicaAutomobila
{
public partial class Kupac
{
partial void OnImeChanging(string value)
{
if (string.IsNullOrEmpty(value))
throw new Exception("Ime kupca mora biti uneto!");
}
24
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ProdavnicaAutomobila
{
public partial class Prodavac
{
partial void OnImeChanging(string value)
25
{
if (string.IsNullOrEmpty(value))
throw new Exception("Ime prodavca mora biti uneto!");
}
26
List<Prodavac> returnLista = prodavciList.ToList<Prodavac>();
return returnLista;
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ProdavnicaAutomobila
{
public partial class Automobil
{
partial void OnNazivChanging(string value)
{
if (string.IsNullOrEmpty(value))
throw new Exception("Naziv automobila mora biti unet!");
}
27
{
var auto = (from s in ctx.Automobils
where s.Automobil_ID == Automobil_ID
select s).FirstOrDefault();
auto.Naziv = Naziv;
auto.BS = BS;
auto.Boja = Boja;
auto.Prodavac_ID = Prodavac_ID;
ctx.SaveChanges();
}
}
using System;
using System.Collections.Generic;
28
using System.Linq;
using System.Text;
namespace ProdavnicaAutomobila
{
public partial class Kupovina
{
public void dodajKupovinu(List<int> autoIDs)
{
using (AutomobiliDBEntities ctx = new AutomobiliDBEntities())
{
foreach (int autoId in autoIDs)
{
Automobil aut = (from s in ctx.Automobils
where s.Automobil_ID == autoId
select s).FirstOrDefault();
this.Automobils.Add(aut);
}
ctx.Kupovinas.AddObject(this);
ctx.SaveChanges();
}
}
kupovina.Automobils.Clear();
foreach (int autId in autoIDs)
{
Automobil aut = (from s in ctx.Automobils
where s.Automobil_ID == autId
select s).FirstOrDefault(); ;
kupovina.Automobils.Add(aut);
}
ctx.SaveChanges();
}
}
29
public static List<Kupovina> ucitajKupovine()
{
using (AutomobiliDBEntities ctx = new AutomobiliDBEntities())
{
var kupovineList = from sl in ctx.Kupovinas.Include("Automobils").
Include("Kupac").Include("Placanje")
select sl;
List<Kupovina> returnLista = kupovineList.ToList<Kupovina>();
return returnLista;
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace ProdavnicaAutomobila
{
public partial class frmPlacanje : Form
{
List<Placanje> placanjeList = new List<Placanje>();
string akcija = "";
int indeksSelektovanog = -1;
public frmPlacanje()
{
InitializeComponent();
dgPlacanje.AllowUserToAddRows = false;
dgPlacanje.AllowUserToDeleteRows = false;
dgPlacanje.ReadOnly = true;
dgPlacanje.AutoGenerateColumns = false;
dgPlacanje.Columns.Add("ID", "ID");
dgPlacanje.Columns["ID"].Visible = false;
30
dgPlacanje.Columns.Add("nacinPlacanja", "Nacin placanja");
dgPlacanje.Columns.Add("valutaPlacanja", "Valuta");
txtDisabled();
btnChangeEnabled();
btnSubmitDisabled();
prikaziPlacanjeDGV();
}
31
placanjeList.Where(x => x.Placanje_ID ==
idSelektovanog).FirstOrDefault();
txtNacin.Text = selektovanoPlacanje.Nacin;
txtValuta.Text = selektovanoPlacanje.Valuta;
}
32
}
}
else
{
MessageBox.Show("Nema unetih podataka");
}
}
33
private void btnOdustani_Click(object sender, EventArgs e)
{
txtDisabled();
btnSubmitDisabled();
btnChangeEnabled();
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace ProdavnicaAutomobila
{
public partial class frmKupac : Form
{
List<Kupac> kupciList = new List<Kupac>();
string akcija = "";
int indeksSelektovanog = -1;
public frmKupac()
{
InitializeComponent();
dgKupci.AllowUserToAddRows = false;
dgKupci.AllowUserToDeleteRows = false;
dgKupci.ReadOnly = true;
dgKupci.AutoGenerateColumns = false;
dgKupci.Columns.Add("ID", "ID");
dgKupci.Columns["ID"].Visible = false;
dgKupci.Columns.Add("imeKupca", "Ime");
dgKupci.Columns.Add("prezimeKupca", "Prezime");
dgKupci.Columns.Add("adresaKupca", "Adresa");
txtDisabled();
btnChangeEnabled();
btnSubmitDisabled();
prikaziKupceDGV();
}
34
private void txtDisabled()
{
txtIme.Enabled = false;
txtPrezime.Enabled = false;
txtAdresa.Enabled = false;
}
txtIme.Text = selektovaniKupac.Ime;
txtPrezime.Text = selektovaniKupac.Prezime;
txtAdresa.Text = selektovaniKupac.Adresa;
}
35
private void prikaziKupceDGV()
{
kupciList = Kupac.ucitajKupce();
dgKupci.Rows.Clear();
for (int i = 0; i < kupciList.Count; i++)
{
dgKupci.Rows.Add();
dgKupci.Rows[i].Cells["ID"].Value =
kupciList[i].Kupac_ID;
dgKupci.Rows[i].Cells["imeKupca"].Value =
kupciList[i].Ime;
dgKupci.Rows[i].Cells["prezimeKupca"].Value =
kupciList[i].Prezime;
dgKupci.Rows[i].Cells["adresaKupca"].Value =
kupciList[i].Adresa;
}
ponistiUnosTxt();
dgKupci.CurrentCell = null;
if (kupciList.Count > 0)
{
if (indeksSelektovanog != -1)
dgKupci.Rows[indeksSelektovanog].Selected = true;
else
dgKupci.Rows[0].Selected = true;
prikaziKlijentaTxt();
}
}
36
}
37
btnChangeEnabled();
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace ProdavnicaAutomobila
{
public partial class frmProdavac : Form
{
List<Prodavac> prodavciList = new List<Prodavac>();
string akcija = "";
int indeksSelektovanog = -1;
public frmProdavac()
{
InitializeComponent();
dgProdavac.AllowUserToAddRows = false;
dgProdavac.AllowUserToDeleteRows = false;
dgProdavac.ReadOnly = true;
dgProdavac.AutoGenerateColumns = false;
dgProdavac.Columns.Add("ID", "ID");
dgProdavac.Columns["ID"].Visible = false;
dgProdavac.Columns.Add("imeprodavca", "Ime");
dgProdavac.Columns.Add("prezimeProdavca", "Prezime");
dgProdavac.Columns.Add("duznostProdavca", "Duznost");
txtDisabled();
btnChangeEnabled();
btnSubmitDisabled();
prikaziProdavceDGV();
}
38
txtPrezime.Enabled = false;
txtDuznost.Enabled = false;
}
39
private void prikaziProdavceDGV()
{
prodavciList = Prodavac.ucitajProdavce();
dgProdavac.Rows.Clear();
for (int i = 0; i < prodavciList.Count; i++)
{
dgProdavac.Rows.Add();
dgProdavac.Rows[i].Cells["ID"].Value =
prodavciList[i].Prodavac_ID;
dgProdavac.Rows[i].Cells["imeProdavca"].Value =
prodavciList[i].Ime;
dgProdavac.Rows[i].Cells["prezimeProdavca"].Value =
prodavciList[i].Prezime;
dgProdavac.Rows[i].Cells["duznostProdavca"].Value =
prodavciList[i].Duznost;
}
ponistiUnosTxt();
dgProdavac.CurrentCell = null;
if (prodavciList.Count > 0)
{
if (indeksSelektovanog != -1)
dgProdavac.Rows[indeksSelektovanog].Selected = true;
else
dgProdavac.Rows[0].Selected = true;
prikaziProdavcaTxt();
}
}
40
MessageBox.Show("Nema unetih podataka");
}
}
selektovaniProdavac.Ime = txtIme.Text;
selektovaniProdavac.Prezime = txtPrezime.Text;
selektovaniProdavac.Duznost = txtDuznost.Text;
selektovaniProdavac.azurirajProdavca();
indeksSelektovanog = dgProdavac.SelectedRows[0].Index;
}
else if (akcija == "dodaj")
{
Prodavac pro = new Prodavac();
pro.Ime = txtIme.Text;
pro.Prezime = txtPrezime.Text;
pro.Duznost = txtDuznost.Text;
pro.dodajProdavca();
indeksSelektovanog = dgProdavac.Rows.Count;
}
txtDisabled();
btnSubmitDisabled();
btnChangeEnabled();
akcija = "";
prikaziProdavceDGV();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
41
{
txtDisabled();
btnSubmitDisabled();
btnChangeEnabled();
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Collections;
namespace ProdavnicaAutomobila
{
public partial class frmAutomobil : Form
{
List<Automobil> autoList = new List<Automobil>();
string akcija = "";
int indeksSelektovanog = -1;
public frmAutomobil()
{
InitializeComponent();
dgAuto.AllowUserToAddRows = false;
dgAuto.AllowUserToDeleteRows = false;
dgAuto.ReadOnly = true;
dgAuto.AutoGenerateColumns = false;
dgAuto.Columns.Add("ID", "ID");
dgAuto.Columns["ID"].Visible = false;
dgAuto.Columns.Add("nazivAutomobila", "Naziv");
dgAuto.Columns.Add("BS", "Broj stampe");
dgAuto.Columns.Add("bojaAutomobila", "Boja");
dgAuto.Columns.Add("imeProdavca", "Ime prodavca");
dgAuto.Columns.Add("prezimeProdavca", "Prezime prodavca");
42
cbxProdavac.Items.Add(new DictionaryEntry(
pro.Ime + " " + pro.Prezime, pro.Prodavac_ID));
}
cbxProdavac.DisplayMember = "Key";
cbxProdavac.ValueMember = "Value";
cbxProdavac.DataSource = cbxProdavac.Items;
txtDisabled();
btnChangeEnabled();
btnSubmitDisabled();
prikaziAutoDGV();
}
43
txtAuto.Text = "";
txtBS.Text = "";
txtBoja.Text = "";
cbxProdavac.SelectedIndex = 0;
}
44
txtEnabled();
btnSubmitEnabled();
btnChangeDisabled();
akcija = "dodaj";
}
45
Int32.Parse(cbxProdavac.SelectedValue.ToString());
selektovaniAuto.azurirajStampa();
indeksSelektovanog = dgAuto.SelectedRows[0].Index;
}
else if (akcija == "dodaj")
{
Automobil auto = new Automobil();
auto.Naziv = txtAuto.Text;
auto.BS = Int32.Parse(txtBS.Text);
auto.Boja = txtBoja.Text;
auto.Prodavac_ID =
Int32.Parse(cbxProdavac.SelectedValue.ToString());
auto.dodajStampu();
indeksSelektovanog = dgAuto.Rows.Count;
}
txtDisabled();
btnSubmitDisabled();
btnChangeEnabled();
prikaziAutoDGV();
}
catch (FormatException)
{
MessageBox.Show("Broj sasije nije korektno formatiran!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
46
using System.Collections;
namespace ProdavnicaAutomobila
{
public partial class frmKupovina : Form
{
List<Kupovina> kupovineList = new List<Kupovina>();
string akcija = "";
int indeksSelektovane = -1;
public frmKupovina()
{
InitializeComponent();
dgKupovine.AllowUserToAddRows = false;
dgKupovine.AllowUserToDeleteRows = false;
dgKupovine.ReadOnly = true;
dgKupovine.AutoGenerateColumns = false;
dgAuto.AllowUserToAddRows = false;
dgAuto.AllowUserToDeleteRows = false;
dgAuto.ReadOnly = true;
dgAuto.AutoGenerateColumns = false;
dgKupovine.Columns.Add("ID", "ID");
dgKupovine.Columns["ID"].Visible = false;
dgKupovine.Columns.Add("datumKupovine", "Datum narudzbine");
dgKupovine.Columns.Add("imeKupca", "Ime kupca");
dgKupovine.Columns.Add("prezimeKupca", "Prezime kupca");
dgKupovine.Columns.Add("nacinPlacanja", "Nacin placanja");
dgKupovine.Columns.Add("valutaPlacanja", "Valuta placanja");
47
{
clbxAuto.Items.Add(new DictionaryEntry(
auto.Naziv + "(" + auto.Boja + ")", auto.Automobil_ID));
}
clbxAuto.DisplayMember = "Key";
clbxAuto.ValueMember = "Value";
clbxAuto.DataSource = clbxAuto.Items;
txtDisabled();
btnChangeEnabled();
btnSubmitDisabled();
prikaziKupovinuDGV();
prikaziAutomobileDGV();
}
48
private void ponistiUnosTxt()
{
dtDatumKupovine.Value = DateTime.Now;
cbxKupac.SelectedIndex = 0;
cbxPlacanje.SelectedIndex = 0;
foreach (int i in clbxAuto.CheckedIndices)
{
clbxAuto.SetItemCheckState(i, CheckState.Unchecked);
}
}
dtDatumKupovine.Value = selektovanaKupovina.Datum;
int klijIndex = cbxKupac.FindString(
selektovanaKupovina.Kupac.Ime + " " +
selektovanaKupovina.Kupac.Prezime);
cbxKupac.SelectedIndex = klijIndex;
int uslugaIndex = cbxPlacanje.FindString(
selektovanaKupovina.Placanje.Nacin + " - " +
selektovanaKupovina.Placanje.Valuta);
cbxPlacanje.SelectedIndex = uslugaIndex;
foreach (int i in clbxAuto.CheckedIndices)
{
clbxAuto.SetItemCheckState(i, CheckState.Unchecked);
}
foreach (Automobil aut in selektovanaKupovina.Automobils)
{
int listIndeks = clbxAuto.FindString(aut.Naziv);
clbxAuto.SetItemCheckState(listIndeks, CheckState.Checked);
}
}
49
ponistiUnosTxt();
dgKupovine.CurrentCell = null;
if (kupovineList.Count > 0)
{
if (indeksSelektovane != -1)
dgKupovine.Rows[indeksSelektovane].Selected = true;
else
dgKupovine.Rows[0].Selected = true;
prikaziKupovinuTxt();
}
}
dgAuto.Rows.Clear();
for (int i = 0; i < aut.Count; i++)
{
dgAuto.Rows.Add();
dgAuto.Rows[i].Cells["nazivAutomobila"].Value =
aut[i].Naziv;
}
}
else
{
dgAuto.Rows.Clear();
}
}
50
selektovanaKupovina.obrisiKupovinu();
indeksSelektovane = -1;
prikaziKupovinuDGV();
prikaziAutomobileDGV();
}
}
else
{
MessageBox.Show("Nema unetih podataka");
}
}
51
kupovina.Placanje_ID =
Int32.Parse(cbxPlacanje.SelectedValue.ToString());
List<int> autoIDs = new List<int>();
foreach (var item in clbxAuto.CheckedItems)
{
int autoId = (int)((DictionaryEntry)item).Value;
autoIDs.Add(autoId);
}
kupovina.dodajKupovinu(autoIDs);
indeksSelektovane = dgKupovine.Rows.Count;
}
txtDisabled();
btnSubmitDisabled();
btnChangeEnabled();
prikaziKupovinuDGV();
prikaziAutomobileDGV();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
52
namespace ProdavnicaAutomobila
{
public partial class frmIzvestajProd : Form
{
public frmIzvestajProd()
{
InitializeComponent();
List<Prodavac> prodavacList = Prodavac.ucitajProdavce();
cbxProdavac.Items.Add(new DictionaryEntry("Svi prodavci", 0));
foreach (Prodavac pro in prodavacList)
{
cbxProdavac.Items.Add(new DictionaryEntry(
pro.Ime + " " + pro.Prezime, pro.Prodavac_ID));
}
cbxProdavac.DisplayMember = "Key";
cbxProdavac.ValueMember = "Value";
cbxProdavac.DataSource = cbxProdavac.Items;
}
}
}
using System;
using System.Collections.Generic;
53
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ProdavnicaAutomobila
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
54
CloseAllForms();
frmKupovina kupovinaForm = new frmKupovina();
kupovinaForm.MdiParent = this;
kupovinaForm.WindowState = FormWindowState.Maximized;
kupovinaForm.ControlBox = false;
kupovinaForm.Show();
}
55