Archive for June 2013

KALKULATOR ZAKAT dengan C++


Mungkin masih banyak diantara kita yang ternyata belum paham atau bahkan belum kenal dengan tatacara perhitungan ZAKAT. Maka dari itu, di postingan kali ini saya ingin berbagi (karya original) program "KALKULATOR ZAKAT" berbasis bahasa pemrograman C++.

Program sederhana berikut meliputi perhitungan Zakat :

1. Fitrah
2. Penghasilan
3. Maal ==> dipecah : Zakat emas, perak, perniagaan, pertanian, dan hewan ternak.

Langsung saja silakan cek source code nya :

#include <iostream.h>
#include <conio.h>

//tools
void garis();
long perata(long total);
long masukantetap(long bulanan);
long sumperbulan(long total,long bulanan);

//zfitrah
void fitrah();
long zakatfitrah(long beras);

//zpenghasilan
void penghasilan();
long nisabpenghasilan(long beras);
long zakatpenghasilan(long ratagaji, long ratakeluar);

void zakatmal();

//zakatemasperak
void emas();
void perak();
bool nisabemas(int punya);
bool nisabperak(int punya);
long zakatemasperak(int punya,long harga);

//zakatperniagaan
void perniagaan();
long nisabniaga(long hargamas);
long zakatniaga(long total);

//zakatpertanian
void pertanian();
bool nisabpertanian(int hasiltani);
float zakattani(int hasiltani,int pembagi);

//zakatternak
void ternak();
int autokambing(int kbg);
void autosapi(int sp);

//MAIN FUNCTION**********************************************

void main(){
int menu;
do{
clrscr();
cout<<"MENU UTAMA PERHITUNGAN PAJAK";
garis();
cout<<"1. Zakat Fitrah\n";
cout<<"2. Zakat Penghasilan\n";
cout<<"3. Zakat Mal\n";
cout<<"4. Keluar/Exit\n";
cout<<"Masukan Pilihan Menu diatas: ";cin>>menu;
garis();
switch(menu)//switch1
{
case 1:
{fitrah();break;}
case 2:
{penghasilan();break;}
case 3:
{zakatmal();break;}
case 4:
{goto hop;}
}//eo switch 1
getch();hop:
}//eo do
while(menu!=4);
}//eo main

//END OF MAIN FUNCTION***********************************

void garis()
{
cout<<"\n--------------------------------\n";
}

long perata(long total)
{
return total/12;
}
long masukantetap(long bulanan)
{
return bulanan*12;
}
long sumperbulan(long total,long bulanan)
{
//masukkan fungsi ini dalam perulangan
return total+bulanan;
}
void fitrah()
{
long beras;
cout<<"Zakat  Fitrah "<<endl;
cout<<"------------- "<<endl;
cout<<"Masukkan Harga Beras per-KG : Rp. ";cin>>beras;
cout<<"Maka Anda Harus Membayar Zakat Fitrah : Rp. "<<zakatfitrah(beras);
}
long zakatfitrah(long beras)
{
return 3.5*beras;
}
void penghasilan()
{
long ratagaji,gajibulan, gajitotal=0;
cout<<"Zakat Penghasilan"<<endl;
cout<<"-----------------"<<endl;
//gaji sama perbulan
char jw;
cout<<"Apakah Gaji Anda sama Perbulannya[Y/N] : ";cin>>jw;
garis();
if(jw=='Y' || jw=='y')
{
cout<<"Masukkan Gaji Anda per-Bulan : Rp. ";cin>>gajibulan;
gajitotal=masukantetap(gajibulan);
cout<<"Gaji Total Setahun : Rp. "<<gajitotal;
ratagaji=perata(gajitotal);
cout<<"\nMaka Rata-rata Gaji Pertahun : Rp. "<<ratagaji;
}
//gaji tidak sama perbulan
else{
for(int i=1;i<=12;i++)
{
cout<<"Masukkan Gaji Bulan ke "<<i<< ": Rp. ";cin>>gajibulan;
gajitotal=sumperbulan(gajitotal,gajibulan);
}
ratagaji=perata(gajitotal);
cout<<"Gaji Total Setahun : Rp. "<<gajitotal;
cout<<"\nMaka Rata-rata Gaji Pertahun : Rp. "<<ratagaji;
}
//hitung pengeluaran
long uangkeluar, totalkeluar=0, ratakeluar, beras=0;
garis();
cout<<"\nMasukkan Pengeluaran Anda Perbulan"<<endl;
for(int i=1;i<=12;i++)
{
cout<<"Bulan ke "<<i<<": Rp. ";cin>>uangkeluar;
totalkeluar=sumperbulan(totalkeluar,uangkeluar);
}
ratakeluar=perata(totalkeluar);
cout<<"Maka Total Pengeluaran Pertahun     : Rp. "<<totalkeluar<<endl;
cout<<"Maka Rata-rata Pengeluaran Pertahun : Rp. "<<ratakeluar<<endl;
//hitung zakat
long nisab;
garis();
cout<<"Masukkan Harga Beras per-KG : Rp. ";cin>>beras;
nisab = nisabpenghasilan(beras);
cout<<"\nNisab : "<<nisab;
garis();
if((gajitotal-totalkeluar)>nisab){
cout<<"\nAnda Harus Membayar Zakat Penghasilan Sebesar Rp. "<<zakatpenghasilan(ratagaji,ratakeluar)<<" ,-"<<endl;
 }
else{
cout<<"\nAnda Belum Diwajibkan Membayar Zakat Penghasilan "<<endl;
 }
   }
long nisabpenghasilan(long beras)
{
return beras*520;
}
long zakatpenghasilan(long ratagaji,long ratakeluar)
{
return (ratagaji-ratakeluar) * 25/100;
}
void zakatmal()
{
int pilih;
do{
clrscr();
cout<<"Zakat Mall\n";
cout<<"----------\n";
cout<<"1. Emas\n";
cout<<"2. Perak\n";
cout<<"3. Perniagaan\n";
cout<<"4. Pertanian\n";
cout<<"5. Hewan Ternak\n";
cout<<"6. Kembali ke Menu Utama Zakat\n";
cout<<"Masukan Pilihan Anda : ";cin>>pilih;
garis();
switch(pilih)//switch2
{
case 1:
 {emas();break;}
 case 2:
 {perak();break;}
 case 3:
 {perniagaan();break;}
 case 4:
 {pertanian();break;}
 case 5:
 {ternak();break;}
 case 6:
 {goto hop;}
}//eo switch 2
getch();
}//e o do
while(pilih!=6);hop:
}

void emas()
{
int emas;
long hargamas;
cout<<"Zakat Mall Emas "<<endl;
cout<<"--------------- "<<endl;
cout<<"Masukkan Total Emas Yang Anda Simpan <pembulatan dalam gram> : ";cin>>emas;
if(nisabemas(emas))
{
garis();
cout<<"Anda Sudah Wajib Zakat Mal Emas karena Telah Melewati Nisab";
garis();
cout<<"Masukkan Harga Emas Per-Gram Sekarang  : ";cin>>hargamas;
garis();
cout<<"Zakat Mal Emas yang Harus Anda Bayar Rp. "<<zakatemasperak(emas,hargamas)<<" ,-"<<endl;
}
else
{
cout<<"Anda Belum Wajib Zakat Mal Emas "<<endl;
}
}
void perak()
{
int perak;
long hargaperak;
cout<<"Zakat Mall Perak "<<endl;
cout<<"---------------- "<<endl;
cout<<"Masukkan Jumlah Perak Yang Anda punyai <pembulatan dalam gram> : ";cin>>perak;
if(nisabperak(perak))
{
garis();
cout<<"Anda Sudah Wajib Zakat Mal Perak karena Telah Melewati Nisab";
garis();
cout<<"Masukkan Harga Perak Per-Gram Sekarang  : ";cin>>hargaperak;
garis();
cout<<"Zakat Mal Perak yang Harus Anda Bayar Rp. "<<zakatemasperak(perak,hargaperak)<<" ,-"<<endl;
}
else
{
cout<<"Anda Belum Wajib Zakat Mal Perak "<<endl;
}
}
bool nisabemas(int punya)
{
if(punya>85){return true;}
return false;
}

