You are on page 1of 30

GAZ NVERSTES BLM ENSTTS BLM SSTEMLER YKSEK LSANS (UZAK) PROGRAMI

NESNE YNELML PROGRAMLAMA (NYP) DNEM PROJES RAPORU

RETM YES RENC UBE NO

: : :

Yrd.Do.Dr.Hacer KARACAN Murat AZML A2 108007755

NDEKLER
1. 2. 3. 4. GR AMA KAPSAM KAVRAMSAL TASARIM 4.1 SSTEMDEK AKTRLER 4.2 SSTEMDEK BELGELER 4.3 USECASE DIAGRAM 5. MANTIKSAL TASARIM 5.1 ACTIVITY DIAGRAMS 5.2 CLASS DIAGRAM 5.3 DATA MODEL DIAGRAM 6. GELTRME 6.1 PROGRAMLAMA DL SEM 6.2 PROGRAMLAMA ARACI SEM (IDE) 7. 8. TEST DAITIM 8.1 GEREKSNMLER 8.2 KURULUM 8.3 ALITIRMA 9. PROGRAMIN KULLANILMASI 13 13 15 16 11 11 12 7 9 10 4 5 6 3 3 3

10. KAYNAKLAR 10.1 ELEKTRONK KAYNAKLAR 10.2 BASILI KAYNAKLAR 11. PROGRAM KAYNAK KODU VE ACIKLAMALAR 20 20 21

1.GR
alanlar arasnda fonksiyonel ayrm yaplarak kurumsallam veya kurumsallama aamasnda olan orta lekli sistemler (iletmeler) iin tasarlanm olan ERP Yazlm Satnalma Modl ileyii tasarm aamasnda detayl olarak aklanmaya allmtr. Yazlm tasarmnda Nesne Ynelimli Programlama yntemi kullanlmtr. ncelikle, sistemdeki roller, aktrler ve bunlarn fonksiyonlar tespit edilmitir. Daha sonra bu fonksiyonlar arasndaki iliki belirlenmi ve ak diyagramlar oluturulmutur. Son olarak, statik veri yaplar ve veriler aras ilikiler (dnmler) oluturularak Mantksal Tasarm sreci tamamlanmtr.

2.AMA
Gnmzde orta ve byk lekli iletmeler, iletme ii srelerin kurulmas, ynetilmesi, verilerin kayt altna alnarak raporlanmasnn nemini kavram durumdadr. Bunun iin bir ok iletme bir ERP (Entireprise Resource Planning- Kurumsal Kaynak Planlama) sistemi kurmutur. Bu sayede iletmeler, srelerini ynetebilir, bilgiye ve objektif saysal verilere dayanan kararlar alabilirler. Bu kriterlere dayanarak alnan kararlarn doru olma olasl ok yksektir. Bu doru kararlar ile yaplan faaliyetler sonucunda da baar ve byme kanlmaz olarak gelecektir.

3.KAPSAM
Bu dkmanda, iletmedeki srelerden SATINALMA sreci detayl olarak ve ilikide olduu dier sreler ise kaba olarak ele alnmtr. Satnalma srecinin neminin anlalmas iin, ilikide olduu dier srelerin de bilinmesi gerekmektedir. letmeler, mal veya hizmet retebilmek iin ncelikle satnalma yapmak zorundadrlar. Bir motor paras reten iletmeyi dndmzde; Motor parasn retmek iin gerekli olan hammadde ve yardmc maddeler satn alnmal, sonra bu hammaddeler eitli ilemlere tabi tutularak motor paras retilmelidir. Ayn ekilde bir pizza iletmesini dndmzde; Pizza retmek iin nce eitli sebzeler, et rnleri ve un satn alnmal, undan hamur yaplmal ve dier malzemelerde hamurun zerine yerletirilip frnda piirilmelidir. Hatta retilmi olan pizzann datmn yapabilmek iin, daha nceden bir motorlu ara ve piirebilmek iin bir frn satn alnm olmaldr. rneklerden de anlalaca zere satnalma faaliyeti her trl iletme iinde nemli bir yere sahiptir. Sat faaliyeti nasl iletmeye para girmesini salyor ise satnalma faaliyeti de iletmeden para kn salamaktadr. Bundan dolay iletme sahipleri, genelde satnalma yapmak istemezler. retimin devam etmesi iin zorunlu olan hammadde, yardmc madde ve enerji dnda satnalmay istemezler. Ayrca, iletme alanlarnn da aslnda iletmeye hizmet sattn dnebiliriz. nk, iletme alanlar nceden belirlenmi bir cret karlnda bilgi ve becerilerini o iletme iin kullanmaktadr. nsan retimin bir unsuru olduuna gre, alanlar da retimin asli bir unsurudur. Ancak bu temel nokta, ou iletme sahibi tarafndan gz ard edilmekte, alanlara gereksiz bir masraf gzyle baklmaktadr. alanlardan hizmet alm normal satnalma sreleri dnda ilemektedir. letmelerde bu srece genelde Insan Kaynaklar (Personel) departmanlar bakmaktadr. ERP sistemlerinde ayr bir modldr. Bu modlde sadece, dier iletmelerden yaplan mal ve hizmet satnalma sreleri yer almaktadr.

