Professional Documents
Culture Documents
: : :
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.
10
11
e.
f. g.
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
13
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.
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:
Eksik bilgi ile kayt yapldnda veya akma meydana geldiinde uyar mesajlar gsterilmitir.
20
21
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 }