bool nisabperak(int punya)
{
if(punya>595){return true;}
return false;
}
long zakatemasperak(int punya,long harga)
{
return punya * harga / 40;
}

void perniagaan()
{
long emas,harta,totalharta=0;
char sama;
cout<<"Zakat Mall Perniagaan "<<endl;
cout<<"--------------------- "<<endl;
cout<<"Masukkan Harga Emas Per-Gram : Rp. ";cin>>emas;
garis();
cout<<"Apakah Harta Niaga Bersih Setiap Bulannya, SAMA dalam Jangka Satu tahun[Y/T] :  ";cin>>sama;
if(sama=='Y'||sama=='y')
{
cout<<"Masukkan Harta Perniagaan Dalam 1 bulan : Rp. ";cin>>harta;
totalharta = masukantetap(harta);
}
else{
for(int i=1;i<=12;i++)
{
cout<<"Masukkan Harta Peniagaan Bersih Bulan Ke- "<<i<<" : Rp. ";cin>>harta;
totalharta= sumperbulan(totalharta,harta);
}
}
cout<<"Harta Niaga 1 Tahun : "<<totalharta;
if(totalharta>=nisabniaga(emas))
{
garis();
cout<<"Zakat Mal Perniagaan yang Harus Anda Bayar Rp. "<<zakatniaga(totalharta)<<" ,-"<<endl;
}
else{
garis();
cout<<"Anda Belum Wajib Zakat Mal Perniagaan "<<endl;
}
}
long nisabniaga(long hargamas)
{
return hargamas * 86;
}
long zakatniaga(long total)
{
return total/40;
}
void pertanian()
{
int hasiltani,pilihtani,pembagi;
cout<<"Zakat Mall Pertanian "<<endl;
cout<<"-------------------- "<<endl;
cout<<"Masukkan Hasil Pertanian [KiloGram] : ";cin>>hasiltani;
garis();
if(nisabpertanian(hasiltani))
{
cout<<"Anda Sudah Wajib Zakat Mal Pertanian karena Telah Melewati Nisab";garis();
cout<<"\nKetentuan Hasil Pertanian :";garis();
cout<<"1. Pertanian Diairi Oleh Air Hujan/Sungai"<<endl;
cout<<"2. Pertanian Tidak Diairi Oleh Air Hujan/Sungai"<<endl;
cout<<"\nMasukkan Pilihan [1/2] : ";cin>>pilihtani;
if (pilihtani==1)
{
pembagi=10;
}
else{
pembagi=100;
}
cout<<"Zakat Mal Pertanian yang Harus Anda Bayar "<<zakattani(hasiltani,pembagi)<<" KG"<<endl;
}
else{
cout<<"Anda Belum Wajib Zakat Mal Pertanian "<<endl;
}
}
bool nisabpertanian(int hasiltani)
{
if(hasiltani>700){return true;}
return false;
}
float zakattani(int hasiltani,int pembagi)
{
return hasiltani/pembagi; //air gratis,pembagi=10||air bayar,pembagi=100
}

void ternak()
{
int kambing,sapi;
cout<<endl;
cout<<"Zakat Mall Hewan Ternak\n";
cout<<"-----------------------\n";
cout<<"Masukkan Jumlah Kambing/Domba Yang Anda punyai : ";cin>>kambing;
cout<<endl;
if(kambing<40){cout<<"Anda Belum Wajib Zakat Mal Hewan Ternak Kambing/Domba";}
else if(kambing<=120){cout<<"Silakan Berzakat 1 Ekor Kambing(2th) atau 1 Ekor Domba(1th)"<<endl;}
else if(kambing<=200){cout<<"Silakan Berzakat 2 Ekor Kambing/Domba)"<<endl;}
else if(kambing>200)
{
cout<<"Silakan Berzakat "<<autokambing(kambing)<<" Ekor Kambing/Domba"<<endl;
}
else {cout<<"Input salah";}
garis();
 
cout<<"Masukkan Jumlah Sapi/Kerbau Yang Anda punyai : ";cin>>sapi;
cout<<endl;
if(sapi<30){cout<<"Anda Belum Wajib Zakat Mal Hewan Ternak Sapi/Kerbau";}
else if(sapi<40){cout<<"Silakan Berzakat 1 Ekor Sapi Jantan/Betina Tabi'";}
else if(sapi<60){cout<<"Silakan Berzakat 1 Ekor Sapi Jantan/Betina Musinnah";}
else if(sapi<70){cout<<"Silakan Berzakat 2 Ekor Sapi Jantan/Betina Tabi'";}
else if(sapi<80){cout<<"Silakan Berzakat 1 Ekor Sapi Musinnah dan 1 Ekor Betina Tabi'";}
else if(sapi<90){cout<<"Silakan Berzakat 2 Ekor Sapi Musinnah";}
else if(sapi<100){cout<<"Silakan Berzakat 1 Ekor Sapi Tabi'";}
else if(sapi<110){cout<<"Silakan Berzakat 2 Ekor Sapi Tabi' dan Ekor Sapi Musinnah";}
else if(sapi<120){cout<<"Silakan Berzakat 2 Ekor Musinnah dan 1 Ekor Tabi'";}
else if(sapi<130){cout<<"Silakan Berzakat 3 Ekor Musinnah dan 4 Ekor Tabi'";}
else if(sapi>=130)
{
autosapi(sapi);
}
else {cout<<"Input salah";}
garis();
cout<<"\n*)Musinnah = sapi/kerbau berumur 2 tahun (masuk tahun ke-3)\n  Tabi'    = sapi/kerbau berumur 1 tahun (masuk tahun ke-2)";
}
int autokambing(int kbg)
{
int i=3;
while(i>0)
{
if(kbg<=100*i){return i;}
i++;
}
return 0;
}
void autosapi(int sapi)
{
//jumlah sapi >= 130 ekor
int musinah, sisa, tabi;
musinah=(sapi-129)/40;
if(musinah>0)
{
sisa=(sapi-129)-musinah*40;
if((sisa/30)>0)
{
tabi=sisa/30;
}
else{tabi=0;}
cout<<"Silakan Berzakat "<<(musinah+3)<<" Ekor Musinnah & "<<(tabi+4)<<" Ekor Tabi'";
}
else if((sapi-129)>=30){cout<<"Silakan Berzakat 5 Ekor Tabi'";}
else {cout<<"Silakan Berzakat 3 Ekor Musinnah dan 4 Ekor Tabi'";}
}

Untuk memastikan, silakan kawan ujicoba sendiri menggunakan sembarang compiler, seperti borland c++ ataupun yang lain.

Sekian postingan kali ini, semoga dapat menambah wawasan kita khususnya tentang Zakat dalam Islam.

Mengubah Data Record dalam MySQL

Berikut ini sedikit sharing tentang cara mengubah suatu data record dalam MySQL, silakan langsung dicek!

   1. Menambah data record
   2. Mengedit / mengupdate data record
   3. Menghapus suatu data record

 1. Menambah data record Menambahkan Data Atau Record Dengan Perintah Insert.

Ada 3 bentuk umum perintah SQL untuk menambahkan data pada tabel MySql, diantaranya adalah sebagai berikut :

 Cara pertama :
INSERT INTO nama_tabel values ('nilai1','nilai2','nilai3',.....);

 Cara kedua :
INSERT INTO nama_tabel (field1,field2,field3,....) values ('nilai1','nilai2','nilai3',....);

 Cara ketiga :
INSERT INTO nama_tabel set field1='nilai1',field2='nilai2',field3='nilai3',filed....='nilai.....');

