Data Structures in C/C++ (just like Classs & Object in Java)

sam

Hayoo… di basic struct siapa dulu yg dapet tugas diatas?? :v Kemaren-kemaren aku belajarnya C++ dulu, belajar struct juga, sigle link list, double link list, BST, tapi ga paham-paham. Terus belajar Java, mulai paham konsep OOP, class & object… ealah, baru paham ternyata struct di C++ itu mirip kayak bikin class di java, new object, array of class di c++ dibikin array of struct…wkwkwk… Harusnya sih kalau menurut alur materi aku paham c++ duluan, baru deh java, ehh ini c++ rada kurang paham malah paham c++nya dari nurunin konsep di java, rada kebalik kalo kata temen..haha.. :v :v Ok lanjut bahas yang serius dibawah..hehe..

1

Kembali ke pokok Materi, Struck itu seperti type data yang didalemnya bisa kita isi macem-macem variable sebagai attributnya, bisa juga diisi function (disebut method), pendekatannya kyk bikin class di Java. Jadi misal contoh diatas kita struct “Mahasiswa” terus kasih attribut mengenai mahasiswa, misal ada NIM, nama, semester, jurusan, nilai…. Lalu bisa lah kita bikin object dari struct itu. Lebih simple dan efisien bukan daripada bikin variable Tono, Budi, dan Andi itu sendiri-sendiri 🙂

Btw ada trik juga buat nge-singkat penulisan, jadi pas mau bikin objek kan nulisnya “struct Mahasiswa Banu”. Nah itu bisa disingkat jadi “Mahasiswa Banu” dengan menambahkan typedef didepan struct (pas bikin struct), mayan hemat ketik 6 huruf…haha. kyk gini nih :

typedef struct Mahasiswa {
 char NIM[11];
 char nama[50];
 int semester;
 char jurusan[5];
 float nilai;
}
Mahasiswa Banu;
 Banu.semester=3;

Next, Array of struct, nah misal object yang mau dibikin ada banyak, sampe ratusan atau ribuan misal, atau bakal kita isi banyak data yang didapet dari baca File, maksudnya misal ada File yang isinya infomasi mahasiswa kek gini :

NIM#NAMA#SEMESTER#NILAI
1801434877#Agus Sasmito H#1#TI#97.77
1801431234#Tatan Sutatan#1#TI#77.44
....... misal ada 100 record

Nah konyol kali kalau mau bikin objectnya satu-satu, mending pake array, terus baca file sambil masukkin ke struct pake for, jadi dah…haha… Atau kalau di data itu nanti mengandung sesuatu yang perlu di “match”kan, misal ada username dan password, pasti enaknya pake for ngebaca dari array kan yaa 🙂

Sample pake struct, array of struct, lalu mainkan for untuk validasi monggo cek dibawah ini. Skenarionya sederhana, menu di suatu kasir, ada opsi sell & add stock, produknya roti, jadi disini bikin struct roti, punya attribut code, harga, stok…., object produk roti disimpan di array supaya bisa main recursive|iterative buat validasi, ketika sell maka input kode roti, kalau input kode nggak ada yang match dengan yang ada di array maka ditolak, terus minta input lagi. Kalau sell maka stok produk dikurangi dengan quantity sell yang diinput, kalau add stok maka stok ditambah…

(download cpp nya disini) :

sample

#include <stdio.h>
#include <Windows.h>
#include <string>
//Object Struct
struct Cake
{
 char code[6];
 char name[21];
 int stock;
 int price;
};
//variables
int inMenu;
struct Cake Products[100];
int prodIndex;
char inCode[6];
int inQuantity;
bool isInCodeOk;
bool isInQuaOk;
bool isStockOk;
//functions
void Enter(int iEnter)
{
 for (int a=0; a<iEnter; a++)
 {
 printf("\n");
 }
}
void initCake()
{
 strcpy(Products[0].code,"CK001");
 strcpy(Products[0].name,"Blueberry Cake");
 Products[0].stock=10;
 Products[0].price=25000;
 strcpy(Products[1].code,"CK009");
 strcpy(Products[1].name,"Chocochip Cake");
 Products[1].stock=5;
 Products[1].price=20000;
 strcpy(Products[2].code,"CK017");
 strcpy(Products[2].name,"Mayoinase Cake");
 Products[2].stock=12;
 Products[2].price=30000;
 strcpy(Products[3].code,"CK023");
 strcpy(Products[3].name,"Strowberry ShortCake");
 Products[3].stock=7;
 Products[3].price=17500;
}
void showCake()
{
 printf("BLUE CAKE SHOP CASHIER\n");
 printf("======================\n\n");
 printf("No. | Cake Code | Cake Name | Available | Price\n");
 printf("--------------------------------------------------------------\n");
 for (int a=0; a<4; a++)
 {
 printf("0%d. | %5s | %-20s | %9d | Rp. %d \n", a+1, Products[a].code, Products[a].name, Products[a].stock, Products[a].price);
 }
 printf("--------------------------------------------------------------\n");
}
void Menu()
{
 printf("\nMenu :\n");
 printf("1. Sell\n");
 printf("2. Add stock\n");
 printf("3. Exit\n");
 printf("Input Choice : ");
 scanf("%d",&inMenu); fflush(stdin);
}
void Sell()
{
 isStockOk=true;
 do 
 {
 isInCodeOk=false;
 printf("\nInput Cake Code [5 Char] : ");
 scanf("%[^\n]", &inCode); fflush(stdin); 
 for(int a=0; a<4; a++)
 {
 if(strcmp(Products[a].code, inCode)==0)
 {
 isInCodeOk=true;
 prodIndex=a;
 if(Products[prodIndex].stock==0)
 {
 isStockOk=false;
 printf("\n\nStock Habis Bro!!");
 getchar();
 }
 }
 }
 if(isInCodeOk==false)
 {
 printf("\nThe Cake Code doesn't exist\n");
 }
 } while (isInCodeOk==false);
 if(isStockOk==true)
 {
 do
 {
 isInQuaOk=true;
 printf("Input Quantity [0..%d] : ", Products[prodIndex].stock);
 scanf("%d", &inQuantity); fflush(stdin);
 if(inQuantity<0 || inQuantity>Products[prodIndex].stock)
 {
 isInQuaOk=false;
 }
 } while (isInQuaOk==false);
 
 printf("\n\nTotal price is : Rp %d,- x %d = Rp %d,-\n\n", Products[prodIndex].price, inQuantity, (inQuantity*Products[prodIndex].price));
 Products[prodIndex].stock-=inQuantity;
 printf("\n--- Matur Nuwun ---");
 getchar();
 }
}
void Stock()
{
 do 
 {
 isInCodeOk=false;
 printf("\nInput Cake Code [5 Char] : ");
 scanf("%[^\n]", &inCode); fflush(stdin); 
 for(int a=0; a<4; a++)
 {
 if(strcmp(Products[a].code, inCode)==0)
 {
 isInCodeOk=true;
 prodIndex=a;
 }
 }
 if(isInCodeOk==false)
 {
 printf("\nThe Cake Code doesn't exist\n");
 }
 } while (isInCodeOk==false);
 do
 {
 isInQuaOk=true;
 printf("Input Quantity [0..10] : ", Products[prodIndex].stock);
 scanf("%d", &inQuantity); fflush(stdin);
 if(inQuantity<0 || inQuantity>10)
 {
 isInQuaOk=false;
 }
 } while (isInQuaOk==false);
 Products[prodIndex].stock+=inQuantity;
 printf("\n--- Adding Stock Success ---");
 getchar();
}
void main()
{
 initCake();
 do {
 Enter(25);
 showCake();
 Menu();
 switch(inMenu)
 {
 case 1:
 {
 Sell();
 break;
 }
 case 2:
 {
 Stock();
 break;
 }
 }
 } while (inMenu!=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