4.KAVRAMSAL TASARIM
Bir iletmede kurulmak istenen satnalma sisteminde minumum dzeyde bulunmas gereken aktrler, kullanm durumlar ve fonksiyonlar aada akland gibi olmaldr. Bu gelerden bazlar direkt olarak satnalma sisteminin bir gesi olmayp, yan sistemlerin gesidir. Dier sreleri iine alan bir ERP sistemi mevcut ise bu geler dier sistemler ierisinde yer alabilir. Ancak, sadece tek bana bir satnalma sistemi kurulmak istenirse, bu geler de sistem ierisinde yer almaldr.

4.1 SSTEMDEK AKTRLER


a. Sistem Yneticisi: Sistemde yer alan dier kullanclar oluturur. Sistemde oluan bilgileri belirli aralklarla yedekler. Sistemin gvenliinden ve kesintisiz olarak almasndan sorumludur. b. Kullanc: Sistemde yer alan tm kullanclardr. Satnalma departmanlarnda olabilecei gibi, dier departmanlardan da sistemi kullanacak olan kiilerdir. (retim, planlama, lojistik, sat, muhasebe, finans vs) Sistemde atanm olan yetkiler dahilinde ilem yaparlar. c. Ynetici: Ynetici sistemde yer alan bir kullancdr. Ancak, kendi departmanndaki dier bir kullancnn istemi olduu satnalma taleplerini onaylama veya ret etme yetkisine sahiptir. Bu durum, iletmede her alann kafasna gre gereksiz satnalma yapmasn nlemektedir. Sistemde kilit bir neme sahiptir. letmenin verimlilii ve karll asndan ok nemlidir. d. Satnalma Departman: Kullanclar tarafndan alm ve ilgili yneticiler tarafndan onaylanm satnalma taleplerini inceler. Bu talepleri deerlendirir ve en uygun bulunan tedarikilere satnalma sipariini iletir. lgili tedariki sistemde tanml deilse tanmlar. Belirli dnem aralklarnda, tedarikilerin performanslarn hesaplar. e. Depo: Tedarikilerden gelen mallar teslim alr. Nitelik ve nicelik olarak doruluklarn kontrol eder. lgili satnalma siparii ile eletirme yaptktan sonra sisteme irsaliye giriini yapar. f. Muhasebe: letmeye gnderilen faturalarn ERP sistemine girilerini yapar. Bu giri srasnda, fatura ieriindeki mal ve hizmetlerin firmaya gelip gelmediini kontrol eder. Mal faturas ise, sistemdeki irsaliye ile faturay eletirir. g. Finans: Muhasebe tarafndan girii yaplan faturalar kontrol eder. Faturalarn deme gnlerini tespit eder ve gn geldiinde demeyi gerekletirir.

4.2 SSTEMDEK BELGELER


