ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
Zadatak: Sportska prodavnica
       ?elimo da uradimo aplikaciju pomo?u koje ?emo mo?i da izra?unamo kolko kupac
treba da plati kupljenu robu. U prodavnici se kupuju patike, trenerke, majice. Patike ko?taju
7000, trenerke 1200, majice 750. Kupac mo?e da bira jedno od tri na?ina pla?anja, pla?anje
kreditnom karticom pomo?u koje ostvaruje 5% popusta na kupljenu robu; pla?anje gotovinom
u tom su?akju nema popusta; i odlo?eno pla?anje na koje se dodaje 5%. Ako kupac vr?i
kupovinu vikendom ostvaruje popust od 10%, ako je kupac ?ak ostvaruje popust od 5%.

       Zapo?nimo novi projekat. Sa padaju?eg menia File izaberimo New pa Aplication.




Dobijamo formu koja je prazna. Za ovaj zadatak treba?e nam slede?e komponente:
   1. Label
   2. Edit
   3. ComboBox
   4. RadioGroup
   5. CheckBox
   6. Button

Sve potrebne komponente mo?ete na?i na standardnoj kartici.
Komponente pore?ajte na formi kao ?to je prikazano na slede?oj slici.




       Komponenti Label1 promenite opciju Caption u delu Properties, i napi?ite Naziv
proizvoda. Za Label2 stavite Kolicina, a za Label3 stavite Iznos.




       Poljima Edit1 i Edit2 obri?ite tekst iz opcije Text u Properties.

       Komponenti ComboBox1 obri?ite tekst u opciji Text u Properties, i kliknite na opciju
Items. Kada se otvori prozor upi?ite stavke Patike, Trenerke, Majica. Svaku u novom redu.
Indeksiranje stavki po?inje nulom rako da Patike imaju indeks 0, Trenerke indeks 1 i Majice
indeks 2.
Komponenti RadioGroup1 promenite opciju Caption u Pla?anje. Kliknite na opciju
Items i u novom prozoru koji ?e vam se otvoriti upi?ite stavke Kreditna kartica (-5%),
Gotovina, Odlo?eno pla?anje (+5%), svaku stavku u novom redu. Indeksiranje stavki po?inje
nulom, tako da stavka Kreditna kartica (-5%) ima indeks 0, Gotovina indeks 1, i Odlo?eno
pla?anje (+5%) indeks 2.




        Komponenti CheckBox1 u Properties u opciji Caption upi?ite Vikend Akcija (-10%) i
opciji Name upi?ite vikend.
        Komponenti CheckBox2 u Properties u opciji Caption upi?ite Djacki popust (-5%) i
opciji Name upi?ite djak.
        Komponenti Button1 u opciji Caption upi?ite Racun.

Sada na?a forma izgleda ovako.




     Sada treba da isprogramiramo dugme Button1. Sa forme uradimo dupli klik na
komponentu Button1. Otvara nam se prozor u kom pi?emo ?eljeni kod.

       Potrebne su nam promenljive cena i ukupno tipa real, i kolicina i indeks tipa integer.
Promenljiva ukupno predstavlja cenu koju kupac treba da plati. I zadamo joj po?etnu vrednost
nula. Promenljiva cena nam predstavlja cenu proizvoda koji je kupljen. Kolicina predstavlja
kolicinu kupljene robe. Promenljiva Indeks vodi ra?una koji je proivod izabran ili kojim
na?inom se pla?a kupljeni proizvod.
Da bi videli koji je proizvod kupljen u ovom slu?aju izabran iz liste, moramo uzeti
indeks izabranog proizvoda iz liste. To ?inimo na slede?i na?in, promenljivi indeks dodelimo
vrednost ComboBox1.ItemIndex. U zavisnosti da li je indeks jednak nuli imamo da je cena
jednaka 7000 po?to su u pitanju patike, ako je indeks jednak jedinici onda su u pitanju
trenerke i njihova cena je 1200, i ako je indeks 2 onda su u pitanju majice i cena je 750.

       U komponenti Edit1 se nalazi koli?ina kupljene robe. Po?to se u komponentama tipa
edit ?uvaju samo stringovi pre nego sto na?oj promeljivi kolicina dodelimo vrednost iz Edit1
polja moramo da izvr?imo pretvaranje stringa u integer. Za to nam slu?i metoda StrToInt.

       Sada u promenjivoj ukupno upi?emo proizvod dva broja, cene i kolicine. Slede?e ?to
treba uraditi je izra?unati da li kupac ostvaruje neki od popusta. U komponenti RadioGroup1
mo?e da se ozna?i samo jedna od stavki. ?elimo da znamo kojim na?inom se vr?i pla?anje. U
promenljivi indeks ?emo smestiti indeks ozna?ene stavke. To posti?emo naredbom
indeks:=RadioGroup1.ItemIndex; sada ispitamo ?emu je jednak indeks, ako je nula onda je u
pitanju pla?anje kreditnom karticom i kupac ostvaruje popust od 5%, ukupno:=ukupno-
(ukupno*0.05); ako je indeks jednak jedinici nemamo potrebe da menjamo promeljivu
ukupno, ako je indeks jednak 2 onda je u pitanju odlo?eno pla?anje pa imamo naredbu
ukupno:=ukupno+(ukupno*0.05).

        Proverimo sada da li je u pitanju Vikend Akcija ili Djacki popust. Sve ?to je potrebno
uraditi je da proverimo da li su ovi CheckBox-ovi ?ekirani. CheckBox1 za Vikend akciju ima
naziv vikend, pa naredbom vikend.Checked proveravamo da li je ona ?ekirana ili ne. Naredba
vra?a True ili False. Ako je ?ekirana imamo ostvarenje popusta od 10% i novo ra?unanje
promenljive ukupno naredbom ukupno:=ukupno-(ukupno*0.1);. Da li je u pitanju Djacki
popust proveravamo naredbom djak.Checked, ukoliko je True onda imamo popust od 5%
ukupno:=ukupno-(ukupno*0.05);
        Na kraju treba promenljivu ukupno upisati u Edit2. Po?to je ukupno tipa real a u Edit2
mo?emo       upisati   samo     string,   potrebno    je     da    konvertujemo      naredbom
Edit2.Text:=FloatToStr(ukupno);.
Ceo kod.

procedure TForm1.Button1Click(Sender: TObject);
var cena, ukupno : real;
kolicina, indeks : integer;
begin
ukupno:=0;

indeks:=ComboBox1.ItemIndex;

if indeks=0 then cena:=7000;
if indeks=1 then cena:=1200;
if indeks=2 then cena:=750;

kolicina:=StrToInt(Edit1.Text);

ukupno:=cena*kolicina;

indeks:=RadioGroup1.ItemIndex;
if indeks=0 then ukupno:=ukupno-(ukupno*0.05);
if indeks=2 then ukupno:=ukupno+(ukupno*0.05);

if vikend.Checked then ukupno:=ukupno-(ukupno*0.1);
if djak.Checked then ukupno:=ukupno-(ukupno*0.05);

Edit2.Text:=FloatToStr(ukupno);
end;


        Prilikom testiranja programa primeti?emo da se u komponenti Edit1 mogu uneti i
slova, decimalni brojevi ili znakovi, ?to nije po?eljno. Pa ?emo zabraniti lo? unos koriteci
proceduru Val(s,n,gr). S nam je string koji ?elimo da upisemo u n koji je tipa integer. Gr je
tipa integer i ?uva poziciju gre?ke.

Primer
        Ako ?elimo da s=¡¯12b21¡¯ prebacimo u n. Prvo ?e se prebaciti 1, zatim 2, kad se stigne
do slova b koje ne mo?emo da prebacimo u n dolazi do gre?ke i onda gr uzima vrednost 3. (b
je tre?e po redu).
Ako ne dodje do gre?ke onda gr ima vrednost 0.

       Proveru unosa ?emo isprogramirati na komponenti Edit1 u dogadjaju OnExit. Ukoiko
do?e do nepravilnog unosa prikaza?emo korisniku poruku da je do?lo do nepravilnog unosa
ShowMessage('Kolicina nije dobro uneta.'); , stavi?emo fokus na polje Edit1 naredbom
Edit1.SetFocus; i selektva?emo lo?e une?en tekst naredbom Edit1.SelectAll;.
procedure TForm1.Edit1Exit(Sender: TObject);
var s:string;
n:integer;
gr:integer;
begin
s:=Edit1.Text;
val(s,n,gr);
if gr<>0 then
  begin
  ShowMessage('Kolicina nije dobro uneta.');
  Edit1.SetFocus;
  Edit1.SelectAll;
  end;
end;

     Ne dopada nam se to ?to u komponenti Edit2 mo?emo unositi bilo kakav tekst. To
mo?emo zabraniti tako ?to u delu Properties opciji Enabled stavimo False.

More Related Content

Delphi - Sportska prodavnica 18-05-2012

  • 1. Zadatak: Sportska prodavnica ?elimo da uradimo aplikaciju pomo?u koje ?emo mo?i da izra?unamo kolko kupac treba da plati kupljenu robu. U prodavnici se kupuju patike, trenerke, majice. Patike ko?taju 7000, trenerke 1200, majice 750. Kupac mo?e da bira jedno od tri na?ina pla?anja, pla?anje kreditnom karticom pomo?u koje ostvaruje 5% popusta na kupljenu robu; pla?anje gotovinom u tom su?akju nema popusta; i odlo?eno pla?anje na koje se dodaje 5%. Ako kupac vr?i kupovinu vikendom ostvaruje popust od 10%, ako je kupac ?ak ostvaruje popust od 5%. Zapo?nimo novi projekat. Sa padaju?eg menia File izaberimo New pa Aplication. Dobijamo formu koja je prazna. Za ovaj zadatak treba?e nam slede?e komponente: 1. Label 2. Edit 3. ComboBox 4. RadioGroup 5. CheckBox 6. Button Sve potrebne komponente mo?ete na?i na standardnoj kartici.
  • 2. Komponente pore?ajte na formi kao ?to je prikazano na slede?oj slici. Komponenti Label1 promenite opciju Caption u delu Properties, i napi?ite Naziv proizvoda. Za Label2 stavite Kolicina, a za Label3 stavite Iznos. Poljima Edit1 i Edit2 obri?ite tekst iz opcije Text u Properties. Komponenti ComboBox1 obri?ite tekst u opciji Text u Properties, i kliknite na opciju Items. Kada se otvori prozor upi?ite stavke Patike, Trenerke, Majica. Svaku u novom redu. Indeksiranje stavki po?inje nulom rako da Patike imaju indeks 0, Trenerke indeks 1 i Majice indeks 2.
  • 3. Komponenti RadioGroup1 promenite opciju Caption u Pla?anje. Kliknite na opciju Items i u novom prozoru koji ?e vam se otvoriti upi?ite stavke Kreditna kartica (-5%), Gotovina, Odlo?eno pla?anje (+5%), svaku stavku u novom redu. Indeksiranje stavki po?inje nulom, tako da stavka Kreditna kartica (-5%) ima indeks 0, Gotovina indeks 1, i Odlo?eno pla?anje (+5%) indeks 2. Komponenti CheckBox1 u Properties u opciji Caption upi?ite Vikend Akcija (-10%) i opciji Name upi?ite vikend. Komponenti CheckBox2 u Properties u opciji Caption upi?ite Djacki popust (-5%) i opciji Name upi?ite djak. Komponenti Button1 u opciji Caption upi?ite Racun. Sada na?a forma izgleda ovako. Sada treba da isprogramiramo dugme Button1. Sa forme uradimo dupli klik na komponentu Button1. Otvara nam se prozor u kom pi?emo ?eljeni kod. Potrebne su nam promenljive cena i ukupno tipa real, i kolicina i indeks tipa integer. Promenljiva ukupno predstavlja cenu koju kupac treba da plati. I zadamo joj po?etnu vrednost nula. Promenljiva cena nam predstavlja cenu proizvoda koji je kupljen. Kolicina predstavlja kolicinu kupljene robe. Promenljiva Indeks vodi ra?una koji je proivod izabran ili kojim na?inom se pla?a kupljeni proizvod.
  • 4. Da bi videli koji je proizvod kupljen u ovom slu?aju izabran iz liste, moramo uzeti indeks izabranog proizvoda iz liste. To ?inimo na slede?i na?in, promenljivi indeks dodelimo vrednost ComboBox1.ItemIndex. U zavisnosti da li je indeks jednak nuli imamo da je cena jednaka 7000 po?to su u pitanju patike, ako je indeks jednak jedinici onda su u pitanju trenerke i njihova cena je 1200, i ako je indeks 2 onda su u pitanju majice i cena je 750. U komponenti Edit1 se nalazi koli?ina kupljene robe. Po?to se u komponentama tipa edit ?uvaju samo stringovi pre nego sto na?oj promeljivi kolicina dodelimo vrednost iz Edit1 polja moramo da izvr?imo pretvaranje stringa u integer. Za to nam slu?i metoda StrToInt. Sada u promenjivoj ukupno upi?emo proizvod dva broja, cene i kolicine. Slede?e ?to treba uraditi je izra?unati da li kupac ostvaruje neki od popusta. U komponenti RadioGroup1 mo?e da se ozna?i samo jedna od stavki. ?elimo da znamo kojim na?inom se vr?i pla?anje. U promenljivi indeks ?emo smestiti indeks ozna?ene stavke. To posti?emo naredbom indeks:=RadioGroup1.ItemIndex; sada ispitamo ?emu je jednak indeks, ako je nula onda je u pitanju pla?anje kreditnom karticom i kupac ostvaruje popust od 5%, ukupno:=ukupno- (ukupno*0.05); ako je indeks jednak jedinici nemamo potrebe da menjamo promeljivu ukupno, ako je indeks jednak 2 onda je u pitanju odlo?eno pla?anje pa imamo naredbu ukupno:=ukupno+(ukupno*0.05). Proverimo sada da li je u pitanju Vikend Akcija ili Djacki popust. Sve ?to je potrebno uraditi je da proverimo da li su ovi CheckBox-ovi ?ekirani. CheckBox1 za Vikend akciju ima naziv vikend, pa naredbom vikend.Checked proveravamo da li je ona ?ekirana ili ne. Naredba vra?a True ili False. Ako je ?ekirana imamo ostvarenje popusta od 10% i novo ra?unanje promenljive ukupno naredbom ukupno:=ukupno-(ukupno*0.1);. Da li je u pitanju Djacki popust proveravamo naredbom djak.Checked, ukoliko je True onda imamo popust od 5% ukupno:=ukupno-(ukupno*0.05); Na kraju treba promenljivu ukupno upisati u Edit2. Po?to je ukupno tipa real a u Edit2 mo?emo upisati samo string, potrebno je da konvertujemo naredbom Edit2.Text:=FloatToStr(ukupno);.
  • 5. Ceo kod. procedure TForm1.Button1Click(Sender: TObject); var cena, ukupno : real; kolicina, indeks : integer; begin ukupno:=0; indeks:=ComboBox1.ItemIndex; if indeks=0 then cena:=7000; if indeks=1 then cena:=1200; if indeks=2 then cena:=750; kolicina:=StrToInt(Edit1.Text); ukupno:=cena*kolicina; indeks:=RadioGroup1.ItemIndex; if indeks=0 then ukupno:=ukupno-(ukupno*0.05); if indeks=2 then ukupno:=ukupno+(ukupno*0.05); if vikend.Checked then ukupno:=ukupno-(ukupno*0.1); if djak.Checked then ukupno:=ukupno-(ukupno*0.05); Edit2.Text:=FloatToStr(ukupno); end; Prilikom testiranja programa primeti?emo da se u komponenti Edit1 mogu uneti i slova, decimalni brojevi ili znakovi, ?to nije po?eljno. Pa ?emo zabraniti lo? unos koriteci proceduru Val(s,n,gr). S nam je string koji ?elimo da upisemo u n koji je tipa integer. Gr je tipa integer i ?uva poziciju gre?ke. Primer Ako ?elimo da s=¡¯12b21¡¯ prebacimo u n. Prvo ?e se prebaciti 1, zatim 2, kad se stigne do slova b koje ne mo?emo da prebacimo u n dolazi do gre?ke i onda gr uzima vrednost 3. (b je tre?e po redu). Ako ne dodje do gre?ke onda gr ima vrednost 0. Proveru unosa ?emo isprogramirati na komponenti Edit1 u dogadjaju OnExit. Ukoiko do?e do nepravilnog unosa prikaza?emo korisniku poruku da je do?lo do nepravilnog unosa ShowMessage('Kolicina nije dobro uneta.'); , stavi?emo fokus na polje Edit1 naredbom Edit1.SetFocus; i selektva?emo lo?e une?en tekst naredbom Edit1.SelectAll;.
  • 6. procedure TForm1.Edit1Exit(Sender: TObject); var s:string; n:integer; gr:integer; begin s:=Edit1.Text; val(s,n,gr); if gr<>0 then begin ShowMessage('Kolicina nije dobro uneta.'); Edit1.SetFocus; Edit1.SelectAll; end; end; Ne dopada nam se to ?to u komponenti Edit2 mo?emo unositi bilo kakav tekst. To mo?emo zabraniti tako ?to u delu Properties opciji Enabled stavimo False.