Tugas DatStruc

Berikut adalah codingnya :


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

struct data{
char barang[50];
int qty;
int price;
struct data *prev, *next ;
}*head, *tail;

int totaldata = 0;

struct data *createnode(char barang[], int qty){
struct data *temp = (struct data*)malloc(sizeof(struct data));
strcpy(temp->barang,barang);
temp->qty = qty;
temp->price = (rand()%100)*1000;
temp->next = NULL;
temp->prev = NULL;
 return temp;
}

void push(char barang[], int qty){
struct data *curr = createnode(barang,qty);
if(head == NULL){
head = tail = curr;
}
else if(strcmp(curr->barang, head->barang) < 0){
curr->next = head;
head->prev = curr;
head = curr;
  }
else if(strcmp(curr->barang, tail->barang) > 0){
  tail->next = curr;
  curr->prev = tail;
  tail = curr;
  }
else{
struct data *temp = head;
while(strcmp(curr->barang,temp->barang) > 0){
temp = temp->next;
    }
curr->next = temp;
curr->prev = temp->prev;
temp->prev->next = curr;
temp->prev = curr;
  }
}

void pop(int n){
int count = 1;
struct data *temp = head;
if(n == 1){
  if(head == tail){
head = NULL;
free(temp);
}
else{
head = head->next;
head->prev = NULL;
free(temp);
}
}
else if(n == totaldata && totaldata != 1){
temp = tail;
tail = tail->prev;
tail->next = NULL;
free(temp);
}
else{
  while(count != n-1){
temp = temp->next;
count++ ;
  }
  struct data *curr = temp->next ;
  temp->next = curr->next ;
  temp->next->prev = temp ;
  free(curr) ;
  }
  totaldata-- ;
}

void edit(int id,int qty){
struct data *temp = head;
int count = 1;
while(count != id){
temp = temp->next;
count++;
}
temp->qty = qty;
temp->price = (rand()%100)*1000;
}

void print(){ //fungsi print
struct data *temp = head;
int count = 1;
puts("====================================================");
  puts("|                    Item List                     |");
  puts("====================================================");
  puts("| ID | Product Name                  | Qty | Price |");
  puts("====================================================");
while(temp != NULL){
printf("| %-3d| %-29s | %-3d | %-3d |\n",count, temp->barang,temp->qty,temp->price);
temp = temp->next;
count++;
  }
  puts("====================================================");
printf("\n");
}

void inputbarang(){
char barang[50];
int qty;
printf("Please Input Product Name : ");
scanf("%[^\n]", barang);
getchar();
printf("Please Input Product Qty : ");
scanf("%d", &qty);
getchar();
push(barang,qty);
  totaldata++;
  getchar() ;
}

void deletebarang(){
int id;
print();
printf("Please Input ID Product Number To Be Deleted: ");
  scanf("%d", &id);
  getchar();
  pop(id);
  printf("Item With ID %d Has Been Deleted\n", id);
getchar();
}

void editqty(){
int id, databaru;
print();
printf("Please Input Id Product Number To Change The Quantity : ");
scanf("%d", &id);
getchar();
printf("Please Input New Product Quantity : ");
scanf("%d", &databaru);
getchar();
edit(id,databaru);
getchar();
}

void printbill(){
system("cls") ;
 printf("Bill\n") ;
 printf("======\n") ;
 print() ;
 printf("Total : -\n") ;
 getchar() ;

 struct data *temp = head ;
 while(temp != NULL){
  struct data *curr = temp ;
  temp = temp->next ;
  free(curr) ;
 }

 exit(0) ;


}


int main(){
 srand(time(0)) ;

 int c ;
 do{
  printf("BARANG\n") ;
  print() ;
  printf("1. Buy Item\n") ;
  printf("2. Edit Item Qty\n") ;
  printf("3. Delete Item\n") ;
  printf("4. Print Bill\n") ;
  printf("5. Exit\n") ;
  printf("Choose >> ") ;
 
  scanf("%d", &c) ; getchar() ;
 
  switch(c){
   case 1 : inputbarang() ;
    break ;
   case 2 : editqty();
    break ;
   case 3 : deletebarang() ;
    break ;
   case 4 : printbill() ;
    break ;
  }
 }while(c != 5) ;

 return 0 ;
}

Komentar

Postingan populer dari blog ini

Review

Hashing and Binary Tree

Energi Matahari dan Energi Angin