Java-2 2016 Hafta-8 Örnek-1

java2_16_hafta8_1

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class gelirvergisi implements ActionListener {

	JList[] jl;
	DefaultListModel[] dlm;
	JComboBox jcb;
	JTextField jtf_gelirtop,jtf_yenigelir;
	JRadioButton jrb_ocak,jrb_temmuz;
	
	public gelirvergisi() {
		
		JFrame jfrm = new JFrame("Gelir Vergisi - 2016");
		jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jfrm.setLayout(new GridLayout(1,5));
		jfrm.setSize(500, 250);
		
		JPanel[] jpn = new JPanel[5];
		jl= new JList[5];
		dlm=new DefaultListModel[5];
		String[] baslik={"İsim","Gelir Top.","Yeni Gelir","Dönem","Vergi"};
		
		for(int i =0; i<jpn.length;i++)
		{
			jpn[i]= new JPanel();
			jpn[i].setPreferredSize(new Dimension(95, 295));
			dlm[i]= new DefaultListModel();
			jl[i]=new JList(dlm[i]);
			JScrollPane jscp= new JScrollPane(jl[i]);
			jscp.setPreferredSize(new Dimension(90,160));
			JLabel jlab = new JLabel(baslik[i]);
			jpn[i].add(jlab);
			jpn[i].add(jscp); // jlist panele eklendi
			
			jfrm.add(jpn[i]);
		}
		
		//1. sutun eklemeleri
		String[] isimler ={"Seçiniz","Ahmet","Mustafa","Metin","Ayse","Fatma"};
		jcb= new JComboBox(isimler);
		jcb.setPreferredSize(new Dimension(90,25));
		jpn[0].add(jcb);
		JButton jbtn1= new JButton("Ekle");
		jbtn1.addActionListener(this);
		jbtn1.setActionCommand("ekle"); // buton etiketi
		jbtn1.setPreferredSize(new Dimension(90,25));
		jpn[0].add(jbtn1);
		
		//2. sutun
		jtf_gelirtop= new JTextField();
		jtf_gelirtop.setPreferredSize(new Dimension(90,25));
		jpn[1].add(jtf_gelirtop);
		JButton jbtn2= new JButton("Sil");
		jbtn2.addActionListener(this);
		jbtn2.setPreferredSize(new Dimension(90,25));
		jpn[1].add(jbtn2);
		
		//3.sutun
		jtf_yenigelir= new JTextField();
		jtf_yenigelir.setPreferredSize(new Dimension(90,25));
		jpn[2].add(jtf_yenigelir);
		
		//4. sutun
		ButtonGroup bg = new ButtonGroup();
		jrb_ocak = new JRadioButton("Ocak");
		jrb_ocak.setSelected(true);
		jrb_temmuz = new JRadioButton("Temmuz");
		bg.add(jrb_ocak);
		bg.add(jrb_temmuz);
		JPanel jpn4_1 = new JPanel();
		JPanel jpn4_2 = new JPanel();
		jpn4_1.setLayout(new FlowLayout(FlowLayout.LEFT));
		jpn4_2.setLayout(new FlowLayout(FlowLayout.LEFT));
		jpn4_1.setPreferredSize(new Dimension(90,25));
		jpn4_2.setPreferredSize(new Dimension(90,25));
		jpn4_1.add(jrb_ocak);
		jpn4_2.add(jrb_temmuz);
		jpn[3].add(jpn4_1);
		jpn[3].add(jpn4_2);
		jfrm.setVisible(true);
	}
	@Override
	public void actionPerformed(ActionEvent ae) {
		if(ae.getActionCommand().equals("ekle"))
		{
			// ekle
			int secilen_isim = jcb.getSelectedIndex();
			int donem=0;
			if(jrb_temmuz.isSelected())
				donem=1;
			
			double mevcutgelir,yenigelir;
			try{
				if(secilen_isim>0 && jtf_gelirtop.getText().length()>0 && 
						jtf_yenigelir.getText().length()>0 ){
					
				mevcutgelir=Double.parseDouble(jtf_gelirtop.getText());
				yenigelir=Double.parseDouble(jtf_yenigelir.getText());
				
				String[] donemler={"Ocak","Temmuz"};
				double vergi=vergihesapla(mevcutgelir, yenigelir, donem);
				
				dlm[0].addElement(jcb.getSelectedItem()); // isim
				dlm[1].addElement(mevcutgelir); // gelir top.
				dlm[2].addElement(yenigelir); // yeni gelir
				dlm[3].addElement(donemler[donem]); // donem
				dlm[4].addElement(vergi); // vergi
				
				jcb.setSelectedIndex(0);
				jtf_gelirtop.setText("");
				jtf_yenigelir.setText("");
				jrb_ocak.setSelected(true);
				}	
			}catch(Exception ex)
			{
				
			}
		}
		else
		{
			int secilen = jl[0].getSelectedIndex();
			if(secilen>-1)
			{
				for(int i=0;i<dlm.length;i++)
				{
					dlm[i].remove(secilen);
				}	
			}	
		}
	}

	private double vergihesapla(double mevcutgelir,double yenigelir, int donem)
	{
		double toplamvergi=0;
		double[] oranlar={0.15,0.2,0.27,0.35};
		double[] ocak={12600,30000,110000};
		double[] temmuz={13000,31000,120000}; // henuz belirlenmedi degerler farazi
		double[] donemsiniri; // kullanilacak doneme ait sinirlar
		
		donemsiniri=ocak;
		if(donem==1)
			donemsiniri=temmuz;
		
		double anapara=mevcutgelir;
		double kalan = yenigelir;
		
		do{
		
		int onceki=oranbul(anapara,donemsiniri);
		int sonraki=oranbul(anapara+kalan,donemsiniri);
		
		
		if(onceki==sonraki)
		{	// durum1 : tamamini vergilendir
			toplamvergi+=kalan*oranlar[onceki];
			kalan=0;
		}
		else
		{ 
			// durum2 : sinir ustunde devam etmeli 
			double vergilendirilecek=donemsiniri[onceki]-anapara;
			toplamvergi+=vergilendirilecek*oranlar[onceki];
			anapara+=vergilendirilecek;
			kalan-=vergilendirilecek;
		}
		
		
		
		}while(kalan>0);
		
		
		return toplamvergi;
	}
	
	private int oranbul(double gelir,double[] sinirlar)
	{
		for(int i=0;i<sinirlar.length;i++)
		{
			if(gelir < sinirlar[i])
				return i;
		}
		return sinirlar.length;
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new gelirvergisi();
	}

}

 

Share