untuk contoh langsungnya dengan sebuah tabel obat :


Cara Pertama :
        INSERT INTO obat VALUES('99','revanol');

 Cara Kedua :
        INSERT INTO obat (kodeobat,namaobat)  VALUES ('99','revanol');

 Cara Ketiga :
        INSERT INTO obat SET kodeobat='99',namaobat='revanol';



 2. Mengedit / Mengupdate record Mengedit Data Atau Record Dengan Perintah Update

 Perintah update dilakukan apabila sewaktu waktu ingin merubah data pada tabel MySql. Perintah update bukan perintah menambahkan data melainkan hanya mengedit saja. Perubahan yang terjadi pada proses update bersifat permanen, artinya perintah yang sudah dijalankan tidak bisa di cancel atau dibatalkan.
 Sintaks umum perintah update dalam MySql bisa kita lihat di bawah ini :

           UPDATE nama_tabel SET field1='nilaibaru' [WHERE kondisi];

 Untuk contoh langsungnya jika kita sudah membuat database :

           UPDATE obat SET namaobat='paramex' WHERE kodeobat=’99’;


revanol direplace dengan paramex.


3. Menghapus suatu data Record Menghapus Record Atau Data Dengan Perintah Delete.

Proses delete dilakukan apabila ada data atau record pada suatu tabel yang perlu dihapus atau dihilangkan. Perintah delete bersifat permanen, jadi setelah perintah di jalankan tidak bisa di cancel atau dibatalkan.
Sintaks umum SQL untuk menghapus sebuah record atau data pada tabel MySql bisa kita lihat di bawah ini :

            DELETE FROM nama_tabel [WHERE kondisi];
 Untuk contoh langsungnya  :

          DELETE FROM obat WHERE kodeobat=’99’;


Data dengan kodeobat=99 terhapus dari tabel.

Sekian, semoga bermanfaat..!

Cascade Untuk Relasi Tabel dalam MySQL

Postingan kali ini membahas mengenai salah satu sintaks SQL yang berfungsi untuk membuat relasi antar tabel. Tanpa banyak basa-basi, selamat membaca!

CASCADE adalah baris-baris dalam tabel anak yang berisi nilai-nilai yang juga terdapat dalam kolom yang terkait dari tabel induk.

CONTOH PENGGUNAAN
On delete cascade adalah sebuah fitur yang diberikan untuk sebuah tabel yang berelasi  yang memungkinkan untuk menghapus data pada tabel anak apabila data pada tabel parent terhapus. Sintaks on delete cascade biasanya ditempatkan pada kalimat yang mendeklarasikan sebuah foreign key.

Untuk contoh sintaks pada ON DELETE dan ON UPDATE CASCADE :
Misal kita mempuyai 2 tabel, yakni obat dan pembelian. Kemudian kita relasikan kedua table berikut. Gunakan tipe tabel InnoDB, agar relasi tabel bisa berfungsi.


Sintaks Relasi :
ALTER TABLE pembelian ADD FOREIGN KEY (kodeobat) REFERENCES obat (kodeobat) ON DELETE CASCADE ON UPDATE CASCADE;


setelah itu baru kita ujicoba dengan menggunakan perintah Delete pada parent table (obat) :
DELETE FROM obat WHERE kodeobat='25';

Lalu kita tampilkan tabel ‘pembelian’ untuk melihat efek yang terjadi :


Karena kita menggunakan OPSI CASCADE pada ON DELETE dan ON UPDATE, maka bila kita menghapus salah satu record pada table induk maka record tersebut yang sebagai foreign key di tabel anak pun akan terhapus juga. Data pembelian obat dengan kodeobat=25 dihapus karena obat dengan kode tersebut telah dihapus dari parent table, yakni table obat .

Sekian postingan kali ini, semoga dapat bermanfaat dan saya tunggu saran-saran kawan sekalian tentunya.

Popular Post

- Copyright © welcome to Hakim's blog. -Metrominimalist- Powered by Blogger - Designed by Johanes Djogan -