B M Java Programozás 7. Gy: Java alapok IT A N Adatkezelő 3.rész

Slides:



Advertisements
Hasonló előadás
Osztály leszármaztatás
Advertisements

1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
II. Grafikus felhasználói interfész
Operációs rendszerek Mappa és file-kezelés.
Öröklődés 2..
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Csala Péter ANDN #4. 2 Tartalom  C# - ban előre definiált típusok  Változók  Változókkal műveletek  Elágazás  Ciklus.
Bevezetés a Java programozásba
7. előadás (2005. április 12.) Láncolt lista File kezelés 1.
Fájlkezelés, IO Kivételkezelés Belső osztályok
Osztályok Garbage collection.  általában minden osztálynak vannak adattagjai és/vagy metódusai ◦ adattagok megadása:  [láthatóság] [static] [final]
Abstract osztályok és interface-ek Beolvasás és kiíratás 7. gyakorlat.
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Tömbök ismétlés Osztályok Java-ban Garbage collection
A Java programozási nyelvSoós Sándor 1/16 Java programozási nyelv 6. rész – Java a gyakorlatban Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
Java programozási nyelv 3. rész – Osztályok I.
C# tagfüggvények.
C# tagfüggvények.
Access alapok Táblák, kapcsolatok, űrlapok.
Kivételkezelés.
Alapszint 2.  Készíts makrót, ami a kijelölt cellákat egybenyitja, a tartalmat vízszintesen és függőlegesen középre igazítja és 12 pontos betűméretűre.
1 Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Vizuális alkalmazások a FoxProban Páll Éva Boglárka.
1. Gyakorlat - Alapok 1. Írjon konzolprogramot, amely kiírja a “Hello ELTE” üzenetet! Használja a System.out.println() -t! 2. Írjon konzolprogramot, amely.
Objektum orientált programozás a gyakorlatban
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
Delphi Készítette: Rummel Szabolcs Elérhetőség:
Visual Basic 2008 Express Edition
Java programozási nyelv Filekezelés
Java programozási nyelv Metódusok
Java programozási nyelv Adatbekérés konzolról
Generics Krizsán Zoltán. Bemutató A.NET 2.0 verziótól. A.NET 2.0 verziótól. Típusparaméter Típusparaméter Más nyelvben ez a template (sablon). Más nyelvben.
Programozás III KOLLEKCIÓK.
Egyenesvonalú (lineáris) adatszerkezetek
HF MINTA 2012/2013. ősz. HF Minta  Objektum-orientált program  „Adatvezérelt” alkalmazás írása  Fájl kezelés (olvasás, írás)  Menü készítése  5-6.
Turócziné Kiscsatári Nóra
A Visual Basic nyelvi elemei
Programozás III KOLLEKCIÓK.
Kördokumentumok 1..
HTML ÉS PHP (Nagyon) rövid áttekintés. ADATBÁZISRENDSZEREK MŰKÖDÉSI SÉMÁJA Felh. interakció DB Connector MySQL ? A gyakorlaton:
Táblázatok.
Szöveg bevitele, kijelölések, szövegrészek mozgatása, másolása
Számítógépes grafika I. AUTOCAD alapok
Informatikai gyakorlatok 11. évfolyam
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Windows Forms alkalmazás készítése Czigléczky Gábor 2009.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
Krizsán Zoltán, iit C# osztályok 2 Adattagok  Osztály hatáskörben definiált változó.  Formája: [attribútum] [módosító] típus azonosító [=kezdő érték][,
Neumann János Informatikai Kar
„Designer-barát” játéklogika
A C++ programozási nyelv
A CLIPS keretrendszer
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
B M Java Programozás 4. Gy: Java GUI IT A N Tipper, MVC kalkulátor
Java Programozás 3. Gy: Java GUI Swing, AWT B IT M A N v:
B M Java Programozás 9. Gy: Java alapok IT A N Adatkezelő 5.rész
B M Java Programozás 1. Gy: Java alapok IT A N Ismétlés ++
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
B M Java Programozás 6. Gy: Java alapok IT A N Adatkezelő 2.rész
B M Java Programozás 5. Gy: Java alapok IT A N Adatkezelő 1.rész
B M Java Programozás 2. Gy: Java alapok IT A N Adatszerkezetek
B M Java Programozás 8. Gy: Java alapok IT A N Adatkezelő 4.rész
Konverziós operátorok
Függvénysablonok használata
Előadás másolata:

