Studi Kasus
Bank ABC membutuhkan sebuah program yang dapat mengelola pembukaan rekening bagi nasabah baru. Syarat utama pembukaan rekening nasabah baru adalah kartu identitas yang berisi nama dan nomor identitas.
Bank ABC menyediakan 3 kategori nasabah yaitu pelajar, mahasiswa, karyawan. Khusus untuk kategori nasabah pelajar usia minimal adalah 17 tahun, dan pada kategori ini nasabah tidak mendapatkan potongan biaya administrasi perbulan.
Sedangkan untuk kedua kategori lainnya tidak berlaku batasan umur, tetapi setiap bulan nasabah dikenakan potongan administrasi sebesar Rp 10000 per bulan. Pada aplikasi pendataan nasabah baru,program akan meminta inputan berapa bulan nasabah menabung(n) dan nominal uang yang ditabung setiap bulannya. Terdapat syarat minimal saldo awal untuk masing – masing kategori.
Kategori pelajar saldo awal minimal 50000, untuk kategori mahasiswa minimal 100000, sedangkan kategori karyawan minimal 200000. Apabila saldo awal yang diinput tidak mencapai ketentuan minimal maka program akan meminta untuk memginputkan kembali saldo awal sesuai dengan ketentuan. Khusus kategori pelajar, akan mendapatkan bunga sebesar 5%,
Sedangkan kategori mahasiswa dan karyawan mendapat bunga sebesar 5% setiap bulannya dan akan mendapat tambahan bunga sebesar 3% di setiap kelipatan 3 bulan. Buatlah program yang dapat menyelesaikan kasus di atas dengan memperhatikan ketentuan di bawah ini.
Ketentuan
- Menggunakan tipe data char, string, int, float, dooble Boolean
- Inputan memanfaatkan cin, getline
- Menggunakan percabangan if, switch, nested
- Menggunakan perulangan for, do..while, while
- Menggunakan array, scruct, procedure dan fungsi
- Terdapat fungsi modulus (%)
- Terdapat fungsi aritmatika (+ - / *)
- Tampilan akhir harus mencakup nama, nomer identitas, total bunga setiap bulannya, total potongan setiap bulannya, total saldo setiap bulannya dan total saldo akhir.
- Program meminta inputan kembali apabila user salah memasukkan data
Source code
#include <iostream>
#include <stdlib.h>
#define Pelajar 50000
#define Mahasiswa 100000
#define Karyawan 200000
using namespace std;
struct dataVar{
char nik[20];
string nama;
int n,ur,plh;
float sldMin;
double total,total2,total_bunga2,potbul,totpot;
};
dataVar dtV;
struct dataUlg{
double iptbln [10],total_bunga[10],potBul[10];
};
dataUlg dtU;
void inputIdentitas (){
cout<<" Nama : ";getline(cin, (dtV.nama));
cout<<" NIK : ";cin>>dtV.nik;
cout<<"----------------------------------------"<<endl;
}
void JudulAkhir(){
cout<<"========================================"<<endl;
cout<<"| |"<<endl;
cout<<"| BOLAWEN BANK.tbk |"<<endl;
cout<<"| |"<<endl;
cout<<"========================================"<<endl;
cout<<"| Informasi Tabungan Nasabah : |"<<endl;
cout<<"========================================"<<endl;
}
void InputBulananPelajar(){
cout<<"| Berapa Bulan Ingin Menabung : ";cin>>dtV.n;
for(int i=1; i<=dtV.n; i++){
cout<<"| +Tabungan Bulan ke-"<<i<<" : Rp.";cin>>dtU.iptbln[i];
dtU.total_bunga[i]=dtU.iptbln[i]*0.05;
dtV.total+=dtU.total_bunga[i];
dtV.total2+=dtU.iptbln[i];
}
cout<<"----------------------------------------"<<endl;
system("cls");
JudulAkhir();
cout<<"| +Nama : "<<dtV.nama<<endl;
cout<<"| +NIK : "<<dtV.nik<<endl;
cout<<"| +Bunga bank"<<endl;
for(int i=1; i<=dtV.n; i++){
cout<<"| "<<i<<"."<<" Bunga Bulan ke-"<<i<<" : Rp."<<dtU.total_bunga[i]<<endl;
}
cout<<"| +Total saldo Bulanan"<<endl;
for(int i=1; i<=dtV.n; i++){
cout<<"| "<<i<<"."<<" Saldo Bulan ke-"<<i<<" : Rp."<<dtU.iptbln[i]<<endl;
}
}
void SaldoMinPelajar(){
while(dtV.sldMin <= Pelajar){
system("cls");
cout<<"----------------------------------------"<<endl;
cout<<" >>> Kategori Anda 'Pelajar' <<< "<<endl;
cout<<"----------------------------------------"<<endl;
cout<<"| --Saldo minimal Rp.50.000-- |"<<endl;
cout<<"----------------------------------------"<<endl;
cout<<"| Masukan Saldo Awal : Rp.";cin>>dtV.sldMin;
cout<<"----------------------------------------"<<endl;
}
}
double Saldoakhir(double a, double b, double c){
double total3;
total3=dtV.total+dtV.sldMin+dtV.total2;
return total3;
}
void umur(){
cout<<" Masukan umur (minimal 17 tahun) ? ";cin>>dtV.ur;cout<<endl;
if (dtV.ur>=17){
SaldoMinPelajar();
}else {
cout<<"========================================"<<endl;
cout<<"| Maaf Umur anda Tidak Memenuhi Syarat |"<<endl;
cout<<"========================================"<<endl;
system("pause");
exit (EXIT_FAILURE);
}
}
void InputBulananMahaDanKar(){
cout<<"| Berapa Bulan Ingin Menabung : ";cin>>dtV.n;
for(int i=1; i<=dtV.n; i++){
cout<<"| +Tabungan Bulan ke-"<<i<<" : Rp.";cin>>dtU.iptbln[i];
dtU.total_bunga[i]=dtU.iptbln[i]*0.05;
dtV.total+=dtU.total_bunga[i];
dtV.total2+=dtU.iptbln[i];
}
cout<<"----------------------------------------"<<endl;
system("cls");
JudulAkhir();
cout<<"| +Nama : "<<dtV.nama<<endl;
cout<<"| +NIK : "<<dtV.nik<<endl;
cout<<"| +Bunga bank"<<endl;
for(int i=1; i<=dtV.n; i++){
cout<<"| "<<i<<"."<<" Bunga Bulan ke-"<<i<<" : Rp."<<dtU.total_bunga[i]<<endl;
}
cout<<"| -Bonus Bunga bank Kel-3"<<endl;
for (int i=1; i<=dtV.n; i++){
if(i%3==0){
dtV.total_bunga2=dtU.iptbln[i]*0.03;
cout<<"| Bunga Bulan ke-"<<i<<" : Rp."<<dtV.total_bunga2<<endl;
dtV.totpot+=dtV.total_bunga2;
}
}
cout<<"| +Potongan Bank"<<endl;
int x=1;
while(x<=dtV.n){
int pot =10000;
cout<<"| "<<x<<". "<<"Bulan ke-"<<x<<" : Rp."<<pot<<endl;
dtV.potbul+=pot;
x++;
}
cout<<"| +Total saldo Bulanan"<<endl;
for(int i=1; i<=dtV.n; i++){
cout<<"| "<<i<<"."<<" Saldo Bulan ke-"<<i<<" : Rp."<<dtU.iptbln[i]<<endl;
}
}
void SaldoMinMahasiswa(){
while(dtV.sldMin <= Mahasiswa){
system("cls");
cout<<"----------------------------------------"<<endl;
cout<<" >>> Kategori Anda 'Mahasiswa' <<< "<<endl;
cout<<"----------------------------------------"<<endl;
cout<<"| --Saldo minimal Rp.100.000-- |"<<endl;
cout<<"----------------------------------------"<<endl;
cout<<"| Masukan Saldo Awal : Rp.";cin>>dtV.sldMin;
cout<<"----------------------------------------"<<endl;
}
}
double SaldoAkhirMahaDanKar(double a, double b, double c){
double total4;
total4=(dtV.total+dtV.sldMin+dtV.total2);
return total4;
}
double SaldoAkhirMahaDanKar2(double a, double b, double c){
double total4;
total4=(SaldoAkhirMahaDanKar(dtV.total,dtV.sldMin,dtV.total2)+dtV.totpot)-dtV.potbul;
return total4;
}
void SaldoMinKaryawan(){
while(dtV.sldMin <= Karyawan){
system("cls");
cout<<"----------------------------------------"<<endl;
cout<<" >>> Kategori Anda 'Karyawan' <<< "<<endl;
cout<<"----------------------------------------"<<endl;
cout<<"| --Saldo minimal Rp.200.000-- |"<<endl;
cout<<"----------------------------------------"<<endl;
cout<<"| Masukan Saldo Awal : Rp.";cin>>dtV.sldMin;
cout<<"----------------------------------------"<<endl;
}
}
void kategori()
{ int total5;
cout<<" Pilih Kategori Nasabah :"<<endl;
cout<<" 1. Pelajar "<<endl;
cout<<" 2. Mahasiswa"<<endl;
cout<<" 3. Karyawan "<<endl;
cout<<"----------------------------------------"<<endl;
cout<<" Pilihan anda <1,2,3> ? ";cin>>dtV.plh;cout<<endl;
switch (dtV.plh)
{
case 1:
{cout<<"----------------------------------------"<<endl;
cout<<" >>> Kategori Anda 'Pelajar' <<< "<<endl;
cout<<"----------------------------------------"<<endl;
umur();
SaldoMinPelajar();
InputBulananPelajar();
total5=Saldoakhir(dtV.total,dtV.sldMin,dtV.total2);
cout<<"----------------------------------------"<<endl;
cout<<"| Saldo Akhir : Rp."<<total5<<endl;
cout<<"----------------------------------------"<<endl;
}break;
case 2:{
SaldoMinMahasiswa();
InputBulananMahaDanKar();
total5=SaldoAkhirMahaDanKar2(SaldoAkhirMahaDanKar(dtV.total,dtV.sldMin,dtV.total2),dtV.totpot, dtV.potbul);
cout<<"----------------------------------------"<<endl;
cout<<"| Saldo Akhir : Rp."<<total5<<endl;
cout<<"----------------------------------------"<<endl;
}break;
case 3 :{
SaldoMinKaryawan();
InputBulananMahaDanKar();
total5=SaldoAkhirMahaDanKar2(SaldoAkhirMahaDanKar(dtV.total,dtV.sldMin,dtV.total2),dtV.totpot, dtV.potbul);
cout<<"----------------------------------------"<<endl;
cout<<"| Saldo Akhir : Rp."<<total5<<endl;
cout<<"----------------------------------------"<<endl;
}break;
default :
cout<<"========================================"<<endl;
cout<<"| Nilai Diluar jangkauan |"<<endl;
cout<<"========================================"<<endl;
}
}
main(){
string rb;
do{
system("cls");
cout<<"========================================"<<endl;
cout<<"| |"<<endl;
cout<<"| SELAMAT DATANG DI |"<<endl;
cout<<"| BOLAWEN BANK |"<<endl;
cout<<"| |"<<endl;
cout<<"========================================"<<endl;
cout<<"| >> Pendaftaran Rekening Baru |"<<endl;
cout<<"========================================"<<endl;
inputIdentitas();
kategori();
cout<<"Ingin Membuka Rekening baru Lagi ? <y/t>";cin>>rb;cout<<endl;
}while(rb=="y");
cout<<"========================================"<<endl;
cout<<"| Terima Kasih |"<<endl;
cout<<"========================================"<<endl;
system("pause");
}
Running program
Kondisi 1, kategori pelajar
Kondisi 2, kategori mahasiswa
Kondisi 3, kategori karyawan
Penjelasan Algoritma
- Mulai
- Meng-input identitas
- Nama
- NIK
- Menampilkan pilihan kategori
- 1. Pelajar
- 2. Mahasiswa
- 3. Karyawan
- Jika anda memilih “1”
- Akan tampil kategori yang anda pilih “Pelajar”
- Kemudian meminta input Umur
- Jika umur >=17 maka, Anda meminta input saldo awal yang min Rp50000, jika anda menginput dibawah Rp.50.000, maka program akan terus melakukan perulangan sampai Saldo awal diatas terpenuhi.
- Meng-input nilai berapa bulan ingin menabung.
- Terakhir akan menampilkan
- Nama
- Nik
- Bunga Bank perbulan
- Saldo Bank perbulan
- Saldo Akhir
- Jika umur <=17 maka, akan tampil peringatan “Maaf Umur anda Tidak Memenuhi Syarat”, kemudian setelah tekan enter program akan terhenti.
- Setelah kondisi 1 terpenuhi akan , akan timbul pertanyaan “Ingin Membuka Rekening Baru lagi ? <y/t>
- Jika y, maka program akan mengulan ke awal
- Jika t, maka program akan selesai.
- Jika anda memilih “2”
- Akan tampil kategori yang anda pilih “Mahasiswa”
- Meng-input nilai berapa bulan ingin menabung.
- Terakhir akan menampilkan
- Nama
- Nik
- Bunga Bank perbulan
- Bonus Bunga Bank per 3bulan
- Saldo Bank perbulan
- Saldo Akhir
- Setelah kondisi 2 terpenuhi akan , akan timbul pertanyaan “Ingin Membuka Rekening Baru lagi ? <y/t>
- Jika y, maka program akan mengulan ke awal
- Jika t, maka program akan selesai.
- Jika anda memilih “3”
- Prosesnya sama seperti nomer 2.
- End