Test Logic – Input Validation [strcmp, strlen, strcpy…]

Hehe… materi bab validasi pengembangannya jadi aneh-aneh. Awalnya sih sederhana, misal sekedar input angka nilai harus 0-100, tidak boleh minus, tidak boleh lebih dari seratus. Lalu validasi input string, misal panjang karakter harus sekian, pake strlen, atau input hanya boleh kata ini, ini dan ini, bisa pake strcmp, atau harus diawali dengan kata ‘xxx’ misal, bisa mainin array of char. Berlanjut dah validasinya input hanya boleh sekian sampai sekian, kalau sisanya tinggal segini maka gini, kalau sisanya udah habis maka nggak bisa input lagi…bla bla bla… hitung-hitungan euy hitung-hitungan akhirnya :3

ahaha… misal casenya kali ini seperti ini nih :

IMG-20141113-WA0001

and booommm… mari kita masak 😀

penitipan kendaraan

 

#include <stdio.h>
#include <Windows.h>
#include <string.h>

int menuInput, order=0, sisaSlot=5, kendaraanTitip=0, jmlKendaraan[10], lamaPenitipan[10]; 
int lanjut; 
char jenisKendaraan[10][100];
/*
pakai array, index arraynya sebagai index penitipan. kasusnya misal disitu nanti ada beberapa order. sederhananya kyk nomer order gitu.
misal jenisKendaraan[0][100], nilai [0] adalah nomor ordernya, yang [100] buat nampung nilainya.
bagian paling susah di validasi euy, terutama di bagian sisa dan input jumlah kendaraan :3, rada ribet disini, semoga km paham logika dibawah..haha..
*/

void main ()
{
 do
 {
 menuInput=0;
 system("cls");
 printf("Menu Penitipan kendaraan\n\n");
 printf("1. Input data\n");
 printf("2. Lihat data\n");
 printf("3. Exit n Pay\n");
 printf(">> "); scanf("%d",&menuInput); fflush(stdin);
 
switch(menuInput)
 {
 case 1:
 system("cls");
 lanjut=1;
 if(sisaSlot<1) //ngecek dulu, apakah slot penitipan masih ada, kalo udah penuh maka langsung break-slot udah penuh.
 {
 printf("Slot penitipan sudah full");
 getchar();
 break;
 }
{
 printf("Masukkan data\n"); //ini biasa, masukkan jenis kendaraan.
 do 
 {
 printf("\n\nJenis Kendaraan : ");
 scanf("%[^\n]",jenisKendaraan[order]); fflush(stdin);
 } while (strcmp(jenisKendaraan[order],"bike")!=0&&strcmp(jenisKendaraan[order],"car")!=0&&strcmp(jenisKendaraan[order],"truck")!=0);
 //------------------------------------------------------
 do //nah ini nih, rada ribet...haha...
 {
 printf("...\nJumlah Kendaraan : "); scanf("%d",&jmlKendaraan[order]); fflush(stdin);
 if((sisaSlot-jmlKendaraan[order])<0) //jika sisa slot - jumlah kendaraan yang dia masukkan kurang dari 0 alias kurang, maka printf sisa slot penitipan tinggal... lalu break nggak lanjut ke step berikutnya
 {
 printf("Slot penitipan sudah full\n");
 printf("Sisa slot penitipan %d",sisaSlot);
 lanjut=0; //set variabel lanjut=0, ini supaya step berikutnya tidak dijalankan
 }
 } while ((jmlKendaraan[order]<1 || jmlKendaraan[order]>3)&&sisaSlot>0); //validasi biasa
 //---------------------------------------------------------------
 if (lanjut==1) //jika langkah sebelumnya diterima, maka step ini dijalankan, tandanya adalah variabel lanjut nilainya masih 1, kalo di step sebelumnya tidak diterima kan nilai variable lanjut=0, berarti tidak jalananin bagian ini
 {
 sisaSlot-=jmlKendaraan[order]; //eksekusi sisaSlot kurangi jumlah kendaraan yg mau dititipin
 do // masukkan lama penitipan, validasi seperti biasa
 {
 printf("...\nLama Penitipan : "); scanf("%d",&lamaPenitipan[order]); fflush(stdin);
 } while (lamaPenitipan[order]<1 || lamaPenitipan[order]>7);
printf("\n\nAnda akan menitipkan %s sebanyak %d buah selama %d hari",jenisKendaraan[order],jmlKendaraan[order],lamaPenitipan[order]);
 kendaraanTitip+=jmlKendaraan[order];
 order++;
 }
getchar();
 break;
 }
 
case 2:
 {
 system("cls");
 printf("List Order Penitipan Kendaraan\n");
 printf("==============================\n");
 for(int a=0; a<order; a++) //buat ngeprint sebanyak order yang ada/yg sudah diinput.
 {
 printf("%d. Menitipkan %-5s sebanyak %d buah, selama %d hari\n\n",a+1,jenisKendaraan[a],jmlKendaraan[a],lamaPenitipan[a]);
 }
 printf("....\nTotal kendaraan titip %d, sisa slot penitipan %d",kendaraanTitip,sisaSlot);
getchar();
 }
 } // case 3 "pay n exit buat sendiri
 
 } while (menuInput!=3);
}

Komen dimari gann....

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s