B M Java Programozás 7. Gy: Java alapok IT A N Adatkezelő 3.rész

A kód Feladat: folytassuk a panel életre keltését! Alakítsuk ki az Új dolgozó felvitele panelt A panel a Beszúr gomb megnyomásakor ellenőrizze az adatokat Az adatok a Beszúr hatására adódjanak hozzá a táblázathoz, melyben tároljuk azokat.

Új dolgozó panel New \ Swing \ JDialog Célszerű kivenni a pipát! Utólag törölhető a panel, ha mégis marad a pipa!

Új dolgozó panel Nyomógomb panel törlése Absolute layout beállítása Háttérszín beállítása: Named colors\Lightness\paleturquoise 1 felirat (Kód:) és 1 szövegmező felpakolása A JTextField változónevének megadása: kod Felirat + szövegmező kijelölése , másolása, beillesztése Felirat átírása, a szövegmező változónevének beállítása (nev) 5+6 ismétlése (változók: szid, lak, iq) Nyomógombok felpakolása (másolással) Kód mező ne legyen szerkeszthető: Ablak felirata: Futassuk a kódot, nézzük meg az eredményt! Ctrl C + Ctrl Ctrl V +

Új dolgozó panel Programlogika: Legyen ez az ablak is modális. A Lekér gomb jelenítse meg a rekord kódját. A legnagyobb létező kódot (maxKod) az EmpProgramtól kapja meg, ettől legyen eggyel nagyobb a rekord kódja. A Beszúr gomb megnyomásakor a program ellenőrizze le: ki vannak-e töltve a mezők, (filled), a születési idő dátum-e, (goodDate) az iq mezőben egész szám van-e (goodInt)! Ha megfelelőek az adatok a mezőkben, a Beszúr gomb megnyomásakor állítson elő a panel egy Emp típusú változót, ez egy metódussal (getEmp) lekérhető legyen a paneltől, és a panel lekérdezhető visszatérő (getKilep) értéke legyen 1, míg sima bezáráskor a visszatérő érték legyen 0.

Új dolgozó panel Kódok beszúrása: A konstruktorba: public EmpNew(JFrame f, int maxKod) { super(f, true); setTitle("\u00DAj dolgoz\u00F3 felvitele"); Lehet, hogy kell: import javax.swing.JFrame; Lekér gombhoz: btnLekr.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { kod.setText(""+(maxKod+1)); } });

Új dolgozó panel Kódok beszúrása: Új metódusok: public String RF(JTextField a) { return a.getText().toString(); } public boolean filled(JTextField a) { String s = RF(a); if (s.length() > 0) return true; else return false; public boolean goodDate(JTextField a) { Date testDate = null; try { testDate = sdf.parse(s); } catch (ParseException e){return false;} if (sdf.format(testDate).equals(s)) return true; else return false; String beolvasása szövegmezőből sdf: yyyy.MM.dd alakú dátumforma

Új dolgozó panel Kódok beszúrása: Új metódusok: public boolean goodInt(JTextField a) { String s = RF(a); try { Integer.parseInt(s); return true; } catch (NumberFormatException e){return false;} } Szükséges importok: import java.util.Date; import java.text.SimpleDateFormat; import java.text.ParseException; Szükséges változó: private SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");

Új dolgozó panel Kódok beszúrása: Új metódus: kódrövidítés miatt! public void showMD(String s, int i){ JOptionPane.showMessageDialog(null, s, mes, i); } Szükséges import: import javax.swing.JOptionPane; Szükséges változó: private String mes = "Emp program üzenet";

Új dolgozó panel A Beszúr gomb kódja: btnBeszr.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (!filled(kod)) kod.setText(""+(maxKod+1)); if (!filled(nev)) showMD("A Név mező üres!", 0); else if (!filled(szid)) showMD("A Születési idő mező üres!", 0); else if (!goodDate(szid)) showMD("A Születési idő mezőben hibás adat van!", 0); else if (!filled(lak)) showMD("A Lakóhely mező üres!", 0); else if (!filled(iq)) showMD("Az IQ mező üres!", 0); else if (!goodInt(iq)) showMD("Az IQ mezőben hibás adat van!", 0); } });

