Advertisement
Guest User

dimithri ass

a guest
May 21st, 2018
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 9.58 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <stdbool.h>
  5.  
  6. /*
  7. defining compile time constants to set global arrays with a constant size
  8. for const keyword variables are run time constants which are set after compilation
  9. */
  10. #define RECORDS 100
  11. #define STR_LIM 100
  12. /*
  13. tableRow header printing constants
  14. */
  15. #define STOCKS  0
  16. #define SALES 1
  17. #define PURCHASES 2
  18.  
  19. //global arrays for item code
  20. int itemCodes[RECORDS];
  21. char itemNames[RECORDS][STR_LIM];
  22. float unitPrices[RECORDS];
  23. float discLevels[RECORDS];
  24. float discRates[RECORDS]; //entered as 15,10,7.5 and not in the form of 0.15,0.10,0.075
  25. int currStocks[RECORDS];
  26.  
  27. //the most recent item code,purchase code and sales code
  28. int recentItemCode = 0;
  29. int recentPurchaseCode = 0;
  30. int recentSalesCode = 0;
  31.  
  32. int purchaseCodes[RECORDS];
  33. int purchaseItemCodes[RECORDS];
  34. int purchaseAmounts[RECORDS];
  35. float purchaseNettotals[RECORDS]; // use the net total array for the sub total as well
  36.  
  37. int salesCodes[RECORDS];
  38. int salesItemCodes[RECORDS];
  39. int salesAmounts[RECORDS];
  40. float salesSubtotals[RECORDS];
  41. float salesNettotals[RECORDS];
  42.  
  43. void genTestData();
  44. void funcAddPurchase();
  45. void addSalesFunc();
  46. void tableHeaderRowPrint(int section);
  47. void funcCurStockDet();
  48. void funcViewSales();
  49. void viewPurchasesFunc();
  50. void funcDetailsEntry();
  51. void clearWindow();
  52.  
  53. int main(){
  54.     genTestData();
  55.     bool exitNumberPressed = false;
  56.     char choice = ' ';
  57.  
  58.     while(!exitNumberPressed){
  59.         clearWindow();
  60.         int selectnum = 0;
  61.         printf("Welcome...!!! \n");
  62.         printf("\tWhat do you want to do here?  \n");
  63.         printf("\tAdd Stock Details          - 1\n");
  64.         printf("\tAdd Purchases              - 2\n");
  65.         printf("\tAdd Sales                  - 3\n");
  66.         printf("\tView Purchases             - 4\n");
  67.         printf("\tView Sales                 - 5\n");
  68.         printf("\tView Current Stock details - 6\n");
  69.         printf("\tClose Application          - 7\n");
  70.         printf("\nPlease Enter the Number Here :");
  71.         scanf("%d",&selectnum);
  72.         clearWindow();
  73.         switch (selectnum){
  74.         case 1:
  75.             funcDetailsEntry();
  76.             break;
  77.         case 2:
  78.             funcAddPurchase();
  79.             break;
  80.         case 3:
  81.             addSalesFunc();
  82.             break;
  83.         case 5:
  84.             funcViewSales();
  85.             break;
  86.         case 4:
  87.             viewPurchasesFunc();
  88.             break;
  89.         case 6:
  90.             funcCurStockDet();
  91.             break;
  92.         case 7:
  93.             printf("Exiting Software\n");
  94.             exit(0);
  95.             break;
  96.         default:
  97.             printf("\n Invalid choice \n");
  98.             return 0;
  99.             break;
  100.         }
  101.         printf("\nWould you like to continue operations(y/n): ");
  102.         scanf(" %c",&choice);
  103.         exitNumberPressed = choice == 'y' || choice == 'Y' ? false : true;
  104.     }
  105. }
  106. void genTestData(){
  107.  
  108.     char gItemNames[3][STR_LIM] = {"Apples","Papol","Oranges"};
  109.     float gUnitPrices[3] = {10,20,30};
  110.     float gDiscLevels[3] = {10,20,30};
  111.     float gDiscRates[3] = {10,20,30};
  112.     int gCurrStocks[3] = {10,20,30};
  113.     for(int i = 0;i<3;i++){
  114.         itemCodes[i] = i+1;
  115.         strcpy(itemNames[i],gItemNames[i]);
  116.         unitPrices[i] = gUnitPrices[i];
  117.         discLevels[i] = gDiscLevels[i];
  118.         discRates[i] = gDiscRates[i];
  119.         currStocks[i] = gCurrStocks[i];
  120.         recentItemCode = i+1;
  121.     }
  122.     int gPurchItemCodes[3] = {1,2,3};
  123.     int gPurchAmounts[3] = {5,10,15};
  124.     for(int i = 0;i<3;i++){
  125.         purchaseCodes[i]=i+1;
  126.         purchaseAmounts[i] = gPurchAmounts[i];
  127.         purchaseItemCodes[i] = gPurchItemCodes[i];
  128.         purchaseNettotals[i] = gPurchAmounts[i] * unitPrices[gPurchItemCodes[i]-1];
  129.  
  130.         recentPurchaseCode = i+1;
  131.     }
  132.  
  133.     int gSalesItemCodes[3] = {1,2,3};
  134.     int gSalesAmounts[3] = {5,10,15};
  135.     for(int i =0;i<3;i++){
  136.         salesCodes[i] =i+1;
  137.         salesItemCodes[i] = gSalesItemCodes[i];
  138.         salesAmounts[i] = gSalesAmounts[i];
  139.         salesNettotals[i] = gSalesAmounts[i] * unitPrices[gSalesItemCodes[i]-1];
  140.         salesSubtotals[i] = ( salesNettotals[i] >= discLevels[gSalesItemCodes[i]-1] ) ?
  141.                                 salesNettotals[i] * (1 - discRates[gSalesItemCodes[i]-1]/100.0) :
  142.                                 salesNettotals[i];
  143.         recentSalesCode = i+1;
  144.     }
  145. }
  146. void funcAddPurchase(){
  147.  
  148.     int inputItemCode,inputAmount;
  149.     printf("Enter the item code to purchase: ");
  150.     scanf("%d",&inputItemCode);
  151.     if(inputItemCode<=recentItemCode){
  152.         //item exists
  153.         printf("Enter the amount to purchase: ");
  154.         scanf("%d",&inputAmount);
  155.         purchaseCodes[recentPurchaseCode] = recentPurchaseCode+1;
  156.         purchaseItemCodes[recentPurchaseCode] = inputItemCode;
  157.         purchaseAmounts[recentPurchaseCode] = inputAmount;
  158.         purchaseNettotals[recentPurchaseCode] = unitPrices[inputItemCode-1] * inputAmount;
  159.         currStocks[inputItemCode-1] += inputAmount;
  160.         recentPurchaseCode += 1;
  161.     }
  162.  
  163. }
  164. void addSalesFunc(){
  165.  
  166.    int inputItemCode,inputAmount;
  167.     printf("Enter the item code to sell: ");
  168.     scanf("%d",&inputItemCode);
  169.     if(inputItemCode<=recentItemCode){
  170.         //item exists
  171.         printf("Enter the amount to sell: ");
  172.         scanf("%d",&inputAmount);
  173.         if(currStocks[inputItemCode-1] >= inputAmount){
  174.             //amount is enough
  175.             salesCodes[recentSalesCode] = recentSalesCode+1;
  176.             salesItemCodes[recentSalesCode] = inputItemCode;
  177.             salesAmounts[recentSalesCode] = inputAmount;
  178.             salesNettotals[recentSalesCode] = unitPrices[inputItemCode-1] * inputAmount;
  179.             salesSubtotals[recentSalesCode] = salesNettotals[recentSalesCode] <= discLevels[inputItemCode-1] ?
  180.                                                 salesNettotals[recentSalesCode] * (1 - discRates[inputItemCode-1]/100.0) :
  181.                                                 salesNettotals[recentSalesCode];
  182.             currStocks[inputItemCode-1] -= inputAmount;
  183.             recentSalesCode += 1;
  184.         }
  185.         else{
  186.             printf("Not enough stocks\n");
  187.         }
  188.     }else{
  189.         printf("Item code does not exist\n");
  190.     }
  191. }
  192. void tableHeaderRowPrint(int section){
  193.  
  194.     switch (section){
  195.     case STOCKS:
  196.         for(int i =0;i<100;i++){
  197.             printf("-");
  198.         }
  199.         printf("\n");
  200.         printf("%12s   %12s   %12s   %12s   %12s    %12s\n",
  201.                "item code","item name","unit price","discount level","discount rate","current stock");
  202.         break;
  203.     case SALES:
  204.         for(int i =0;i<100;i++){
  205.             printf("-");
  206.         }
  207.         printf("\n");
  208.         printf("%12s   %12s   %12s    %12s   %12s   %12s   %12s\n",
  209.                "sales code","item code","item name","unit price","amount","net total","sub total");
  210.         break;
  211.     case PURCHASES:
  212.         for(int i =0;i<100;i++){
  213.             printf("-");
  214.         }
  215.         printf("\n");
  216.         printf("%12s   %12s   %12s    %12s   %12s   %12s   \n",
  217.                "purchase code","item code","item name","unit price","amount","net total");
  218.         break;
  219.     default:
  220.         break;
  221.     }
  222. }
  223. void funcCurStockDet(){
  224.  
  225.     tableHeaderRowPrint(STOCKS);
  226.     for(int i = 0;i<recentItemCode;i++){
  227.         printf("%12d  %12s  %12.2f  %12.2f  %12.2f  %12d\n",
  228.                itemCodes[i],itemNames[i],unitPrices[i],discLevels[i],discRates[i],currStocks[i]);
  229.     }
  230. }
  231. void funcViewSales(){
  232.  
  233.     tableHeaderRowPrint(SALES);
  234.     for(int a=0;a<recentItemCode;a++){
  235.         for(int i=0;i<recentSalesCode;i++){
  236.             if(itemCodes[a] == salesItemCodes[i]){
  237.                 printf("%12d    ",salesCodes[i]);
  238.                 printf("%12d    ",salesItemCodes[i]);
  239.                 printf("%12s    ",itemNames[salesItemCodes[i]-1]);
  240.                 printf("%12d    ",salesAmounts[i]);
  241.                 printf("%12.2f  ",unitPrices[salesItemCodes[i]-1]);
  242.                 printf("%12.2f  ",salesNettotals[i]);
  243.                 printf("%12.2f  ",salesSubtotals[i]);
  244.                 printf("\n");
  245.             }
  246.         }
  247.     }
  248. }
  249. void viewPurchasesFunc(){
  250.  
  251.     tableHeaderRowPrint(PURCHASES);
  252.     for(int a=0;a<recentItemCode;a++){
  253.         for(int i=0;i<recentSalesCode;i++){
  254.             if(itemCodes[a] == salesItemCodes[i]){
  255.                 printf("%12d   ",purchaseCodes[i]);
  256.                 printf("%12d   ",purchaseItemCodes[i]);
  257.                 printf("%12s   ",itemNames[purchaseItemCodes[i]-1]);
  258.                 printf("%12.2f   ",unitPrices[purchaseItemCodes[i]-1]);
  259.                 printf("%12d   ",purchaseAmounts[i]);
  260.                 printf("%12.2f   ",purchaseNettotals[i]);
  261.                 printf("\n");
  262.             }
  263.         }
  264.     }
  265. }
  266. void funcDetailsEntry(){
  267.  
  268.     printf("Adding stock info for item code %d\n",recentItemCode+1);
  269.     int curr_stock;
  270.     float unit_price,disc_level,disc_rate;
  271.     char item_name[STR_LIM];
  272.     printf("Enter item name: ");
  273.     scanf("%s",item_name);
  274.     printf("Enter item unit price: ");
  275.     scanf("%f",&unit_price);
  276.     printf("Enter item discount level: ");
  277.     scanf("%f",&disc_level);
  278.     printf("Enter item discount rate: ");
  279.     scanf("%f",&disc_rate);
  280.     printf("Enter item current stock: ");
  281.     scanf("%d",&curr_stock);
  282.     strcpy(itemNames[recentItemCode-1],item_name);
  283.     unitPrices[recentItemCode-1] = unit_price;
  284.     discLevels[recentItemCode-1] = disc_level;
  285.     discRates[recentItemCode-1] = disc_rate;
  286.     currStocks[recentItemCode-1] = curr_stock;
  287.     recentItemCode = recentItemCode+1;
  288. }
  289. void clearWindow(){
  290.     system("cls||clear");
  291. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement