Answer:
See explaination
Explanation:
#include <stdio.h>
#define MAX_SIZE 50
#define password "mypassword"
void addProduct(struct product arr[], struct product p);
void deleteProduct(struct product arr[], char[] productId)
void editProduct(struct product arr[], int incrementKey, char[] productId) //incrementKey is the how much quanity user wants to add of the existing product
void display(struct product arr[]);
void saleProduct(struct product arr[], char[] productId, int soldItems);
void displayHighestSaleProduct(struct product arr[]);
void displayProductWithZeroQuantity(struct product arr[]);
int totalItems = 0;
struct product
{
char id[10]; //product id
char name[50]; //name of product
int quantity; //number of items of product in the inventory
int numSold; //number of items sold
float price; //price of the product
float sales; //total sale
};
void saleProduct(struct product arr[], char[] productId, int soldItems)
{
int index = 0;
while(strcmp(arr[index].id, productId) != 0) //getting the index of product same as productId
index++;
arr[index].qunatity -= soldItems;
arr[index].sales += (soldItems*arr[index].price);
}
void displayProductWithZeroQuantity(struct product arr[])
{
int x = 0;
printf("Zero Quantity Product:");
for(int i=0;i<totalItems;i++)
if(arr[i].qunatity == 0)
{
printf("Id=>%s\tName=>%s\tQuantity=>%d\tNumSold=>%.2f\tPrice=>%d\tSales=>%.2f", &arr[i].id, &arr[i].name, &arr[i].quantity, &arr[i].numSold, &arr[i].price, &arr[i].sales);
x = 1;
}
if(x == 0)
printf("No product with zero quantity.");
}
void displayHighestSaleProduct(struct product arr[])
{
float max = 0.0f;
int index = 0;
for(int i=0;i<totalItems;i++)
if(arr[i].sales > max)
{
max = arr[i].sales;
index = i;
}
printf("Highest saling product:");
printf("Id=>%s\tName=>%s\tQuantity=>%d\tNumSold=>%.2f\tPrice=>%d\tSales=>%.2f", &arr[index].id, &arr[index].name, &arr[index].quantity, &arr[index].numSold, &arr[index].price, &arr[index].sales);
}
void display(struct product arr[])
{
for(int i=0;i<totalItems;i++)
{
printf("Id=>%s\tName=>%s\tQuantity=>%d\tNumSold=>%.2f\tPrice=>%d\tSales=>%.2f", &arr[i].id, &arr[i].name, &arr[i].quantity, &arr[i].numSold, &arr[i].price, &arr[i].sales);
printf("\n");
}
}
void editProduct(struct product arr[], int incrementKey, char productId[])
{
int index = 0;
while(strcmp(arr[index].id, productId) != 0) //getting the index of product same as productId
index++;
arr[index].quantity += incrementKey ;
}
void addProduct(struct product arr[], struct product p)
{
int index = 0;
while(index < totalItems)
index++;
arr[index] = p;
totalItems++;
}
void deleteProduct(struct product arr[], char[] productId)
{
int index = 0;
while(strcmp(arr[index].id, productId) != 0) //getting the index of product same as productId
index++;
for(int i = index;i<totalItems-1;i++)
arr[i] = arr[i+1] ;
totalItems--;
}
void processintChoice(int x, struct product arr)
{
switch(x)
{
case 1:
{
char id[10];
char name[50];
int quantity;
float price;
printf("\nenter the id of product:");
scanf("%s", &id);
printf("\nenter the name of product:");
scanf("%s", &name);
printf("\nenter the quantity of product:");
scanf("%d", &quantity);
printf("\nenter the price of product:");
scanf("%.2f", &price );
struct product p;
p.id = id;
p.name = name;
p.quantity = quantity;
p.price = price;
p.numSold = 0;
p.sales = 0.0f;
addProduct(arr, p);
}
case 2:
{
char str[10];
int num;
printf("enter the product id");
scanf("\n%s", &str);
printf("enter the number by which you want to increase product items.")
scanf("\n%d", &num);
editProduct(arr, num ,str);
}
case 3:
{
char p[10];
printf("enter the product id to delete product:");
scanf("\n%s", &p);
deleteProduct(arr, p);
}
case 4:
{
display(arr);
}
case 5:
{
char p[10];
int num;
printf("enter the product od to purchse:");
scanf("\n%s", &p);
printf("enter the number of items u want to purchse:");
scanf("\n%d", &num);
saleProduct(arr, p, num);
}
case 6:
{
displayHighestSaleProduct(arr);
}
case 7:
{
displayProductWithZeroQuantity(arr);
}
case 8:
{
exit(0);
}
}
}
int main()
{
struct product arr[MAX_SIZE];
char pass[10];
printf("please enter the password:")
scanf("\n%s", &pass);
if(strcmp(pass, password) == 0)
{
label:
printf("\nplease select the proper option from the below menu:");
printf("\n1.) Input new product record");
printf("\n2.) Edit a product");
printf("\n3.) delete a product");
printf("\n4.) display all existing products");
printf("\n5.) make a purchase");
printf("\n6.) display the product detail with highest sale");
printf("\n7.) display a product with zero quantity");
printf("\n8.) exit the program");
int choice;
printf("\nChoice - >");
scanf("%d", &choice);
if(choice < 1 && choice > 8 )
{
printf("Invalid Choice! please choose again");
goto label;
}
else
processChoice(choice, arr);
}
else return(0);
}