Új dolgozó panel Kipróbálás: a main függvényben ideiglenesen javítsuk ki a példányosítás kódját EmpNew dialog = new EmpNew(null, 52);

Új dolgozó panel Ha minden adat rendben, állítsunk elő egy Emp típusú változót az adatokból. Ehhez készítenünk kell egy Emp típust, és két újabb metódus is szükséges: public Date StoD(String s){ Date testDate = null, vid = null; try { testDate = sdf.parse(s); } catch (ParseException e) {return vid;} if (!sdf.format(testDate).equals(s)){return vid;} return testDate; } public int StoI(String s){ int x=-55; x = Integer.parseInt(s); return x; Stringből dátum Stringből integer

Az Emp típus elkészítése A típus .dat fájlba írásához szükséges, hogy sorosítható legyen! File \ New \ Class 3 1 2x 4 2 5 6

Az Emp típus kódja import java.io.Serializable; import java.util.Date; public class Emp implements Serializable { private int kod; private String nev; private Date szulido; private String lakohely; private int iq; public Emp(int kod, String nev, Date szulido, String lakohely, int iq){ this.kod = kod; this.nev = nev; this.szulido = szulido; this.lakohely = lakohely; this.iq = iq; } 2/1

Az Emp típus kódja public int getKod(){ return kod; } public String getNev(){ return nev; public Date getSzulido(){ return szulido; public String getLakohely(){ return lakohely; public int getIq(){ return iq; 2/2

Új dolgozó panel A Beszúr gomb kódjának folytatása: private Emp adat; private int kilep=0; btnBeszr.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { . . . else if (!filled(lak)) showMD("A Lakóhely mező üres!", 0); else if (!filled(iq)) showMD("Az IQ mező üres!", 0); else if (!goodInt(iq)) showMD("Az IQ mezőben hibás adat van!", 0); else { adat = new Emp(StoI(RF(kod)), RF(nev), StoD(RF(szid)), RF(lak), StoI(RF(iq))); showMD("Adat beszúrva!", 1); kilep=1; dispose(); setVisible(false); } });

Új dolgozó panel Már csak két metódus szükséges, amikkel ki tudjuk olvasni a panel adatait: public Emp getEmp(){ return adat; } public int KiLep() { return kilep; A panel Bezár gombjának kódja: btnBezr.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dispose(); setVisible(false); } });

Új dolgozó panel Töröljük ki a main függvényt a kódból:

Az Új dolgozó panel beépítése Programlogika- az Új dolgozó panel beépítése: Az EmpProgram ablakban hozzunk létre egy Új adat nyomógombot A gombot megnyomva jelenjen meg a panel, ekkor adjuk át a panelnek a legutolsó rekord kódját. Ha nincs egyetlen adat sem, a kód induljon 21-ről! (mert csak!) Ha a bezárás ikonnal, vagy a Bezár gombbal bezárjuk a panelt, ne történjen semmi sem Ha a Beszúr gombot megnyomjuk a panelen, akkor olvassuk ki a panelről az új adatsort, és adjuk hozzá az adatokat nyilvántartó táblázathoz Növeljük az adatsorok számát!

Az EmpProgram panel módosítása Ctrl C + Másoljuk le a Lista gombot, módosítsuk az adatait: Írjuk át a változó nevét: ujadat-ra Írjuk át a feliratát: Új adat-ra Kattintsunk rá duplán (akciókezelő hozzáadása), és adjuk meg a működését Ctrl V +

Az EmpProgram módosítása A dátum kezeléséhez szükség lesz a Date osztályra, a formázásához a SimpleDateFormat osztályra: import java.util.Date; import java.text.SimpleDateFormat; A magyar dátumforma kezeléséhez szükség lesz egy dátumformátum változóra: private SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");

Az EmpProgram módosítása ujadat.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { int kodv=0; if (etm.getRowCount()==0) kodv=20; else kodv=(int)etm.getValueAt(etm.getRowCount()-1, 1); EmpNew en = new EmpNew(EmpProgram.this, kodv); en.setVisible(true); int kilep = en.KiLep(); if (kilep==1) { Emp newEmp = en.getEmp(); Date d = newEmp.getSzulido(); String ddd = sdf.format(d).toString(); etm.addRow(new Object[]{new Boolean(false), newEmp.getKod(), newEmp.getNev(), ddd, newEmp.getLakohely(), newEmp.getIq()}); fdb.setText(""+etm.getRowCount()); } }); tm.getValueAt(row, column) Adat kiolvasása az Új adat panelről Ha nincs adat, a kód értéke legyen 20, egyébként a táblázatban lévő utolsó adatsorban lévő kód értéke.

Az Új adat funkció kipróbálása 4 2 1 6 5 3 7

Lista panel kialakítás – a panel létrehozása

A kód Feladat: folytassuk a panel életre keltését! Készítsük el az adatok kiírási funkcióját: Először a Célt kell kiválasztani, aztán megadni a kimeneti fájl nevét, végül megnyomni a Kiírás gombot. >>> Forrás: extra funkció, visszaírás oda, ahonnan betöltöttük az adatokat

Az EmpProgram panel módosítása Másolással készítsük el a gombokat: Készítsük el a Cél: feliratot Másolással készítsük el a legördíthető listát, Var: jcbc Másolással készítsük el a szövegmezőt, Var: kifnev Adjunk hozzá eseménykezelőt a jcbc nevű legördíthető listához: Módosítás Törlés Kiírás Variable modosit torol kiir Text Jobb klikk a JComboBox-ra Add event handler \ action \ actionPerformed

Az EmpProgram kódjának módosítása A célterület kezeléséhez szükség lesz egy változóra, ebben lesz mindig a kiválasztott cél értéke: private String cel="Válasszon!"; A lista (jcbc) kódja: String elem2[] = {"Válasszon!",">>> Forrás","Helyi .dat fájl", "Helyi .xml fájl","Helyi .csv fájl","Helyi .json fájl", "Helyi .pdf fájl","SQLite DB"}; JComboBox jcbc = new JComboBox(); for (String s: elem2) jcbc.addItem(s); jcbc.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { cel = (String)jcbc.getSelectedItem(); } });

