trojanxem

Untitled

May 21st, 2012
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.29 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. Wyjscie"<<endl;
  140. cout << "Wybierz opcje: ";
  141. cin >> o;
  142. return o;
  143. }
  144. void WczytajZPliku(List *L)
  145. { system("cls");
  146. FILE *test = NULL;
  147. char leki[10][20] = {0};
  148. int i = 0;
  149. int recepta1 = 0, nierecepta1 = 0;
  150. test=fopen("leki.txt", "r+t");
  151. for (i = 0; i < 10; i++)
  152. {
  153. fscanf(test, "%s", &leki[i]);
  154. printf("Czy %s jest na recepte (T,N)\n", leki[i]);
  155.  
  156. if(getch()=='t')
  157. {
  158. recepta1++;
  159. }
  160. else
  161. nierecepta1++;
  162. }
  163. fclose(test);
  164. printf("Lekow na recepte jest %d, a bez recepty: %d \n", recepta1,nierecepta1);
  165. getch();
  166. }
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175. void AddLek(List *L)
  176. {
  177. Header();
  178. Data d;
  179. cout << "Nazwa: "; cin >> d.name;
  180. cout << "Recepta: "; cin >> d.recepta;
  181. cout << "Indeks: "; cin >> d.index;
  182. cout << "Ilosc w opakowaniu: "; cin >> d.ilosc;
  183. L->Add(d);
  184. Footer();
  185. }
  186. void ShowList(List *L)
  187. {
  188. Header();
  189. L->Display();
  190. Footer();
  191. }
  192. void FindLek(List *L)
  193. {
  194. Header();
  195. cout << "Indeks szukanego leku: ";
  196. string index;
  197. cin >> index;
  198. int res;
  199. L->Find(index,res);
  200. if(res)
  201. cout << "Lek znajduje sie w bazie na " << res << " pozycji.";
  202. else
  203. cout << "Lek nie znajduje sie w bazie.n";
  204. Footer();
  205. }
  206. void DeleteLek(List *L)
  207. {
  208. Header();
  209. cout << "Indeks leku do usuniecia: ";
  210. string index;
  211. cin >> index;
  212. L->Delete(index);
  213. Footer();
  214. }
  215. int main()
  216. {
  217. List L;
  218. int Opt=0;
  219. L.Make();
  220. while(Opt!=6)
  221. {
  222. Opt=Menu();
  223. switch(Opt)
  224. {
  225. case 1: AddLek(&L); break;
  226. case 2: FindLek(&L); break;
  227. case 3: DeleteLek(&L); break;
  228. case 4: ShowList(&L); break;
  229. case 5: WczytajZPliku(&L); break;
  230.  
  231. }
  232.  
  233. }
  234. return 0;
  235. }
Advertisement
Add Comment
Please, Sign In to add comment