Guest User

Untitled

a guest
Jan 17th, 2015
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.25 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string>
  6. #include<fstream>
  7.  
  8. using namespace std;
  9.  
  10. typedef struct osoba
  11. {
  12. long unsigned int id;
  13. string imie;
  14. string nazwisko;
  15. string data;
  16. string ulica;
  17. string miasto;
  18. string inne;
  19. struct osoba *next, *prev;
  20. } osoba;
  21.  
  22. osoba *prime = new osoba;
  23. long unsigned int ziemniak = 0;
  24.  
  25. void menu();
  26. void dodaj(osoba *lista);
  27. void usun(string naziwsko);
  28. void szukaj(string, osoba);
  29. void sortuj(osoba);
  30. void wyswietl(osoba *lista);
  31. void modyfikuj(int ,osoba);
  32. void zapisz(osoba *lista);
  33. void odczyt(string gg);
  34. void powrot();
  35.  
  36.  
  37.  
  38. int main()
  39.  
  40. {
  41. prime->next = NULL;
  42. prime->prev = NULL;
  43. menu();
  44.  
  45. return 0;
  46. }
  47. void powrot()
  48. {
  49. cout << endl << "wcisnij enter by powrocic do menu";
  50. getchar();
  51. getchar();
  52. system("cls");
  53. menu();
  54. }
  55.  
  56. void dodaj(osoba *lista)
  57. {
  58. osoba *p, *nowy;
  59.  
  60. p = lista;
  61. while (p->next != NULL)
  62. p = p->next;
  63. nowy = new osoba;
  64. nowy->id = ziemniak+1;
  65.  
  66. nowy->imie = prime->imie;
  67. nowy->nazwisko = prime->nazwisko;
  68. nowy->data = prime->data;
  69. nowy->ulica = prime->ulica;
  70. nowy->miasto = prime->miasto;
  71. nowy->inne = prime->inne;
  72. nowy->prev = p;
  73. nowy->next = NULL;
  74. p->next = nowy;
  75. ziemniak++;
  76.  
  77. }
  78. void usun(string nazw,osoba *lista)
  79. {
  80. osoba *p = lista,*pomoc=new osoba;
  81. bool si = true,jest=false,szuka=false;
  82. int idd;
  83. while (p!= NULL)
  84. {
  85. if (p->nazwisko == nazw)
  86. {
  87. cout << p->imie << " " << p->nazwisko << " " << p->data << " " << p->ulica << " " << p->miasto << " " << p->inne <<" "<< p->id << endl;
  88. szuka = true;
  89. }
  90. p = p->next;
  91. }
  92. if(szuka==false)
  93. cout<<"nie znaleziono osoby o podanym nazwisku"<<endl;
  94. else{
  95. cout<<"podaj nr id osoby ktora chcesz usunac:"<<endl;
  96. cin>>idd;
  97. p = lista;
  98. while (si)
  99. {
  100. if (p->id == idd)
  101. {
  102.  
  103. pomoc=p;
  104.  
  105. p=pomoc->prev;
  106. p->next=pomoc->next;
  107. p=p->next;
  108. p->prev=pomoc->prev;
  109. delete pomoc;
  110. si = false;
  111. jest = true;
  112. }
  113. else
  114. p = p->next;
  115.  
  116. }
  117. if (jest == false){
  118. cout << "nie znaleziono osoby o podanym id:" << idd;
  119. powrot();
  120. }
  121. else{
  122. powrot();
  123. cout<<"usunieto"<<endl;
  124. }
  125. }
  126. }
  127. void szukaj(string nazw, osoba *lista)
  128. {
  129. osoba *p = lista;
  130. bool sztuka = false;
  131. if (p->id == 0)
  132. p = p->next;
  133. while (p!= NULL)
  134. {
  135. if (p->nazwisko == nazw)
  136. {
  137. cout << p->imie << " " << p->nazwisko << " " << p->data << " " << p->ulica << " " << p->miasto << " " << p->inne <<" "<< p->id << endl;
  138. sztuka = true;
  139. }
  140. p = p->next;
  141. }
  142. if (sztuka == false)
  143. {
  144. int co_teraz=0;
  145. cout << "nie znaleziono osoby o podanym naziwsku, wcisnij:\n 1- by powrocic do menu\n 2 - by szukac dalej" << endl;
  146. cin >> co_teraz;
  147. if (co_teraz == 1)
  148. powrot();
  149. if (co_teraz == 2)
  150. {
  151. string jeszcze_raz;
  152. cout << "podaj naziwsko sooby do wyszukania:";
  153. cin >> jeszcze_raz;
  154. szukaj(jeszcze_raz, prime);
  155.  
  156. }
  157. while (co_teraz != 1 || co_teraz != 2)
  158. {
  159. cout << endl << "podano zla wartosc, wpisz liczbe jeszcze raz"<<endl;
  160. cin >> co_teraz;
  161. }
  162. }
  163.  
  164. }
  165. void zapisz(osoba *lista)
  166. {
  167. system("cls");
  168. fstream plik;
  169. string gg;
  170. osoba *p = lista, *q = lista;
  171. bool check = false;
  172. cout << "podaj nazwe pliku" << endl;
  173. cin >> gg;
  174. gg += ".txt";
  175. if (p->id == 0)
  176. p = p->next;
  177. plik.open(gg.c_str(), ios::out);
  178. while (p != NULL)
  179. {
  180. if (check == false)
  181. {
  182. check = true;
  183. while (q->next != NULL)
  184. q = q->next;
  185. if (p->id == q->id)
  186. p = p->next;
  187. }
  188. else{
  189. plik << p->imie << ";";
  190. plik << p->nazwisko << ";";
  191. plik << p->data << ";";
  192. plik << p->ulica << ";";
  193. plik << p->miasto << ";";
  194. plik << p->inne << "\n";
  195. p = p->next;
  196. }
  197. }
  198. cout << endl << "zapisano";
  199. plik.close();
  200. powrot();
  201.  
  202. }
  203. void odczyt(string gg, osoba *lista)
  204. {
  205. osoba *p = lista, *nowy;
  206. while (p->next != NULL)
  207. p = p->next;
  208. string ggg = gg + ".txt";
  209. fstream plik;
  210. plik.open(ggg.c_str(), ios::in);
  211. while (!plik.eof())
  212. {
  213. nowy = new osoba;
  214. getline(plik, nowy->imie, ';');
  215. getline(plik, nowy->nazwisko, ';');
  216. getline(plik, nowy->data, ';');
  217. getline(plik, nowy->ulica, ';');
  218. getline(plik, nowy->miasto, ';');
  219. getline(plik, nowy->inne);
  220. p->id = ziemniak;
  221. nowy->prev = p;
  222. nowy->next = NULL;
  223. p->next = nowy;
  224. cout << nowy->imie;
  225. cout << " " << nowy->nazwisko;
  226. p = p->next;
  227. ziemniak++;
  228. }
  229. cout << endl << "wczytano";
  230. ziemniak--;//o 1 za duzo
  231.  
  232. plik.close();
  233. powrot();
  234. }
  235. void modyfikuj(int id ,osoba *lista)
  236. {
  237. osoba *p = lista,*nowy=new osoba;
  238. bool si = false;
  239.  
  240. while (p->next != NULL)
  241. {
  242. if (p->id == 0)
  243. p = p->next;
  244. if (p->id != id)
  245. p = p->next;
  246. else
  247. {
  248. cout << p->imie << " " << p->nazwisko << " " << p->data << " " << p->ulica << " " << p->miasto << " " << p->inne<<" " << p->id << endl;
  249.  
  250. cout <<endl<< "imie " << endl;
  251. cin >> p->imie;
  252. cout << "nazwisko " << endl;
  253. cin >> p->nazwisko;
  254. cout << "data " << endl;
  255. cin >> p->data;
  256. cout << "ulica " << endl;
  257. cin >> p->ulica;
  258. cout << "miasto " << endl;
  259. cin >> p->miasto;
  260. cout << "inne " << endl;
  261. cin >> prime->inne;
  262.  
  263. si = true;
  264. break;
  265. }
  266.  
  267. }
  268. if (si == false)
  269. {
  270. cout << "brak osoby o takim id" << endl;
  271. powrot();
  272. }
  273. if (si==true)
  274. {
  275.  
  276. cout<<endl << "edycja przebiegla pomyslnie" << endl;
  277. powrot();
  278. }
  279.  
  280. }
  281. void sortuj(osoba *lista)
  282. {
  283. osoba *p = lista, *q =new osoba,*z=new osoba;
  284. int ilep = 0;
  285. string test;
  286. while (p->next != NULL)
  287. {
  288. p = p->next;
  289. ilep++;
  290. }
  291. p = lista;
  292.  
  293.  
  294.  
  295. for (int i = 0; i <= ilep; i++)
  296. {
  297. test = p->next->nazwisko;
  298. if (p->nazwisko.compare(test) > 0)
  299. {
  300. q = p;
  301. z = p->next;
  302. p->imie = z->imie;
  303. p->nazwisko = z->nazwisko;
  304. p->ulica = z->ulica;
  305. p->miasto = z->miasto;
  306. p->inne = z->inne;
  307. p->data = z->data;
  308.  
  309. p = p->next;
  310.  
  311. p->imie = q->imie;
  312. p->nazwisko = q->nazwisko;
  313. p->ulica = q->ulica;
  314. p->miasto = q->miasto;
  315. p->inne = q->inne;
  316. p->data = q->data;
  317. }
  318. else
  319. p = p->next;
  320. }
  321.  
  322. }
  323.  
  324. void wyswietl(osoba *lista)
  325. {
  326. osoba *p = lista, *q = lista;
  327. bool check = false;
  328. system("cls");
  329. sortuj(p);
  330. while (p != NULL)
  331. {
  332. if (p->id == 0)
  333. p = p->next;
  334.  
  335. else{
  336. if (!p->imie.empty())
  337. {
  338. cout << p->imie << " " << p->nazwisko;
  339. cout << " " << p->id << endl;
  340. getchar();
  341. }
  342. p = p->next;
  343. }
  344.  
  345. }
  346.  
  347. getchar();
  348. getchar();
  349. powrot();
  350.  
  351. }
  352. void menu()
  353. {
  354. int menu;
  355.  
  356. cout << "1. Dodaj osobe" << endl;
  357. cout << "2. Usun osobe" << endl;
  358. cout << "3. Wyszukaj osobe" << endl;
  359. cout << "4. Wyswietl baze nazwiskami" << endl;
  360. cout << "5. Modifikuj osobe po ID" << endl;
  361. cout << "6. Zapisz do pliku" << endl;
  362. cout << "7. Odczyt z pliku" << endl;
  363. cout << "8. Exit" << endl;
  364. cin >> menu;
  365. while (menu <= 0 || menu > 8)
  366. {
  367. if (menu <= 0 || menu > 8)
  368. {
  369. getchar();
  370. cout << endl << "podaj wartosc z przedzialu od 1-8";
  371. cin >> menu;
  372. }
  373.  
  374. }
  375. switch (menu)
  376. {
  377. case 1:
  378. {
  379. system("cls");
  380.  
  381. cout << "imie " << endl;
  382. cin >> prime->imie;
  383. getchar();
  384. cout << "nazwisko " << endl;
  385. cin >> prime->nazwisko;
  386. getchar();
  387. cout << "data " << endl;
  388. cin >> prime->data;
  389. cout << "ulica " << endl;
  390. cin >> prime->ulica;
  391. cout << "miasto " << endl;
  392. cin >> prime->miasto;
  393. cout << "inne " << endl;
  394. cin >> prime->inne;
  395. prime->id = NULL;
  396. prime->prev = NULL;
  397. dodaj(prime);
  398.  
  399. powrot();
  400. } break;
  401. case 2:{
  402. system("cls");
  403. string nazwisko;
  404. cout << "podaj nazwisko osoby do usuniecia:" << endl;
  405. cin >> nazwisko;
  406. usun(nazwisko,prime);
  407. }
  408. ; break;
  409. case 3:{
  410. system("cls");
  411. string nazwisko;
  412. cout << "podaj nazwisko osoby do odszukania:" << endl;
  413. cin >> nazwisko;
  414. szukaj(nazwisko, prime);
  415. }; break;
  416. case 4:wyswietl(prime); break;
  417. case 5:{
  418. int i;
  419. system("csl");
  420. cout << "podaj nr id do modyfikacji:" << endl;
  421. cin >> i;
  422. modyfikuj(i, prime);
  423.  
  424. }; break;
  425. case 6:zapisz(prime); break;
  426. case 7:{
  427. system("cls");
  428. string gg;
  429.  
  430. cout << "podaj nazwe pliku do otrawcia" << endl;
  431. cin >> gg;
  432. odczyt(gg, prime);
  433. powrot();
  434.  
  435. }; break;
  436. case 8: break;
  437.  
  438.  
  439. }
  440.  
  441.  
  442. }
Advertisement
Add Comment
Please, Sign In to add comment