trojanxem

Untitled

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