trojanxem

Untitled

May 21st, 2012
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.91 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <conio.h>
  4.  
  5. using namespace std;
  6.  
  7. struct Data
  8. {
  9.     void Make(Data d)
  10.     {
  11.         name=d.name;
  12.         recepta=d.recepta;
  13.         ilosc=d.ilosc;
  14.         index=d.index;
  15.     }
  16.     string name;
  17.     string recepta;
  18.     int ilosc;
  19.     string index;
  20. };
  21.  
  22. struct Node
  23. {
  24.     void Display(int i)
  25.     {
  26.         cout <<  "l" << i << ". " << dat->name << " " << dat->recepta << " " << dat->index << " " << dat->ilosc << endl;
  27.     }
  28.     Node* next;
  29.     Node* prev;
  30.     Data* dat;
  31. };
  32.  
  33. struct List
  34. {
  35.     void Make()
  36.     {
  37.         start=new Node;
  38.         start->next=NULL;
  39.         start->prev=NULL;
  40.         start->dat=NULL;
  41.     }
  42.     void Add(Data d)
  43.     {
  44.         Node* s=start;
  45.         if(s->dat==NULL)
  46.         {
  47.             s->dat=new Data();
  48.             s->dat->Make(d);
  49.         }else
  50.         {
  51.             while(s->next!=NULL)
  52.                 s=s->next;
  53.             s->next=new Node();
  54.             s->next->prev=s;
  55.             s->next->next=NULL;
  56.             s->next->dat=new Data();
  57.             s->next->dat->Make(d);
  58.         }
  59.     }
  60.     Node* Find(string index,int &l)
  61.     {
  62.         int n=1;
  63.         Node* s=start;
  64.         if(s->dat!=NULL)
  65.             do
  66.             {
  67.                 l=n;
  68.                 if(s->dat->index==index) return s;
  69.                 s=s->next;
  70.                 n++;
  71.             }while(s!=NULL);
  72.             l=0;
  73.             return s;
  74.     }
  75.     void Display()
  76.     {
  77.         int n=1;
  78.         Node* s=start;
  79.         if(s->dat!=NULL)
  80.             do
  81.             {
  82.                 s->Display(n);
  83.                 s=s->next;
  84.                 n++;
  85.             }while(s!=NULL);
  86.     }
  87.     void Delete(string index)
  88.     {
  89.         int tmp;
  90.         Node* n=Find(index,tmp);
  91.         if(tmp)
  92.         {
  93.             if(n->next!=NULL&&n->prev!=NULL)
  94.             {
  95.                 n->prev->next=n->next;
  96.                 delete n;
  97.             }else if(n->next==NULL&&n->prev!=NULL)
  98.             {
  99.                 n->prev->next=NULL;
  100.                 delete n;
  101.             }else if(n->next!=NULL&&n->prev==NULL)
  102.             {
  103.                 n->next->prev=NULL;
  104.                 start=n->next;
  105.                 delete n;
  106.             }else
  107.             {
  108.                 n->dat=NULL;
  109.             }
  110.         }
  111.     }
  112.     Node* start;
  113. };
  114.  
  115. void Header()
  116. {
  117.     system("cls");
  118.     cout << "-------------------------------------------------------------------------------" << endl;
  119.     cout << "|   Autor : Katarzyna Sojka                                                   |" << endl;
  120.     cout << "|   Projekt : Baza danych lekow                                               |" << endl;
  121.     cout << "|   Data : 18.05.2012                                                         |" << endl;
  122.     cout << "-------------------------------------------------------------------------------" << endl << endl;
  123. }
  124. void Footer()
  125. {
  126.     cout << "Ok. Nacisnij dowolny klawisz";
  127.     fflush(stdin);
  128.     getc(stdin);
  129. }
  130. int Menu()
  131. {
  132.     Header();
  133.     int o;
  134.     cout << "1. Dodaj lek"<<endl;
  135.     cout<<  "2. Znajdz lek"<<endl;
  136.     cout<<  "3. Usun lek"<<endl;
  137.     cout<<  "4. Podejrzyj liste"<<endl;
  138.     cout<<  "5. Wczytaj z pliku"<<endl;
  139.     cout<<  "6. Wykres"<<endl;
  140.     cout<<  "7. Wyjscie"<<endl;
  141.     cout << "Wybierz opcje: ";
  142.     cin >> o;
  143.     return o;
  144. }
  145. void WczytajZPliku(List *L)
  146. {     system("cls");
  147.      FILE *test = NULL;
  148.      char leki[10][20] = {0};
  149.      int i = 0;
  150.      int recepta1 = 0, nierecepta1 = 0;
  151.      test=fopen("leki.txt", "r+t");
  152.      for (i = 0; i < 10; i++)
  153.   {
  154.     fscanf(test, "%s", &leki[i]);
  155.     printf("Czy %s jest na recepte (T,N)\n", leki[i]);
  156.    
  157.     if(getch()=='t')
  158.     {
  159.                recepta1++;
  160.                }
  161.                else              
  162.                    nierecepta1++;
  163.                    }
  164.                    fclose(test);
  165.                    printf("Lekow na recepte jest %d, a bez recepty: %d \n", recepta1,nierecepta1);
  166.                    getch();
  167.                    }
  168.                    
  169. void Wykres(List *L)
  170. {     system("cls");
  171.      int nierecepta = 0;
  172.      int recepta = 0;
  173.      Header();
  174.      Data d;
  175.      if(d.recepta=="tak")
  176.      {
  177.                recepta++;
  178.      }
  179.      else
  180.      {
  181.          nierecepta++;
  182.      }
  183.          int max = 0;
  184.          int i;
  185.   max = recepta > nierecepta ? recepta : nierecepta;
  186.  
  187.  for (i = max; i > 0; i--)
  188.  {
  189.    if (recepta - i >= 0)
  190.     printf("%d|X",i);
  191.    else
  192.     printf(" ");
  193.    
  194.    if (nierecepta - i >= 0)
  195.     printf("    X");
  196.    else
  197.     printf(" ");
  198.    
  199.    printf("\n");
  200.  }
  201.  getch();
  202. }
  203.          
  204.      
  205.      
  206.                        
  207. void AddLek(List *L)
  208. {
  209.     Header();
  210.     Data d;
  211.     cout << "Nazwa: ";        cin >> d.name;
  212.     cout << "Recepta: ";    cin >> d.recepta;
  213.     cout << "Indeks: ";        cin >> d.index;
  214.     cout << "Ilosc w opakowaniu: ";        cin >> d.ilosc;
  215.     L->Add(d);
  216.     Footer();
  217. }
  218. void ShowList(List *L)
  219. {
  220.     Header();
  221.     L->Display();
  222.     Footer();
  223. }
  224. void FindLek(List *L)
  225. {
  226.     Header();
  227.     cout << "Indeks szukanego leku: ";
  228.     string index;
  229.     cin >> index;
  230.     int res;
  231.     L->Find(index,res);
  232.     if(res)
  233.         cout << "Lek znajduje sie w bazie na " << res << " pozycji.";
  234.     else
  235.         cout << "Lek nie znajduje sie w bazie.n";
  236.     Footer();
  237. }
  238. void DeleteLek(List *L)
  239. {
  240.     Header();
  241.     cout << "Indeks leku do usuniecia: ";
  242.     string index;
  243.     cin >> index;
  244.     L->Delete(index);
  245.     Footer();
  246. }
  247. int main()
  248. {
  249.     List L;
  250.     int Opt=0;
  251.     L.Make();
  252.     while(Opt!=7)
  253.     {
  254.         Opt=Menu();
  255.         switch(Opt)
  256.         {
  257.         case 1:    AddLek(&L);        break;
  258.         case 2:    FindLek(&L);    break;
  259.         case 3: DeleteLek(&L);    break;
  260.         case 4:    ShowList(&L);        break;
  261.         case 5:    WczytajZPliku(&L);        break;
  262.         case 6:    Wykres(&L);        break;
  263.         }
  264.  
  265.     }
  266.     return 0;
  267. }
Advertisement
Add Comment
Please, Sign In to add comment