Advertisement
Guest User

Untitled

a guest
Oct 31st, 2014
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 11.77 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int chooseStock();
  6. void newStock();
  7. void item_menu(char fileName[20], FILE *fp);
  8.  
  9. struct item newItem(char fileName[20], FILE *fp);
  10. void searchItem(FILE *fp);
  11. void updateItem(char fileName[20], FILE *fp);
  12.  
  13.  
  14.  
  15. struct item {
  16.     int number; //item.number
  17.     char name[20]; //item.name
  18.     float price; //item.price
  19.     int amount; //item.amount
  20. };
  21.  
  22. int main()
  23. {
  24.     int answer;
  25.  
  26.     //Main Menu
  27.     while(1) {
  28.         system("cls");
  29.         printf("Main Menu:\n\n"); //Utveckla. Skriv text.
  30.         printf("(1) New Stock.\n");
  31.         printf("(2) Choose Stock\n");
  32.         printf("(3) Exit\n");
  33.         fflush(stdin);
  34.         scanf("%d", &answer);
  35.  
  36.         switch(answer) {
  37.             case 1: newStock(); break;
  38.             case 2: chooseStock(); break;
  39.             case 3: return 0;
  40.             default: printf("Please select a valid option");
  41.         }
  42.     }
  43.     return 0;
  44. }
  45.  
  46.  
  47. void newStock() {
  48.     int i;
  49.     char fileName[20];
  50.     FILE *fp;
  51.  
  52.     printf("What do you want to name your new stock?\n");
  53.     fflush(stdin);
  54.     gets(fileName);
  55.     strcat(fileName, ".txt");
  56.  
  57.     if(fileName[0] == ' ')
  58.         printf("Invalid File Name\n");
  59.  
  60.     for(i=0; i<20; i++)
  61.         if(fileName[i] == ' ');
  62.             fileName[i] = '\0';
  63.  
  64.     if((fp = fopen(fileName, "w")) == NULL)
  65.         printf("Could not create file.");
  66.     else {
  67.         fclose(fp);
  68.         rewind(fp);
  69.         item_menu(fileName, fp);
  70.     }
  71. }
  72.  
  73. int chooseStock() {
  74.  
  75.     char fileName[20];
  76.     FILE *fp;
  77.  
  78.     printf("Name the file you want to open.\n");
  79.     fflush(stdin);
  80.     gets(fileName);
  81.     strcat(fileName, ".txt");
  82.  
  83.     //Checks if first letter in filename is spacebar.
  84.     if(fileName[0] == ' ')
  85.         printf("Invalid File Name\n");
  86.  
  87.     //Checks if file exists.
  88.     if((fp = fopen(fileName, "r")) == NULL) {
  89.         printf("File does not exist.\n");
  90.         printf("Press any key to get back to Main Menu.\n");
  91.         getch();
  92.         return 0;
  93.     }
  94.     fclose(fp);
  95.     rewind(fp);
  96.     item_menu(fileName, fp);
  97.     return 0;
  98. }
  99.  
  100. void item_menu(char fileName[20], FILE *fp) {
  101.  
  102.     int answer;
  103.     int menu = 1;
  104.     int i = 0;
  105.     struct item itemsInStock[100];
  106.  
  107.    //Menu 1
  108.     while(1) {
  109.  
  110.         if((fp = fopen(fileName, "r")) == NULL) {
  111.             printf("Could not open file.");
  112.         }
  113.  
  114.         system("cls");
  115.         printf("(1) Add Item\n");
  116.         printf("(2) Update Item\n");
  117.         printf("(3) Remove Item\n");
  118.         printf("(4) Search For An Item\n");
  119.         printf("(5) Statistics\n");
  120.         printf("(6) Main Menu\n");
  121.         fflush(stdin);
  122.         scanf("%d", &answer);
  123.  
  124.         switch(answer) {
  125.             case 1: fclose(fp); itemsInStock[i] = newItem(fileName, fp); break;
  126.             case 2: updateItem(fileName, fp); break;
  127.             case 3: removeItem(fileName, fp); break;
  128.             case 4: searchItem(fp); break;
  129.             default: ("Please select a valid option.\n");
  130.         }
  131.         rewind(fp);
  132.         i++;
  133.     }
  134. }
  135.  
  136.  
  137. struct item newItem(char fileName[20], FILE *fp) {
  138.  
  139.     struct item tempItem;
  140.  
  141.     if((fp = fopen(fileName, "a")) == NULL) {
  142.         printf("Could not open file.");
  143.     }
  144.  
  145.     printf("Insert name: ");
  146.     fflush(stdin);
  147.     gets(tempItem.name);
  148.  
  149.     printf("Insert price: ");
  150.  
  151.     while(1) {
  152.         fflush(stdin);
  153.         if(scanf("%f", &tempItem.price) == 0)
  154.             printf("Please enter a number.\n");
  155.  
  156.         else
  157.             break;
  158.     }
  159.  
  160.     printf("Insert amount: ");
  161.  
  162.     while(1) {
  163.         fflush(stdin);
  164.         if(scanf("%d", &tempItem.amount) == 0)
  165.             printf("Please enter a number.\n");
  166.  
  167.         else
  168.             break;
  169.     }
  170.  
  171. //    fprintf(fp, "Item %d:\n", idCounter+1);
  172.     fprintf(fp, "%s\n", tempItem.name);
  173.     fprintf(fp, "%.2f$\n", tempItem.price);
  174.     fprintf(fp, "%d#\n\n", tempItem.amount);
  175. //    fprintf(fp, "Item ID: %d\n\n", idCounter+1);
  176.     fclose(fp);
  177.  
  178.     return tempItem;
  179. }
  180.  
  181. void searchItem(FILE *fp) {
  182.  
  183.     char temp[20];
  184.     char search[20];
  185.     char tempChar;
  186.     int i = 0;
  187.     int lineCount[20];
  188.  
  189.     printf("Search: ");
  190.     fflush(stdin);
  191.     gets(search);
  192.     lineCount[0] = 0;
  193.  
  194.     do
  195.     {
  196.         tempChar = fgetc(fp);
  197.  
  198.         if(tempChar == '\n')
  199.         {
  200.             temp[i] = '\0';
  201.  
  202.             if(strcmp(temp,search) == 0)
  203.             {
  204.                 lineCount[0] = 1;
  205.                 i = 0;
  206.                 do
  207.                 {
  208.                     tempChar = fgetc(fp);
  209.                     temp[i] = tempChar;
  210.                     i++;
  211.  
  212.                 } while(tempChar != '$');
  213.  
  214.                 temp[i] = '\0';
  215.                 printf("Price: %s\n", temp);
  216.  
  217.                 i = 0;
  218.                 fgetc(fp);
  219.                  do
  220.                 {
  221.                     tempChar = fgetc(fp);
  222.                     temp[i] = tempChar;
  223.                     i++;
  224.                 } while(tempChar != '#');
  225.  
  226.                 i--;
  227.                 temp[i] = '\0';
  228.                 printf("Amount: %s\n", temp);
  229.                 getch();
  230.                 break;
  231.             }
  232.             i = 0;
  233.         }
  234.  
  235.         else
  236.         {
  237.             temp[i] = tempChar;
  238.             i++;
  239.         }
  240.  
  241.     } while(tempChar != EOF);
  242. }
  243.  
  244. void updateItem(char fileName[20], FILE *fp) {
  245.  
  246.     char item[20];
  247.     char tempWord[50];
  248.     char tempChar;
  249.     char name[20];
  250.     int answer;
  251.     int i = 0;
  252.     int tempLine = 1;
  253.     int deleteLine = 0;
  254.     int amount;
  255.     float price;
  256.     FILE *fp2;
  257.  
  258.     printf("What item do you want to change?");
  259.     fflush(stdin);
  260.     gets(item);
  261.  
  262.     rewind(fp);
  263.  
  264.     do
  265.     {
  266.         tempChar = fgetc(fp);
  267.  
  268.         if(tempChar == '\n')
  269.         {
  270.             tempLine++;
  271.             tempWord[i] = '\0';
  272.  
  273.             if(strcmp(tempWord,item) == 0)
  274.             {
  275.                 tempLine--;
  276.                 printf("Do you want to change the name, price or amount?\n");
  277.                 printf("(1) Name.\n");
  278.                 printf("(2) Price.\n");
  279.                 printf("(3) Amount.\n");
  280.                 scanf("%d", &answer);
  281.  
  282.                 switch(answer) {
  283.                     case 1: deleteLine = tempLine;
  284.                             printf("New name: ");
  285.                             fflush(stdin);
  286.                             scanf("%s", name);
  287.                             break;
  288.                     case 2: deleteLine = tempLine + 1;
  289.                             printf("New price: ");
  290.                             fflush(stdin);
  291.                             scanf("%f", &price);
  292.                             break;
  293.                     case 3: deleteLine = tempLine + 2;
  294.                             printf("New amount: ");
  295.                             fflush(stdin);
  296.                             scanf("%d", &amount);
  297.                             break;
  298.                     default: ("Please select a valid option.\n");
  299.                 }
  300.  
  301.                 printf("Delete Line: %d", deleteLine);
  302.                 getch();
  303.                 rewind(fp);
  304.                 fp2 = fopen("tempfile.c", "w");
  305.                 tempLine = 1;
  306.                 i = 0;
  307.  
  308.                 switch(answer){
  309.                 case 1: do
  310.                         {
  311.                             tempChar = fgetc(fp);
  312.  
  313.                             if(tempChar == EOF)
  314.                             break;
  315.  
  316.                             if(tempChar == '\n')
  317.                                 tempLine++;
  318.  
  319.                             if(tempLine == deleteLine && i == 0){
  320.                                 fprintf(fp2, "\n");
  321.                                 fprintf(fp2, "%s", name);
  322.                                 i = 1;
  323.                             }
  324.                             else if(tempLine == deleteLine)
  325.                                 ;
  326.                             else
  327.                                 putc(tempChar, fp2);
  328.  
  329.                         } while(tempChar != EOF);
  330.  
  331.                 case 2: do
  332.                         {
  333.                             tempChar = fgetc(fp);
  334.  
  335.                             if(tempChar == EOF)
  336.                             break;
  337.  
  338.                             if(tempChar == '\n')
  339.                                 tempLine++;
  340.  
  341.                             if(tempLine == deleteLine && i == 0){
  342.                                 fprintf(fp2, "\n");
  343.                                 fprintf(fp2, "%.2f$", price);
  344.                                 i = 1;
  345.                             }
  346.                             else if(tempLine == deleteLine)
  347.                                 ;
  348.                             else
  349.                                 putc(tempChar, fp2);
  350.  
  351.                         } while(tempChar != EOF);
  352.  
  353.                 case 3: do
  354.                         {
  355.                             tempChar = fgetc(fp);
  356.  
  357.                             if(tempChar == EOF)
  358.                             break;
  359.  
  360.                             if(tempChar == '\n')
  361.                                 tempLine++;
  362.  
  363.                             if(tempLine == deleteLine && i == 0){
  364.                                 fprintf(fp2, "\n");
  365.                                 fprintf(fp2, "%d#", amount);
  366.                                 i = 1;
  367.                             }
  368.                             else if(tempLine == deleteLine)
  369.                                 ;
  370.                             else
  371.                                 putc(tempChar, fp2);
  372.  
  373.                         } while(tempChar != EOF);
  374.                     }
  375.  
  376.                 rewind(fp);
  377.                 rewind(fp2);
  378.                 fclose(fp);
  379.                 fclose(fp2);
  380.                 remove(fileName);
  381.                 rename("tempfile.c", fileName);
  382.             }
  383.             i = 0;
  384.         }
  385.  
  386.         else
  387.         {
  388.             tempWord[i] = tempChar;
  389.             i++;
  390.         }
  391.  
  392.     } while(tempChar != EOF);
  393.  
  394.     if(deleteLine == 0)
  395.         printf("Sorry! There is no item named %c%s%c in this stock.\n", 34, item, 34);
  396.  
  397.     fclose(fp);
  398. }
  399.  
  400. void removeItem(char fileName[20], FILE *fp) {
  401.  
  402.     char item[20];
  403.     char tempWord[50];
  404.     char tempChar;
  405.     char name[20];
  406.     int answer;
  407.     int i = 0;
  408.     int tempLine = 1;
  409.     int deleteLine = 0;
  410.     int amount;
  411.     float price;
  412.     FILE *fp2;
  413.  
  414.     printf("What item do you want to remove?");
  415.     fflush(stdin);
  416.     gets(item);
  417.  
  418.     rewind(fp);
  419.  
  420.     do
  421.     {
  422.         tempChar = fgetc(fp);
  423.  
  424.         if(tempChar == '\n')
  425.         {
  426.             tempLine++;
  427.             tempWord[i] = '\0';
  428.  
  429.             if(strcmp(tempWord,item) == 0)
  430.             {
  431.                 deleteLine = tempLine;
  432.                 printf("Delete Line: %d", deleteLine);
  433.                 getch();
  434.                 rewind(fp);
  435.                 fp2 = fopen("tempfile.c", "w");
  436.                 tempLine = 1;
  437.                 i = 0;
  438.  
  439.                 do
  440.                 {
  441.                     tempChar = fgetc(fp);
  442.  
  443.                     if(tempChar == EOF)
  444.                         break;
  445.  
  446.                     if(tempChar == '\n')
  447.                         tempLine++;
  448.  
  449.                     if(tempLine != deleteLine && tempLine != (deleteLine + 1) && tempLine != (deleteLine - 1) && tempLine != (deleteLine + 2))
  450.                         putc(tempChar, fp2);
  451.  
  452.                 } while(tempChar != EOF);
  453.  
  454.                 rewind(fp);
  455.                 rewind(fp2);
  456.                 fclose(fp);
  457.                 fclose(fp2);
  458.                 remove(fileName);
  459.                 rename("tempfile.c", fileName);
  460.             }
  461.             i = 0;
  462.         }
  463.  
  464.         else
  465.         {
  466.             tempWord[i] = tempChar;
  467.             i++;
  468.         }
  469.  
  470.     } while(tempChar != EOF);
  471.  
  472.     if(deleteLine == 0)
  473.         printf("Sorry! There is no item named %c%s%c in this stock.\n", 34, item, 34);
  474.  
  475.     fclose(fp);
  476. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement