Advertisement
Guest User

Untitled

a guest
May 28th, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.85 KB | None | 0 0
  1. import java.io.FileWriter;
  2. import java.io.IOException;
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.PreparedStatement;
  6. import java.sql.ResultSet;
  7. import java.sql.SQLException;
  8. import java.text.ParseException;
  9. import java.text.SimpleDateFormat;
  10. import java.util.ArrayList;
  11. import java.util.Date;
  12.  
  13. import javafx.application.Application;
  14. import javafx.geometry.Insets;
  15. import javafx.geometry.Pos;
  16. import javafx.scene.Scene;
  17. import javafx.scene.control.Button;
  18. import javafx.scene.control.Label;
  19. import javafx.scene.control.TextField;
  20. import javafx.scene.layout.HBox;
  21. import javafx.scene.layout.VBox;
  22. import javafx.stage.Stage;
  23.  
  24. public class Main extends Application{
  25.  
  26.  
  27. static{
  28. try{
  29. Class.forName("com.ibm.db2.jcc.DB2Driver");
  30.  
  31. }
  32. catch(Exception e){
  33. e.printStackTrace();
  34. }
  35. }
  36.  
  37. Scene scene1, scene2, scene3, scene4;
  38.  
  39. Connection con;
  40. int pom = 0;
  41. public static void main(String[] args)
  42. {
  43. Application.launch(args);
  44.  
  45. }
  46.  
  47. public void start(Stage window) throws Exception
  48. {
  49. try{
  50.  
  51. String url = "jdbc:db2://localhost:50001/vstud";
  52.  
  53.  
  54. con = DriverManager.getConnection(url,"student","abcdef");
  55.  
  56.  
  57.  
  58. // Prva scena
  59. Label godinaLabela1 = new Label("Godina: ");
  60. Label oznakaLabela1 = new Label("Oznaka:");
  61. TextField godinaField1 = new TextField();
  62. TextField oznakaField1 = new TextField();
  63. Button listaj = new Button("Listaj");
  64. Label poruka1 = new Label("");
  65.  
  66. HBox godinaBox1 = new HBox(5);
  67. godinaBox1.getChildren().addAll(godinaLabela1, godinaField1);
  68. godinaBox1.setAlignment(Pos.CENTER_LEFT);
  69.  
  70.  
  71. HBox oznakaBox1 = new HBox(5);
  72. oznakaBox1.getChildren().addAll(oznakaLabela1, oznakaField1);
  73. oznakaBox1.setAlignment(Pos.CENTER_LEFT);
  74.  
  75. VBox glavni1 = new VBox(10);
  76. glavni1.getChildren().addAll(godinaBox1, oznakaBox1, listaj, poruka1);
  77.  
  78. glavni1.setPadding(new Insets(15, 15, 15, 15));
  79. scene1 = new Scene(glavni1, 500, 300);
  80.  
  81.  
  82. // Druga scena
  83. Label prvaPoruka2 = new Label("Odabrani rok ne postoji.");
  84. Label drugaPoruka2 = new Label("Da li zelite da ga dodate?");
  85. Button yes = new Button("yes");
  86. Button no = new Button("no");
  87.  
  88.  
  89. HBox dugmici2 = new HBox(80);
  90. dugmici2.getChildren().addAll(yes, no);
  91.  
  92. VBox glavni2 = new VBox(10);
  93. glavni2.getChildren().addAll(prvaPoruka2, drugaPoruka2, dugmici2);
  94.  
  95. glavni2.setPadding(new Insets(15, 15, 15, 15));
  96. scene2 = new Scene(glavni2, 500, 300);
  97.  
  98. // Treca scena
  99. Label godinaRoka3 = new Label("Godina roka:");
  100. Label oznakaRoka3 = new Label("Oznaka roka:");
  101. Label nazivRoka3 = new Label("Naziv roka:");
  102. Label pocetakPrijave3 = new Label("Pocetak prijave:");
  103. Label krajPrijave3 = new Label("Kraj prijave:");
  104. Label tip3 = new Label("Tip:");
  105. Button potvrdi = new Button("Potvrdi");
  106. Button odustani = new Button("Odustani");
  107. TextField rezGodinaRoka3 = new TextField();
  108. TextField rezOznakaRoka3 = new TextField();
  109. TextField rezNazivRoka3 = new TextField();
  110. TextField rezPocetakPrijave3 = new TextField();
  111. TextField rezKrajPrijave3 = new TextField();
  112. TextField rezTip3 = new TextField();
  113. Label poruka = new Label("");
  114.  
  115. rezPocetakPrijave3.setPromptText("yyyy-mm-dd");
  116. rezKrajPrijave3.setPromptText("yyyy-mm-dd");
  117.  
  118. HBox prvi3 = new HBox(5);
  119. prvi3.getChildren().addAll(godinaRoka3, rezGodinaRoka3);
  120. prvi3.setAlignment(Pos.CENTER_LEFT);
  121.  
  122. HBox drugi3 = new HBox(5);
  123. drugi3.getChildren().addAll(oznakaRoka3, rezOznakaRoka3);
  124. drugi3.setAlignment(Pos.CENTER_LEFT);
  125.  
  126. HBox treci3 = new HBox(5);
  127. treci3.getChildren().addAll(nazivRoka3, rezNazivRoka3);
  128. treci3.setAlignment(Pos.CENTER_LEFT);
  129.  
  130. HBox cetvrti3 = new HBox(5);
  131. cetvrti3.getChildren().addAll(pocetakPrijave3, rezPocetakPrijave3);
  132. cetvrti3.setAlignment(Pos.CENTER_LEFT);
  133.  
  134. HBox peti3 = new HBox(5);
  135. peti3.getChildren().addAll(krajPrijave3, rezKrajPrijave3);
  136. peti3.setAlignment(Pos.CENTER_LEFT);
  137.  
  138. HBox sesti3 = new HBox(5);
  139. sesti3.getChildren().addAll(tip3, rezTip3);
  140. sesti3.setAlignment(Pos.CENTER_LEFT);
  141.  
  142. HBox dugmici3 = new HBox(80);
  143. dugmici3.getChildren().addAll(potvrdi, odustani);
  144.  
  145. VBox glavni3 = new VBox(5);
  146. glavni3.getChildren().addAll(prvi3, drugi3, treci3, cetvrti3, peti3, sesti3, dugmici3, poruka);
  147.  
  148. glavni3.setPadding(new Insets(15, 15, 15, 15));
  149. scene3 = new Scene(glavni3, 500, 300);
  150.  
  151. //cetvrti gui
  152.  
  153. Label nazivRoka4 = new Label("Naziv roka:");
  154. Label pocetakPrijave4 = new Label("Pocetak prijave:");
  155. Label krajPrijave4 = new Label("Kraj prijave:");
  156. Label brPrijavljenih4 = new Label("Broj prijavljenih ispita:");
  157. Label brPolozenih4 = new Label("Broj polozenih ispita:");
  158. Label brDiskvalifikovanih4 = new Label("Broj ispita na kojima su studenti diskvalifikovani:");
  159. Label brPonistenih4 = new Label("Broj ispita cije su ocene studenti ponistili:");
  160. Label prosek4 = new Label("Prosecna ocena polozenih ispita");
  161.  
  162. Label rezNazivRokaLabela4 = new Label("");
  163. Label rezPocetakPrijaveLabela4 = new Label("");
  164. Label rezKrajPrijaveLabela4 = new Label("");
  165. Label rezBrPrijavljenihLabela4 = new Label("");
  166. Label rezBrPolozenihLabela4 = new Label("");
  167. Label rezBrDiskvalifikovanihLabela4 = new Label("");
  168. Label rezBrPonistenihLabela4 = new Label("");
  169. Label rezProsekLabela4 = new Label("");
  170.  
  171. Button azuriraj = new Button("Azuriraj");
  172. Button obrisi = new Button("Obrisi");
  173. Button stampaj = new Button("Stampaj u datoteku");
  174.  
  175. Label poruka3 = new Label("");
  176.  
  177. HBox prvi4 = new HBox(5);
  178. prvi4.getChildren().addAll(nazivRoka4, rezNazivRokaLabela4);
  179.  
  180. HBox drugi4 = new HBox(5);
  181. drugi4.getChildren().addAll(pocetakPrijave4, rezPocetakPrijaveLabela4);
  182.  
  183. HBox treci4 = new HBox(5);
  184. treci4.getChildren().addAll(krajPrijave4, rezKrajPrijaveLabela4);
  185.  
  186. HBox cetvrti4 = new HBox(5);
  187. cetvrti4.getChildren().addAll(brPrijavljenih4, rezBrPrijavljenihLabela4);
  188.  
  189. HBox peti4 = new HBox(5);
  190. peti4.getChildren().addAll(brPolozenih4, rezBrPolozenihLabela4);
  191.  
  192. HBox sesti4 = new HBox(5);
  193. sesti4.getChildren().addAll(brDiskvalifikovanih4, rezBrDiskvalifikovanihLabela4);
  194.  
  195. HBox sedmi4 = new HBox(5);
  196. sedmi4.getChildren().addAll(brPonistenih4, rezBrPonistenihLabela4);
  197.  
  198. HBox osmi4 = new HBox(5);
  199. osmi4.getChildren().addAll(prosek4, rezProsekLabela4);
  200.  
  201. HBox dugmici4 = new HBox(5);
  202. dugmici4.getChildren().addAll(azuriraj, obrisi, stampaj);
  203.  
  204. VBox glavni4 = new VBox(5);
  205. glavni4.getChildren().addAll(prvi4, drugi4, treci4, cetvrti4, peti4, sesti4, sedmi4, osmi4, dugmici4, poruka3);
  206. glavni4.setPadding(new Insets(15, 15, 15, 15));
  207. scene4 = new Scene(glavni4, 500, 300);
  208.  
  209.  
  210.  
  211.  
  212. //kreiranje window
  213.  
  214. window.setScene(scene1);
  215. window.show();
  216. window.setTitle("Projekat");
  217.  
  218.  
  219. // Akcije
  220.  
  221.  
  222. no.setOnAction(e -> window.setScene(scene1));
  223. yes.setOnAction(e -> {
  224.  
  225.  
  226. pom = 1;
  227. window.setScene(scene3);
  228.  
  229. });
  230.  
  231.  
  232. potvrdi.setOnAction(e -> {
  233. int godina = Integer.parseInt(rezGodinaRoka3.getText());
  234. String oznaka = rezOznakaRoka3.getText();
  235. String naziv = rezNazivRoka3.getText();
  236. String pocetak = rezPocetakPrijave3.getText();
  237. String kraj = rezKrajPrijave3.getText();
  238. String tip = rezTip3.getText();
  239.  
  240. SimpleDateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd");
  241.  
  242. try
  243. {
  244. Date date1 = myFormat.parse(pocetak);
  245. Date date2 = myFormat.parse(kraj);
  246. long diff = date2.getTime() - date1.getTime();
  247.  
  248. if(diff >= 3)
  249. {
  250. if(pom == 1)
  251. {
  252. PreparedStatement upit;
  253. try
  254. {
  255. upit = con.prepareStatement("INSERT INTO ispitni_rok " +
  256. "values(?,?,?,?,?,?)");
  257. upit.setInt(1, godina);
  258. upit.setString(2, oznaka);
  259. upit.setString(3, naziv);
  260. upit.setDate(4, java.sql.Date.valueOf(pocetak));
  261. upit.setDate(5, java.sql.Date.valueOf(kraj));
  262. upit.setString(6, tip);
  263.  
  264. try {
  265.  
  266. int insCount = upit.executeUpdate();
  267. poruka.setText("Uspesno ste uneli vrednost");
  268. con.commit();
  269. }
  270. catch(SQLException e1)
  271. {
  272. if(e1.getErrorCode() == -913 || e1.getErrorCode() == -911)
  273. {
  274. poruka1.setText("Listanje nije uspesno, molim Vas pokusajte ponovo");
  275. con.rollback();
  276. }
  277. }
  278.  
  279. PreparedStatement AutoUpit = con.prepareStatement("insert into ispit(indeks, "+
  280. "id_predmeta, "+
  281. "godina, "+
  282. "semestar, "+
  283. "godina_roka, "+
  284. "oznaka_roka, "+
  285. "datum_prijave, "+
  286. "nacin_prijave, "+
  287. "broj_polaganja, "+
  288. "status_prijave) "+
  289. "select uk.indeks, uk.id_predmeta,uk.godina, uk.semestar,uk.godina,?, current_date, 'nasa app',10, 'p' " +
  290. "from upisan_kurs uk "+
  291. "where uk.indeks not in(select i.indeks "+
  292. "from ispit i "+
  293. "where i.indeks=uk.indeks and i.id_predmeta=uk.id_predmeta and "+
  294. "ocena>5 and status_prijave='o') "+
  295. "and uk.godina=? ");
  296.  
  297. AutoUpit.setString(1, oznaka);
  298. AutoUpit.setInt(2, godina);
  299.  
  300. try {
  301.  
  302. int provera = AutoUpit.executeUpdate();
  303. con.commit();
  304. System.out.println("Uspeo insert? " + provera);
  305. }
  306. catch(SQLException e1)
  307. {
  308. if(e1.getErrorCode() == -913 || e1.getErrorCode() == -911)
  309. {
  310. poruka1.setText("Listanje nije uspesno, molim Vas pokusajte ponovo");
  311. con.rollback();
  312. }
  313. }
  314. }
  315. catch (SQLException e1)
  316. {
  317. e1.printStackTrace();
  318. }
  319. }
  320. else
  321. {
  322. try
  323. {
  324. PreparedStatement upit = con.prepareStatement("UPDATE ispitni_rok " +
  325. "SET naziv = ?, " +
  326. "pocetak_prijavljivanja = ?, " +
  327. "kraj_prijavljivanja = ?, " +
  328. "tip = ? " +
  329. "WHERE godina = ? and oznaka = ?");
  330. upit.setInt(5, godina);
  331. upit.setString(6, oznaka);
  332. upit.setString(1, naziv);
  333. upit.setDate(2, java.sql.Date.valueOf(pocetak));
  334. upit.setDate(3, java.sql.Date.valueOf(kraj));
  335. upit.setString(4, tip);
  336.  
  337. try{
  338.  
  339. int insCount = upit.executeUpdate();
  340. con.commit();
  341. poruka.setText("Uspesno ste azurirali!");
  342. }
  343. catch(SQLException e1)
  344. {
  345. if(e1.getErrorCode() == -913 || e1.getErrorCode() == -911)
  346. {
  347. poruka1.setText("Listanje nije uspesno, molim Vas pokusajte ponovo");
  348. con.rollback();
  349. }
  350. }
  351. }
  352. catch (Exception e1)
  353. {
  354. e1.printStackTrace();
  355.  
  356. }
  357.  
  358. }
  359. }
  360. else
  361. {
  362. poruka.setText("Greska pri unosu datuma");
  363. }
  364.  
  365. }
  366. catch (ParseException e1)
  367. {
  368. e1.printStackTrace();
  369. }
  370. });
  371. stampaj.setOnAction(e -> {
  372.  
  373. String naziv = rezNazivRokaLabela4.getText();
  374. String pocetak_prijave = rezPocetakPrijaveLabela4.getText();
  375. String kraj_prijave = rezKrajPrijaveLabela4.getText();
  376. int br_prij = Integer.parseInt(rezBrPrijavljenihLabela4.getText());
  377. int br_pol = Integer.parseInt(rezBrPolozenihLabela4.getText());
  378. int br_disk = Integer.parseInt(rezBrDiskvalifikovanihLabela4.getText());
  379. int br_pon = Integer.parseInt(rezBrPonistenihLabela4.getText());
  380. float prosek = Float.parseFloat(rezProsekLabela4.getText());
  381.  
  382.  
  383. ArrayList<String> niz = new ArrayList<String>();
  384. niz.add("Naziv: " + naziv);
  385. niz.add("Pocetak prijave: " + pocetak_prijave.toString());
  386. niz.add("Kraj prijave: " + kraj_prijave.toString());
  387. niz.add("Broj studenata koji su prijavljivali ispite: " + br_prij);
  388. niz.add("Broj studenata koji su polozili ispite: " + br_pol);
  389. niz.add("Broj studenata koji su diskvalifikovani sa ispita: " + br_disk);
  390. niz.add("Broj studenata koji su ponistili ispite: " + br_pon);
  391. niz.add("Prosek studenata u ovom ispitnom roku: " + prosek);
  392.  
  393.  
  394.  
  395. FileWriter fw;
  396. try {
  397. fw = new FileWriter("ispitni_rok.txt");
  398. for(String pom:niz){
  399. fw.write(pom);
  400. fw.write("\n");
  401. }
  402.  
  403. poruka3.setText("Uspesno ste uneli u datoteku!");
  404. fw.close();
  405. } catch (IOException e1) {
  406. e1.printStackTrace();
  407. }
  408.  
  409.  
  410. });
  411.  
  412. azuriraj.setOnAction(e -> window.setScene(scene3));
  413.  
  414. listaj.setOnAction(e -> {
  415.  
  416. rezGodinaRoka3.setEditable(false);
  417. rezOznakaRoka3.setEditable(false);
  418.  
  419. rezGodinaRoka3.setText(godinaField1.getText());
  420. rezOznakaRoka3.setText(oznakaField1.getText());
  421.  
  422. int godina_roka = Integer.parseInt(godinaField1.getText());
  423. String oznaka_roka = oznakaField1.getText();
  424.  
  425.  
  426. String upit = "with polozeni (godina, oznaka, br_polozenih, ocene) as( " +
  427. "select irr.godina, irr.oznaka, count(*), sum(ocena) " +
  428. "from ispitni_rok irr join ispit ii on irr.godina=ii.godina_roka and irr.oznaka=ii.oznaka_roka "+
  429. "where status_prijave='o' and ocena>5 "+
  430. "group by irr.godina, irr.oznaka "+
  431. "), "+
  432. "diskvalifikovani(godina, oznaka, br_diskvalifikovanih) as ( "+
  433. "select irrr.godina, irrr.oznaka, count(*) "+
  434. "from ispitni_rok irrr join ispit iii on irrr.godina=iii.godina_roka and irrr.oznaka=iii.oznaka_roka "+
  435. "where status_prijave='d' "+
  436. "group by irrr.godina, irrr.oznaka "+
  437. "), "+
  438. "ponisteni(godina, oznaka, br_ponistenih) as ( "+
  439. "select irrrr.godina, irrrr.oznaka, count(*) "+
  440. "from ispitni_rok irrrr join ispit iiii on irrrr.godina=iiii.godina_roka and irrrr.oznaka=iiii.oznaka_roka "+
  441. "where status_prijave='x' "+
  442. "group by irrrr.godina, irrrr.oznaka "+
  443. ") "+
  444. "select ir.naziv, ir.pocetak_prijavljivanja, ir.kraj_prijavljivanja, count(*) br_prijavljenih, p.br_polozenih, (p.ocene/p.br_polozenih)*1.0 prosek, coalesce(d.br_diskvalifikovanih, 0) diskvalifikovani, coalesce(po.br_ponistenih, 0) ponisteni "+
  445. "from ispitni_rok ir join ispit "+
  446. "on ir.godina=ispit.godina_roka and ir.oznaka=ispit.oznaka_roka "+
  447. "join polozeni p on p.godina=ir.godina and p.oznaka=ir.oznaka "+
  448. "left join diskvalifikovani d on d.godina=ir.godina and d.oznaka=ir.oznaka "+
  449. "left join ponisteni po on po.oznaka=ir.oznaka and po.godina=ir.godina "+
  450. "where ispit.status_prijave='o' and ir.godina=? and ir.oznaka=? "+
  451. "group by ir.naziv, ir.pocetak_prijavljivanja, ir.kraj_prijavljivanja, p.br_polozenih, (p.ocene/p.br_polozenih)*1.0, d.br_diskvalifikovanih, po.br_ponistenih ";
  452.  
  453. try {
  454.  
  455. PreparedStatement brIspita = con.prepareStatement(upit);
  456.  
  457. brIspita.setInt(1, godina_roka);
  458. brIspita.setString(2, oznaka_roka);
  459.  
  460.  
  461. try{
  462.  
  463. ResultSet br_prijavljenih = brIspita.executeQuery();
  464.  
  465. if(!br_prijavljenih.next())
  466. {
  467. window.setScene(scene2);
  468.  
  469. }
  470. else
  471. {
  472. window.setScene(scene4);
  473. rezNazivRokaLabela4.setText(br_prijavljenih.getString(1));
  474. rezPocetakPrijaveLabela4.setText(br_prijavljenih.getString(2));
  475. rezKrajPrijaveLabela4.setText(br_prijavljenih.getString(3));
  476. rezBrPrijavljenihLabela4.setText(""+br_prijavljenih.getInt(4));
  477. rezBrPolozenihLabela4.setText(""+br_prijavljenih.getInt(5));
  478. rezBrDiskvalifikovanihLabela4.setText(""+br_prijavljenih.getInt(7));
  479. rezBrPonistenihLabela4.setText(""+br_prijavljenih.getInt(8));
  480. rezProsekLabela4.setText(""+br_prijavljenih.getFloat(6));
  481. }
  482. con.commit();
  483. }
  484. catch(SQLException e1)
  485. {
  486. if(e1.getErrorCode() == -913 || e1.getErrorCode() == -911)
  487. {
  488. poruka1.setText("Listanje nije uspesno, molim Vas pokusajte ponovo");
  489. con.rollback();
  490. }
  491.  
  492. }
  493.  
  494.  
  495. } catch (Exception e1) {
  496.  
  497. e1.printStackTrace();
  498. }
  499.  
  500.  
  501. });
  502.  
  503. odustani.setOnAction(e -> window.close());
  504.  
  505.  
  506. obrisi.setOnAction(e -> {
  507.  
  508.  
  509.  
  510.  
  511. int godina = Integer.parseInt(godinaField1.getText());
  512. String oznaka = oznakaField1.getText();
  513.  
  514. try {
  515. PreparedStatement upit = con.prepareStatement("DELETE FROM ispitni_rok " +
  516. "WHERE godina=? and oznaka=?");
  517. PreparedStatement upit1 = con.prepareStatement("DELETE FROM ispit " +
  518. "WHERE godina_roka=? and oznaka_roka=?");
  519.  
  520.  
  521. upit1.setInt(1,godina);
  522. upit1.setString(2,oznaka);
  523.  
  524. upit.setInt(1,godina);
  525. upit.setString(2,oznaka);
  526.  
  527. try {
  528.  
  529. int brObrisanihRedova = upit1.executeUpdate();
  530. int brRed = upit.executeUpdate();
  531.  
  532.  
  533. poruka3.setText("Uspesno ste obrisali!");
  534. con.commit();
  535. }
  536. catch(SQLException e1)
  537. {
  538. if(e1.getErrorCode() == -913 || e1.getErrorCode() == -911)
  539. {
  540. poruka1.setText("Listanje nije uspesno, molim Vas pokusajte ponovo");
  541. con.rollback();
  542. }
  543. }
  544.  
  545. } catch (Exception e1) {
  546.  
  547. e1.printStackTrace();
  548.  
  549. }
  550.  
  551. });
  552.  
  553.  
  554. }
  555. catch(Exception e){
  556. e.printStackTrace();
  557. }
  558. }
  559.  
  560. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement