Pada kesempatan kali ini, saya diberi tugas membuat sebuah aplikasi dengan syarat berikut:
- aplikasi dibuat menggunakan linked list
- aplikasi dibuat menggunakan double linked list.
- aplikasi dibuat bisa input barang (nama dan qty), bs edit qty dan bisa menghapus item yang salah.
- ketika checkout anda akan ditampilkan hasil total dari perhitungan qty (seperti struk minimarket)
- harga yang tertera random, namun hasil penjumlahan benar (totalnya benar)
- setelah tahap mau bayar, di bawah tulisan total, tuliskan gratis, “kindness is free”
Nah langsung saja kita lihat kodingnya seperti apa!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- struct node{
- char barang[101];
- int quantity;
- int harga;
- struct node *next,*prev;
- } *head = NULL , *tail = NULL , *curr, *temp;
- void push (char *item, int x)
- {
- curr = (struct node*) malloc(sizeof(struct node));
- strcpy(curr->barang, item); //nama barangnya masuk ke barang[101]
- curr->quantity = x;
- curr->harga = (rand()%(30000-1000 + 1) + 1000); //(rand()%(rangepalingtinggi - rangepalingrendah + 1) + rangepalingrendah)
- curr->next = curr->prev = NULL;
- if(head == NULL)
- {
- head = tail = curr;
- }
- else if(strcmp(item,head->barang) < 0) //input A sedangkan C udah di dll, maka A masuk dluan
- { //Buba di Head, Abdi mau dimasukkin
- curr->next = head;
- head->prev = curr;
- head = curr;
- }
- else if(strcmp(item,tail->barang) > 0) //push dari blkg
- {
- tail->next = curr;
- curr->prev = tail;
- tail = curr;
- }
- else
- {
- temp = head;
- while(strcmp(item, temp->next->barang) < 0) //temp ke next lbh kecil qty nya
- {
- temp = temp->next;
- }
- curr->next = temp->next;
- temp->next->prev = curr;
- temp->next = curr;
- curr->prev = temp;
- }
- }
- void pop(const char *hapus)
- {
- if(head == NULL)
- {
- printf("There is no item to be removed...\n");
- }
- else if(head == tail)
- {
- free(head);
- head = tail = NULL;
- }
- else if(strcmp(head->barang,hapus) == 0)
- {
- curr = head;
- head = head->next;
- free(curr);
- head->prev = NULL;
- }
- else if(strcmp(tail->barang,hapus) == 0)
- {
- curr = tail;
- tail = tail->prev;
- free(curr);
- tail->next =NULL;
- }
- else
- {
- curr = head;
- while(curr != NULL && strcmp(curr->barang,hapus) != 0) // ke next kalo ga ketemu
- {
- curr = curr->next;
- }
- if(curr == NULL)
- {
- printf("There is no item with name ""%s"" entered!\n", hapus);
- }
- else
- {
- curr->next->prev = curr->prev;
- curr->prev->next = curr->next;
- free(curr);
- }
- }
- }
- void edit(const char *editbarang , int editqty)
- {
- struct node *temp = head;
- while(temp != NULL && strcmp(temp->barang,editbarang)!=0)
- {
- temp = temp->next;
- }
- if(temp != NULL)
- {
- temp->quantity = editqty;
- }
- else
- {
- printf("There is no item with name ""%s""to be edited!\n", editbarang);
- }
- }
- void print()
- {
- int i = 1;
- curr = head;
- printf("These are your item list: \n");
- while(curr != NULL)
- {
- printf("%d. %s %d\n",i ,curr->barang, curr->quantity);
- curr = curr->next;
- i++;
- }
- printf("\n");
- }
- void popsemua()
- {
- while(head != NULL) //looping sampai ketemu tail
- {
- temp = head;
- head = head->next;
- free(temp);
- }
- }
- int main()
- {
- int input = 0;
- int qty = 0;
- int count = 0;
- int total = 0;
- char nama[101];
- printf("Welcome to the Item Application!\n");
- do{
- printf("These are the menu lists: \n");
- printf("1. Add item\n");
- printf("2. Edit your item quantity\n");
- printf("3. Remove item\n");
- printf("4. Checkout item(s)\n");
- printf("5. Exit\n");
- printf("Choose menu: ");
- scanf("%d", &input); getchar();
- if (input==1)
- {
- do
- {
- printf("Enter item name [1-100]: ");
- scanf("%[^\n]", nama); getchar();
- }
- while (strlen(nama)<1 || strlen(nama)>100);
- do
- {
- printf("Enter Quantity of your item [1-10]: ");
- scanf("%d", &qty); getchar();
- } while (qty<1 || qty>10);
- push(nama,qty);
- printf("\n");
- }
- else if (input==2)
- {
- if(head == NULL)
- {
- printf("What are you going to edit if your list is empty???\n");
- }
- else
- {
- printf("Input item name to be edited: ");
- scanf("%[^\n]", &nama); getchar();
- printf("Input the quantity to be changed: ");
- scanf("%d", &qty); getchar();
- edit(nama,qty);
- printf("Item Successfully edited!\n");
- printf("\n");
- }
- }
- else if (input==3)
- {
- printf("Which item you want to remove?\n");
- scanf("%[^\n]", &nama); getchar();
- pop(nama);
- printf("Item successfully removed!\n");
- printf("\n");
- }
- else if (input==4)
- {
- total = 0;
- count = 1;
- print();
- printf("\n");
- curr = head;
- while(curr != NULL) //currnya ada isi
- {
- printf("| No | Name | Quantity | Price | Total |\n");
- printf(" %d. %s %d %d %d\n", count, curr->barang, curr->quantity, curr->harga, curr->quantity * curr->harga);
- total = total + (curr->quantity * curr->harga);
- curr = curr->next;
- count++;
- }
- printf("\n");
- printf("Subtotal: %d\n", total);
- printf("Since kindness is free, these are all free!");
- printf("\n");
- popsemua();
- }
- else if (input==5)
- {
- printf("You are exitting this item application!\n");
- printf("Goodbye, See you next time!\n");
- popsemua();
- break;
- }
- }while(input != 5);
- return 0;
- }
Nah diatas merupakan koding untuk membuat aplikasi ini. Terima kasih sudah mampir kesini!
Komentar
Posting Komentar