C programming tweak needed for a specific program. This is the complete program up and running. except for one modification that my teacher is requiring but it is confusing me. The program needs to allocate disjoint memory and use that. right now im allocating a continous block of memory on the heap but I need it to do disjoing memory instead. // Purpose: Program will allow a reseller to save their sales and calculate their profits. // Also able to view highest profitable items and remove any sales they no longer want in their sales inventory. #define _CRT_SECURE_NO_WARNINGS #include #include #include #define PAUSE system("pause") #define CLS system("cls"); //#define FLUSH fflush(stdin); //////////////// SRUCTS BELOW ////////////////////////// typedef struct { char itemName[40]; float purchasePrice; float soldPrice; float shippingPrice; float ebayFee; float payPalFee; float profit; }SALES; ////////// FUNCTION PROTOTYPE BELOW ///////////// void addSale(SALES *Inventory, int *InventoryCounter); void displayMenu(int *InventoryCounter); void displayProfit(int *InventoryCounter, SALES *Inventory);
void displaySales(int *InventoryCounter, SALES *Inventory); int getChoice(int *InventoryCounter); void searchSale(SALES* Inventory, int InventoryCounter); void sortProfits(SALES* Inventory, int InventoryCounter); void removeSale(SALES* Inventory, int *InventoryCounter); main() { int SIZE; int userChoice; int InventoryCounter = 0; //printf("********************* "); //printf("* Welcome Reseller! * "); //printf("********************* "); printf("Enter the size of todays inventory:"); scanf("%i", &SIZE); SALES *Inventory; Inventory = calloc(SIZE, sizeof(SALES));//Using dynamic memory to allocate space on the heap do { userChoice = getChoice(&InventoryCounter); switch (userChoice) { case 1:// Add a Sale if (InventoryCounter == SIZE) // statement checks so we dont exceed the size of the inventory user wants to enter. { printf("You Have Reached Max Inventory "); PAUSE; } else { addSale(&(Inventory[InventoryCounter]), &InventoryCounter); }
break; case 2: // Display all sales records displaySales(&InventoryCounter, Inventory); PAUSE; break; case 3: // Display all profits sortProfits(Inventory, InventoryCounter); displayProfit(&InventoryCounter, Inventory); PAUSE; break; case 4: // Display Inventory searchSale(Inventory, InventoryCounter); break; case 5:// remove a sale removeSale(Inventory, &InventoryCounter); break; case 6: // Quit break; default: printf("Please choose a valid option "); PAUSE; break; }// end of switch } while (userChoice != 6); free(Inventory); } // End of main //////////////////////////////////////////// FUNCTIONS BELOW ////////////////////////////////////////////////// void addSale(SALES *Inventory, int *InventoryCounter)// Function that adds sale and calculates the fees in the background. { float payPalFee = 0; // variable to store the paypal fee from 1 sale float ebayFee = 0; // variable to store ebay fee for 1 sale
/////////////// GETTING INVENTORY DETAILS //////////////// printf("Enter the Item name: "); scanf(" %[A-Z a-z]", Inventory->itemName); printf(" Enter the item's purchase price: "); scanf(" %f", &(Inventory->purchasePrice)); printf(" Enter the items Sold Price : "); scanf(" %f", &(Inventory->soldPrice)); printf(" Enter the item Shipping Price: "); scanf(" %f", &(Inventory->shippingPrice)); /////////////////////////////////////////////////////////// /////////////// Fees Calculated below //////////////// payPalFee = (Inventory->soldPrice) * (.03) + .30; // Calculating Paypals fee Which is 3% of sold price plus .30 cents ebayFee = (Inventory->soldPrice)* (.10); // Caluculating Ebays fee which is 10% of sold price Inventory->payPalFee = payPalFee; // Saving the paypal fee for this specific item in struct Inventory->ebayFee = ebayFee; // Saving the ebay fee for this specific item in struct // calculating the profit for this 1 secific item based on details provided (line below) // Inventory->profit = Inventory->soldPrice - Inventory->payPalFee - Inventory->ebayFee - Inventory->purchasePrice - Inventory->shippingPrice; (*InventoryCounter)++; // Incrementing Inventory counter ( amount of sales) } // End of addSale void searchSale(SALES* Inventory, int InventoryCounter) // function that searches for a sale by
name { char name[100]; // array to hold item searched name char found = 'N'; // Flag variable int i; // loop control variable ////// Ask User for item name ////// printf("What item are you searching for? "); scanf("%s", name); for (i = 0; i < InventoryCounter; i++) { if (strcmp(name, Inventory[i].itemName) == 0)// returns 0 if item was found, then we can display the item details. { printf(" |Name|t|Purchase Price|t|soldPrice|t|Profit| "); printf(" %.6s ttt$%.2f tt$%.2f tt$%.2f ", Inventory[i].itemName, Inventory[i].purchasePrice, Inventory[i].soldPrice, Inventory[i].profit); found = 'Y';//flag changed to illustrate item was found PAUSE; }// end if statment }// end for loop if (found == 'N') // if strcmp does not return 0 and flag stays 'N' then item will not be in inventory { printf("Item not found "); PAUSE; } }// end search Sales function void displayProfit(int *InventoryCounter, SALES *Inventory) // Function that displays the profit details of each item. { int i; // loop control variable CLS;
printf("|Name|t| Profit| "); for (i = 0; i < *InventoryCounter; i++)// loops through all the items and displays their name and profit detials. { printf("%st%.2f ", Inventory[i].itemName, Inventory[i].profit); } // End of for loop } // End of displayProfit void displayMenu(int *InventoryCounter) // Fucntion that displays the Main Menu { CLS; printf("******** Main Menu ********* "); printf("1. Add a sale. "); printf("2. Display all Inventory records. "); printf("3. Display all Inventory profits (high to low). "); printf("4. Search inventory for a specific item . "); printf("5. Remove a Sale from Inventory "); printf("6. Quit. "); printf("Current Sales: %i ", *InventoryCounter); printf("Enter your choice: "); } // End of displayMenu void displaySales(int *InventoryCounter, SALES *Inventory) // Fucntion that Displays all sales records { int i; // loop control variable CLS; printf(" |Name|tt|Purchase Price|t|soldPrice|tt|shippingPrice| "); for (i = 0; i < *InventoryCounter; i++) // loops through all the inventory and displays details { printf(" %.6s ttt$%.2f ttt$%.2f ttt $%.2f ", Inventory[i].itemName, Inventory[i].purchasePrice, Inventory[i].soldPrice, Inventory[i].shippingPrice); } // End of for loop } // End of displaySales
int getChoice(int *InventoryCounter)// Function that returns the user Choice from menu { int result; displayMenu(InventoryCounter); while (getchar() != ' ') {}; scanf(" %i", &result); return result; } // End of getChoice void sortProfits(SALES *Inventory, int InventoryCounter)// Function that sorts all the profits from highest to lowest { int i, j;// loop control variable SALES temp;// temp place holder. for (i = 0; i < (InventoryCounter - 1); i++) { for (j = 0; j < InventoryCounter - i - 1; j++) { if (Inventory[j].profit < Inventory[j + 1].profit) { temp = Inventory[j]; Inventory[j] = Inventory[j + 1]; Inventory[j + 1] = temp; } } }// end for loop through all inventory }// End Sort Profits function void removeSale(SALES* Inventory, int *InventoryCounter) { char name[100];// char array to hold item searched name int i, j; // loop control variable char found = 'N';// Flag variable printf("What item do you want to remove? ");
scanf("%s", name); for (i = 0; i < *InventoryCounter; i++) { if (strcmp(name, Inventory[i].itemName) == 0) //if strcmp returns 0 then item will be removed from inventory { for (j = i; j < *InventoryCounter - 1; j++) Inventory[j] = Inventory[j + 1]; (*InventoryCounter)--; printf(" Item Succesfully Removed "); found = 'Y'; PAUSE; }// end if statement }// end for loop if (found == 'N') // if strcmp does not return 0 and flag stays 'N' then item will not be in inventory { printf("Item not found "); PAUSE; }// end else statement }// end removeSale function Solution #define _CRT_SECURE_NO_WARNINGS #include #include #include #define PAUSE system("pause") #define CLS system("cls"); //#define FLUSH fflush(stdin); //////////////// SRUCTS BELOW //////////////////////////
typedef struct SALESINFO { char itemName[40]; float purchasePrice; float soldPrice; float shippingPrice; float ebayFee; float payPalFee; float profit; }SALES; ////////// FUNCTION PROTOTYPE BELOW ///////////// void addSale(SALES *Inventory, int *InventoryCounter); void displayMenu(int *InventoryCounter); void displayProfit(int *InventoryCounter, SALES *Inventory); void displaySales(int *InventoryCounter, SALES *Inventory); int getChoice(int *InventoryCounter); void searchSale(SALES* Inventory, int InventoryCounter); void sortProfits(SALES* Inventory, int InventoryCounter); void removeSale(SALES* Inventory, int *InventoryCounter); main() { int SIZE; int userChoice; int InventoryCounter = 0; //printf("********************* "); //printf("* Welcome Reseller! * "); //printf("********************* "); printf("Enter the size of todays inventory:"); scanf("%i", &SIZE); //SALES *Inventory; struct SALESINFO *Inventory; Inventory=(struct SALESINFO *) malloc (SIZE * sizeof(struct SALESINFO)); //Inventory = calloc(SIZE, sizeof(SALES));//Using dynamic memory to allocate space on the heap
do { userChoice = getChoice(&InventoryCounter); switch (userChoice) { case 1:// Add a Sale if (InventoryCounter == SIZE) // statement checks so we dont exceed the size of the inventory user wants to enter. { printf("You Have Reached Max Inventory "); PAUSE; } else { addSale(&(Inventory[InventoryCounter]), &InventoryCounter); } break; case 2: // Display all sales records displaySales(&InventoryCounter, Inventory); PAUSE; break; case 3: // Display all profits sortProfits(Inventory, InventoryCounter); displayProfit(&InventoryCounter, Inventory); PAUSE; break; case 4: // Display Inventory searchSale(Inventory, InventoryCounter); break; case 5:// remove a sale removeSale(Inventory, &InventoryCounter); break; case 6: // Quit break; default: printf("Please choose a valid option "); PAUSE; break; }// end of switch
} while (userChoice != 6); free(Inventory); } // End of main //////////////////////////////////////////// FUNCTIONS BELOW ////////////////////////////////////////////////// void addSale(SALES *Inventory, int *InventoryCounter)// Function that adds sale and calculates the fees in the background. { float payPalFee = 0; // variable to store the paypal fee from 1 sale float ebayFee = 0; // variable to store ebay fee for 1 sale /////////////// GETTING INVENTORY DETAILS //////////////// printf("Enter the Item name: "); scanf(" %[A-Z a-z]", Inventory->itemName); printf(" Enter the item's purchase price: "); scanf(" %f", &(Inventory->purchasePrice)); printf(" Enter the items Sold Price : "); scanf(" %f", &(Inventory->soldPrice)); printf(" Enter the item Shipping Price: "); scanf(" %f", &(Inventory->shippingPrice)); /////////////////////////////////////////////////////////// /////////////// Fees Calculated below //////////////// payPalFee = (Inventory->soldPrice) * (.03) + .30; // Calculating Paypals fee Which is 3% of sold price plus .30 cents ebayFee = (Inventory->soldPrice)* (.10); // Caluculating Ebays fee which is 10% of sold price Inventory->payPalFee = payPalFee; // Saving the paypal fee for this specific item in struct Inventory->ebayFee = ebayFee; // Saving the ebay fee for this specific item in struct // calculating the profit for this 1 secific item based on details provided (line below) // Inventory->profit = Inventory->soldPrice - Inventory->payPalFee - Inventory->ebayFee - Inventory->purchasePrice - Inventory->shippingPrice; (*InventoryCounter)++; // Incrementing Inventory counter ( amount of sales) } // End of addSale void searchSale(SALES* Inventory, int InventoryCounter) // function that searches for a sale by name { char name[100]; // array to hold item searched name
char found = 'N'; // Flag variable int i; // loop control variable ////// Ask User for item name ////// printf("What item are you searching for? "); scanf("%s", name); for (i = 0; i < InventoryCounter; i++) { if (strcmp(name, Inventory[i].itemName) == 0)// returns 0 if item was found, then we can display the item details. { printf(" |Name|t|Purchase Price|t|soldPrice|t|Profit| "); printf(" %.6s ttt$%.2f tt$%.2f tt$%.2f ", Inventory[i].itemName, Inventory[i].purchasePrice, Inventory[i].soldPrice, Inventory[i].profit); found = 'Y';//flag changed to illustrate item was found PAUSE; }// end if statment }// end for loop if (found == 'N') // if strcmp does not return 0 and flag stays 'N' then item will not be in inventory { printf("Item not found "); PAUSE; } }// end search Sales function void displayProfit(int *InventoryCounter, SALES *Inventory) // Function that displays the profit details of each item. { int i; // loop control variable CLS; printf("|Name|t| Profit| "); for (i = 0; i < *InventoryCounter; i++)// loops through all the items and displays their name and profit detials. { printf("%st%.2f ", Inventory[i].itemName, Inventory[i].profit); } // End of for loop
} // End of displayProfit void displayMenu(int *InventoryCounter) // Fucntion that displays the Main Menu { CLS; printf("******** Main Menu ********* "); printf("1. Add a sale. "); printf("2. Display all Inventory records. "); printf("3. Display all Inventory profits (high to low). "); printf("4. Search inventory for a specific item . "); printf("5. Remove a Sale from Inventory "); printf("6. Quit. "); printf("Current Sales: %i ", *InventoryCounter); printf("Enter your choice: "); } // End of displayMenu void displaySales(int *InventoryCounter, SALES *Inventory) // Fucntion that Displays all sales records { int i; // loop control variable CLS; printf(" |Name|tt|Purchase Price|t|soldPrice|tt|shippingPrice| "); for (i = 0; i < *InventoryCounter; i++) // loops through all the inventory and displays details { printf(" %.6s ttt$%.2f ttt$%.2f ttt $%.2f ", Inventory[i].itemName, Inventory[i].purchasePrice, Inventory[i].soldPrice, Inventory[i].shippingPrice); } // End of for loop } // End of displaySales int getChoice(int *InventoryCounter)// Function that returns the user Choice from menu { int result; displayMenu(InventoryCounter); while (getchar() != ' ') {}; scanf(" %i", &result); return result; } // End of getChoice void sortProfits(SALES *Inventory, int InventoryCounter)// Function that sorts all the profits from highest to lowest
{ int i, j;// loop control variable SALES temp;// temp place holder. for (i = 0; i < (InventoryCounter - 1); i++) { for (j = 0; j < InventoryCounter - i - 1; j++) { if (Inventory[j].profit < Inventory[j + 1].profit) { temp = Inventory[j]; Inventory[j] = Inventory[j + 1]; Inventory[j + 1] = temp; } } }// end for loop through all inventory }// End Sort Profits function void removeSale(SALES* Inventory, int *InventoryCounter) { char name[100];// char array to hold item searched name int i, j; // loop control variable char found = 'N';// Flag variable printf("What item do you want to remove? "); scanf("%s", name); for (i = 0; i < *InventoryCounter; i++) { if (strcmp(name, Inventory[i].itemName) == 0) //if strcmp returns 0 then item will be removed from inventory { for (j = i; j < *InventoryCounter - 1; j++) Inventory[j] = Inventory[j + 1]; (*InventoryCounter)--; printf(" Item Succesfully Removed "); found = 'Y'; PAUSE; }// end if statement
}// end for loop if (found == 'N') // if strcmp does not return 0 and flag stays 'N' then item will not be in inventory { printf("Item not found "); PAUSE; }// end else statement }// end removeSale function ------------------------- output sample:- ******** Main Menu ********* 1. Add a sale. 2. Display all Inventory records. 3. Display all Inventory profits (high to low). 4. Search inventory for a specific item . 5. Remove a Sale from Inventory 6. Quit. Current Sales: 0 Enter your choice: 1 Enter the Item name: XYZ Enter the item's purchase price: 4 Enter the items Sold Price : 6 Enter the item Shipping Price:2 ******** Main Menu ********* 1. Add a sale. 2. Display all Inventory records. 3. Display all Inventory profits (high to low). 4. Search inventory for a specific item . 5. Remove a Sale from Inventory 6. Quit. Current Sales: 1 Enter your choice: 2 |Name| |Purchase Price| |soldPrice| |shippingPrice| XYZ $4.00 $6.00 $2.00 --------------------------------------------------------------------------------------------- If you have any query, please feel free to ask.
Thanks a lot.

C programming tweak needed for a specific program.This is the comp.pdf

  • 1.
    C programming tweakneeded for a specific program. This is the complete program up and running. except for one modification that my teacher is requiring but it is confusing me. The program needs to allocate disjoint memory and use that. right now im allocating a continous block of memory on the heap but I need it to do disjoing memory instead. // Purpose: Program will allow a reseller to save their sales and calculate their profits. // Also able to view highest profitable items and remove any sales they no longer want in their sales inventory. #define _CRT_SECURE_NO_WARNINGS #include #include #include #define PAUSE system("pause") #define CLS system("cls"); //#define FLUSH fflush(stdin); //////////////// SRUCTS BELOW ////////////////////////// typedef struct { char itemName[40]; float purchasePrice; float soldPrice; float shippingPrice; float ebayFee; float payPalFee; float profit; }SALES; ////////// FUNCTION PROTOTYPE BELOW ///////////// void addSale(SALES *Inventory, int *InventoryCounter); void displayMenu(int *InventoryCounter); void displayProfit(int *InventoryCounter, SALES *Inventory);
  • 2.
    void displaySales(int *InventoryCounter,SALES *Inventory); int getChoice(int *InventoryCounter); void searchSale(SALES* Inventory, int InventoryCounter); void sortProfits(SALES* Inventory, int InventoryCounter); void removeSale(SALES* Inventory, int *InventoryCounter); main() { int SIZE; int userChoice; int InventoryCounter = 0; //printf("********************* "); //printf("* Welcome Reseller! * "); //printf("********************* "); printf("Enter the size of todays inventory:"); scanf("%i", &SIZE); SALES *Inventory; Inventory = calloc(SIZE, sizeof(SALES));//Using dynamic memory to allocate space on the heap do { userChoice = getChoice(&InventoryCounter); switch (userChoice) { case 1:// Add a Sale if (InventoryCounter == SIZE) // statement checks so we dont exceed the size of the inventory user wants to enter. { printf("You Have Reached Max Inventory "); PAUSE; } else { addSale(&(Inventory[InventoryCounter]), &InventoryCounter); }
  • 3.
    break; case 2: //Display all sales records displaySales(&InventoryCounter, Inventory); PAUSE; break; case 3: // Display all profits sortProfits(Inventory, InventoryCounter); displayProfit(&InventoryCounter, Inventory); PAUSE; break; case 4: // Display Inventory searchSale(Inventory, InventoryCounter); break; case 5:// remove a sale removeSale(Inventory, &InventoryCounter); break; case 6: // Quit break; default: printf("Please choose a valid option "); PAUSE; break; }// end of switch } while (userChoice != 6); free(Inventory); } // End of main //////////////////////////////////////////// FUNCTIONS BELOW ////////////////////////////////////////////////// void addSale(SALES *Inventory, int *InventoryCounter)// Function that adds sale and calculates the fees in the background. { float payPalFee = 0; // variable to store the paypal fee from 1 sale float ebayFee = 0; // variable to store ebay fee for 1 sale
  • 4.
    /////////////// GETTING INVENTORYDETAILS //////////////// printf("Enter the Item name: "); scanf(" %[A-Z a-z]", Inventory->itemName); printf(" Enter the item's purchase price: "); scanf(" %f", &(Inventory->purchasePrice)); printf(" Enter the items Sold Price : "); scanf(" %f", &(Inventory->soldPrice)); printf(" Enter the item Shipping Price: "); scanf(" %f", &(Inventory->shippingPrice)); /////////////////////////////////////////////////////////// /////////////// Fees Calculated below //////////////// payPalFee = (Inventory->soldPrice) * (.03) + .30; // Calculating Paypals fee Which is 3% of sold price plus .30 cents ebayFee = (Inventory->soldPrice)* (.10); // Caluculating Ebays fee which is 10% of sold price Inventory->payPalFee = payPalFee; // Saving the paypal fee for this specific item in struct Inventory->ebayFee = ebayFee; // Saving the ebay fee for this specific item in struct // calculating the profit for this 1 secific item based on details provided (line below) // Inventory->profit = Inventory->soldPrice - Inventory->payPalFee - Inventory->ebayFee - Inventory->purchasePrice - Inventory->shippingPrice; (*InventoryCounter)++; // Incrementing Inventory counter ( amount of sales) } // End of addSale void searchSale(SALES* Inventory, int InventoryCounter) // function that searches for a sale by
  • 5.
    name { char name[100]; //array to hold item searched name char found = 'N'; // Flag variable int i; // loop control variable ////// Ask User for item name ////// printf("What item are you searching for? "); scanf("%s", name); for (i = 0; i < InventoryCounter; i++) { if (strcmp(name, Inventory[i].itemName) == 0)// returns 0 if item was found, then we can display the item details. { printf(" |Name|t|Purchase Price|t|soldPrice|t|Profit| "); printf(" %.6s ttt$%.2f tt$%.2f tt$%.2f ", Inventory[i].itemName, Inventory[i].purchasePrice, Inventory[i].soldPrice, Inventory[i].profit); found = 'Y';//flag changed to illustrate item was found PAUSE; }// end if statment }// end for loop if (found == 'N') // if strcmp does not return 0 and flag stays 'N' then item will not be in inventory { printf("Item not found "); PAUSE; } }// end search Sales function void displayProfit(int *InventoryCounter, SALES *Inventory) // Function that displays the profit details of each item. { int i; // loop control variable CLS;
  • 6.
    printf("|Name|t| Profit| "); for(i = 0; i < *InventoryCounter; i++)// loops through all the items and displays their name and profit detials. { printf("%st%.2f ", Inventory[i].itemName, Inventory[i].profit); } // End of for loop } // End of displayProfit void displayMenu(int *InventoryCounter) // Fucntion that displays the Main Menu { CLS; printf("******** Main Menu ********* "); printf("1. Add a sale. "); printf("2. Display all Inventory records. "); printf("3. Display all Inventory profits (high to low). "); printf("4. Search inventory for a specific item . "); printf("5. Remove a Sale from Inventory "); printf("6. Quit. "); printf("Current Sales: %i ", *InventoryCounter); printf("Enter your choice: "); } // End of displayMenu void displaySales(int *InventoryCounter, SALES *Inventory) // Fucntion that Displays all sales records { int i; // loop control variable CLS; printf(" |Name|tt|Purchase Price|t|soldPrice|tt|shippingPrice| "); for (i = 0; i < *InventoryCounter; i++) // loops through all the inventory and displays details { printf(" %.6s ttt$%.2f ttt$%.2f ttt $%.2f ", Inventory[i].itemName, Inventory[i].purchasePrice, Inventory[i].soldPrice, Inventory[i].shippingPrice); } // End of for loop } // End of displaySales
  • 7.
    int getChoice(int *InventoryCounter)//Function that returns the user Choice from menu { int result; displayMenu(InventoryCounter); while (getchar() != ' ') {}; scanf(" %i", &result); return result; } // End of getChoice void sortProfits(SALES *Inventory, int InventoryCounter)// Function that sorts all the profits from highest to lowest { int i, j;// loop control variable SALES temp;// temp place holder. for (i = 0; i < (InventoryCounter - 1); i++) { for (j = 0; j < InventoryCounter - i - 1; j++) { if (Inventory[j].profit < Inventory[j + 1].profit) { temp = Inventory[j]; Inventory[j] = Inventory[j + 1]; Inventory[j + 1] = temp; } } }// end for loop through all inventory }// End Sort Profits function void removeSale(SALES* Inventory, int *InventoryCounter) { char name[100];// char array to hold item searched name int i, j; // loop control variable char found = 'N';// Flag variable printf("What item do you want to remove? ");
  • 8.
    scanf("%s", name); for (i= 0; i < *InventoryCounter; i++) { if (strcmp(name, Inventory[i].itemName) == 0) //if strcmp returns 0 then item will be removed from inventory { for (j = i; j < *InventoryCounter - 1; j++) Inventory[j] = Inventory[j + 1]; (*InventoryCounter)--; printf(" Item Succesfully Removed "); found = 'Y'; PAUSE; }// end if statement }// end for loop if (found == 'N') // if strcmp does not return 0 and flag stays 'N' then item will not be in inventory { printf("Item not found "); PAUSE; }// end else statement }// end removeSale function Solution #define _CRT_SECURE_NO_WARNINGS #include #include #include #define PAUSE system("pause") #define CLS system("cls"); //#define FLUSH fflush(stdin); //////////////// SRUCTS BELOW //////////////////////////
  • 9.
    typedef struct SALESINFO { charitemName[40]; float purchasePrice; float soldPrice; float shippingPrice; float ebayFee; float payPalFee; float profit; }SALES; ////////// FUNCTION PROTOTYPE BELOW ///////////// void addSale(SALES *Inventory, int *InventoryCounter); void displayMenu(int *InventoryCounter); void displayProfit(int *InventoryCounter, SALES *Inventory); void displaySales(int *InventoryCounter, SALES *Inventory); int getChoice(int *InventoryCounter); void searchSale(SALES* Inventory, int InventoryCounter); void sortProfits(SALES* Inventory, int InventoryCounter); void removeSale(SALES* Inventory, int *InventoryCounter); main() { int SIZE; int userChoice; int InventoryCounter = 0; //printf("********************* "); //printf("* Welcome Reseller! * "); //printf("********************* "); printf("Enter the size of todays inventory:"); scanf("%i", &SIZE); //SALES *Inventory; struct SALESINFO *Inventory; Inventory=(struct SALESINFO *) malloc (SIZE * sizeof(struct SALESINFO)); //Inventory = calloc(SIZE, sizeof(SALES));//Using dynamic memory to allocate space on the heap
  • 10.
    do { userChoice =getChoice(&InventoryCounter); switch (userChoice) { case 1:// Add a Sale if (InventoryCounter == SIZE) // statement checks so we dont exceed the size of the inventory user wants to enter. { printf("You Have Reached Max Inventory "); PAUSE; } else { addSale(&(Inventory[InventoryCounter]), &InventoryCounter); } break; case 2: // Display all sales records displaySales(&InventoryCounter, Inventory); PAUSE; break; case 3: // Display all profits sortProfits(Inventory, InventoryCounter); displayProfit(&InventoryCounter, Inventory); PAUSE; break; case 4: // Display Inventory searchSale(Inventory, InventoryCounter); break; case 5:// remove a sale removeSale(Inventory, &InventoryCounter); break; case 6: // Quit break; default: printf("Please choose a valid option "); PAUSE; break; }// end of switch
  • 11.
    } while (userChoice!= 6); free(Inventory); } // End of main //////////////////////////////////////////// FUNCTIONS BELOW ////////////////////////////////////////////////// void addSale(SALES *Inventory, int *InventoryCounter)// Function that adds sale and calculates the fees in the background. { float payPalFee = 0; // variable to store the paypal fee from 1 sale float ebayFee = 0; // variable to store ebay fee for 1 sale /////////////// GETTING INVENTORY DETAILS //////////////// printf("Enter the Item name: "); scanf(" %[A-Z a-z]", Inventory->itemName); printf(" Enter the item's purchase price: "); scanf(" %f", &(Inventory->purchasePrice)); printf(" Enter the items Sold Price : "); scanf(" %f", &(Inventory->soldPrice)); printf(" Enter the item Shipping Price: "); scanf(" %f", &(Inventory->shippingPrice)); /////////////////////////////////////////////////////////// /////////////// Fees Calculated below //////////////// payPalFee = (Inventory->soldPrice) * (.03) + .30; // Calculating Paypals fee Which is 3% of sold price plus .30 cents ebayFee = (Inventory->soldPrice)* (.10); // Caluculating Ebays fee which is 10% of sold price Inventory->payPalFee = payPalFee; // Saving the paypal fee for this specific item in struct Inventory->ebayFee = ebayFee; // Saving the ebay fee for this specific item in struct // calculating the profit for this 1 secific item based on details provided (line below) // Inventory->profit = Inventory->soldPrice - Inventory->payPalFee - Inventory->ebayFee - Inventory->purchasePrice - Inventory->shippingPrice; (*InventoryCounter)++; // Incrementing Inventory counter ( amount of sales) } // End of addSale void searchSale(SALES* Inventory, int InventoryCounter) // function that searches for a sale by name { char name[100]; // array to hold item searched name
  • 12.
    char found ='N'; // Flag variable int i; // loop control variable ////// Ask User for item name ////// printf("What item are you searching for? "); scanf("%s", name); for (i = 0; i < InventoryCounter; i++) { if (strcmp(name, Inventory[i].itemName) == 0)// returns 0 if item was found, then we can display the item details. { printf(" |Name|t|Purchase Price|t|soldPrice|t|Profit| "); printf(" %.6s ttt$%.2f tt$%.2f tt$%.2f ", Inventory[i].itemName, Inventory[i].purchasePrice, Inventory[i].soldPrice, Inventory[i].profit); found = 'Y';//flag changed to illustrate item was found PAUSE; }// end if statment }// end for loop if (found == 'N') // if strcmp does not return 0 and flag stays 'N' then item will not be in inventory { printf("Item not found "); PAUSE; } }// end search Sales function void displayProfit(int *InventoryCounter, SALES *Inventory) // Function that displays the profit details of each item. { int i; // loop control variable CLS; printf("|Name|t| Profit| "); for (i = 0; i < *InventoryCounter; i++)// loops through all the items and displays their name and profit detials. { printf("%st%.2f ", Inventory[i].itemName, Inventory[i].profit); } // End of for loop
  • 13.
    } // Endof displayProfit void displayMenu(int *InventoryCounter) // Fucntion that displays the Main Menu { CLS; printf("******** Main Menu ********* "); printf("1. Add a sale. "); printf("2. Display all Inventory records. "); printf("3. Display all Inventory profits (high to low). "); printf("4. Search inventory for a specific item . "); printf("5. Remove a Sale from Inventory "); printf("6. Quit. "); printf("Current Sales: %i ", *InventoryCounter); printf("Enter your choice: "); } // End of displayMenu void displaySales(int *InventoryCounter, SALES *Inventory) // Fucntion that Displays all sales records { int i; // loop control variable CLS; printf(" |Name|tt|Purchase Price|t|soldPrice|tt|shippingPrice| "); for (i = 0; i < *InventoryCounter; i++) // loops through all the inventory and displays details { printf(" %.6s ttt$%.2f ttt$%.2f ttt $%.2f ", Inventory[i].itemName, Inventory[i].purchasePrice, Inventory[i].soldPrice, Inventory[i].shippingPrice); } // End of for loop } // End of displaySales int getChoice(int *InventoryCounter)// Function that returns the user Choice from menu { int result; displayMenu(InventoryCounter); while (getchar() != ' ') {}; scanf(" %i", &result); return result; } // End of getChoice void sortProfits(SALES *Inventory, int InventoryCounter)// Function that sorts all the profits from highest to lowest
  • 14.
    { int i, j;//loop control variable SALES temp;// temp place holder. for (i = 0; i < (InventoryCounter - 1); i++) { for (j = 0; j < InventoryCounter - i - 1; j++) { if (Inventory[j].profit < Inventory[j + 1].profit) { temp = Inventory[j]; Inventory[j] = Inventory[j + 1]; Inventory[j + 1] = temp; } } }// end for loop through all inventory }// End Sort Profits function void removeSale(SALES* Inventory, int *InventoryCounter) { char name[100];// char array to hold item searched name int i, j; // loop control variable char found = 'N';// Flag variable printf("What item do you want to remove? "); scanf("%s", name); for (i = 0; i < *InventoryCounter; i++) { if (strcmp(name, Inventory[i].itemName) == 0) //if strcmp returns 0 then item will be removed from inventory { for (j = i; j < *InventoryCounter - 1; j++) Inventory[j] = Inventory[j + 1]; (*InventoryCounter)--; printf(" Item Succesfully Removed "); found = 'Y'; PAUSE; }// end if statement
  • 15.
    }// end forloop if (found == 'N') // if strcmp does not return 0 and flag stays 'N' then item will not be in inventory { printf("Item not found "); PAUSE; }// end else statement }// end removeSale function ------------------------- output sample:- ******** Main Menu ********* 1. Add a sale. 2. Display all Inventory records. 3. Display all Inventory profits (high to low). 4. Search inventory for a specific item . 5. Remove a Sale from Inventory 6. Quit. Current Sales: 0 Enter your choice: 1 Enter the Item name: XYZ Enter the item's purchase price: 4 Enter the items Sold Price : 6 Enter the item Shipping Price:2 ******** Main Menu ********* 1. Add a sale. 2. Display all Inventory records. 3. Display all Inventory profits (high to low). 4. Search inventory for a specific item . 5. Remove a Sale from Inventory 6. Quit. Current Sales: 1 Enter your choice: 2 |Name| |Purchase Price| |soldPrice| |shippingPrice| XYZ $4.00 $6.00 $2.00 --------------------------------------------------------------------------------------------- If you have any query, please feel free to ask.
  • 16.