Zadaci iz PROGRAMIRANJA

66
  1 Primenjeno programiranje - Vežbe Java i NetBeans IDE 7.0 Kreiranje novog projekta 1. Pokrenite NetBeans IDE . 2. Odaberite opciju File > New Project  (Ctrl-Shift-N), kao na slici. 3. U dijalogu New Project wizard, otvorite kategoriju  Java i odaberite Java Application i pritisnite Next  4. Na stranici Name and Location uradite kao na slici: a. U polje Project Name unesite HelloWorldApp . b. Ostavite Use Dedicated Folder for Storing Libraries čekboks neselektovan. c. U polje Create Main Class unesite helloworldapp.HelloWorldApp . d. Selektujte Set as Main Project . e. Kliknite Finish 

description

Zadaci iz predmeta Principi ProgramiranjaApeiron

Transcript of Zadaci iz PROGRAMIRANJA

  • 1

    Primenjeno programiranje - Vebe

    Java i NetBeans IDE 7.0

    Kreiranje novog projekta

    1. Pokrenite NetBeans IDE. 2. Odaberite opciju File > New Project (Ctrl-Shift-N), kao na slici.

    3. U dijalogu New Project wizard, otvorite kategoriju Java i odaberite Java Application i pritisnite Next

    4. Na stranici Name and Location uradite kao na slici: a. U polje Project Name unesite HelloWorldApp. b. Ostavite Use Dedicated Folder for Storing Libraries ekboks neselektovan. c. U polje Create Main Class unesite helloworldapp.HelloWorldApp. d. Selektujte Set as Main Project. e. Kliknite Finish

  • 2

    5. Nakon toga projekat je kreiran i otvoren. Prozor NetBens IDE bi trebao da prikazuje sledee komponente:

    a. Listu projekata u prozoru Projects, koji sadri stablo svih komponenti projekta, kao to su fajlovi sa kodom, biblioteke koje se koriste

    b. Editor koda - Source Editor sa otvorenim fajlom pod nazivom HelloWorldApp. c. Prozor za navigaciju - Navigator, za brzu navigaciju izmeu elemenata selektovane klase d. Lista sa rezultatima - Tasks, koji lista greke prilikom kompajliranja i druge komentare. (ako se

    prikazuje mogue je odabrati sa Window>Tasks)

  • 3

    6. Poto smo ekirali prethodno opciju Create Main Class, IDE je kreirao main klasu umesto nas. Na mesto komenatara:

    // TODO code application logic here

    7. Mogue je uneti proizvoljan kod, na primer:

    System.out.println("Hello World!");

    8. Izmene se uvaju sa opcijom File > Save. 9. IDE ima opciju: Compile on Save, te nije potrebno izriito kompajlirati projekat da bi se pokrenuo. 10. Za pokretanje programa treba odabrati opciju: Run > Run Main Project (F6). 11. Ako program ne sadri greke rezultat izvoenja ovog programa se prikazuje:

    Osnovni elementi Java Programa

    Zadatak 1. Napisati program koji ispisuje pozdravnu poruku na sistemski izlaz

    class HelloWorldApp { public static void main(String[] args) { // ispis stringa. System.out.println("Hello World!"); } }

    Zadatak 2. Napisati program koji tampa istinitosnu vrednost izraza: 2 + 2 = 4

    public class Demo { public static void main (String[] arg) {

    boolean b; b = (2 + 2 == 4); System.out.println(b);

    } }

    Zadatak 3. Napisati program koji ispisuje trenutni datum i vreme

    import java.util.*;

    public class HelloDate { public static void main(String[] args) { System.out.println(Pozdrav, sad je: "); System.out.println(new Date()); } }

  • 4

    Naredba dodele

    Zadatak 4: Napisati program koji definie dve promenjive celobrojnog tipa pod imenom prva i druga, i tri

    promenjive tipa realnih brojeva sa imenima x, y i z, i jednu promenjivu istina tipa boolean. Promenjivoj prva

    dodeliti vrednost 6, promenjivoj druga dodeliti vrednost 32, promenjivoj y dodeliti vrednost 34.15.

    package zadatak1;

    public class Zadatak1 {

    public static void main(String[] args) {

    int prva=6, druga=32;

    double x, y=34.15, z;

    boolean istina;

    }

    }

    Zadatak 5. Kreirati dve promenjive celobrojnog tipa (broj1 i broj2), tri promenjive tipa realnih brojeva (real1,

    real2 i real3) i dve promenjive tipa boolean (kraj i uspesnoIzracunavanje). Promenjivima celobrojnog tipa i po

    jednoj od promenjivih tipa realnih brojeva i tipa boolean dati proizvoljne poetne vrednosti.

    package zadatak2;

    public class Zadatak2 {

    public static void main(String[] args) {

    int broj1=7, broj2=13;

    double real1, real2=13.5, real3;

    boolean kraj =true, uspesnoIzracunavanje = false;

    }

    }

    Zadatak 6. Napisati program koji e kreirati dve promenjive realnog tipa podataka sa imenima osnova i visina, sa vrednostima 5.0 i 7.0, i jednu promenjivu povrsina takoe realnog tipa. Izraunati povrinu trougla i rezultat smestiti u promenjivu povrsina. Na kraju tampati poruku o iznosu povrine.

    package zadatak2; public class Zadatak2 { public static void main(String[] args) { double osnova = 5.0, visina = 7.0, povrsina; povrsina = (osnova*visina)/2.0; System.out.println("Povrsina trougla je: "+povrsina+"!"); } }

  • 5

    Zadatak 7. Napisati program u kojem e biti kreirane 7 promenjivih realnog tipa: br1, br2, br3, br4, br5, prosek i suma, sa proizvoljnim poetnim vrednostima. U promenjivoj prosek smestiti rezultat izraunavanja srednje vrednosti 5 unetih brojeva a u promenjivoj suma zbir promenjivih. Rezultate ispisati na sistemski izlaz.

    package zadatak2; public class Zadatak2 { public static void main(String[] args) { double br1 = 3.2, br2 = 3.5, br3 = 5.6, br4 = 1.7, br5 = 2.3;

    double prosek, suma ; suma = br1 + br2 + br3 + br4 + br5; prosek = suma/5;

    System.out.println("Suma brojeva je: " + suma); System.out.println("Prosek brojeva je: " + prosek);

    } }

    Zadatak 8. Napisati program u kojem se uz pomo dve promenjive tipa double izvrava konverzija vrednosti duine izraene u kilometrima u duinu izreaenu u miljama, i obrnuto.

    public class KonverzijaDaljina {

    public static void main(String[] args) {

    double duzinaMilje; // vrednost duzine u miljama double duzinaKilometri; // vrednost duzine u kilometrima

    // konverzija 5 km u milje i stampanje rezultata

    duzinaKilometri = 5.0; duzinaMilje = duzinaKilometri * 0.6214; System.out.println("5 km = " + duzinaMilje + " milja");

    // Konverzija 5 milja u kilometre i stampanje rezultata

    duzinaMilje = 5.0; duzinaKilometri = duzinaMilje * 1.609; System.out.println("5 milja = " + duzinaKilometri + " km"); }

    }

  • 6

    Upotreba sistemskog ulaza

    Zadatak 9. Napisati program koji e od korisnika traiti da unese vrednosti stranica pravougaonika i zatim

    izraunati i tampati vrednost povrine tog pravougaonika.

    package zadatak5; import java.util.Scanner; public class Zadatak5 {

    public static void main(String[] args) { double stranicaA, stranicaB, povrsina; Scanner ulaz = new Scanner(System.in); System.out.print("Unwsite stranicu a pravougaonika: "); stranicaA = ulaz.nextDouble(); System.out.print("Unesite stranicu B pravougaonika: "); stranicaB = ulaz.nextDouble(); povrsina = stranicaA * stranicaB; System.out.println("POvrsina pravougaonika iznosi: "+povrsina); } }

    Zadatak 10. Napisati program koji izraunava zbir dva broja koje unosi korisnik

    import java.util.Scanner; // programu je potrebna Scanner klasa public class AddTwoInts {

    public static void main(String[] args) {

    int prviBroj; int drugiBroj; int suma;

    Scanner consoleIn; consoleIn = new Scanner( System.in );

    System.out.print("Unesite prvi broj: "); prviBroj = consoleIn.nextInt();

    System.out.print("Unesite drugi broj: "); drugiBroj = consoleIn.nextInt();

    suma = prviBroj + drugiBroj; System.out.println("Zbir je: " + suma); } }

  • 7

    Zadatak 11. Napisati program koji vri izraunavanje obima i povrine kruga.

    import java.util.Scanner; public class Krug {

    public static void main (String[] vpar) { double poluprecnik; double obim, povrsina;

    Scanner consoleIn; consoleIn = new Scanner( System.in );

    System.out.print("Unesite poluprecnik kruga: "); poluprecnik = consoleIn.nextDouble();

    povrsina = poluprecnik * poluprecnik * Math.PI; obim = 2 * poluprecnik * Math.PI; System.out.println ("Obim kruga iznosi: " + obim); System.out.println("Povrsina kruga iznosi: " + povrsina); } }

    IF i SWITCH naredba

    Zadatak 12. Napisati program koji trai od korisnika da unese iznos svoje mesene plate. Ako je plata vea od 75000, program treba da ispie poruku o bonusu u iznosu od 1000 dinara. Ako je plata nije vea od 75000, program treba da ispie poruku o bonusu od 2000 dinara

    import java.util.Scanner; public class Bonus {

    public static void main(String[] args) { double plata;

    Scanner consoleIn; consoleIn = new Scanner( System.in );

    System.out.print("Unesite iznos Vase plate: "); plata = consoleIn.nextDouble();

    if (plata > 75000){ System.out.println("Vas ovomesecni bonus iznosi 1000 dinara"); }else{ System.out.println("Vas ovomesecni bonus iznosi 2000 dinara"); }

    }

    }

  • 8

    Zadatak 13. Napisati program koji trai od korisnika da unese dva broja i kao rezultat ispisuje manji

    import java.util.Scanner; public class HelloWorldApp {

    public static void main(String[] args) { double prvi, drugi; Scanner consoleIn = new Scanner( System.in );

    System.out.println("Unesite prvi broj: "); prvi = consoleIn.nextDouble();

    System.out.println("Unesite drugi broj: "); drugi = consoleIn.nextDouble();

    if (prvi < drugi){ System.out.println("broj " + prvi + " je manji"); }else if (drugi < prvi){ System.out.println("broj " + drugi + " je manji"); }else{ System.out.println("Brojevi su isti"); }

    } }

    Zadatak 14. Napisati program koji proverava da li je uneti broj paran ili neparan.

    public class IfElse{ public static void main(String[] args){ int n; Scanner ulaz = new Scanner(System.in); n = ulaz.nextInt(); if (n % 2 == 0){ System.out.println("Uneti broj je paran."); }else{ System.out.println("Uneti broj je neparan."); } } }

    Zadatak 15. Napisati program koji trai od korisnika da unese ime i godine starosti deteta kao i rezultat testa. Ako je ili broj godina vee od est ili rezultat testa vei ili jednak od 85, program treba da ispie poruku da je dete spremno za prvi razred. Inae, treba ispisati poruku da dete treba da pokusa naredne godine

    import java.util.Scanner; public class HelloWorldApp {

    public static void main(String[] args) { double rezultat; int starost; String ime;

    Scanner ulaz = new Scanner( System.in );

  • 9

    System.out.println("Unesite ime deteta: "); ime = ulaz.next(); System.out.println("Unesite starost deteta: "); starost = ulaz.nextInt(); System.out.println("Unesite broj bodova"); rezultat = ulaz.nextDouble();

    if (starost > 6 || rezultat > 85){ System.out.println(ime + " je spreman/na za prvi razred"); }else{ System.out.println(ime + " treba da saceka narednu godinu"); } } }

    Zadatak 16. Napisati program koji uitava tri broja i zatim ih ispisuje u rastuem rasporedu

    import java.util.Scanner; public class Uredi { public static void main (String[] args) { int a, b, c, pom; System.out.print ("Unesite tri prirodna broja: "); Scanner consoleIn = new Scanner(System.in); a = consoleIn.nextInt(); b = consoleIn.nextInt(); c = consoleIn.nextInt(); if (a > b) { pom = a; a = b; b = pom; } if (a > c) { pom = a; a = c; c = pom; } if (b > c) { pom = b; b = c; c = pom; } System.out.println ("Uredjeno: " + a + " " + b + " " + c); } }

    Ili:

    if ( a < b ) { if ( c < a ) System.out.println( c + " " + a + " " + b); else if ( c > b ) System.out.println( a + " " + b + " " + c); else System.out.println( a + " " + c + " " + b); } else { if ( c < b ) System.out.println( c + " " + b + " " + a); else if ( c > a ) System.out.println( b + " " + a + " " + c); else System.out.println( b + " " + c + " " + a); }

  • 10

    Zadatak 17. Napisati program koji pronalazi najmanji od tri uneta prirodna broja

    import java.util.Scanner; public class Min { public static void main (String[] args) { int a, b, c;

    System.out.print ("Uneite tri prirodna broja: "); Scanner ulaz = new Scanner(System.in);

    a = ulaz.nextInt(); b = ulaz.nextInt(); c = ulaz.nextInt();

    int min = a; if (b < min) min = b; if (c < min) min = c; System.out.println ("Najmanji je : " + min); } }

    Zadatak 18. Napisati program koji od korisnika trai unos dva realna broja a zatim obavlja operaciju u zavisnosti od izbora korisnika. Od korisnika se trai izbor jedne od narednih opcija: zbir, razlika, proizvod, kolinik. Pomo: od korisnika se trai unos slova: 1 za zbir, 2 za razliku, 3 za proizvod, 4 za kolinik. Potrebno je koristiti promenjivu tipa int koja e primiti odgovarajuu vrednost

    import java.util.Scanner;

    public class HelloWorldApp { public static void main(String[] args) { double prvi, drugi; int operacija;

    Scanner consoleIn; consoleIn = new Scanner( System.in );

    System.out.println(Unesite prvi broj: ); prvi = consoleIn.nextDouble(); System.out.println(Unesite drugi broj: ); drugi = consoleIn.nextDouble(); System.out.println(Unesite operaciju: ); System.out.println(1 za zbir, 2 za kolicnik, 3 za razliku, 4 za proizvod); operacija = consoleIn.nextInt();

    switch (operacija){ case 1: System.out.println(Zbir iznosi: + (prvi + drugi)); break; case 2: System.out.println(Kolicnik iznosi: + (prvi/drugi)); break; case 3: System.out.println(Razlika iznosi: + (prvi-drugi)); break; case 4: System.out.println(Proizvod iznosi: + (prvi*drugi));

  • 11

    break; default: System.out.println(Neispravna operacija!); } } }

    Zadatak 19. Napisati program koji uitava godinu studija studenta u obliku celog broja i zatim tampa da li je student bruco, student druge godine, student tree godine ili apsolvent u zavisnosti da li je unet broj 1, 2, 3 ili 4. ponuditi reenje uz pomo if naredbe kao i uz switch.

    import java.util.Scanner;

    public class HelloWorldApp { public static void main(String[] args) { int godinaStudija;

    Scanner consoleIn; consoleIn = new Scanner( System.in );

    System.out.println(Koja ste godina studija: ); godinaStudija = consoleIn.nextInt(); switch (godinaStudija){ case 1:System.out.println(Vi ste Brucos);break; case 2:System.out.println(Vi ste student druge godine);break; case 3:System.out.println(Vi ste student trece godine);break; case 4:System.out.println(Vi ste apsolvent);break; default:System.out.println(Neispravna godina studija!); } } }

    Ili sa ekvivalentnim if:

    if (godinaStudija == 1){ System.out.println(Vi ste Brucos); }else if(godinaStudija == 2){ System.out.println(Vi ste student druge godine); }else if(godinaStudija == 3){ System.out.println(Vi ste student trece godine); }else if(godinaStudija == 4){ System.out.println(Vi ste apsolvent); }else{ System.out.println(Neispravna godina studija!); }

  • 12

    Zadatak 20. Napisati program koji u zavisnosti od rednog broja meseca u godini ispisuje njegov naziv

    public class SwitchPrimer { public static void main(String[] args) {

    int month = 8; String monthString; switch (month) { case 1: monthString = "Januar"; break; case 2: monthString = "Februar"; break; case 3: monthString = "Mart"; break; case 4: monthString = "April"; break; case 5: monthString = "Maj"; break; case 6: monthString = "Jun"; break; case 7: monthString = "Jul"; break; case 8: monthString = "August"; break; case 9: monthString = "Septembar"; break; case 10: monthString = "Octobar"; break; case 11: monthString = "Novembar"; break; case 12: monthString = "Decembar"; break; default: monthString = "Neodgovarajuci mesec"; break; } System.out.println(monthString); } } Isti zadatak uz pomo if naredbe:

    int month = 8; if (month == 1) { System.out.println("Januar"); } else if (month == 2) { System.out.println("Februar"); } else if (month == 3) { System.out.println("Mart"); } else if (month == 4) { System.out.println("April"); } else if (month == 5) { System.out.println("Maj"); } else if (month == 6) { System.out.println("Jun"); } else if (month == 7) { System.out.println("Jul"); } else if (month == 8) { System.out.println("Avgust"); } else if (month == 9) { System.out.println("Septembar"); } else if (month == 10) { System.out.println("Oktobar"); } else if (month == 11) { System.out.println("Novembar"); } else if (month == 12) { System.out.println("Decembar"); } else { System.out.println(Neodgovarajui mesec); }

    ... // itd

  • 13

    Zadatak 21. Napisati program koji na osnovu datuma prikazuje koliko taj mesec ima dana

    class SwitchPrimer2 { public static void main(String[] args) {

    int month = 2; int year = 2000; int numDays = 0;

    switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: numDays = 31; break; case 4: case 6: case 9: case 11: numDays = 30; break; case 2: if (((year % 4 == 0) && !(year % 100 == 0)) || (year % 400 == 0)) numDays = 29; else numDays = 28; break; default: System.out.println("Invalid month."); break; } System.out.println("Number of Days = "+ numDays); } }

  • 14

    FOR, WHILE i DO naredbe

    Primer 22. Primer for petlje:

    class ForDemo { public static void main(String[] args){ for(int i=1; i

  • 15

    Zadatak 23. Napisati program koji izraunava sumu 10 brojeva koju unese korisnik (uz pomo for petlje)

    import java.util.Scanner;

    public class ForPetljaSuma1 {

    public static void main(String[] args) { System.out.println("Program koji izraunava sumu 10 brojeva"); Scanner ulaz = new Scanner(System.in); double suma = 0.0, temp; for (int i = 1; i

  • 16

    int broj; System.out.print("Koliko brojeva elite da unesete: "); broj = ulaz.nextInt(); for (int i = 1; i

  • 17

    Zadatak 28. Napisati program koji izraunava sumu:

    1 +1

    2+1

    3+1

    4++

    1

    package zadatak14;

    import java.util.Scanner;

    public class Zadatak14 {

    public static void main(String[] args) { System.out.println("Program koji izraunava izraz"); Scanner ulaz = new Scanner(System.in); int n; double izraz=1.0; System.out.print("Unesite broj n: "); n = ulaz.nextInt(); for (int i = 2; i

  • 18

    System.out.print("Unesite broj do kojeg ispisujemo brojeve:"); n = ulaz.nextInt(); while (i

  • 19

    Zadatak 33. Napisati program koji izraunava (uz pomo do while) sumu unetih brojeva. Brojevi se uitavaju

    dok korisnik ne unese nulu.

    package forpetlja; import java.util.Scanner; public class ForPetlja {

    public static void main(String[] args) { System.out.println("Suma brojeva uz pomo while petlje"); Scanner ulaz = new Scanner(System.in); double suma, broj; System.out.println("Unesite brojeve, za kraj unesite nulu!"); do { System.out.println("Unesite naredni broj: "); broj = ulaz.nextDouble(); suma = suma + broj; } while (broj != 0); System.out.println("Suma iznosi: " + suma); } }

    Zadatak 34. Napisati program koji izraunava (uz pomo while ili do while petlje) prosek unetih brojeva. Brojevi

    se uitavaju dok korisnik ne unese nulu.

    package zadatak16; import java.util.Scanner; public class Zadatak16 {

    public static void main(String[] args) { System.out.println("Prosek brojeva uz pomo while petlje"); Scanner ulaz = new Scanner(System.in); double suma, prosek, broj; int ukupno; // broj unetih brojeva System.out.println("Unesite brojeve, za kraj unesite nulu!"); System.out.print("Unesite prvi broj: "); broj = ulaz.nextDouble(); ukupno = 0; suma = broj;

    ukupno ++; System.out.print("Unesite naredni broj: "); broj = ulaz.nextDouble(); suma = suma + broj; } prosek = suma/ukupno; System.out.println("Prosek iznosi: " + prosek); } }

  • 20

    Zadatak 35. Napisati program koji izraunava (uz pomo while petlje) n! za proizvoljni uneti broj n.

    package zadatak17;

    import java.util.Scanner;

    public class Zadatak17 {

    public static void main(String[] args) { System.out.println("n! uz pomo while petlje"); Scanner ulaz = new Scanner(System.in); int n, faktorijel = 1, i = 2; System.out.println("Unesite broj za koji izraunavamo faktorijel:"); n = ulaz.nextInt();

    while (i

  • 21

    Zadatak 37. Napisati program koji trai od korisnika da unese 10 brojeva i pronalazi i tampa najvei od njih

    import java.util.Scanner;

    class NajveciOd10{

    public static void main(String[ ] args){ int broj = 0; int najveci = 0; int brojac= 1;

    Scanner consoleIn = new Scanner(System.in); System.out.println("Unesite prvi broj?");

    najveci = consoleIn.nextInt();

    while (brojac < 10){

    System.out.println("Unesite naredni broj: "); broj = consoleIn.nextInt(); if (broj > najveci){ najveci = broj; } brojac = brojac + 1; } System.out.println("Najveci broj je: "+ najveci + "!");}

    } }

    Reenje sa for petljom:

    for (brojac = 2; brojac najveci) najveci = broj;

    } System.out.println("Najveci je: "+ najveci + ".");

    Zadatak 38. Napisati program u koji ispisuje sve parne brojeve od 1 do 30

    public class parniDo30{

    public static void main(String[] args){ System.out.println("parni brojevi od 1 do 30"); for (int i=2; i

  • 22

    Zadatak 39. Napisati program koji zatrai od korisnika da unese koliko brojeva eli da sabere, zatim dozvoli njihov unos i na kraju ispie poruku o njihovoj sumi

    import java.util.Scanner;

    public class Zbir {

    public static void main(String[] args) { int n, temp; long suma = 0;

    Scanner consoleIn = new Scanner(System.in); System.out.println("Unesite koliko brojeva zelite da saberete: "); n = consoleIn.nextInt();

    for (int i=1; i

  • 23

    Zadatak 41. Napisati program koji izraunava faktorijel unetog broja

    n!= n*(n-1)*(n-2)*...*3*2*1

    import java.util.Scanner; public class Faktorijel { public static void main (String[] args) { int n; long faktorijel = 1;

    Scanner consoleIn = new Scanner(System.in); System.out.println("Unesite broj za koji izracunavamo faktorijel: "); n = consoleIn.nextInt();

    for (int i=2; i

  • 24

    } System.out.println ("minimalni element je: " + min); } } } Zadatak 44. Deklarisati i potom ispisati niz koji e uvati brojeve od jedan do deset. Koristiti petlju za inicijalizaciju

    public class DeklaracijaNiza {

    public static void main(String[] args) { int niz[]= new int[10]; for (int i = 0; i < niz.length; i++) { niz[i]=i+1; } for (int i = 0; i < niz.length; i++) { System.out.println(i+". clan niza je: " + niz[i]); } }

    Zadatak 45. Napisati program koji pronalazi prirodan broj manji od 10000 koji ima najvie delilaca

    public class NajviseDelilaca { public static void main(String[] args) {

    int N; // trenutni broj za koji ispitujemo int maxDivisors; // trenutni najveci broj delilaca int numWithMax; // broj sa najvecim brojem delilaca

    maxDivisors = 1; numWithMax = 1; for ( N = 2; N

  • 25

    Metode

    Zadatak 46. Napisati program koji uitava visinu i osnovu trougla i zatim izraunava povrinu trougla uz pomo odgovarajue metode:

    package povrsinatrougla; import java.util.Scanner;

    public class PovrsinaTrougla {

    static double povrsinaTrougla(double a, double h){ return (a*h)/2; }

    public static void main(String[] args) { double osnova, visina, povrsina; System.out.println("Program koji izracunava povrsinu trougla!"); Scanner consoleIn = new Scanner(System.in); System.out.print("Unesite duzinu osnove trougla: "); osnova = consoleIn.nextDouble(); System.out.print("Unesite visinu trougla: "); visina = consoleIn.nextDouble(); povrsina = povrsinaTrougla(osnova, visina); System.out.println("Povrsina trougla iznosi: " + povrsina); } } Zadatak 47. Napisati program koji uitava duine stranica pravougaonika i zatim izraunava povrinu i obim pravougaonika uz pomo metoda:

    static double izracunajPovrsinu(double a, double b)

    static double izracunajObim(double a, double b)

    package pravougaonik; import java.util.Scanner; public class Pravougaonik {

    static double izracunatiPovrsinu(double a, double b){ double p = a * b; return p; }

    static double izracunatiObim(double a, double b){ return 2*a + 2*b; }

    public static void main(String[] args) { double a, b; System.out.println("Program koji izracunava povrsinu i obim pravougaonik"); Scanner ulaz = new Scanner(System.in); System.out.print("Unesite stranicu a: "); a = ulaz.nextDouble(); System.out.print("Unesite stranicu b: "); b = ulaz.nextDouble();

  • 26

    System.out.println("Povrsina iznosi: " + izracunatiPovrsinu(a, b)); System.out.println("Obim iznosi: " + izracunatiObim(a, b)); } }

    Zadatak 48. Napisati program koji koristei metod stepen izracunava stepen unetog broja. Od korisnika traiti i unos broja i stepena na koji se broj podie.

    import java.util.Scanner; public class Stepenovanje {

    public static int stepen(int a, int b){ int total = 1; for(int i = 0; i < b; i++) total = total * a; return total; } public static void main(String[] args) { int broj, eksponent; Scanner consoleIn = new Scanner(System.in); System.out.println("Unesite broj ciji stepen trazite: "); broj = consoleIn.nextInt(); System.out.println("Unesite stepen broja: "); eksponent = consoleIn.nextInt(); broj = stepen(broj, eksponent); System.out.println("stepen broja je: " + broj); } }

    Zadatak 49. Napisati program koji uz pomo metode int max(int num1, int num2) prikazuje vei broj od

    dva uneta

    public class TestirajMaksimum { int max(int num1, int num2) { int result; if (num1 > num2){ result = num1; }else{ result = num2;

    } return result; }

    public static void main(String[] args) { System.out.println("Program koji ispisuje vei od dva uneta broja"); Scanner ulaz = new Scanner(System.in); System.out.print("Unestite prvi broj: ");

    int i = ulaz.nextInt(); System.out.print("Unestite drugi broj: ");

    int j = ulaz.nextInt(); int k = max(i, j); System.out.println("Veci broj izmedju " + i + " i " + j + " je: " + k); } }

  • 27

    Zadatak 50. Napisati program koji ispisuje poruku o oceni na osnovu unetih bodova (za 51-60 je 6, za 61-70 je

    7) U program koristiti metodu: void stampajOcenu(double bodovi).

    public class IspisOcene { public static void main(String[] args) { System.out.println("Program koji ispisuje ocenu"); System.out.println("Unestite broj bodova: "); Scanner ulaz = new Scanner(System.in);

    double broj = ulaz.nextDouble(); stampajOcenu(broj);

    }

    void stampajOcenu(double bodovi) { if (bodovi >90.0) { System.out.println( Ocena je: 10); } else if (bodovi > 80.0) { System.out.println(Ocena je: 9); } else if (bodovi >70.0) { System.out.println(Ocena je: 8); } else if (bodovi > 60.0) { System.out.println(Ocena je: 7); } else if (bodovi > 50.0) { System.out.println(Ocena je: 6); } else { System.out.println(Ocena je: 5); } } }

    Zadatak 51. Napisati metod max() koji kao argumente prima dva integera i vraa vrednost veeg. Koristei overloading definisati metod max() koji ima za argumente dva broja tipa float i kao rezultat vraa vrednost tipa float.

    public class Maksimumi {

    static float max(float a, float b){ if (a>b) { return a; } else{ return b; } } static int max(int a, int b){ if (a>b) { return a; } else{ return b; } } }

  • 28

    Zadatak 52. Napisati program koji ispisuje prvih n lanova fibonaijevog niza, n unosi korisnik.

    2,1, 2121 ==+= == fffff nnn , tj. 1,2,3,5,8,13,21, 34,55,... import java.util.Scanner; public class Fibonacci{ public static int fib(int n) { int f1=1, f2=2, temp=0; if (n==1){ return 1; }else if (n==2){ return 2; }else { for(int i=3; i

  • 29

    System.out.println("Povrsina iznosi: " + povrsina); } }

    Primer 54. Program koji ispisuje (uz pomo metode) koji je uneti mesec po redu u godini

    public class StringSwitchDemo {

    public static int getMonthNumber(String month) {

    int monthNumber = 0;

    if (month == null) { return monthNumber; }

    switch (month.toLowerCase()) { case "january": monthNumber = 1; break; case "february": monthNumber = 2; break; case "march": monthNumber = 3; break; case "april": monthNumber = 4; break; case "may": monthNumber = 5; break; case "june": monthNumber = 6; break; case "july": monthNumber = 7; break; case "august": monthNumber = 8; break; case "september": monthNumber = 9; break; case "october": monthNumber = 10; break; case "november": monthNumber = 11; break; case "december": monthNumber = 12; break; default: monthNumber = 0; break;

  • 30

    }

    return monthNumber; }

    public static void main(String[] args) {

    String month = "August";

    int returnedMonthNumber = StringSwitchDemo.getMonthNumber(month);

    if (returnedMonthNumber == 0) { System.out.println("Invalid month"); } else { System.out.println(returnedMonthNumber); } } }

    Zadatak 55. Napisati program koji ispituje da li je uneti broj prost

    import java.util.Scanner;

    public class DaLiJeProst {

    public static void main(String[] args) { int broj; // recenica koju unosi korisnik Scanner consoleIn = new Scanner(System.in); System.out.println("Unesite broj za koji proveravamo da li je prost:"); broj = consoleIn.nextInt(); if (prost(broj)){ System.out.println("Broj je prost"); } else{ System.out.println("Broj nije prost"); } }

    static boolean prost(int br) { int brojac = 0; //brojac delioca for (int i = 2; i

  • 31

    Zadatak 56. Napisati program koji trai od korisnika da uita broj i zatim ispisuje sve brojeve koji su manji od tog broja a koji su prosti

    import java.util.Scanner;

    public class IspisatiProste {

    public static void main(String[] args) { int broj; // recenica koju unosi korisnik Scanner consoleIn = new Scanner(System.in); System.out.println("Unesite broj do kojeg ispisujemo proste brojeve:"); broj = consoleIn.nextInt(); for (int i = 1; i

  • 32

    Stringovi

    Zadatak 57. Napisati program koji uitava dva stringa i proverava da li su isti.

    package zadatak34;

    import java.util.Scanner; public class Main { public static void main(String[] args) {

    String str1, str2; Scanner unos = new Scanner(System.in); System.out.println("Unesite prvu recenicu:"); str1= unos.nextLine(); System.out.println("Unesite drugu recenicu:"); str2= unos.nextLine();

    if (str1.trim().equalsIgnoreCase(str2.trim())){ System.out.println("Stringovi su isti"); }else{ System.out.println("Nisu isti"); } } }

    Zadatak 58. Napisati program koji uitava dva stringa i ispisuje poruku o njihovoj duini i spaja ih u jedan string i tampa taj novi string.

    package javaapplication6;

    import java.util.Scanner;

    public class JavaApplication6 {

    public static void main(String[] args) { String str1, str2; Scanner unos = new Scanner(System.in); System.out.println("Unesite prvi String:"); str1= unos.nextLine(); System.out.println("Unesite drugi String:"); str2= unos.nextLine();

    System.out.println("Duzina prvog stringa je: " + str1.length()); System.out.println("Duzina drugog stringa je: " + str2.length());

    String rezultat = str1 + str2; // moze i: //str1.concat(str2) System.out.println("Spajanjem stringova nastaje: " + rezultat);

    } }

  • 33

    Zadatak 59. Napisati program koji proverava da li je uneta reenica palindrom

    package zadatak34; import java.util.Scanner; public class Main {

    static boolean palindrom(String str){ char niz[]=str.toCharArray(); for (int i = 0; i < niz.length/2; i++) { if(niz[i]!=niz[niz.length-i-1]){ return false; } } return true; }

    public static void main(String[] args) { String str; Scanner unos = new Scanner(System.in); System.out.println("Unesite recenicu:"); str= unos.nextLine(); if (palindrom(str)){ System.out.println("Recenica je palindrom"); }else{ System.out.println("recenica nije palindrom"); }

    }

    }

    Reenje koje uzima u obzir i prazna mesta:

    package zadatak34; import java.util.Scanner; public class Main {

    static boolean palindrom(String str){ char niz[]=str.toCharArray(); int i = 0, j=niz.length-1; while (j-i>=1){ if(niz[i]!=niz[j]){ return false; } do{i++;}while(niz[i] == ' '); do{j--;}while(niz[j] == ' '); } return true; }

    public static void main(String[] args) { String str; Scanner unos = new Scanner(System.in); System.out.println("Unesite recenicu:"); str= unos.nextLine(); if (palindrom(str.trim())){

  • 34

    System.out.println("Recenica je palindrom"); }else{ System.out.println("recenica nije palindrom"); } } }

    Zadatak 60. Napisati program koji trazi od korisnika da unese reenicu a zatim je ispisuje u obliku gde su sva poetna slova rei velika slova a sva ostala mala.

    import java.util.Scanner; public class UpperCase {

    public static void main(String[] args) { String line; // recenica koju unosi korisnik Scanner consoleIn = new Scanner(System.in); System.out.println("Unesite recenicu:"); line= consoleIn.nextLine(); printCapitalized( line ); }

    static void printCapitalized( String str ) { char ch; // trenutni karakter u stringu. char prevCh; // karakter koji prethodi trenutnom. int i; // pozicija u stringu, od 0 to str.length()-1. prevCh = '.'; // pocetna vrednost za prethodni karakter // treba da je bilo sta sto nije slovo for ( i = 0; i < str.length(); i++ ) { ch = str.charAt(i); if ( Character.isLetter(ch) && ! Character.isLetter(prevCh) ) System.out.print( Character.toUpperCase(ch) ); else System.out.print(Character.toLowerCase(ch) ); prevCh = ch; // trenutni postaje prethodni } System.out.println(); } }

  • 35

    Nizovi

    Zadatak 61. Definisati I inicijalizoviti niz od 10 celih brojeva koji e sadrati redom parne brojeve . Na kraju ispisati lanove niza

    package niz;

    public class Niz {

    public static void main(String[] args) {

    int parniBrojevi[] = new int[10];

    for (int i = 0; i < 10; i++) { parniBrojevi[i] = 2*i+2;

    }

    System.out.println("Clanovi niza su: ");

    for (int i = 0; i < parniBrojevi.length; i++) {

    System.out.println(i + ". clan niza je: " + parniBrojevi[i]); }

    } }

    Zadatak 62. Napisati program koji definie niz duine dvadeset u kojem je vrednost nultog lana 1, vrednost prvog lana 2 a svaki sledei element je jednak zbiru prethodna dva. Na kraju takoe uz pomo for petlje ispisati vrednosti elemenata niza.

    package fibonaci;

    public class Fibonaci {

    public static void main(String[] args) { System.out.println("Program koji ispisuje Fibonacijeve brojeve!");

    int niz[] = new int[20];

    niz[0] = 1; niz[1] = 2;

    for(int i = 2; i < niz.length; i++){ niz[i] = niz[i-1] + niz[i-2];

    } for (int i = 0; i < niz.length; i++) {

    System.out.println(i + ". clan niza je: " + niz[i]);

    } }

    }

    Zadatak 63. Napisati program koji od korisnika trai da unese neki datum i da ispie koji je to po redu dan u godini. Za izraunavanje definisati i koristiti niz:

    int brojDanaUMesecu[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

    reenje:

    package zadatak31; import java.util.Scanner;

    public class Zadatak31 {

    public static void main(String[] args) {

    int niz[]={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int dan, mesec, ukupno=0;

  • 36

    Scanner unos = new Scanner(System.in); do{ System.out.println("Unesite dan: "); dan = unos.nextInt(); System.out.println("Unesite mesec: "); mesec = unos.nextInt(); }while(mesec>12 ||dan>niz[mesec-1]);

    for( int i=0; i

  • 37

    Klase

    Zadatak 65. Napisati program koji e se sastojati od dve klase:

    Klasa: Dete u kojoj e se uvati podaci o imenu, visini i teini deteta, i koja e sadrati: o Metod za inicijalizaciju podataka o metodu za tampanje podataka: stampaj() o metode za unos nove visine i nove teine: promenaVisine(int visina) i

    promenaTezine(int tezina) Klasa: GlavnaKlasa, u kojoj e se od korisnika traiti da unese podatke o detetu, zatim se kreirati nova

    instanca klase Dete pod imenom dete1, stampati podatke, zatim ponovo traiti nove podatke o visini i tezini, i na kraju drugi put stampati podatke

    package zadatak33;

    public class Dete { String ime; double visina; double tezina;

    public Dete(String ime, double visina, double tezina){ this.ime = ime; this.visina = visina; this.tezina = tezina; }

    void unosNoveVisine(double visina){ this.visina = visina; }

    void unosNoveTezine(double tezina){ this.tezina = tezina; }

    void stampaj(){ System.out.println("Ime je: " + ime); System.out.println("Visina je: " + visina); System.out.println("Tezina je: "+ tezina); } }

    package zadatak33; import java.util.Scanner;

    public class GlavnaKlasa {

    public static void main(String[] args) { String ime; double tez, vis; Scanner unos = new Scanner(System.in); System.out.print("Unesite ime deteta: "); ime = unos.next();

  • 38

    System.out.print("Unesite visinu deteta: "); vis = unos.nextDouble(); System.out.print("Unesite tezinu deteta: "); tez = unos.nextDouble();

    Dete dete1 = new Dete(ime, vis, tez); dete1.stampaj();

    System.out.print("Unesite ponovo visinu deteta: "); vis = unos.nextDouble(); System.out.print("Unesite ponovo tezinu deteta: "); tez = unos.nextDouble();

    dete1.unosNoveTezine(tez); dete1.unosNoveVisine(vis); dete1.stampaj();

    } }

    Dodatni primeri

    Zadatak 66. Napisati metod koji e pitati korisnika da unese vrednost i ispisivati njegov kvadratni koren. Ako je uneti broj negativan, ispisati poruku o greki

    public static void stampajKoren (){ System.out.println("Unesite pozitivan broj"); double x = In.getDouble(); if (x >= 0){

    System.out.println("Kvadratni koren iznosi " + Math.sqrt(x)); }else{

    System.out.println("Unet je negativni broj"); }

    Zadatak 67. Napisati metod koji simulira rezultat bacanja kockice tako to e ispisivati nasumian broj izmeu 1 i 6. Neka kao rezultat ispisuje poruku:

    Pala Vam je 3! class kockice{

    public static void main(String [] args){ baciJednomKockicu();

    }

    public static void baciJednomKockicu(){ int roll = (int)(6*Math.random()) + 1; System.out.println("Pala Vam je " + roll);

    }

    }

  • 39

    Programiranje korisnikog interfejsa (Graphical user interface GUI)

    Kreiranje korisnikog interfejsa desktop aplikacije

    Primer jednostavne aplikacije:

    1. Odabrati opciju File > New Project 2. Meu kategorijama odabrati Java i podkategoriju Java Application 3. Dati naziv projektu, i podesiti opcije kao na slici:

    Kao poetak izgradnje interfejsa potrebno je kreirati jedan kontejner koji e sadrati elemente koje

    nameravamo da dodamo na interfejs, Kreiramo JFrame kontejner:

    1. Odabrati opciju New > JFrame Form

  • 40

    2. Dati naziv formi i definisati paket:

    3. Kreira se klasa PrvaForma, unutar paketa my.SabiranjeBrojeva, otvara se prozor za dizajn forme i odgovarajua paleta.

    4. Na formu dodati jedan JPanel i zatim na formu dodati tri labele (JLabels), tri polja za unos teksta (JTextFields), i tri dugmeta (JButtons):

    5. Preimenovati komponente tako da izgledaju kao na slici:

  • 41

    Dodavanje funkcije dugmadima

    1. Desnim klikom na dugme Izai pojavi se konteksni meni i treba odabrati Events > Action > ActionPerformed

    2. U metodi koju NetBeans kreira zameniti red:

    // TODO add your handling code here:

    Sa:

    System.exit(0);

    3. istim postupkom na dugme Brii kod zameniti sa:

    jTextField1.setText(""); jTextField2.setText(""); jTextField3.setText("");

    4. ovaj kod brie sadraj tri polja. 5. Za dugme Saberi na isti nain uneti

    double num1, num2, result; num1 = Double.parseDouble(jTextField1.getText()); num2 = Double.parseDouble(jTextField2.getText()); result = num1 + num2; jTextField3.setText(String.valueOf(result));

    Pokretanje programa:

    1. Odabrati Run > Run Main Project 2. Ako upozori da projekat nema glavnu klasu, odabrati je iz liste

    3. Rezultat izvoenja je:

  • 42

    4. Ako elite Windows Look and Feel (tj. Izgled operativnog sistema u kojem radite) u main klasu uneti naredni kod:

    try { UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName()); } catch (Exception ex) { ex.printStackTrace(); }

    5. Pa e prozor izgledati (Windows XP):

  • 43

    Zadatak 68. Programirati aplikaciju koji e imati sledei korisniki interfejs:

    Pritiskom na dugme Obradi se obavljaju sledee akcije u zavisnosti koje radi dugme je obeleeno: o Duina stringa: ispisuje kao rezultat obrade poruku o duini stringa

    o Ispis stringa: ispisuje kao rezultat obrade sam uneti string o Ispis stringa unazad: Ispisuje se uneti string unazad

    Pritiskom na dugme Obrii se brie sadraj polja za unos i rezultat prethodne obrade

    Pritiskom na dugme Izai se zatvara aplikacija

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { String str = jTextField1.getText(); int duzina = str.length(); if (jRadioButton1.isSelected()) { jLabel2.setText("Duzina je:" + str.length()); } else if (jRadioButton2.isSelected()) { jLabel2.setText(str); } else { jLabel2.setText(""); for (int i = 0; i < duzina; i++) { jLabel2.setText(jLabel2.getText()+str.charAt(duzina-i-1));

  • 44

    } } } Zadatak 69. Programirati aplikaciju koji e imati sledei korisniki interfejs:

    Aplikacija treba da u donjem delu ispisuje unetu reenicu velikim ili malim slovima u zavisnosti da li je

    jCheckBox selectovan ili ne

    private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) { String str = jTextField1.getText(); if (jCheckBox1.isSelected()) { jLabel1.setText("Reenica: " + str.toUpperCase()); } else { jLabel1.setText("Reenica: " + str.toLowerCase()); } }

  • 45

    Dodatne opcije:

    Postavljanje naslova u jPanel-u

    1. Postaviti jPanel na formu 2. u Properties odabrati polje Border i zatim Titled Border, i uneti naslov panela u polje Title

    Postavljanje radio dugmadi

    1. Na formu postaviti jednu Button Group komponentu (bie vidljiva samo u Inspector-u) 2. Zatim na formu postaviti potreban broj Radio Button komponenti 3. Za svaku od Radio Button komponenti odabrati u prozoru properties opciju ButtonGroup i u njoj

    selektovati Button Group kojem elimo da pripadaju

    Neke dodatne opcije prozora Properties za postavljenu forme

    1. eljeni naslov forme se unosi u opciji Title 2. U polju Bounds se definiu koordinate poetne pozicije prozora 3. Opcijom Resizable se definie da li je prozor promenjive ili fiksne veliine

    Neke dodatne opcije prozora Properties za ostale komponente

    1. U polje toolTipText se unosi tekst koji se pojavljuje kada se mi nadnese nad komponentu

    Komponente menija

    1. U cilju formiranja glavnog menija aplikacije se mogu koristiti sledee komponenete: a. Menu Bar (1) b. Menu (2) c. Menu Item (3) d. Menu Item/CheckBox (4) e. Menu Item/RadioButton (5) f. Separator (6)

    2. Komponentama Menu Item se najee dodaju dogaaji koji su ranije prikazani npr. za dugmad

  • 46

    Pokretanje novih prozora unutar aplikacije

    1. Kliknuti desnim na naziv projekta i odabrati New>Jdialog Form 2. Odabrati naziv novog dialoga i postaviti ga u isti paket kao i osnovnu formu:

    3. Izdizajnirati dialog po potrebi 4. Dodati dogaaj na neki od Menu Item-a iz glavnog menija osnovne forme (desni klik na odgovarajui

    Menu Item i odabir opcije: Events>Action>actionPerformed) 5. Kopirati deo sadraja main metoda novog dialoga (crveni kod) u metodu koja obrauje dogaaj tog

    Menu Item-a. Metoda bi izgleda slino ovom:

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) { NewJDialog1 dialog = new NewJDialog1(new javax.swing.JFrame(), true); dialog.setVisible(true); }

    (1)

    (2)

    (3)

    (4)

    (6)

  • 47

    Dodavanje opcija Combo Box-u (isto u jListi)

    1. Postaviti Combo box na formu 2. U prozoru Properties u polju model uneti eljene opcije

    Pokretanje programa van NetBeans-a

    1. Odabrati opciju Run > Clean and Build Main Project 2. Pokrenuti jar fajl u dist direktorijumu projekta

    Zadatak 70. Programirati aplikaciju koja e sadrati formu kao na slici:

    U Combo box-u definisati sledee opcije:

  • 48

    Dodavanje funkcija komponenti jList

    1. Dodavanje elemenata u listu. Dodati naredni kod koji kreira model koji e omoguavati unos elemenata u listu (postavlja se u konstruktor metodu):

    DefaultListModel listModel = new DefaultListModel(); jList1.setModel(listModel);

    2. Za dugme Dodaj odabrati opciju Events>Action>actionPerformed i u metodu za obradu izuzetka dodati sledei kod:

    String str = jTextField5.getText(); listModel.addElement(str);

    3. Brisanje lemenata iz liste. Za dugme izbaci dodati metodu za obradu izuzetka sa sledeim kodom:

    int rdbroj = jList1.getSelectedIndex(); if (rdbroj == -1) { jLabel7.setText("Morate selektovati neku stavku"); } else { listModel.removeElementAt(rdbroj); jLabel7.setText(""); }

    4. Postavljanje sadraja selektovanog polj liste u TextField. Na jList kliknuti desnim i odabrati opciju Events > Mouse > MouseClicked i u metodu dodati naredni kod

    jTextField5.setText(listModel.getElementAt(jList1.getSelectedIndex()).toString());

    ili:

    int broj = jList1.getSelectedIndex(); String str = listModel.getElementAt(broj).toString(); jTextField5.setText(str);

  • 49

    5. Izmena sadraja elemenata iz liste se radi sa narednim kodom dodeljenom dugmetu izmeni

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { String str = jTextField5.getText(); int broj = jList1.getSelectedIndex(); listModel.removeElementAt(broj); listModel.add(broj, str); }

  • 50

    Kreiranje desktop aplikacije sa konekcijom na bazu

    Uputstvo za instalaciju MySql-a i kreiranje konekcije

    MySQL

    Prvo je potrebno instalirati MySQL server, najjednostavniji nain je instalacijom XAMPP-a.

    1. Pokrenuti instalaciju xampp-win32-???. Gde je ??? oznaka berzije XAMPP-a 2. pokrenuti odgovarajui MySQL servis (u zavisnosti od verzije Control panel XAMPP-a izgleda slino

    ovako):

    ili

  • 51

    Netbeans 7.0

    Za pristup postojeoj bazi (npr. ako ve postoji baza pod nazivom proba)

    1. Pokrenuti NetBeans, u kartici services otvoriti opciju Databases pa zatim Drivers i na polje MySQL (connector-J driver) kliknuti desnim i odabrati Connect Using i ispuniti formu:

    a. Host: localhost b. Port: 3306 c. Database: proba d. Username: root e. Password: uneti ranije unetu lozinku pri instalaciji mySql-a (xampp-a) (default je prazna)

    6. Pojavljuje se vor sa detaljima konekcije:

  • 52

    Kreiranje aplikacije sa novom bazom podataka

    1. Ponoviti prve korake za Kreiranja korisnikog interfejsa desktop aplikacije sve do kreiranja poetnog okvira

    2. desni klik na MySQL Server at localhost: 3306 i odabrati opciju Create Database:

    3. Uneti naziv nove baze

    4. Kreirati nove tabele

  • 53

    5. definisati potrebne kolone

    6. Klikom na dugme Add Column se pokree naredna forma gde se definiu osnovne opcije kolona:

    ili

    7. i uneti odgovarajue podatke

    i:

  • 54

    7. Desnim klikom na naziv tabele i odabrirom opcije View Data se lista sadraj tabele

  • 55

    Kreiranje aplikacije uz pomo postojeih tabela

    Slede koraci za kreiranje aplikacije:

    1. Odabrati opciju File > New Project u NetBeans-u i zatim sledee opcije (U novijim verzijama NetBeans-a ne postoji ova opcija):

    2. U Name and Location koraku odabrati sledee opcije:

  • 56

    3. U Master Table koraku odabrati sledee opcije

    4. U Detail Options koraku klinuti Finish. 5. Sistem tada kreira osnovni korisniki interfejs sa tabelom i konekcijom na bazu.

  • 57

    Postavljanje dodatnih kontrola na aplikaciju

    1. Ispod polja za unos lokacije dodati dve oznake (jLabel) i po jedan jSlider i jCheckBox kao na slici:

    2. Kliknuti desnim na Slider i odabrati Bind > value i odabrati sledee opcije:

  • 58

    3. Isto uraditi i za jLabel2 ali sa opcijom Bind > Text 4. Kliknuti desnim na Check Box i odabrati Bind > value i odabrati sledee opcije:

    5. U opciji Properties za Slider komponentu postaviti Minimalnu i Maximalnu vrednost na 4000 i 4050, tim redom

    6. Pokretanjem programa se dobija sledea forma:

  • 59

    U main metodi potrebno je definisati i otvoriti konekciju:

    try{ Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection ("jdbc:mysql://localhost:3306/Projekat","root","root"); stmt = conn.createStatement(); }catch(Exception ex){ ex.printStackTrace(); }

    8. Definisati potrebne promenjive i dodati odgovarajue import-e:

    public static Connection conn; public static Statement stmt; public static ResultSet rezultati;

    import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement;

    9. Ako, na primer, elimo da popunimo combo box sa imenima igraca potrebno je postaviti na formu jComboBox

    10. definisati metodu puniCombo():

    public void puniCombo(){ ResultSet rez; String sql="SELECT ime, prezime FROM projekat.radnik ORDER BY prezime"; try{ rez=stmt.executeQuery(sql); while (rez.next()) { jComboBox1.addItem(rez.getString("ime")+" "+rez.getString("prezime")); } }catch(Exception ex){ ex.printStackTrace(); } };

  • 60

    11. i postaviti poziv metode: puniCombo() u konstruktor metodi 12. Za izraunavanje proseka plata i njegovo ispisivanje u jLabel komponenti moe se napisati sledea

    metoda:

    public void izracunajProsek(){ ResultSet rez; String sql="SELECT avg(plata) FROM projekat.radnik"; try{ rez=stmt.executeQuery(sql); while (rez.next()) { Float pom = rez.getFloat("avg(plata)"); jLabel1.setText("Prosecna plata iznosi: "+String.valueOf(pom)+" din."); } }catch(Exception ex){ ex.printStackTrace(); } }

    13. Izmena irine kolona u jTable

    TableColumn kolone=null; kolone = jTable1.getColumnModel().getColumn(1); kolone.setPreferredWidth(150); kolone = jTable1.getColumnModel().getColumn(2); kolone.setPreferredWidth(150);

  • 61

    Zadatak

    Kreirati aplikaciju koja e sluiti za prikaz Informacionog sistema bioskopa

    Baza podataka bioskop treba da sadri sledee tabele:

    Film sa sledeim podacima: ifra filma, naziv filma, reiser, glavna uloga, duina filma, anr

    Sala sa sledeim podacima: ifra sale, naziv sale, kapacitet sale, maksimalni broj dnevnih projekcija

    Zaposleni sa sledeim podacima: ifra zaposlenog, ime, prezime, radno mesto, godiste, plata, struna

    sprema

    Proizvodi (proizvodi koji se mogu kupiti u bioskopu kokice, sokovi, itd) sa sledeim podacima: ifra

    proizvoda, naziv proizvoda, tip proizvoda, cena, trenutna raspoloiva koliina

    Rezervacija sa sledeim podacima: ifra rezervacije, ime posetioca, broj karata, vreme projekcije

    Aplikacija treba da sadri naredne prozore koji e prikazivati podatke iz baze podataka:

  • 62

    Kod za unos podataka o zaposlenom (aktivira se dugmetom Unesi podatke):

    try{

    Class.forName("com.mysql.jdbc.Driver");

    conn = DriverManager.getConnection

    ("jdbc:mysql://localhost:3306/bioskop","root","");

    stmt = conn.createStatement();

    PreparedStatement pstmt;

    String ime = jTextField1.getText();

    String prezime = jTextField2.getText();

    int sifra = Integer.parseInt(jTextField3.getText());

    String mesto = jComboBox1.getSelectedItem().toString();

    int god = Integer.parseInt(jTextField4.getText());

    int plata = Integer.parseInt(jLabel9.getText());

    String sprema = jComboBox2.getSelectedItem().toString();

    String insertQuery = "INSERT INTO zaposleni (sifr, ime, prezime, rdmesto,

    godiste, plata, ss)"

    +"VALUES"

    +"(?, ?, ?, ?, ?, ?, ?)";

    pstmt = conn.prepareStatement(insertQuery);

    pstmt.setInt(1, sifra);

    pstmt.setString(2, ime);

    pstmt.setString(3, prezime);

    pstmt.setString(4, mesto);

    pstmt.setInt(5, god);

    pstmt.setInt(6, plata);

    pstmt.setString(7, sprema);

    int rowCount = pstmt.executeUpdate();

    pstmt.close();

    conn.close();

    }catch(Exception ex){

    ex.printStackTrace();

    }

  • 63

    Kreiranje najjednostavnije aplikacije za projekat

    1. Kreirati nekoliko tabela u MySQL-u po ranijim uputstvima 2. Kreirati nov projekat, pa zatim novi jFrame u okviru tog projekta:

    3. Na prozoru postaviti glavni meni i/ili nekoliko dugmadi koji e kasnije biti postavljeni kao linkovi ka pojedinim prozorima

    4. Kreirati posebne prozore koji e prikazivati svaki po jednu ranije definisanu tabelu iz baze uz pomo opcije:

    i

  • 64

    Zatim:

    5. Zatim u narednim koracima odabrati opcije za prikaz podataka iz tabela:

  • 65

    6. Zatim sledei kod iz main metoda svake Master/detail forme

    EventQueue.invokeLater(new Runnable() { public void run() { JFrame frame = new JFrame(); frame.setContentPane(new NewMasterDetailForm()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } });

    7. Kopirati u odgovarajui metod koji se pokree pritiskom odgovarajueg dugmeta sa osnovnog prozora

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { EventQueue.invokeLater(new Runnable() { public void run() { JFrame frame = new JFrame(); frame.setContentPane(new NewMasterDetailForm()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } }); }

    8. Na taj nain je kreirana jednostavna aplikacija koja na osnovnom prozoru prikazuje nekoliko dugmadi i gde svako dugme pokree odgovarajuu master/detail formu za prikaz podataka iz po jedne tabele baze podataka.

  • 66

    Dodatni primeri:

    Deo koda kojim se postie centriranje prozora:

    Dimension dim=Toolkit.getDefaultToolkit().getScreenSize();

    int w = frame.getSize().width; int h = frame.getSize().height;

    int x = (dim.width-w)/2;

    int y = (dim.height-h)/2;

    frame.setLocation(x,y);

    Mogue je koristiti sledee delove koda, kako bi se korisnik obavestio o uspenosti ili neuspenosti unosa, izmene i brisanja podataka:

    JOptionPane.showMessageDialog(this, "Uspean unos ili izmena!",

    "Obavetenje o unosu", JOptionPane.INFORMATION_MESSAGE);

    JOptionPane.showMessageDialog(this, "Greka pri unosu ili izmeni!",

    "Obavetenje o unosu", JOptionPane.ERROR_MESSAGE);

    int brisanje = JOptionPane.showConfirmDialog(this,"Da li ste sigurni?", "Brisanje",JOptionPane. WARNING_MESSAGE);

    if (brisanje==0) {

    JOptionPane.showMessageDialog(this,"Uspeno brisanje!",

    "Obavetenje o brisanju",JOptionPane.INFORMATION_MESSAGE);

    }else{

    JOptionPane.showMessageDialog(this,"Brisanje otkazano!",

    "Obavetenje o brisanju",JOptionPane.INFORMATION_MESSAGE);

    } Unos pretrage u tabeli

    Na svakoj Master/Detail formi, mogue je dodati polje za pretragu. Da bi omoguili pretragu, neophodno je da:

    1. fajl RowSorterToStringConverter.java, prekopirati u paket aplikacije i kompajlirati ga. 2. Prevui fajl miem na formu za koju se pravi pretraga. Tada e se taj fajl nai u odeljku

    Inspector (pod Other Components). Tu je potrebno desnim klikom otvoriti Properties i za table podesiti MasterTable.

    3. Nakon toga, desni klik na tekstualno polje za pretragu pa Bind text, kako bi se izvrila neophodna podeavanja u tabu Basic i u tabu Advanced.

    4. Ponavljanjem ovog postupka za svaku Master/Detail Formu, moe se omoguiti pretraga svake tabele putem odgovarajue Master/Detail Forme.

    Pokretanje aplikacije van NetBeansa

    Na kraju se naredbom Build (desni klik na projekat) kreira izvrni fajl (.jar), kojim se pokree aplikacija van Netbeans-a.Taj fajl se nalazi u folderu dist koji je podfolder osnovnog projekta. Taj RadnikProjekat.jar fajl slui Vam za pokretanje aplikacije van Netbeansa (izvui preicu npr. na desktop i dvoklikom na nju otvara se aplikacija iako je Netbeans zatvoren.