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 ;
}
#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
Posting Komentar