Java Programozs 9 Gy Java alapok Adatkezel 5















- Slides: 15
Java Programozás 9. Gy: Java alapok Adatkezelő 5. rész B IT M A N 15/1 2018. 04. 22 B ITv: M AN
A Keresés funkció Programlogika: 1. A keresés az etm táblamodellben fog keresni, és a találat rekordokat átmásolja egy másik táblamodellbe (kertm), melyet megjelenítünk a keresés találati panelen. 2. A keresés indításakor ellenőrizzük le, hogy: 1. Léteznek-e adatsorok? 2. Ki van-e töltve a keresőkulcs mező? 3. Helyesen van-e megadva a keresőkulcs? 3. A találati panelen az eredmények alatt jelenjen meg a keresési kulcs, a megfelelő mező alatt! 15/2 B IT M A N
Az Emp. Ker osztály n Hozzunk létre a projekthez egy sima osztály: – File New Class – Legyen az osztály neve: Emp. Ker – Írjunk egy olyan osztályt (Key. Check), amely leellenőrzi, hogy a keresőkulcs megfelelő-e. – Készítsük el a leválogató metódust, amely az adatokat tartalmazó táblamodellből átmásolja a megfelelő rekordokat az eredmény táblamodellbe (Select) 15/3 B IT M A N
Az Emp. Ker osztály kódja 5/1 public class Emp. Ker { public static boolean Key. Check(String mezo, String key){ boolean vi=false; Character fc=' '; String fs=""; if (mezo. equals("kod")) { if (key. substring(0, 1). equals("=")) key=key. substring(1, key. length()); vi= good. Sto. Int(key); good. Sto. Int: számmá alakítható a kulcs? } if (mezo. equals("nev")) { fs=key. substring(0, 1); if (Character. is. Letter(key. char. At(0)) || fs. equals(" ")) vi= true; } if (mezo. equals("lak")) { if (Character. is. Letter(key. char. At(0))) vi= true; } 15/4 B IT M A N
Az Emp. Ker osztály kódja 5/2 if (mezo. equals("iq")) { fs=key. substring(0, 1); fc=key. char. At(0); if (fs. equals("<") || fs. equals(">") || fs. equals("=")) { if (key. length()>1 && good. Sto. Int(key. substring(1, key. length()))) vi= true; else vi= false; } if (Character. is. Digit(fc) && key. index. Of(". . ")>0) { int x = key. index. Of(". . "); String k 1 = key. substring(0, x); String k 2 = key. substring(x+2, key. length()); if (good. Sto. Int(k 1) && good. Sto. Int(k 2)) vi=true; else vi=false; } } return vi; } 15/5 B IT M A N
Az Emp. Ker osztály kódja public static Emp. TM Select(Emp. TM etm, String mezo, String key){ Object emptmn[] = {"Jel", "Kód", "Név", "Szülidő", "Lakóhely", "IQ"}; Emp. TM kertm = new Emp. TM(emptmn, 0); String k ="", k 1="", k 2=""; int x=0; if (mezo. equals("kod") && key. substring(0, 1). equals("=")) key=key. substring(1, key. length()); if (mezo. equals("iq")) k=key. substring(1, key. length()); if (mezo. equals("iq") && key. index. Of(". . ")>0) { x=key. index. Of(". . "); k 1=key. substring(0, x); k 2=key. substring(x+2, key. length()); } 5/3 15/6 B IT M A N
Az Emp. Ker osztály kódja for (int i=0; i<etm. get. Row. Count(); i++) { 5/4 if (mezo. equals("kod") && key. equals(etm. get. Value. At(i, 1). to. String())) Pack(etm, kertm, i); if (mezo. equals("nev") && etm. get. Value. At(i, 2). to. String(). index. Of(key) >= 0) Pack(etm, kertm, i); if (mezo. equals("lak") && key. equals(etm. get. Value. At(i, 4). to. String())) Pack(etm, kertm, i); if (mezo. equals("iq") && key. substring(0, 1). equals("=") && k. equals(etm. get. Value. At(i, 5). to. String())) Pack(etm, kertm, i); if (mezo. equals("iq") && key. substring(0, 1). equals(">") && BC. Sto. I(k) < BC. Sto. I(etm. get. Value. At(i, 5). to. String())) Pack(etm, kertm, i); if (mezo. equals("iq") && key. substring(0, 1). equals("<") && BC. Sto. I(k) > BC. Sto. I(etm. get. Value. At(i, 5). to. String())) Pack(etm, kertm, i); if (mezo. equals("iq") && key. index. Of(". . ")>0) { String s = etm. get. Value. At(i, 5). to. String(); if (BC. Sto. I(k 1) < BC. Sto. I(s) && BC. Sto. I(k 2) > BC. Sto. I(s)) Pack(etm, kertm, i); } } //== for ciklus vége return kertm; } 15/7 B IT M A N
Az Emp. Ker osztály kódja public static void Pack(Emp. TM etm, Emp. TM kertm, int row){ 5/5 kertm. add. Row(new Object[]{new Boolean(false), BC. Sto. I(etm. get. Value. At(row, 1). to. String()), etm. get. Value. At(row, 2). to. String(), etm. get. Value. At(row, 3). to. String(), etm. get. Value. At(row, 4). to. String(), BC. Sto. I(etm. get. Value. At(row, 5). to. String())}); } public static boolean good. Sto. Int(String s) { try { Integer. parse. Int(s); return true; } catch (Number. Format. Exception e){return false; } } } //== Emp. Ker osztály vége 15/8 B IT M A N
A Keresés panel létrehozása n Másoljuk le az Emp. Mod osztályt, legyen az új neve: Emp. Ker. P n Nyissuk meg az Emp. Ker. P osztályt a Window. Builder Editorral – Jobbklikk Open With Window. Builder Editor n Nyissuk meg Design nézetben n Töröljük ki a Születési idő alatti mezőt: n Másoljuk le az IQ mezőt, legyen az új változó neve: kod n A kód és az iq mező tartalmát igazítsuk jobbra! n Töröljük ki a Módosít gombot, a Bezár gombot tegyük középre: 15/9 B IT M A N
A Keresés panel létrehozása n Módosítsuk az Emp. Ker. P osztály kódját! n Módosítsuk a konstruktort, adjuk meg a bemenő paramétereket: public Emp. Ker. P(JFrame f, Emp. TM betm, String mezo, String kulcs) { n A szövegmezők közül mindig csak az látszódjon, amelyikre a keresés történt. A kód végére illesszük be a sorokat: kod. set. Visible(false); nev. set. Visible(false); lakh. set. Visible(false); iq. set. Visible(false); if if 15/10 (mezo. equals("kod")) kod. set. Visible(true); (mezo. equals("nev")) nev. set. Visible(true); (mezo. equals("lak")) lakh. set. Visible(true); (mezo. equals("iq")) iq. set. Visible(true); B IT M A N
A Keresés panel létrehozása n Minden egyes szövegmezők tartalma induláskor a keresőkulcs legyen, hiszen úgyis csak az fog látszódni, amelyikre a keresés történt. A szövegmezők konstruktorát javítsuk ki: nev = new JText. Field(kulcs); lakh = new JText. Field(kulcs); iq = new JText. Field(kulcs); kod = new JText. Field(kulcs); 15/11 B IT M A N
A Keresés életre keltése az Emp. Programban n Adjunk akciókezelőt a Keresés gombhoz, és írjuk be a kódot: if (BC. RF(fdb). equals("0")) BC. show. MD("Nincs betöltött adat!", 0); else if (!BC. filled(kulcs)) BC. show. MD("A keresőkulcs (X=) nincs megadva!", 0); else if (!Emp. Ker. Key. Check(kerkif, BC. RF(kulcs))) BC. show. MD("A keresőkulcs hibásan van megadva!", 0); else { kertm = Emp. Ker. Select(etm, kerkif, BC. RF(kulcs)); Emp. Ker. P ek = new Emp. Ker. P(Emp. Program. this, kertm, kerkif, BC. RF(kulcs)); ek. set. Visible(true); } n A kertm deklarációja: private Emp. TM kertm; 15/12 B IT M A N
Próba 15/13 B IT M A N
Lista panel kialakítás – a panel létrehozása 15/14 B IT M A N
V ÉGE VÉGE 15/15 B IT M A N