a. Satnalma Talebi: letmedeki her trl kullanc tarafndan alabilir. Kullanclar, i grebilmek ve/veya iletmede kullanabilmek iin gerekli olan her trl rn ve hizmet satnalmas iin bir satnalma talebi amak zorundadr. Talep Id, Belge Tarihi, Talep Tarihi, Kullanc Id gibi bilgilerden oluan bir balk tablosu ile, satnalnmas istenen mal veya hizmetlerin id leri ve miktarlarnn bulunduu bir detay tablosundan olumaktadr. Kullanclar farkl tarihlerde istedikleri her trl satnalma talebi iin ayr bir talep belgesi amaldrlar. Eer kark alrsa, sistemde talep takibi zorlar, ilgili tedarikilerin ve satnalma departmann performans llemez. Tedarikiden gelen bir maln, hangi talebe istinaden geldii bulunamaz. Bu durumda, belgeler arasndaki ak kopacaktr. b. Satnalma Siparii: Sadece satnalma departman tarafndan alabilir. Talep belgesindeki gibi balk tablosu ve rn bilgileri olan bir detay tablodan oluur. 2 ekilde oluturulabilir. Kullanclarn oluturmu olduu satnalma talep belgelerinden direkt olarak oluturabilir. Yada, herhangi bir talep olmadan, direkt olarak manuel ekilde oluturulabilir. Bu durumda, satnalma sipari belgesi her hangi bir talep belgesini iaret etmez. Sipari belgesindeki TalepId deeri 0 (sfr) olacaktr. c. rsaliye: Tedarikiler tarafndan iletmeye gnderilen rnler ile gelen bir belgedir. Ticari mal sevkiyatlarnda bulunmas zorunludur. Tanan mallarn isimleri ve miktarlar yazlmaktadr. letmeye gelen mallar depo sorumlusu tarafndan kontrol edilir. rsaliye zerinde yazan bilgilerin doruluu teyid edildikten sonra sisteme girii yaplr. letmeye gelen mallar, sisteme irsaliyenin girilmesiyle sistemsel olarak da stoklar. Gelen irsaliyenin sipari belgesi bulunarak eletirilir. Bylece, ilgili satnalma siparii de kapatlm olur. (miktar tam ise) Bundan dolay, irsaliyelerin zerine ilgili satnalma sipari numarasnn yazlmas operatrlere hz kazandrmakta, bo yere ve hatal veri giriini engellemektedir. Satnalma siparii olmadan iletmeye gelen mallarn kabul depocu tarafndan yaplmaz. Mutlaka bir st yneticinin onay alnarak mal kabl yaplmaldr. Bu durumda da, mutlaka satnalma siparii almaldr. Balk ve detay tablosu olmak zere 2 tablodan oluur. d. Fatura: letmelerde ticari ilemler fatura ile yaplmaktadr. Bir iletme dier iletmeden mal ve hizmet karl para talep ediyorsa, nceden mutlaka fatura kesilmi olmas gerekmektedir. Her trl ticari bor ve alacak faturaya dayanmak zorundadr. Fatura zerinde, kesilen firma nvan, adresi, vergi dairesi, vergi numaras, ilgili mal ve hizmetlerin aklamalar, brt tutarlar, iskonto tutarlar, vergi tutarlar ve deme tarihi (vade) gibi bilgileri bulunmaktadr. Fatura ieriindeki rnlerin, firmaya gerekten gelip gelmedii sorgulanmaldr. (irsaliye kontrol) Ayn mallarn birden fazla kez faturalanmamas iin, fatura zerlerinde irsaliye numaras mutlaka yazmaldr. Son yllarda irsaliyeli fatura uygulamalar yaygnlamtr. Bu gibi kontrollere gerek kalmamtr. e.Odeme: Muhasebe departman tarafndan sisteme sorunsuz olarak girilmi ve deme onay verilmi olan faturalarn tutarlar finans departman tarafndan tedarikiye (alacakl firmaya) eitli yntemler ile denir. (nakit, ek, havale, eft vs)

4.3 USECASE DIAGRAMI

5.MANTIKSAL TASARIM 5.1 ACTIVITY DIAGRAMS

5.2 CLASS DIAGRAM

10

5.3 DATA MODEL DIAGRAM

11

6. GELTRME 6.1 PROGRAMLAMA DL SEM


Tasarlanan sistemin gelitirilmesi iin nesne ynelimli programlama dilleri aratrlmtr. Bu aratrmalar sonucunda Java programlama dilinde gelitirme yaplmasna karar verilmitir. Bu kararda, gemite yaanm olan programlama deneyimleri ve ders kapsamnda renilen yeni bilgiler etkili olmutur. Bu etken faktrlerden bazlar unlardr: a. b. c. d. Ders kapsamnda anlatlan Nesne Ynelimli Programlama kavram ve tekniklerinin Java ile rneklenmesi. Java nesne ynelimli bir programlama dili olduundan, her eyin bir nesneden ibaret olmas. Daha tasarm aamasnda nesne tabanl dnmeye zorlamas. Java ile gelitirilmi yazlmlarn farkl platformlarda (windows, unix, linux vs) ve farkl cihazlarda (pocked pc, pda, vs) alabilmesi. Son yllarda gelien biliim teknolojileri ve yaygnlaan internet (network) ortamlar sayesinde, yazlmlarn ok katmanl ve sunucu tarafl tasarlanmas. Java nn istemci tarafnda olduu kadar sunucu tarafnda da ok gl ynlerinin bulunmas. Sunucu tarafnda alan yazlmlarda en nemli hususlardan biri de kaynak ynetimi ve kararllktr.(kesintisiz alma) stemcilerden ayn anda gelen istekler ok iyi ynetilmeli ve ortaya kabilecek hatalar kontrol altna alnmaldr. Java nn bu ihtiyaca ok iyi cevap vermesi. Javann bir programlama dili olmas yannda, bir gelitirme ve teknoloji platformu haline gelerek bir endstri standardna dnmesi. Gemite yaanan programlama deneyimlerimde Java platformunun bulunmamas. Java teknojilerinde deneyim kazanlmak istenmesi.

e.

f. g.

6.2 PROGRAMLAMA ARACI SEM (IDE)


Tm programlama dillerinde, yazm kurallar (syntax) sk bir disipline baldr. Yazlm gelitiriler bu kurallara uymak zorundadrlar. Ayrca programlama dillerinde binlerce komut bulunmaktadr. Btn bu komutlarn yazllarn ve kullanmlarn ezberlemek mmkn deildir. Bu zorluklardan dolay genel olarak tmleik gelitirme ortam ad verilen yazlmlar yaplmtr. (IDE-Integrated Development Environment) Son yllarda bir ok programlama dili iin gl IDE yazlmlar ortaya kmtr. IDE aralarnda bulunan genel zellikler ve yazlm gelitiricilere salad faydalardan bazlar unlardr: a. b. c. d. e. f. g. Kullanc arayzlerinin ve baz soyut nesne tasarmlarnn (veritaban balantlar vs) grsel olarak kolaylkla yaplabilmesi. (srkle-brak) Grsel olarak yaplan tasarm kodlarnn otomatik olarak oluturulmas. Sk kullanlan ve kurallar belli olan kodlarn otomatik oluturulmas. (re-factor) Szdizim ve baz basit mantk hatalarnn IDE tarafndan yakalanabilmesi. Programa durma noktalar eklenerek olaylarn ve deikenlerin izlenebilmesi. (watch-debug) Birden fazla programn yer ald byk yazlm projelerinde, programlarn bir arada tutulabilmesi, srm denetimlerinin yaplabilmesi. Programlarn kolaylkla derlenmesi ve datm dosyalarnn hazrlanmas. (run time files)

Java programlama dili iin ok sayda tmleik gelitirme ortam bulunmaktadr. (NetBeans, Eclipse, JBuilder, JDeveloper vs) Her IDE nin dierlerine gre zayf veya gl olduu ynler bulunmaktadr. Bu durumun Java iin avantajlar ve dezavantajlar bulunmaktadr. Java ile yazlm gelitiren bir ok firma farkl IDE ler kulland iin, bu IDE ortamlarnn da ok iyi renilmesi gerekmektedir. Yaplan incelemeler sonucunda, bu projede NetBeans 6.9 IDE sinin kullanlmasna karar verilmitir.

12

7. TEST
Gelitirilen program eitli Windows iletim sistemlerinde ve OpenSuse Linux iletim sisteminde altrlm, tm grevlerini yerine getirdii ve hata yakalama fonksiyonlarnn sorunsuz alt grlmtr. Bu iletim sistemi srmleri aadaki gibidir: Windows: Windows XP Windows Vista Windows 7 Windows Server 2003 Windows Server 2008

Linux: OpenSuse Linux 11

13

8. DAITIM 8.1 GEREKSNMLER


Program Java dilinde gelitirilmitir. Java ile gelitirilen programlar, derlendikten sonra hemen makina diline evrilmezler. Bundan dolay Java platform bamsz olmaktadr. nk, derleme annda programn hangi iletim sisteminde altrlaca bilinmemektedir ve byle bir n koul yoktur. Derleme (compile) ileminde, program kodu byte code ad verilen ara bir koda evrilmektedir. Byte code a dnm olan program, alma annda makina diline evrilir. Bu evrimi yapacak olan baka bir programa daha ihtiyac duyulmaktadr. Bu programlara JRE (Java Runtime Environment) ad verilmektedir. Bundan dolay programn alt tm iletim sistemlerinde JRE 1.6 kurulmu olmaldr. Ayrca, program bir veritaban uygulamas olduundan alt iletim sisteminde Microsoft Access Database Driver kurulmu olmaldr. (ODBC kayna tanmlayabilmek iin) Java Runtime srm; http://www.oracle.com/technetwork/java/javase/downloads/index.html Microsoft Database Driver; http://www.microsoft.com/downloads/en/resultsForCategory.aspx?displaylang=en&categoryId=3&st ype=n_dc Linklerinden download edilebilir. JRE 1.6 nn kurulumu ve iletim sistemlerine gre gerekli minumum bilgisayar konfigurasyonlar kendi teknik dkmanlarnda bulunmaktadr.

8.2 KURULUM
8.2.1 Program dosyalar: Program, MyApp4.jar, MyApp4Src.rar ve MYDB.MDB olmak zere 3 dosyadan olumaktadr: MyApp4.jar dosyas programn ana runtime dosyasdr. Programda bulunan derlenmi snflar bu dosya ierisinde bulunmaktadr. (*.class) MyApp4Src.rar dosyasnda, programn kaynak kodlar bulunmaktadr. Oluturulan tm snflar iin kaynak kod dosyas bulunmaktadr. (*.java) Programn almas iin gerekli deildir. Kaynak kodlarn online olarak incelenebilmesi amacyla eklenmitir. MYDB.MDB dosyas, programn kulland MS ACCESS formatnda veritaban dosyasdr. 8.2.2 Programn Kurulmas ve Ayarlarn yaplmas: 1. Programn kurulmas iin herhangi bir setup program yoktur. Programdaki 3 dosya ayn klasre kopyalanmaldr. 2. MYDB.MDB veritaban dosyasnn ODBC ayarlar yaplarak iletim sistemi zerinde bir veri kayna oluturulmaldr. Oluturulan veri kaynann ad MYDB olmaldr. (tamam byk harf) Program almas srasnda, ODBC zerinde MYDB isimli veri kaynana balanmaya alacaktr. ODBC ayarlarnn yaplmas aadaki ekran grntlerinde bulunmaktadr.

14 Denetim Masas -> Ynetimsel Aralar -> Veri Kaynaklar (ODBC)

Sistem DSN sekmesinde Ekle -> Veri Kayna Ad: MYDB Veritaban Se -> MYDB.MDB dosyasn kopyaladnz klasr.

15

8.3 ALITIRMA
letim sisteminizde jar uzantl dosyalar java.exe dosyas ile ilikilendirilmi ise, MyApp4.jar dosyasna ift tklanarak program altrlabilir. likili deilse, iletim sisteminde komut satr moduna geerek aadaki ekranda grnd ekilde altrlabilir.

Ayrca, JRE dosyalarndan java.exe dosyasnn iletim sistemi ortam deikenlerinde yolunun tanmlanm olmas gerekir. (path) Tanml deilse, java.exe dosyasnn bulunamadn belirten bir uyar mesaj alnr. Bu durumda, java.exe dosyasnn yolu iletim sisteminde tanmlanmal veya java.exe dosyasnn bulunduu klasre geilerek altrma komutu verilmelidir. Komut satrndaki MyApp4.jar dosyasnn tam yolu da yazlmaldr. JRE 1.6 srm (minumum) kurulmu, ODBC ayar yaplarak MYDB.MDB veritabann gsteren bir veri kayna tanmlanm ise program alacak ve aadaki ekran grnts gelecektir.

16

9.PROGRAMIN KULLANILMASI
Program 2 blm olarak tasarlanmtr. Bir blmde program alrken kullanlacak olan sabit tanmlar yaplmaktadr. rnek; rn Tanmlar, Tedariki Tanmlar, Departman Tanmlar, Kullanc Tanmlar. Dier blmde ise, srekli olarak yaplacak ilemler almaktadr. Bu blmden girilen bilgiler, hareket verisi olmaktadr. rnek; Talep Bilgileri, Sipari Bilgileri, rsaliye Bilgileri, Fatura Bilgileri vs. Programda ilk nce gerekli sabit tanmlarn yaplmas gerekmektedir. Bu tanmlar gerekte birer veri nesnesi dir. lemler mensndeki bilgilerde, bu nesneler arasnda (zaman boyutunda) iliki kurulmasn salayan veri nesneleridir. Kullanc grafik arayzleri (GUI) basit, sade ve kullanl ekilde yaplmaya allmtr. Kullancnn veri girii yapmasn salayan bir veri giri formu ve girilen verilerin listelenmesini, bulunmasn ve silinmesini salayan liste (browse) formu yaplmtr. Yaplan ilem sonularnda, kullancya mutlaka mesaj verilmitir. rnein; Kayt Yapld, Hata Olutu vs vs..... Ayrca, hata denetimi maximum seviyede yaplmaya allm, meydana gelen hatalar kontrol altna alnarak programn kararllkla almasn srdrmesi salanmtr. rnek ekran grntleri aadadr:

17 Kayt baarl gerekletiinde bilgi mesaj gsterilmitir.

Eksik bilgi ile kayt yapldnda veya akma meydana geldiinde uyar mesajlar gsterilmitir.

18 Yenile butonuna tklandnda veriler tablodan grid e geliyor.

Bul butonuna tklandnda, aranan ID no soruluyor.

19 Sil butonuna tklandnda, silincek ID no soruluyor.

20

10.KAYNAKLAR 10.1 ELEKTRONIK KAYNAKLAR


1. Gazi niversitesi Biliim Enstits Online NYP Ders erikleri 2. Gazi niversitesi Biliim Enstits rgn renim NYP Ders Slaytlar 3. http://www.uml.org/ 4. http://www.agilemodeling.com/ 5. http://www.agiledata.org/ 6. http://atlas.kennesaw.edu/~dbraun/csis4650/A&D/index.htm 7. http://www-01.ibm.com/software/rational/uml/ 8. http://msdn.microsoft.com/en-us/library/ff604964%28office.14%29.aspx 9. http://www.oracle.com/technetwork/java/index.html 10. http://netbeans.org/

10.2 BASILI KAYNAKLAR


1. Nesne Odakl Analiz ve Modelleme, Yrd.Do.Dr. brahim EDN, 2009 2. Sistem Analizi ve Tasarm, Prof.Dr. Oya KALIPSIZ, Aye BUHARALI, Gksel BRCK, 2008 (2.Basm) 3. UML ile Nesne Tabanl zmleme ve Tasarm, Bora GNGREN, 2009 4. JAVA Programlama Dili Yazlm Tasarm, Altu B. ALTINTA, 2010 5. Java ile Programlama ve Veri Yaplar, Blent OBANOLU, 2010 (2.Basm) 6. Java Uygulamalar, Murat nan, 2007 7. Teach Yourself JAVA in 21 Days, Laura LEMAY, Charles L. PERKINS, 1996

21

11.PROGRAM KAYNAK KODU VE ACIKLAMALAR


Frameler zerindeki nesnelerin tasarm kodlar ok uzun ve basit olduklarndan dolay aada yer almamaktadr. Okunabilirlii artrmak iin sadece metotlar alnmtr. Tasarm nesnelerini oluturan initComponents() metodu kurucu metotlardan arlmaktadr. Ayrca, veri giri snflarndan sadece KullaniciJFrame snfnn kodlar yer almaktadr. nk dier snflar ile ayn metotlara sahiptir sadece veri yaps deimektedir. Yazlmn tm kodlar, altrlabilir jar dosyas ile birlikte bulunmaktadr. Program balangcnda Main snf, myMenuJFrame snfn oluturmakta ve men formunu grnr yapmaktadr. myMenuJFrame snf ierisinde de bir menu ve ilerinde men seenekleri bulunmaktadr. (menuItem) Kullancnn tklad seenek olay yakalanarak ilgili form arlmakta ve grnr hale getirilmektedir. (KullaniciJFrame, UrunJFrame, DepartmanJFrame, TedarikciJFrame) Fiziki veritabann temsil eden Veritabani isimli bir snf oluturulmutur. Tm veritaban ilemleri bu snf aracl ile yrtlmektedir. Baglan(), baglantiKapat(), calistirSorgu(), olusturKayitSet() isimli metotlar bulunmaktadr. Snfn, ResultSet tipindeki kayitSet zellii public olarak tanmland. nk, sorgu sonucunda oluan kayt setine dardan eriilebilmesi gerekmektedir. Dier zellikleri private olarak tanmlanmtr. Bu snf, veritaban operasyonlarn merkezi bir hale getirmektedir. Veritaban tipi, srcs veya adresi deitiinde sadece bu snftaki baglan() metodunun deitirilmesi yeterli olmaktadr. Ayrca, kullanc arayz snflar ve veri snflar ierisinde herhangi bir sql komutu olmadndan java.sql paketinin import edilmesine gerek kalmamtr. Veritaban zerindeki tablolar temsil eden veri snflar oluturulmutur. Kullanici, Urun, Departman ve Tedarikci. Her bir snfn yaps temsil ettii tablo yaps ile ayndr. Snfn tm zellikleri saklanmtr. Ancak public eriimde olan set ve get metotlar ile eriilebilir. Her veri snfnda, kaydet() ve sil() metotlar bulunmaktadr. Ayrca, veri snfnn kurucu metodunda veritaban balants alm, final metodunda veritaban balants kapatlmtr. Arayzde yaplan ilem ise, form nesnelerindeki deerlerin elde edilerek, veri snf nesnesine aktarlmas sonra ilgili metodun arlmasndan ibaretttir.

Main.java /********** @author mazimli **********/ /* ** Ana meny oluturur ve gsterir ***/ package myapp4; public class Main { private static MenuJFrame myMenuJFrame; public static void main(String[] args) { myMenuJFrame = new MenuJFrame(); myMenuJFrame.setVisible(true); myMenuJFrame.setBounds(50, 50, 640, 480); } } MenuJFrame.java /*************** @author mazimli *****************/ /*** Menden seilen seeneklere ait formlar gsterir ***/ package myapp4; public class MenuJFrame extends javax.swing.JFrame {

22 private static TedarikciJFrame myTedarikciJFrame; private static UrunJFrame myUrunJFrame; private static DepartmanJFrame myDepartmanJFrame; private static KullaniciJFrame myKullaniciJFrame; private static HakkindaJFrame myHakkindaJFrame; public MenuJFrame() { initComponents(); } @SuppressWarnings("unchecked") //--KULLANICI TANIMLARI---------------------------------------------------private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) { myKullaniciJFrame = new KullaniciJFrame(); myKullaniciJFrame.setVisible(true); myKullaniciJFrame.setBounds(100, 100, 750, 500); } //--KAPAT------------------------------------------------------------------private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) { System.exit(0); } //--HAKKINDA------------------------------------------------------------private void jMenuItem11ActionPerformed(java.awt.event.ActionEvent evt) { myHakkindaJFrame = new HakkindaJFrame(); myHakkindaJFrame.setVisible(true); myHakkindaJFrame.setBounds(150, 150, 450, 150); } //--DEPARTMAN TANIMLARI----------------------------------------------------private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) { myDepartmanJFrame = new DepartmanJFrame(); myDepartmanJFrame.setVisible(true); myDepartmanJFrame.setBounds(100, 100, 640, 480); } //--URUN TANIMLARI---------------------------------------------------------private void jMenuItem10ActionPerformed(java.awt.event.ActionEvent evt) { myUrunJFrame = new UrunJFrame(); myUrunJFrame.setVisible(true); myUrunJFrame.setBounds(100, 100, 750, 500); } //--TEDARIKCI TANIMLARI----------------------------------------------------private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) { myTedarikciJFrame = new TedarikciJFrame(); myTedarikciJFrame.setVisible(true); myTedarikciJFrame.setBounds(100, 100, 750, 550); }

23

//--MAIN METOT--------------------------------------------------------------public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new MenuJFrame().setVisible(true); } }); } } Veritabani.java /****************** @author mazimli *******************/ /*** Veritaban snfdr. Veritaban ilemlerini gerekletirir. ****/ package myapp4; import java.sql.*; import javax.swing.JOptionPane; public class Veritabani { private Connection baglanti; private Statement sorgu; public ResultSet kayitSet; public boolean baglan(){ boolean sonuc = false; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); baglanti = DriverManager.getConnection("jdbc:odbc:MYDB"); sonuc = true; } catch (Exception e) { JOptionPane.showMessageDialog(null,e.getMessage(),"!!! HATA OLUSTU !!!",0); sonuc = false; } return sonuc; } public boolean olusturKayitSet(String sqlText){ boolean sonuc = false; try{ sorgu = baglanti.createStatement(); kayitSet = sorgu.executeQuery(sqlText); sonuc = true; } catch (Exception e) { JOptionPane.showMessageDialog(null,e.getMessage(),"!!! HATA OLUSTU !!!",0); sonuc = false; } return(sonuc);

24 } public boolean calistirSorgu(String sqlText){ boolean sonuc = false; try{ sorgu = baglanti.createStatement(); sorgu.executeUpdate(sqlText); sonuc = true; } catch (Exception e) { JOptionPane.showMessageDialog(null,e.getMessage(),"!!! HATA OLUSTU !!!",0); sonuc = false; } return(sonuc); } public void baglantiKapat(){ try{ baglanti.close(); } catch (Exception e) { JOptionPane.showMessageDialog(null,e.getMessage(),"!!! HATA OLUSTU !!!",0); } } } Kullanici.java /******************* @author mazimli *******************/ /*** Kullanici veri yap snf. KULLANICI tablosuna karlk gelir.***/ package myapp4; import javax.swing.JOptionPane; public class Kullanici { private int id; private String ad; private String soyad; private String departmanId; private int yonetici; private int admin; private int aktif; private String sifre; private Veritabani myDb; private boolean baglantiVar; private boolean sonuc; public int getId() { return id; }

25 public void setId(int id) { this.id = id; } public String getAd() { return ad; } public void setAd(String ad) { this.ad = ad; } public String getSoyad() { return soyad; } public void setSoyad(String soyad) { this.soyad = soyad; } public String getDepartmanId() { return departmanId; } public void setDepartmanId(String departmanId) { this.departmanId = departmanId; } public int getYonetici() { return yonetici; } public void setYonetici(int yonetici) { this.yonetici = yonetici; } public int getAdmin() { return admin; } public void setAdmin(int admin) { this.admin = admin; } public int getAktif() { return aktif; } public void setAktif(int aktif) { this.aktif = aktif;

26 } public String getSifre() { return sifre; } public void setSifre(String sifre) { this.sifre = sifre; } //--KURUCU METOT: VERITABANI SURUCUSUNU YUKLER VE BAGLANTIYI KURAR... public Kullanici(){ myDb = new Veritabani(); baglantiVar = myDb.baglan(); } //--YOK EDICI METOT: BAGLANTIYI KESER, VERITABANI NESNESINI YOK EDER... @Override public void finalize() throws Throwable{ myDb.baglantiKapat(); super.finalize(); } public void kaydet(){ if (baglantiVar == true) { sonuc = myDb.calistirSorgu("INSERT INTO KULLANICI (ID,AD,SOYAD,DEPARTMANID,YONETICI,ADMIN,AKTIF,SIFRE) VALUES (" + id + ",'" + ad + "','" + soyad + "'," + departmanId + "," + yonetici + "," + admin + "," + aktif + ",'" + sifre + "')"); if (sonuc == true) { JOptionPane.showMessageDialog(null,"Kayit Yapildi...\n\nId: " + id,"B i l g i",1); } } } public void sil(){ if (baglantiVar == true) { sonuc = myDb.calistirSorgu("DELETE FROM KULLANICI WHERE ID=" + id); if (sonuc == true) { JOptionPane.showMessageDialog(null,"Kayit Silindi...\n\nId: " + id,"B i l g i",1); } } } } KullaniciJFrame.java /************************** @author mazimli *********************/ /*** ************* Kullanc tanmlar form snf ********************/ package myapp4;

27 import java.sql.SQLException; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JOptionPane; import javax.swing.table.DefaultTableModel; public class KullaniciJFrame extends javax.swing.JFrame { private Veritabani myDb; private boolean sonuc; /** Creates new form KullaniciJFrame */ public KullaniciJFrame() { initComponents(); } @SuppressWarnings("unchecked") //--KAPAT----------------------------------------------------------------private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { }//GEN-LAST:event_jButton3ActionPerformed

this.dispose();

//--TEMIZLE--------------------------------------------------------------private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { jTextField1.setText(""); jTextField2.setText(""); jTextField3.setText(""); jTextField4.setText(""); jPasswordField1.setText(""); } //--KAYDET---------------------------------------------------------------private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { Kullanici myKullanici = new Kullanici(); try { myKullanici.setId(Integer.parseInt(jTextField1.getText())); myKullanici.setAd(jTextField2.getText()); myKullanici.setSoyad(jTextField3.getText()); myKullanici.setDepartmanId(jTextField4.getText()); myKullanici.setYonetici(jComboBox1.getSelectedIndex()); myKullanici.setAdmin(jComboBox2.getSelectedIndex()); myKullanici.setAktif(jComboBox3.getSelectedIndex()); myKullanici.setSifre(jPasswordField1.getText()); myKullanici.kaydet(); } catch (Exception e) { JOptionPane.showMessageDialog(null,e.getMessage(),"!!! HATA OLUSTU !!!",0); } finally {

28 myKullanici = null; } } //--GRID TABLO ICI YENILENIYOR---------------------------private void yenile(String prmId) throws SQLException{ int i = 0; int j = 0; int kayitSayi = 0; DefaultTableModel myModel; myModel = (DefaultTableModel) jTable1.getModel(); j = myModel.getRowCount(); for (i = 0; i < j; i++ ){ //-----grid tablo ici temizleniyor... myModel.removeRow(0); } i = 0; myDb = new Veritabani(); sonuc = myDb.baglan(); if (sonuc == true) { sonuc = myDb.olusturKayitSet("SELECT COUNT(*) AS ROWCOUNT FROM KULLANICI " + prmId); myDb.kayitSet.next(); kayitSayi = myDb.kayitSet.getInt("ROWCOUNT")-1; jProgressBar1.setMaximum(kayitSayi); sonuc = myDb.olusturKayitSet("SELECT * FROM KULLANICI " + prmId + " ORDER BY ID"); } try { while (myDb.kayitSet.next()) { myModel.addRow(new Object[]{myDb.kayitSet.getString("ID"),myDb.kayitSet.getString("AD"),myDb.kayitSet.getString("SOYA D"),myDb.kayitSet.getString("DEPARTMANID"),myDb.kayitSet.getString("YONETICI"),myDb.kayitSet.ge tString("ADMIN"),myDb.kayitSet.getString("AKTIF")}); jProgressBar1.setValue(i); i++; } } catch (SQLException ex) { Logger.getLogger(KullaniciJFrame.class.getName()).log(Level.SEVERE, null, ex); } myDb.baglantiKapat(); myDb = null; } //--YENILE---------------------------------------------------------------private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {

29 try { yenile(""); } catch (SQLException ex) { Logger.getLogger(KullaniciJFrame.class.getName()).log(Level.SEVERE, null, ex); } } //--BUL------------------------------------------------------------------private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) { String id; id = JOptionPane.showInputDialog(null,"[Kullanici Bul]\n\nID Giriniz:",null); if (id != null) { try { yenile("WHERE ID=" + id); } catch (SQLException ex) { Logger.getLogger(KullaniciJFrame.class.getName()).log(Level.SEVERE, null, ex); } } }

//--SIL------------------------------------------------------------------private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {//GENFIRST:event_jButton6ActionPerformed String id; id = JOptionPane.showInputDialog(null,"[Kullanici Sil]\n\nID Giriniz:",null); if (id != null) { Kullanici myKullanici = new Kullanici(); try { myKullanici.setId(Integer.parseInt(id)); myKullanici.sil(); yenile(""); } catch (Exception ex) { Logger.getLogger(KullaniciJFrame.class.getName()).log(Level.SEVERE, null, ex); } finally { myKullanici = null; } } } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new KullaniciJFrame().setVisible(true); } }); }

30 }

You might also like