Az EmpProgram kódjának módosítása A Dizájn felületen kattintsunk duplán a Kiírás gombra A kódot egészítsük ki: JButton kiir = new JButton("Ki\u00EDr\u00E1s"); kiir.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { if (cel.equals("Válasszon!")) SMD("Először válassza ki a Cél-t!"); else if (etm.getRowCount()==0) SMD("Nincs kiírható adat"); else if (cel.equals("Helyi .csv fájl")) { if (kifnev.getText().length()==0) SMD("Nincs megadva a cél fájl neve!"); else { FileManager.CsvWriter(kifnev.getText().toString(), etm); } }); public void SMD (String s){ JOptionPane.showMessageDialog(null, s, mes, 0); }

Adatok kiírása csv fájlba Programlogika: A rutin megkapja a kiírandó fájl nevét, és az adatokat tartalmazó táblamodell nevét Kiírja a mezők nevét Két egymásba ágyazott ciklussal végigmegy az adatokon, és kiírja őket a fájlba j etm.getColumnCount() i etm.getRowCount()

Adatok kiírása csv fájlba public static void CsvWriter(String fnev, EmpTM etm) { try { PrintStream out = new PrintStream(new FileOutputStream(fnev)); out.println("Kód;Név;Szülidő;Lakóhely;IQ"); int rdb = etm.getRowCount(); int cdb = etm.getColumnCount(); for (int i=0; i < rdb; i++) { for (int j=1; j < cdb-1; j++) { out.print(""+etm.getValueAt(i,j)+";"); } out.println(""+etm.getValueAt(i, cdb-1)); out.close(); JOptionPane.showMessageDialog(null, "Adatok kiírva!", mes, 1); } catch (IOException ioe) { JOptionPane.showMessageDialog(null, "CsvWriter: "+ ioe.getMessage(), mes, 0);

A Kiírás funkció kipróbálása 1 5 2 3 4 1

A kiírt adat visszaolvasása 3 C:\Users\bitman\workspace\EmpOrai\prb.csv 1 2 5 4 6

Lista panel kialakítás – a panel létrehozása

V É G E VÉGE