Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 5th, 2012  |  syntax: C  |  size: 6.59 KB  |  hits: 14  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. struct Product {
  5.        char number[20];
  6.        char name[20];
  7.        double price;
  8.        char date[20];
  9.        char expDate[20];
  10.        struct Product *next;
  11.        };
  12. struct Product *first = NULL;
  13. struct Product *getLast(struct Product *list)
  14. {
  15.         struct Product *curr = list; /*ako listata e prazna (NULL), vru6tame NULL za6toto nqma pruv
  16.                                      ina4e tursime posledniq element bez sledva6t element i go vru6tame*/
  17.         if (list == NULL)
  18.                 return NULL;
  19.         while (curr->next != NULL)
  20.                 curr = curr->next;
  21.         return curr;
  22. }
  23. struct Product *readFromFile(char *filename)
  24. {
  25.        struct Product *first, *last;
  26.        struct Product *temp;
  27.        first = NULL;
  28.        FILE *fp;
  29.        if((fp=fopen(filename, "rb"))==NULL)
  30.        {
  31.                               printf("\n Cannot open file.");
  32.                               exit(1);
  33.        }
  34.        
  35.                        temp = (struct Product *)malloc(sizeof(struct Product));
  36.                        temp->next=NULL;
  37.                        if(temp == NULL)
  38.                        {
  39.                                printf("Nemoje da se zadeli pamet.");
  40.                                exit(1);
  41.                        }
  42.                        fread(temp, sizeof(struct Product), 1, fp);
  43.                        if(temp == NULL)
  44.                        {
  45.                                first = temp;
  46.                                last = temp;
  47.                        }
  48.                        else
  49.                        {
  50.                                last->next=temp;
  51.                                last=last->next;    
  52.                        }
  53.                        
  54.        
  55.        return first;
  56. }
  57. void showMenu(void)
  58. {
  59.      printf("=====MENU=====\n");
  60.      printf("1. Dobavqne na nov artikul.\n");
  61.      printf("2. Promqna na cenata na daden artikul.\n");
  62.      printf("3. Izvejdane na informaciq na vsichki producti sys iztekyl srok na godnost.\n");
  63.      printf("4. Izvedi informaciq na artikul po id nomer.\n");
  64.      printf("5. Izhod.\n");
  65. }
  66. void addNewProduct(struct Product** productList)
  67. {
  68.      struct Product *product;
  69.      product=(struct Product *)malloc(sizeof(struct Product));
  70.      if(product == NULL)
  71.      {
  72.                 printf("Nemoje da byde zadelena pamet\n");
  73.                 exit(0);
  74.      }
  75.      product->next=product;
  76.      printf("Vyvedi nomer na artikula : ");
  77.      scanf("%s", product->number);
  78.      printf("Vyvedi ime na artikula : ");
  79.      scanf("%s", product->name);
  80.      printf("Vyvedi cena na artikula : ");
  81.      scanf("%lf", &product->price);
  82.      printf("Vyvedi data na proizvodstvo : ");
  83.      scanf("%s", product->date);
  84.      printf("Vyvedi data, do koqto e goden produktyt : ");
  85.      scanf("%s", product->expDate);
  86.      //productList e pyrviqt element na lista
  87.      if((*productList) == NULL)
  88.      {
  89.                        (*productList) = product;
  90.      }
  91.      else  //dobavqne na noviq element kym kraq na spisyka
  92.      {
  93.                        getLast(*productList)->next = product;            
  94.      }
  95.      FILE *fp;
  96.      if((fp=fopen("market", "ab"))==NULL)
  97.      {
  98.                             printf("Cannot open file.\n");
  99.                             exit(1);
  100.      }    
  101.            fwrite(&product, sizeof(struct Product), 1 ,fp);
  102.            printf("Noviqt produkt e zapisyn vyv failyt");
  103.      
  104.      fclose(fp);
  105. }
  106. void addToFile(struct Product *productList)
  107. {
  108.      struct Product *current;
  109.      FILE *fp;
  110.      if((fp=fopen("market", "ab"))==NULL)
  111.      {
  112.                             printf("Cannot open file.\n");
  113.                             exit(1);
  114.      }
  115.      current=productList;
  116.            fwrite(current, sizeof(struct Product), 1, fp);
  117.            current=current->next;
  118.      fclose(fp);
  119. }
  120. void searchProduct(struct Product **productList)
  121. { char number[20];
  122.      struct Product *product;
  123.      printf("Vyvedi id nomer na tyrseniq product : ");
  124.      scanf("%s", number);
  125.      
  126.      while (product != NULL)
  127.      {
  128.            if(!strcmp(number, product->number))
  129.            {
  130.                               printf("\n Id nomer : %s Ime : %s Cena : %lf Data na proizvodsto : %s Srok na godnost : %s",
  131.                               product->number, product->name, product->price, product->date, product->expDate);
  132.                               product=product->next;
  133.            }
  134.      }
  135.      if(product == NULL)
  136.      printf("Productyt ne e nameren.");    
  137. }
  138. void changePrice(struct Product **productList)
  139. {
  140.      struct Product *product;
  141.      char name[20];
  142.      printf("Vyvedi ime na artikula : ");
  143.      scanf("%s", name);
  144.      product=*productList;
  145.      while(product != NULL)
  146.      {
  147.                    if(!strcmp(name, product->name))
  148.                    break;
  149.                    product=product->next;
  150.      }
  151.      if(product == NULL)
  152.      {
  153.                 printf("\n Produktyt ne e nameren.");
  154.                 return;
  155.      }
  156.      printf("Vyvedi novata cena na producta : ");
  157.      scanf("%lf", &product->price);
  158.      printf("Cenata na produkta veche e smenena. ");
  159.      printf("Eto i informaciq za promqnata.\n");
  160.      printf("\n Id nomer : %s, Ime: %s Cena %lf Data na proizvodstvo : %s Srok na godnost : %s" ,
  161.      product->number, product->name, product->price, product->date, product->expDate);
  162. }
  163. void expiredDate(struct Product *product)
  164. {
  165.      char expDate[20];
  166.      printf("Vyvedi data na godnost : ");
  167.      scanf("%s", expDate);
  168.      if (product != NULL)
  169.      {
  170.            if(!strcmp(expDate, product->expDate))
  171.            {
  172.                                printf("Productyt %s sys srok na godnost %s e iztekyl!", product->name, product->expDate);
  173.                                product = product->next;
  174.            }
  175.      }
  176.      if (product == NULL)
  177.      {
  178.                  printf("Nqma produkt sys tozi srok na godnost.");
  179.      }
  180. }
  181. int main()
  182. {  
  183.     int choice;
  184.     first = readFromFile("market");
  185.     while(1)
  186.     {
  187.             system("cls");
  188.             showMenu();
  189.             printf("Vyvedi izbora si : ");
  190.             scanf("%d", &choice);
  191.             switch(choice)
  192.             {
  193.                           case 1 : addNewProduct(&first);break;
  194.                           case 2 : changePrice(&first); break;
  195.                           case 3 : expiredDate(first);break;
  196.                           case 4 : searchProduct(&first);break;
  197.                           case 5 : exit(1);break;
  198.                           default : printf("Greshen izbor");
  199.             }
  200.             system("pause");
  201.     }
  202.     return 0;
  203. }