Program Alih Jenjang D3 ke D4 TMD Batch 6 2012-2013
Laporan Praktikum TMD04 Pemrograman Bahasa C++ Nama
: Sukeipah Yuli Prihatin
email
:
[email protected]
Laporan
: Script Perbaikan Progam Kasir
Program Kasir dengan Validasi Inputan Source Code: /* Nama : Sukeipah Yuli Prihatin NIM : 4912068 Modul : Program Kasir Validasi Inputan (Jawaban Ujian Bahasa C++) */ #include
#include <string.h> #include using namespace std; char nama_edit[15]; int harga_edit, jumlah_edit, kode_edit; struct barang{ char nama_barang[15]; int harga_barang, jumlah_barang; }; barang listBarang[5]; int cekRuang(){ int kode_barang=0; bool bendera = false; for(int i=0; i<5; i++){ if(listBarang[i].harga_barang==0 && listBarang[i].jumlah_barang==0){ kode_barang = i; bendera = true; break; } } if(bendera==true){ return kode_barang; }else{ return 5; } } void isiPembelian(){ int nomor = cekRuang(); if(nomor>=0 && nomor<5){ cout<<"Masukkan Nama Barang :"; cin>>listBarang[nomor].nama_barang; bool error=0;
1/ 5
Program Alih Jenjang D3 ke D4 TMD Batch 6 2012-2013
while(error==0){ cout<<"Masukkan Harga Barang :"; cin>>listBarang[nomor].harga_barang; if (cin.fail()){ cout << "Harap untuk memasukkan dengan angka!" << endl; cin.clear(); cin.ignore(80, '\n'); }else{ error = 1; } } error=0; while(error==0){ cout<<"Masukkan Jumlah Barang :"; cin>>listBarang[nomor].jumlah_barang; if (cin.fail()){ cout << "Harap untuk memasukkan dengan angka!" << endl; cin.clear(); cin.ignore(80, '\n'); }else{ error = 1; } } }else{ cout<<"Sudah Penuh"<<endl; } } void cetakStruk(){ int total=0; cout<<"No.\tKode\tNama\tHarga\tJumlah\tSubTotal"<<endl; for(int i=0;i<5;i++){ cout<<(i+1) <<"\t"<>kode; if (cin.fail()){ cout << "Harap untuk memasukkan dengan angka!" << endl; cin.clear(); cin.ignore(80, '\n'); }else{ if(kode>=0 && kode<5){ cout<<"Barang yang dicari:"; cout<<"Nama : "<<listBarang[kode].nama_barang<<endl <<"Harga : "<<listBarang[kode].harga_barang<<endl <<"Jumlah : "<<listBarang[kode].jumlah_barang<<endl; kode_edit = kode; strcpy(nama_edit,listBarang[kode].nama_barang);
2/ 5
Program Alih Jenjang D3 ke D4 TMD Batch 6 2012-2013
harga_edit = listBarang[kode].harga_barang; jumlah_edit = listBarang[kode].jumlah_barang; bendera = true; }else{ cout<<"Kode Invalid"<<endl; } } } //return bendera; } void editPembelian(){ cariPembelian(); //if(benderas==true){ bool bendera = false; int edit; while(bendera==false){ cout<<"Editing? (1) Nama (2) Harga (3) Jumlah (4) Simpan (0) Batal"; cin>>edit; if (cin.fail()){ cout << "Harap untuk memasukkan dengan angka!" << endl; cin.clear(); cin.ignore(80, '\n'); // discard rest of line with limit 80 }else{ bool b_harga=false,b_jumlah=false; switch(edit){ case 0: cout<<"Batal Edit"<<endl; bendera = true; break; case 1: cout<<"Masukkan Nama Baru :"; cin>>nama_edit; break; case 2: while(b_harga==false){ cout<<"Masukkan Harga Baru :"; cin>>harga_edit; if (cin.fail()){ cout << "Harap untuk memasukkan dengan angka!" << endl; cin.clear(); cin.ignore(80, '\n'); }else{ b_harga = true; } } break; case 3: while(b_jumlah==false){ cout<<"Masukkan Jumlah Baru :"; cin>>jumlah_edit; if (cin.fail()){ cout << "Harap untuk memasukkan dengan angka!" << endl; cin.clear(); cin.ignore(80, '\n'); }else{ b_jumlah = true; } } break; case 4: strcpy(listBarang[kode_edit].nama_barang, nama_edit); listBarang[kode_edit].harga_barang = harga_edit;
3/ 5
Program Alih Jenjang D3 ke D4 TMD Batch 6 2012-2013
listBarang[kode_edit].jumlah_barang = jumlah_edit; cout<<"Editing Berhasil"<<endl; bendera=true; break; default: cout<<"Pilihan Invalid"<<endl; break; } } } } void hapusPembelian(){ cariPembelian(); bool bendera=false; int pilih; while(bendera==false){ cout<<"Anda Yakin Dihapus? (1) Ya; (2) Tidak; ?"; cin>>pilih; if (cin.fail()){ cout << "Harap untuk memasukkan dengan angka!" << endl; cin.clear(); cin.ignore(80, '\n'); // discard rest of line with limit 80 }else{ switch(pilih){ case 0: cout<<"Hapus Batal"<<endl; bendera=true; break; case 1: strcpy(listBarang[kode_edit].nama_barang,""); listBarang[kode_edit].harga_barang = 0; listBarang[kode_edit].jumlah_barang = 0; bendera = true; cout<<"Hapus Berhasil"<<endl; break; default: cout<<"Pilihan Invalid"<<endl; break; } } } } int main(){ bool bendera = false; int pilih; enum angka{}; while(bendera==false){ cout<<"==PROGRAM KASIR=="<<endl <<"1. Isi Pembelian"<<endl <<"2. Edit Pembelian"<<endl <<"3. Hapus Pembelian"<<endl <<"4. Cetak Struk"<<endl <<"0. Keluar"<<endl; cout<<"Pilih Menu?"; cin>>pilih; cin.ignore(numeric_limits::max(), '\n'); if (cin.fail()){ cout << "Harap untuk memasukkan dengan angka!" << endl; cin.clear(); cin.ignore(80, '\n'); }else{
4/ 5
Program Alih Jenjang D3 ke D4 TMD Batch 6 2012-2013
switch(pilih){ case 0: cout<<"Terimakasih :)"<<endl; bendera = true; break; case 1: //isi Pembelian isiPembelian(); break; case 2: //edit Pembelian editPembelian(); break; case 3: //hapus Pembelian hapusPembelian(); break; case 4: //cetak Struk cetakStruk(); break; default: cout<<"Pilihan Invalid"<<endl; break; } } } system("pause"); return 0; }
Deskripsi singkat: Validasi pada program diatas menggunakan salah satu fungsi pada library limits.h. Pernyataan cin.ignore(numeric_limits::max(), '\n');merupakan pernyataan untuk pembatasan nilai numeric pada saat input data. Kondisi if (cin.fail()){ merupakan kondisi yang menyatakan apabila inputan gagal, maka akan mengeksekusi perintah cout << "Harap untuk memasukkan dengan angka!" << endl; sebagai pesan error inputan, sedangkan perintah cin.clear(); sebagai perintah untuk menghapus isi buffer dan selanjutnya perintah cin.ignore(80, '\n'); sebagai perintah diatas 80 karakter maka akan di buang hingga menemukan baris baru karakter.
5/ 5