Advertisement
Guest User

Untitled

a guest
Jan 25th, 2020
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.85 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. typedef struct Osoba
  5. {
  6. char imie[100];
  7. char nazwisko[100];
  8. int wiek;
  9. char plec[11];
  10. char imieop[100];
  11. char nazwiskoop[100];
  12. int numertelefonu;
  13. int idkategorii;
  14. struct Osoba* next;
  15. }Osoba ;
  16.  
  17. Osoba odczyt_osob(const char sciezka){
  18. Osoba *head = NULL;
  19. FILE *plik;
  20. plik = fopen(sciezka,"rt");
  21. if(plik == NULL){
  22. printf("\nERROR 404\nBlad pliku %s", sciezka);
  23. }
  24. char imie[100],nazwisko[100];
  25. Osoba *tail = NULL;
  26. while(!feof(plik)){
  27. Osoba p;
  28.  
  29. fscanf(plik,"%s %s %d %s %s %s %d %d",imie,nazwisko);
  30. Osoba *nowy_el = (Osoba*)malloc(sizeof(Osoba));
  31. strcpy(nowy_el->imie,imie);
  32. strcpy( nowy_el->nazwisko, nazwisko);
  33. nowy_el->next = NULL;
  34. if(head == NULL){
  35. head = nowy_el;
  36. tail = nowy_el;
  37. }
  38. else{
  39. tail->next = nowy_el;
  40. tail = tail->next;
  41. }
  42. }
  43. fclose(plik);
  44. return *head;
  45. }
  46. void wypiszgatunek(Osoba *head){
  47. if(head == NULL){
  48. printf("\nERROR 404\nLista gatunkow jest pusta!");
  49. }
  50. else{
  51. Osoba *p = head;
  52. do{
  53. printf("ID: %s ", p->imie);
  54. printf("Nazwa: %s\n", p->nazwisko);
  55. p = p->next;
  56. }while(p != NULL);
  57. }
  58. }
  59.  
  60. //typedef struct kategoria
  61. //{
  62. // char nazwa[100];
  63. // char opis[100];
  64. // int min;
  65. // int max;
  66. // struct kategoria *next;
  67. //}kategoria;
  68. // zlicza dlugosc listy
  69. int dlugosc_listy(Osoba* lista)
  70. {
  71. int d = 0;
  72. Osoba* wsk = lista;
  73. while(wsk != NULL)
  74. {
  75. d++;
  76. wsk = wsk->next;
  77. }
  78. return d;
  79. }
  80.  
  81. // dodaje nowy wezel do listy
  82. void dodaj(Osoba** lista, Osoba* nowa)
  83. {
  84. nowa->next=NULL;
  85.  
  86. if((*lista)==NULL)
  87. {
  88. *lista = nowa;
  89. }
  90. else
  91. {
  92. Osoba* wsk = *lista;
  93. while(wsk->next != NULL)
  94. {
  95. wsk = wsk->next;
  96.  
  97. }
  98. wsk->next = nowa;
  99.  
  100. }
  101. }
  102.  
  103. // dodaje osobe do listy
  104. void dodajOsobe(Osoba** lista){
  105. char line[500];
  106. Osoba* nowa = (Osoba*)malloc(sizeof(Osoba));
  107. printf("Podaj imie:");
  108. scanf("%s", nowa->imie);
  109. printf("Podaj nazwisko:");
  110. scanf("%s", nowa->nazwisko);
  111. printf("Podaj plec:" );
  112. scanf("%s", nowa->plec);
  113. printf("Podaj wiek:" );
  114. do {
  115. scanf("%d", &(nowa->wiek));
  116. if(nowa->wiek<18){
  117. char s1[] = "";
  118. printf("Czy posiada zgode opiekuna?");
  119. scanf("%s",s1);
  120. char s2[] = "TAK";
  121. if (strcmp(s1, s2) == 0) {
  122. printf("Podaj imie opiekuna:");
  123. scanf("%s", nowa->imieop);
  124. printf("Podaj nazwisko opiekuna:");
  125. scanf("%s", nowa->nazwiskoop);
  126. printf("Podaj numer telefonu opiekuna:");
  127. scanf("%d", &nowa->numertelefonu);
  128. dodaj(lista, nowa);
  129. printf("\tDODANO UZYTKOWNIKA");
  130. break;
  131. }
  132. else {
  133. printf("\nNie ma zgody opiekuna\n");
  134. break;
  135. }
  136. }
  137. }
  138. while(nowa->wiek<18);
  139. if(nowa->wiek>=18) {
  140. printf("\nPodaj numer telefonu:" );
  141. scanf("%d", &nowa->numertelefonu);
  142. dodaj(lista, nowa);
  143. printf("\tDODANO UZYTKOWNIKA");
  144. }
  145.  
  146. }
  147.  
  148. //Wypisuje cala liste
  149. void wypisz_liste(Osoba* lista)
  150. {
  151.  
  152. Osoba* wsk = lista;
  153.  
  154. if(lista == NULL)
  155. printf("\nBaza uzytkownikow jest pusta\n");
  156. else
  157. printf("\nBaza uzytkownikow zawiera %d elementow: \n", dlugosc_listy(lista) );
  158. int i = 1;
  159. while( wsk != NULL)
  160. {
  161. if(wsk->wiek<=18) {
  162. printf("\n%d %s %s %d %s %s %s %d \n", i, wsk->imie, wsk->nazwisko, wsk->wiek, wsk->plec,wsk->imieop,wsk->nazwiskoop, wsk->numertelefonu);
  163. }
  164. else
  165. printf("\n%d %s %s %d %s %d \n", i, wsk->imie, wsk->nazwisko, wsk->wiek, wsk->plec, wsk->numertelefonu);
  166.  
  167. wsk=wsk->next;
  168. i++;
  169. }
  170. }
  171.  
  172. //Usuwa element z listy
  173. void usun(Osoba** lista, int ID)
  174. {
  175. Osoba* poprzedni = NULL;
  176. Osoba* wsk = *lista;
  177. int i;
  178. for(i = 1; i < ID; i++)
  179. {
  180. poprzedni=wsk;
  181. wsk=wsk->next;
  182.  
  183. }
  184. if(poprzedni==NULL)
  185. {
  186. (*lista)=(*lista)->next;
  187. free(wsk);
  188. }
  189. else
  190. {
  191. poprzedni->next=wsk->next;
  192. free(wsk);
  193. }
  194. }
  195.  
  196. // Usuwa osobe po indexie
  197. void usun_osobe(Osoba** lista)
  198. {
  199. int ID;
  200. printf("\nPodaj indeks osoby:\n " );
  201. scanf("%d", &ID);
  202.  
  203. if((ID > dlugosc_listy(*lista)) || (ID < 1))
  204. {
  205. printf("\nNie ma takiego indeksu\n");
  206.  
  207. }
  208. else
  209. {
  210. usun(lista,ID);
  211. }
  212. }
  213. int usun_imnaz_lista(char* im, char* naz, Osoba** lista)
  214. {
  215. Osoba* poprzedni=NULL;
  216. Osoba* wsk= *lista;
  217.  
  218. while((wsk != NULL) && ( ( strcmp(wsk->imie, im)!=0) || (strcmp(wsk->nazwisko, naz )!=0) ))
  219. {
  220. poprzedni=wsk;
  221. wsk=wsk->next;
  222. }
  223. if(wsk == NULL )
  224. {
  225. return 0;
  226. }
  227. else
  228. {
  229. if(poprzedni==NULL)
  230. {
  231. (*lista)=(*lista)->next;
  232. free(wsk);
  233. }
  234. else
  235. {
  236. poprzedni->next=wsk->next;
  237. free(wsk);
  238. }
  239. return 1;
  240. }
  241. }
  242.  
  243. //usuwa po imieniu i nazwisku
  244. void usun_imnaz(Osoba** lista)
  245. {
  246. char im[100];
  247. char naz[100];
  248.  
  249. printf("\nPodaj imie:\n ");
  250. scanf("%s", im);
  251.  
  252. printf("\nPodaj nazwisko: \n");
  253. scanf("%s", naz);
  254.  
  255. if(usun_imnaz_lista(im, naz, lista))
  256.  
  257. printf("\nOsoba zostala usunieta\n");
  258. else
  259. printf("\nOsoba nie zostala usunieta, nie ma takiej osoby\n");
  260.  
  261. }
  262. /////// WHILEM SZUKA OSOBY KTORA CHCEMY ZMODIFYKIOWAC I ZMIENIA JEJ IMIE CZY COKOLWIEK
  263. void modyfikuj_osobe(Osoba** lista)
  264. {
  265. char im[100];
  266. char naz[100];
  267. Osoba* wsk= *lista;
  268.  
  269. printf("\nPodaj imie:\n ");
  270. scanf("%s", im);
  271. printf("\nPodaj nazwisko:\n ");
  272. scanf("%s", naz);
  273.  
  274. while((wsk != NULL) && (( strcmp(wsk->imie, im)==0) || (strcmp(wsk->nazwisko, naz )==0) )) {
  275. printf("\nPodaj nowe imie:\n ");
  276. scanf("%s", &*wsk->imie);
  277. printf("\nPodaj nowe nazwisko: \n");
  278. scanf("%s", &*wsk->nazwisko);
  279. printf("\nPodaj nowa pleć:\n ");
  280. scanf("%s", &*wsk->plec);
  281. printf("\nPodaj nowy wiek:\n ");
  282. int wiek = (int) NULL;
  283. scanf("%d",&wiek);
  284. if(wiek>=18)
  285. (wsk->wiek)= (int) wiek;
  286. else {
  287. char s1[] = "";
  288. printf("Czy posiada zgode opiekuna?");
  289. scanf("%s", s1);
  290. char s2[] = "TAK";
  291. if (strcmp(s1, s2) == 0) {
  292. printf("Podaj imie opiekuna:");
  293. scanf("%s", wsk->imieop);
  294. printf("Podaj nazwisko opiekuna:");
  295. scanf("%s", wsk->nazwiskoop);
  296. printf("Podaj numer telefonu opiekuna:");
  297. scanf("%d", &wsk->numertelefonu);
  298. (wsk->wiek)= (int) wiek;
  299.  
  300. break;
  301. } else {
  302. printf("\nNie ma zgody opiekuna\n");
  303. break;
  304. }
  305. }
  306.  
  307.  
  308.  
  309. }
  310.  
  311. }
  312.  
  313. void wypisz_osobe_lista(Osoba** lista, int ID)
  314. {
  315. int i;
  316. Osoba* wsk = *lista;
  317. for(i = 1; i < ID; i++)
  318. {
  319. wsk=wsk->next;
  320.  
  321. }
  322. printf("%d %s %s %s %d", i, wsk->imie, wsk->nazwisko,wsk->plec , wsk->wiek);
  323. if(wsk->wiek>=18)
  324. printf("%d\n",wsk->numertelefonu);
  325. else
  326. printf("%d %s %s %s %d %d\n", i, wsk->imieop, wsk->nazwiskoop,wsk->plec , wsk->wiek,wsk->numertelefonu);
  327. }
  328.  
  329. //wypisz osobe o podanym indexie
  330. void wypisz_osobe(Osoba* lista)
  331. {
  332. int ID;
  333.  
  334. printf("\nPodaj numer osoby: \n" );
  335. scanf("%d", &ID);
  336.  
  337. if((ID > dlugosc_listy(lista)) || (ID < 1))
  338. {
  339. printf("\nNie ma takiego indeksu\n");
  340.  
  341. }
  342. else
  343. wypisz_osobe_lista(&lista, ID);
  344.  
  345. }
  346.  
  347. int main()
  348. {
  349. Osoba* lista = NULL;
  350.  
  351. int option=1;
  352.  
  353. while(option != 0)
  354. {
  355. printf("\n\n MENU");
  356. printf("\n\n\n 0 Wyjscie z programu");
  357. printf("\n 1 Wpisz dane uczestnika do bazy");
  358. printf("\n 2 Usun uczestnika o podanym indeksie");
  359. printf("\n 3 Usun uczestnika o podanych imieniu i nazwisku");
  360. printf("\n 4 Wyswietl uczestnika o podanym indeksie");
  361. printf("\n 5 Wyswietl cala liste uczestnikow \n");
  362. printf(" 6 Modyfikuj uczestnika\n");
  363.  
  364. scanf("%d", &option);
  365.  
  366. switch(option)
  367. {
  368.  
  369. case 1:
  370. printf("DODAWANIE OSOBY\n");
  371. dodajOsobe(&lista);
  372. break;
  373.  
  374. case 2:
  375. printf("USUWANIE OSOBY O PODANYM INDEKSIE\n");
  376. usun_osobe(&lista);
  377. break;
  378.  
  379. case 3:
  380. printf("USUWANIE OSOBY NA BAZIE IMIENIA I NAZWISKA\n");
  381. usun_imnaz(&lista);
  382. break;
  383.  
  384.  
  385. case 4:
  386. printf("WYSWIETL OSOBE O PODANYM INDEKSIE\n");
  387. wypisz_osobe(lista);
  388. break;
  389.  
  390. case 5:
  391. printf("WYSWIETL CALA BAZE\n");
  392. wypisz_liste(lista);
  393. break;
  394.  
  395. case 6:
  396. printf("MODYFIKUJ\n");
  397. modyfikuj_osobe(&lista);
  398. break;
  399.  
  400. }
  401. }
  402.  
  403. // listagatunek odczyt_gatunkow(const char sciezka){
  404. // listagatunek gatunki_head = NULL;
  405. // FILE plik;
  406. // plik = fopen(sciezka,"rt");
  407. // if(plik == NULL){
  408. // printf("\nERROR 404\nBlad pliku %s", sciezka);
  409. // return NULL;
  410. // }
  411. // listagatunek gatunki_tail = NULL;
  412. // while(!feof(plik)){
  413. // gatunek p;
  414. // fscanf(plik,"%d %s",&p.id_gatunku, p.nazwa);
  415. // listagatunek nowy_el = (listagatunek*)malloc(sizeof(listagatunek));
  416. // nowy_el->value = p;
  417. // nowy_el->value = p;
  418. // nowy_el->next = NULL;
  419. // if(gatunki_head == NULL){
  420. // gatunki_head = nowy_el;
  421. // gatunki_tail = nowy_el;
  422. // }
  423. // else{
  424. // gatunki_tail->next = nowy_el;
  425. // gatunki_tail = gatunki_tail->next;
  426. // }
  427. // }
  428. // fclose(plik);
  429. // return gatunki_head;
  430. // }
  431. // void wypiszgatunek(listagatunek *head){
  432. // if(head == NULL){
  433. // printf("\nERROR 404\nLista gatunkow jest pusta!");
  434. // }
  435. // else{
  436. // listagatunek *p = head;
  437. // do{
  438. // printf("ID: %d ", p->value.id_gatunku);
  439. // printf("Nazwa: %s\n", p->value.nazwa);
  440. // p = p->next;
  441. // }while(p != NULL);
  442. // }
  443. // }
  444.  
  445. int key;
  446. // scanf("%d", &key);
  447.  
  448. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement