Skip to main content
Dreamers market source code

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

struct barang{
int kuantitas;
int harga;
char nama[255];
struct barang *next, *prev;
}*head,*tail,*curr;

void pushHead(int kuantitas,char nama[]){
curr = (struct barang*)malloc(sizeof(struct barang));
curr->kuantitas = kuantitas;
curr->harga = (rand()%1000)+1;
strcpy(curr->nama,nama);

if(head==NULL){
head = tail = curr;
}
else{
curr->next = head;
head->prev = curr;
head = curr;
}
head->prev = NULL;
tail->next = NULL;
}

void pushTail(int kuantitas,char nama[]){
curr = (struct barang*)malloc(sizeof(struct barang));
curr->kuantitas = kuantitas;
curr->harga = (rand()%1000)+1;
strcpy(curr->nama,nama);

if(head == NULL){
head = tail = curr;
}
else{
curr->prev = tail;
tail->next = curr;
tail = curr;
}
head->prev = NULL;
tail->next = NULL;
}

void pushMid(int kuantitas, char nama[]){
curr = (struct barang*)malloc(sizeof(struct barang));
curr->kuantitas = kuantitas;
curr->harga = (rand()%1000)+1;
strcpy(curr->nama,nama);

curr->next = NULL;
curr->prev = NULL;
if(head == NULL){
head = tail = curr;
}
else if(strcmp(curr->nama,head->nama) < 0){
pushHead(kuantitas,nama);
}
else if(strcmp(curr->nama, tail->nama) > 0){
pushTail(kuantitas,nama);
}
else{
struct barang *temp;
temp = head;
while(strcmp(temp->next->nama,curr->nama) < 0){
temp = temp->next;
}
curr->next = temp->next;
temp->next->prev = curr;
temp->next = curr;
curr->prev = temp;
}
}

void popHead(){
curr = head;
head = head->next;
free(curr);
if(head != NULL)
head->prev = NULL;
}

void popTail(){
curr = tail;
tail = tail->prev;
free(curr);
if(tail != NULL)
tail->next = NULL;
}

void popMid(char nama[]){
if(strcmp(head->nama,nama) == 0){
popHead();
}
else if(strcmp(tail->nama,nama) == 0){
popTail();
}
else{
struct barang *temp;
temp = head;
while(strcmp(temp->next->nama,nama) != 0 && temp!=NULL){
temp = temp->next;
}
if(temp != NULL){
curr = temp->next;
temp->next = curr->next;
curr->next->prev = temp;
free(curr);
}
else{
printf("Tidak ada barang yang dimaksud...\n");
}
}
}

void inputBarang(){
char nama[255];
int kuantitas;

printf("Masukan nama barang : ");
scanf("%[^\n]",nama);
getchar();
printf("Masukan kuantitas barang : ");
scanf("%d",&kuantitas);
getchar();
if(kuantitas<0 || kuantitas>1000){
printf("Barang tidak boleh kurang dari 0 atau lebih dari 1000\n\n");
inputBarang();
}
else{
pushMid(kuantitas, nama);
printf("\n");
printf("Barang anda berhasil dimasukkan...\n\n");
}
}

void editKuantitas(){
char namaSalah[255],namaBenar[255];
int kuantitas;

printf("Masukan nama barang yang ingin diedit : ");
scanf("%[^\n]",namaSalah);
getchar();
printf("Masukan nama barang yang benar : ");
scanf("%[^\n]",namaBenar);
getchar();
printf("Masukan kuantitas yang benar : ");
scanf("%d",&kuantitas);
getchar();
popMid(namaSalah);
pushMid(kuantitas,namaBenar);
printf("Barang berhasil diubah\nPress enter to continue...\n");
getchar();
}

void hapusBarang(){
char nama[255];
printf("Masukan nama barang yang ingin dihapus : ");
scanf("%[^\n]",nama);
getchar();
popMid(nama);
printf("Barang Berhasil dihapus...\n\n");
}

void lihatBarang(){
printf("==============================\n");
printf("Dreamers Market\n");
printf("==============================\n");
curr = head;
while(curr != NULL){
printf("%-15s | %-5d\n",curr->nama,curr->kuantitas);
curr = curr->next;
}
printf("\n\n\n");
}

void checkout(){
int kuantitas=0;
int harga=0;

printf("==============================\n");
printf("Dreamers Market\n");
printf("==============================\n");
curr = head;
while(curr != NULL){
kuantitas += curr->kuantitas;
harga += (curr->kuantitas*curr->harga);
printf("%-15s | %-5d | %-5d\n",curr->nama,curr->kuantitas,curr->harga);
curr = curr->next;
}
printf("\n\n\n");
printf("Total kuantitas barang : %d\n",kuantitas);
printf("Total harga barang : %d\n",harga);
printf("Kindness is free....\nTotal Harga Barang : 0\n");
printf("Press enter to quit\n\n");
getchar();

}

void menu(){
int input;

do{
printf("WELCOME TO DREAMERS MARKET\n");
printf("=============================\n");
printf("1. Input barang\n");
printf("2. Edit kuantitas\n");
printf("3. Hapus barang\n");
printf("4. Lihat barang\n");
printf("5. Checkout\n");
printf("Choose : ");
scanf("%d",&input);
getchar();
switch(input){
case 1: inputBarang();
break;
case 2:
if(head!= NULL){
editKuantitas();
}
else{
printf("Tidak ada barang yang dimaksud...\n");
}
break;
case 3:
if(head != NULL){
hapusBarang();
}
else{
printf("Tidak ada barang yang dimaksud...\n");
}
break;
case 4:
if(head != NULL){
lihatBarang();
}
else{
printf("Tidak ada barang yang dimaksud...\n");
}
break;
case 5: checkout();
break;
}
}while(input!=5);
}



int main(){
head = NULL;
tail = NULL;
srand(time(0));
menu();


return 0;
}

Nama : Viriyaputra Lawijaya
NIM : 2301866845

Comments