Dreams Market
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
struct data{
int hargabaru;
char nama[30];
int harga;
data *next,*prev;
}*head,*tail,*current;
void pushMid(int hargabaru,char nama[],int harga)
{
current=(data*)malloc(sizeof(struct data));
current->hargabaru=hargabaru;
strcpy(current->nama,nama);
current->harga = harga;
current->next=current->prev=NULL;
if(!head)
{
head=tail=current;
}
else
{
if(strcmp(head->nama,nama)>0)
{
current->next=head;
head->prev=current;
head=current;
}
else if(strcmp(tail->nama,nama)<0)
{
current->prev=tail;
tail->next=current;
tail=current;
}
else
{
data *temp=head;
while(strcmp(temp->nama,nama)<0)
{
temp=temp->next;
}
current->prev=temp->prev;
current->next=temp;
temp->prev->next=current;
temp->prev=current;
}
}
}
void view()
{
int i = 0;
int totalHarga = 0;
current=head;
printf("Struk Belanja\n");
printf("=============\n\n");
printf("============================================================================\n");
printf("| %-5s | %-20s | %10s | %10s | %10s |\n","No.","Nama Barang","Jumlah","Harga(Satuan)","Harga(Total)");
printf("============================================================================\n");
if(head==NULL)
{
printf("| No Data |\n");
printf("============================================================================\n");
}
else
{
while(current!=NULL)
{
printf("| %3d | %-20s | %10d | %10d | %10d |\n",i+1,current->nama,current->hargabaru,current->harga,(current->harga * current->hargabaru));
totalHarga += current->harga * current->hargabaru;
current=current->next;
i = i +1;
}
printf("============================================================================\n");
}
printf("| TOTAL YANG HARUS DIBAYAR | %10d |\n",totalHarga);
printf("============================================================================\n");
printf("\t\t\tKINDNESS IS FREE\n");
getchar();
}
void popMid(char nama[])
{
current=head;
if(head==tail)
{
head=tail=NULL;
free(current);
}
else{
if(strcmp(nama,head->nama)==0)
{
head=head->next;
head->prev=NULL;
free(current);
}
else if(strcmp(nama,tail->nama)==0)
{
current=tail;
tail=tail->prev;
tail->next=NULL;
free(current);
}
else
{
while(strcmp(current->nama,nama)!=0)
{
current=current->next;
}
current->prev->next=current->next;
current->next->prev=current->prev;
free(current);
}
}
}
int edit(char nama[],int check)
{
current = (data*)malloc(sizeof(struct data));
int flag;
current = head;
if(current == NULL)
{
printf("\nEmpty Data\n");
getchar();
}
else
{
while (current!=NULL)
{
if(strcmp(current->nama,nama)==0)
{
flag=0;
break;
}
else
{
flag=1;
}
current = current->next;
}
}
return flag;
}
void menu()
{
printf("\n\nDreammers Market\n\n");
printf("1.Add Item\n");
printf("2.Edit hargabaru\n");
printf("3.Delete & Update Item\n");
printf("4.CheckOut\n");
printf("5. Exit\n\n");
printf("Masukkan Pilihan Anda : ");
}
int main()
{
int pilihan;
int hargabaru;
int jumlah;
char nama[30];
char namaLama[30];
int batasBawah = 1000;
int batasAtas = 20000;
int harga;
do{
system("cls");
menu();
scanf("%d",&pilihan);fflush(stdin);
switch(pilihan)
{
case 1:
printf("\n");
do{
nama[0] = '\0';
printf("Masukkan Nama Produk: ");
scanf("%[^\n]",&nama);fflush(stdin);
}while(nama[0] == '\0' || strlen(nama) > 30);
do{
printf("Masukkan Jumlah Produk: ");
scanf("%d",&hargabaru);fflush(stdin);
}while(hargabaru < 1 );
srand(time(NULL));
harga = (rand() % (batasAtas - batasBawah + 1)) + batasBawah;
pushMid(hargabaru,nama,harga);
break;
case 2:
current = head;
if(current==NULL)
{
printf("\nEmpty Data\n");
getchar();
}
else
{
do{
printf("Masukkan Nama Produk yang ingin Anda Ganti Jumlahnya: ");
namaLama[0] = '\0';
scanf("%[^\n]",&namaLama); fflush(stdin);
}while(namaLama[0] == '\0' || strlen(namaLama) > 30);
int check = edit(namaLama,0);
if(check==0)
{
do{
printf("Masukkan Jumlah Produk: ");
scanf("%d",&hargabaru);fflush(stdin);
}while(hargabaru < 1 );
current->hargabaru = hargabaru;
}
else
{
printf("Produk yang ingin diganti Jumlahnya tidak ditemukan\n");
getchar();
}
}
break;
case 3:
current = head;
if(current==NULL)
{
printf("\nEmpty Data\n");
getchar();
}
else
{
do{
printf("Masukkan Nama Produk yang ingin Anda Hapus: ");
namaLama[0] = '\0';
scanf("%[^\n]",&namaLama); fflush(stdin);
}while(namaLama[0] == '\0' || strlen(namaLama) > 30);
int check = edit(namaLama,0);
if(check==0)
{
printf("Masukkan Jumlah Produk yang ingin ditambahkan [ 0 jika tidak ingin menambah]: ");
scanf("%d",&jumlah);fflush(stdin);
if(jumlah==0)
{
popMid(namaLama);
return main();
}
else
{
popMid(namaLama);
for(int k=0;k<jumlah;k++)
{
do{
printf("\n");
nama[0] = '\0';
printf("Masukkan Nama Produk: ");
scanf("%[^\n]",&nama);fflush(stdin);
}while(nama[0] == '\0' || strlen(nama) > 30);
do{
printf("Masukkan Jumlah Produk: ");
scanf("%d",&hargabaru);fflush(stdin);
}while(hargabaru < 1 );
srand(time(NULL));
harga = (rand() % (batasAtas - batasBawah + 1)) + batasBawah;
pushMid(hargabaru,nama,harga);
}
}
}
else
{
printf("Produk yang ingin diganti Jumlahnya tidak ditemukan\n");
getchar();
}
}
break;
case 4:
printf("\n");
view();
break;
break;
}
}while(pilihan !=5);
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
struct data{
int hargabaru;
char nama[30];
int harga;
data *next,*prev;
}*head,*tail,*current;
void pushMid(int hargabaru,char nama[],int harga)
{
current=(data*)malloc(sizeof(struct data));
current->hargabaru=hargabaru;
strcpy(current->nama,nama);
current->harga = harga;
current->next=current->prev=NULL;
if(!head)
{
head=tail=current;
}
else
{
if(strcmp(head->nama,nama)>0)
{
current->next=head;
head->prev=current;
head=current;
}
else if(strcmp(tail->nama,nama)<0)
{
current->prev=tail;
tail->next=current;
tail=current;
}
else
{
data *temp=head;
while(strcmp(temp->nama,nama)<0)
{
temp=temp->next;
}
current->prev=temp->prev;
current->next=temp;
temp->prev->next=current;
temp->prev=current;
}
}
}
void view()
{
int i = 0;
int totalHarga = 0;
current=head;
printf("Struk Belanja\n");
printf("=============\n\n");
printf("============================================================================\n");
printf("| %-5s | %-20s | %10s | %10s | %10s |\n","No.","Nama Barang","Jumlah","Harga(Satuan)","Harga(Total)");
printf("============================================================================\n");
if(head==NULL)
{
printf("| No Data |\n");
printf("============================================================================\n");
}
else
{
while(current!=NULL)
{
printf("| %3d | %-20s | %10d | %10d | %10d |\n",i+1,current->nama,current->hargabaru,current->harga,(current->harga * current->hargabaru));
totalHarga += current->harga * current->hargabaru;
current=current->next;
i = i +1;
}
printf("============================================================================\n");
}
printf("| TOTAL YANG HARUS DIBAYAR | %10d |\n",totalHarga);
printf("============================================================================\n");
printf("\t\t\tKINDNESS IS FREE\n");
getchar();
}
void popMid(char nama[])
{
current=head;
if(head==tail)
{
head=tail=NULL;
free(current);
}
else{
if(strcmp(nama,head->nama)==0)
{
head=head->next;
head->prev=NULL;
free(current);
}
else if(strcmp(nama,tail->nama)==0)
{
current=tail;
tail=tail->prev;
tail->next=NULL;
free(current);
}
else
{
while(strcmp(current->nama,nama)!=0)
{
current=current->next;
}
current->prev->next=current->next;
current->next->prev=current->prev;
free(current);
}
}
}
int edit(char nama[],int check)
{
current = (data*)malloc(sizeof(struct data));
int flag;
current = head;
if(current == NULL)
{
printf("\nEmpty Data\n");
getchar();
}
else
{
while (current!=NULL)
{
if(strcmp(current->nama,nama)==0)
{
flag=0;
break;
}
else
{
flag=1;
}
current = current->next;
}
}
return flag;
}
void menu()
{
printf("\n\nDreammers Market\n\n");
printf("1.Add Item\n");
printf("2.Edit hargabaru\n");
printf("3.Delete & Update Item\n");
printf("4.CheckOut\n");
printf("5. Exit\n\n");
printf("Masukkan Pilihan Anda : ");
}
int main()
{
int pilihan;
int hargabaru;
int jumlah;
char nama[30];
char namaLama[30];
int batasBawah = 1000;
int batasAtas = 20000;
int harga;
do{
system("cls");
menu();
scanf("%d",&pilihan);fflush(stdin);
switch(pilihan)
{
case 1:
printf("\n");
do{
nama[0] = '\0';
printf("Masukkan Nama Produk: ");
scanf("%[^\n]",&nama);fflush(stdin);
}while(nama[0] == '\0' || strlen(nama) > 30);
do{
printf("Masukkan Jumlah Produk: ");
scanf("%d",&hargabaru);fflush(stdin);
}while(hargabaru < 1 );
srand(time(NULL));
harga = (rand() % (batasAtas - batasBawah + 1)) + batasBawah;
pushMid(hargabaru,nama,harga);
break;
case 2:
current = head;
if(current==NULL)
{
printf("\nEmpty Data\n");
getchar();
}
else
{
do{
printf("Masukkan Nama Produk yang ingin Anda Ganti Jumlahnya: ");
namaLama[0] = '\0';
scanf("%[^\n]",&namaLama); fflush(stdin);
}while(namaLama[0] == '\0' || strlen(namaLama) > 30);
int check = edit(namaLama,0);
if(check==0)
{
do{
printf("Masukkan Jumlah Produk: ");
scanf("%d",&hargabaru);fflush(stdin);
}while(hargabaru < 1 );
current->hargabaru = hargabaru;
}
else
{
printf("Produk yang ingin diganti Jumlahnya tidak ditemukan\n");
getchar();
}
}
break;
case 3:
current = head;
if(current==NULL)
{
printf("\nEmpty Data\n");
getchar();
}
else
{
do{
printf("Masukkan Nama Produk yang ingin Anda Hapus: ");
namaLama[0] = '\0';
scanf("%[^\n]",&namaLama); fflush(stdin);
}while(namaLama[0] == '\0' || strlen(namaLama) > 30);
int check = edit(namaLama,0);
if(check==0)
{
printf("Masukkan Jumlah Produk yang ingin ditambahkan [ 0 jika tidak ingin menambah]: ");
scanf("%d",&jumlah);fflush(stdin);
if(jumlah==0)
{
popMid(namaLama);
return main();
}
else
{
popMid(namaLama);
for(int k=0;k<jumlah;k++)
{
do{
printf("\n");
nama[0] = '\0';
printf("Masukkan Nama Produk: ");
scanf("%[^\n]",&nama);fflush(stdin);
}while(nama[0] == '\0' || strlen(nama) > 30);
do{
printf("Masukkan Jumlah Produk: ");
scanf("%d",&hargabaru);fflush(stdin);
}while(hargabaru < 1 );
srand(time(NULL));
harga = (rand() % (batasAtas - batasBawah + 1)) + batasBawah;
pushMid(hargabaru,nama,harga);
}
}
}
else
{
printf("Produk yang ingin diganti Jumlahnya tidak ditemukan\n");
getchar();
}
}
break;
case 4:
printf("\n");
view();
break;
break;
}
}while(pilihan !=5);
}
Komentar
Posting Komentar