Tuesday, June 26, 2007

SD: Tugas Array 26 Juni 2007

/*karena format HTML, maka semua karakter lebih besar (>) dan lebih kecil (<) diganti dengan karakter ((>)) dan ((<)) sorry (^-^)*/
//File header.h

#include (<)conio.h(>)
#include (<)stdio.h(>)
#include (<)stdlib.h(>)
#include (<)string.h(>)

#define max 69
typedef char str[20];
typedef struct{
int nomor;
str nama;
float saldo;
}Rekening;

typedef Rekening ArrayRek[max];


int IsAda(ArrayRek fd, int no);
int IsSame(ArrayRek fd,int numb);
int CariBerdasarkanNomor(ArrayRek fd,int nomor);
int SaldoTerbesar(ArrayRek fd);
float TotalSaldo(ArrayRek fd);
void init(ArrayRek *fd);
void BukaRekening(ArrayRek *fd, int k);
void TampilkanSemua(ArrayRek fd, int j);
void Penyetoran(ArrayRek *fd, int numb, float uang);
void Penarikan(ArrayRek *fd, int numb, float uang);
void Transfer(ArrayRek *fd, int asal, int tujuan, float uang);
void Ubah(ArrayRek *fd, int no);
void Tutup(ArrayRek *fd, int no);


//File definition.c

#include "header.h"

int IsAda(ArrayRek fd, int no)
{
int indeks,i;
indeks=0;
for(i=1;i(<)max;i++)
{
if(no == fd[i].nomor)
indeks=i;
}
return indeks;
}

int IsSame(ArrayRek fd,int numb)
{
int i,c;
c=1;
for(i=1;i(<)max;i++)
{
if(numb==fd[i].nomor)
c=0;
}
if(c==0)
return 0;
else
return 1;
}

int CariBerdasarkanNomor(ArrayRek fd,int nomor)
{
int i,k;
for(i=1;i(<)max;i++)
{
if(nomor==fd[i].nomor)
k=nomor;
}
return nomor;
}

int SaldoTerbesar(ArrayRek fd)
{
int i,temp;
temp=1;
for(i=2;i(<)max;i++)
{
if(fd[i].saldo(>)fd[temp].saldo)
temp=i;
}
return temp;
}

float TotalSaldo(ArrayRek fd)
{
int i;
float tot;
tot=0;
for(i=1;i(<)max;i++)
{
tot=tot+fd[i].saldo;
}
return tot;
}

void init(ArrayRek *fd)
{
int i;
for(i=1;i(<)max;i++)
{
(*fd)[i].nomor=0;
strcpy((*fd)[i].nama," ");
(*fd)[i].saldo=0;
}
}

void BukaRekening(ArrayRek *fd, int k)
{
int i,j;
ArrayRek c;
for(i=1;i(<)k+1;i++)
{
do
{
printf("Nasabah Ke-%d\n",i);
for(j=1;j(<)max;j++)
{
c[j].nomor=(*fd)[j].nomor;
strcpy(c[j].nama,(*fd)[j].nama);
c[j].saldo=(*fd)[j].saldo;
}
printf("Nomor Rekening : ");scanf("%d",&(*fd)[i].nomor);
if(IsSame(c,(*fd)[i].nomor))
{
printf("Nama : ");scanf("%s",&(*fd)[i].nama);
printf("Saldo : ");scanf("%f",&(*fd)[i].saldo);
if((*fd)[i].saldo(<)500000)
{
printf("\nSaldo Harus Diatas 500000\n");
for(j=1;j(<)max;j++)
{
(*fd)[j].nomor=c[j].nomor;
strcpy((*fd)[j].nama,c[j].nama);
(*fd)[j].saldo=c[j].saldo;
}
}
}
else
printf("\nNomor Rekening Sudah dipakai\n");

}while((*fd)[i].saldo(<)500000||(IsSame(c,(*fd)[i].nomor)==0));
}
}

void TampilkanSemua(ArrayRek fd, int j)
{
int i;
for(i=1;i(<)j+1;i++)
{
printf("Nasabah ke-%d\n",i);
printf("Nomor Rekening : %d\n",fd[i].nomor);
printf("Nama : %s\n",fd[i].nama);
printf("Saldo : %f\n\n",fd[i].saldo);
}
}


void Penyetoran(ArrayRek *fd, int numb, float uang)
{
if(IsAda(*fd,numb)==0)
printf("Rekening Tidak Ditemukan");
else if(uang(<)10000)
printf("Jumlah minimal yang dapat disetor adalah 10000");
else
{
(*fd)[IsAda(*fd,numb)].saldo = (*fd)[IsAda(*fd,numb)].saldo + uang;
printf("Nomor rekening : %d\n",(*fd)[IsAda(*fd,numb)].nomor);
printf("Nama : %s\n",(*fd)[IsAda(*fd,numb)].nama);
printf("Saldo : %f\n",(*fd)[IsAda(*fd,numb)].saldo);
}
}

void Penarikan(ArrayRek *fd, int numb, float uang)
{
if(IsAda(*fd,numb)==0)
printf("Rekening Tidak Ditemukan");
else if((*fd)[IsAda(*fd,numb)].saldo - uang(<)10000)
printf("Uang tidak mencukupi (harus ada sisa 10000");
else
{
(*fd)[IsAda(*fd,numb)].saldo = (*fd)[IsAda(*fd,numb)].saldo - uang;
printf("Nomor rekening : %d\n",(*fd)[IsAda(*fd,numb)].nomor);
printf("Nama : %s\n",(*fd)[IsAda(*fd,numb)].nama);
printf("Saldo : %f\n",(*fd)[IsAda(*fd,numb)].saldo);
}
}

void Transfer(ArrayRek *fd, int asal, int tujuan, float uang)
{
if(IsAda(*fd,asal)==0||IsAda(*fd,tujuan)==0)
printf("Nomor rekening yang anda masukkan tidak valid");
else
{
(*fd)[IsAda(*fd,asal)].saldo = (*fd)[IsAda(*fd,asal)].saldo - uang;
(*fd)[IsAda(*fd,tujuan)].saldo = (*fd)[IsAda(*fd,tujuan)].saldo + uang;
printf("Transaksi Selesai");
}
}

void Ubah(ArrayRek *fd, int no)
{
if(IsAda(*fd,no)==0)
printf("Rekening Tidak Ditemukan");
else
{
printf("nomor rekening : %d\n",(*fd)[IsAda(*fd,no)].nomor);
printf("Saldo : %f\n",(*fd)[IsAda(*fd,no)].saldo);
printf("Nama : ");scanf("%s",(*fd)[IsAda(*fd,no)].nama);
}
}

void Tutup(ArrayRek *fd, int no)
{
if(IsAda(*fd,no)==0)
printf("Rekening Tidak Ditemukan");
else
{
(*fd)[IsAda(*fd,no)].saldo=0;
strcpy((*fd)[IsAda(*fd,no)].nama,"(REKENING DITUTUP)");
(*fd)[IsAda(*fd,no)].nomor=0;
}
}


//File main.c

#include "header.h"

void main()
{
ArrayRek rt;
int b,a,f,o,ah;
float wang;
init(&rt);
do
{
system("cls");
printf("MENU\n");
printf(" 1. Buka Rekening\n");
printf(" 2. Tampilkan Semua Daftar Nasabah\n");
printf(" 3. Mencari Data Nasabah Berdasarkan No Rekening\n");
printf(" 4. Nasabah dengan saldo terbesar\n");
printf(" 5. Saldo Total Seluruh Nasabah\n");
printf(" 6. Penyetoran Uang\n");
printf(" 7. Penarikan Uang\n");
printf(" 8. Transfer Uang\n");
printf(" 9. Ubah Data Nasabah\n");
printf("10. Tutup Rekening\n");
printf(" 0. Keluar\n");
printf("Masukkan pilihan anda : ");scanf("%d",&b);
system("cls");
switch(b)
{
case 1:
init(&rt);
printf("Banyaknya Rekening Yang Ingin Dibuka : ");
scanf("%d",&a);
BukaRekening(&rt,a);
getch();
break;
case 2:
TampilkanSemua(rt,a);
getch();
break;
case 3:
printf("Nomor Rekening : ");
scanf("%d",&f);
ah=CariBerdasarkanNomor(rt,f);
printf("Nomor Rekening : %d\n",rt[ah].nomor);
printf("Nama : %s\n",rt[ah].nama);
printf("Saldo : %f\n\n",rt[ah].saldo);
getch();
break;
case 4:
printf("Nasabah Dengan Saldo Terbesar : \n");
ah=SaldoTerbesar(rt);
printf("Nomor Rekening : %d\n",rt[ah].nomor);
printf("Nama : %s\n",rt[ah].nama);
printf("Saldo : %f\n\n",rt[ah].saldo);
getch();
break;
case 5:
printf("Saldo Total Seluruh Nasabah Adalah : %f",TotalSaldo(rt));
getch();
break;
case 6:
printf("Nomor rekening: ");
scanf("%d",&f);
printf("Jumlah uang yang ingin disetor: ");
scanf("%f",&wang);
Penyetoran(&rt,f,wang);
getch();
break;
case 7:
printf("Nomor rekening: ");
scanf("%d",&f);
printf("Jumlah uang yang ingin diambil: ");
scanf("%f",&wang);
Penarikan(&rt,f,wang);
getch();
break;
case 8:
printf("Nomor rekening asal: ");scanf("%d",&f);
printf("Nomor rekening asal: ");scanf("%d",&o);
printf("Jumlah uang yang ingin disetor: ");scanf("%f",&wang);
Transfer(&rt,f,o,wang);
getch();
break;
case 9:
printf("Nomor rekening: ");scanf("%d",&f);
Ubah(&rt,f);
getch();
break;
case 10:
printf("Nomor rekening: ");scanf("%d",&f);
Tutup(&rt,f);
getch();
break;
case 0:
printf("Terima Kasih Telah Menggunakan program ini");
break;
default:
printf("\nNomor yang anda masukkan salah\n");
getch();
break;
}
}while(b!=0);
getch();
}

No comments: