Advertisement
Guest User

Untitled

a guest
Jul 17th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.50 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4.  
  5. struct pracownik
  6. {
  7. char imie[10];
  8. char nazwisko[30];
  9. char pesel[15];
  10. int rok_urodzenia;
  11. int od_kiedy_pracuje;
  12. float pensja;
  13. struct pracownik *nast;
  14. };
  15. struct pracownik *first = NULL, *akt;
  16.  
  17.  
  18. void najzatr(struct pracownik *first) // +
  19. {
  20. FILE *plik1;
  21. plik1=fopen("najdluzej_zatrudniony_pracownik.txt","w");
  22. if(plik1==NULL)
  23. return;
  24.  
  25. struct pracownik* biez = first;
  26. struct pracownik* pom = first;
  27.  
  28. int min = biez->od_kiedy_pracuje;
  29.  
  30. while(biez != NULL)
  31. {
  32. if(min > biez->od_kiedy_pracuje)
  33. {
  34. min = biez->od_kiedy_pracuje;
  35. pom = biez;
  36. }
  37. biez = biez->nast;
  38. }
  39.  
  40.  
  41.  
  42. fprintf(plik1,"%s %s", pom->imie, pom->nazwisko);
  43.  
  44. fclose(plik1);
  45. }
  46.  
  47. void najzarobki(struct pracownik *first) // +
  48. {
  49.  
  50.  
  51. FILE *plik2;
  52. plik2=fopen("najlepiej_oplacany_pracownik.txt","w");
  53. if(plik2==NULL)
  54. return;
  55.  
  56. struct pracownik* biez = first;
  57. struct pracownik* pom = first;
  58.  
  59. int max = biez->od_kiedy_pracuje;
  60.  
  61. while(biez != NULL)
  62. {
  63. if(max > biez->pensja)
  64. {
  65. max = biez->od_kiedy_pracuje;
  66. pom = biez;
  67. }
  68. biez = biez->nast;
  69. }
  70.  
  71.  
  72.  
  73. fprintf(plik2,"%s %s", pom->imie, pom->nazwisko);
  74.  
  75. fclose(plik2);
  76. }
  77.  
  78.  
  79. void tworzplik() // +
  80. {
  81. struct pracownik el;
  82. int i, t;
  83. FILE *plik;
  84. plik=fopen("dane.txt","w");
  85. printf("Podaj ilosc pracownikow w firmie ");
  86. scanf("%d",&t);
  87. if(plik==NULL)
  88. return;
  89. else
  90. for(i=0;i<t;i++)
  91. {
  92. printf("podaj imie \n");
  93. scanf("%s",el.imie);
  94. fprintf(plik,"%s\t", el.imie);
  95.  
  96. printf("podaj nazwisko \n");
  97. scanf("%s",el.nazwisko);
  98. fprintf(plik,"%s\t", el.nazwisko);
  99.  
  100. printf("podaj pesel \n");
  101. scanf("%s",el.pesel);
  102. fprintf(plik,"%s\t", el.pesel);
  103.  
  104. printf("podaj rok urodzenia \n");
  105. scanf("%d",&el.rok_urodzenia);
  106. fprintf(plik,"%d\t", el.rok_urodzenia);
  107.  
  108. printf("podaj od kiedy pracuje \n");
  109. scanf("%d",&el.od_kiedy_pracuje);
  110. fprintf(plik,"%d\t", el.od_kiedy_pracuje);
  111.  
  112. printf("podaj pensje \n");
  113. scanf("%f",&el.pensja);
  114. fprintf(plik,"%.2f\t\n", el.pensja);
  115. }
  116.  
  117. fclose(plik);
  118. }
  119.  
  120. struct pracownik * czytajzpliku(struct pracownik *first) // +
  121. {
  122. struct pracownik *biez;
  123.  
  124. FILE *plik;
  125. plik=fopen("dane.txt","r");
  126. if(plik==NULL)
  127. return NULL;
  128. else
  129. {
  130.  
  131. while(!feof(plik))
  132. {
  133. biez=(struct pracownik *)malloc(sizeof(struct pracownik));
  134. biez->nast=NULL;
  135. if(fscanf(plik,"%s %s %s %d %d %f \n", biez->imie, biez->nazwisko, biez->pesel, &biez->rok_urodzenia, &biez->od_kiedy_pracuje, &biez->pensja) == EOF)
  136. break;
  137. if(first==NULL)
  138. {
  139.  
  140. first = biez;
  141.  
  142. }
  143. else
  144. {
  145.  
  146.  
  147. struct pracownik* pom = first;
  148. while(biez->nast != NULL)
  149. {
  150. pom = pom -> nast;
  151. }
  152. pom -> nast = biez;
  153.  
  154. }
  155. }
  156. }
  157. fclose(plik);
  158. return first;
  159.  
  160. }
  161.  
  162.  
  163. struct pracownik * dodaj(struct pracownik *first) //+
  164. {
  165. struct pracownik *biez;
  166. int i, t;
  167. biez = first;
  168. while(biez!=NULL)
  169. biez = biez -> nast;
  170.  
  171. //plik=fopen("dane.txt","a");
  172. printf("Podaj ilu pracownikow chcesz dodac ");
  173. scanf("%d",&t);
  174. //if(plik==NULL)
  175. //return;
  176. //else
  177. for(i=0;i<t;i++)
  178. {
  179. biez=(struct pracownik *)malloc(sizeof(struct pracownik));
  180.  
  181. printf("podaj imie \n");
  182. scanf("%s",biez->imie);
  183.  
  184. printf("podaj nazwisko \n");
  185. scanf("%s",biez->nazwisko);
  186.  
  187. printf("podaj pesel \n");
  188. scanf("%s",biez->pesel);
  189.  
  190. printf("podaj rok urodzenia \n");
  191. scanf("%d",&biez->rok_urodzenia);
  192.  
  193. printf("podaj od kiedy pracuje \n");
  194. scanf("%d",&biez->od_kiedy_pracuje);
  195.  
  196. printf("podaj pensje \n");
  197. scanf("%f",&biez->pensja);
  198.  
  199. biez->nast=biez;
  200. }
  201. return first;
  202. }
  203.  
  204.  
  205.  
  206.  
  207. struct pracownik * edytuj(struct pracownik *first) //WYPIERDALA ÅģE NIE MA TAKIEGO PRACOWNIKA
  208. {
  209. int w;
  210. struct pracownik *biez = first;
  211. struct pracownik el, el2;
  212. printf("podaj imie \n");
  213. scanf("%s",el.imie);
  214. printf("podaj nazwisko \n");
  215. scanf("%s",el.nazwisko);
  216.  
  217. while(biez!=NULL)
  218. {
  219. if(strcmp(biez->imie, el.imie)==strcmp(biez->nazwisko, el.nazwisko))
  220. {
  221. printf("co chcesz edytowac?\n");
  222. printf(" 1 - imie \n");
  223. printf(" 2 - nazwisko\n");
  224. printf(" 3 - pesel\n");
  225. printf(" 4 - rok urodzenia\n");
  226. printf(" 5 - rok zatrudnienia\n");
  227. printf(" 6 - pensja\n");
  228. printf(" 0 - wyjscie z funkcji\n");
  229. scanf("%d", &w);
  230. switch(w)
  231. {
  232. case 1 :
  233. printf("podaj nowe imie\n");
  234. scanf("%s", el2.imie);
  235. strcpy(biez->imie, el2.imie);
  236. break;
  237. case 2 :
  238. printf("podaj nowe nazwisko\n");
  239. scanf("%s", el2.nazwisko);
  240. strcpy(biez->nazwisko, el2.nazwisko);
  241. break;
  242. case 3 :
  243. printf("podaj nowy pesel\n");
  244. scanf("%s", el2.pesel);
  245. strcpy(biez->pesel, el2.pesel);
  246. break;
  247. case 4 :
  248. printf("podaj nowy rok urodzenia\n");
  249. scanf("%d", &el2.rok_urodzenia);
  250. biez->rok_urodzenia=el2.rok_urodzenia;
  251. break;
  252. case 5 :
  253. printf("podaj nowy rok zatrudnienia\n");
  254. scanf("%d", &el2.od_kiedy_pracuje);
  255. biez->od_kiedy_pracuje=el2.od_kiedy_pracuje;
  256. break;
  257. case 6 :
  258. printf("podaj nowa pensja\n");
  259. scanf("%f", &el2.pensja);
  260. biez->pensja=el2.pensja;
  261. break;
  262. case 0 :
  263. printf("koniec funkcji\n");
  264. break;
  265. default :
  266. printf("podales zla cyfre\n");
  267. break;
  268. }
  269. }
  270. else
  271. {
  272. printf("nie ma takiego pracownika w bazie\n");
  273. break;
  274. }
  275. }
  276.  
  277. return first;
  278. }
  279.  
  280. struct pracownik * usun(struct pracownik *first) // +
  281. {
  282. struct pracownik *pop, *biez, el;
  283.  
  284. pop=first;
  285. biez=first->nast;
  286. printf("podaj mie i nazwisko pracownika, ktorego chcesz usunac z listy");
  287. scanf("%s %s", el.imie, el.nazwisko);
  288. if((strcmp(pop->imie,el.imie)==0)&&(strcmp(pop->nazwisko,el.nazwisko)==0))
  289. {
  290. first=biez;
  291. free(pop);
  292.  
  293. }
  294. else
  295. {
  296. while(biez != NULL)
  297. {
  298. if((strcmp(biez->imie,el.imie)==0)&&(strcmp(biez->nazwisko,el.nazwisko)==0))
  299. {
  300. pop->nast = biez->nast;
  301. free(biez);
  302. }
  303. pop = pop->nast;
  304. biez = biez->nast;
  305. }
  306. }
  307.  
  308. return first;
  309. }
  310.  
  311.  
  312. struct pracownik * wypisz(struct pracownik *first)
  313. {
  314. struct pracownik *biez=first;
  315. while(biez!=NULL)
  316. {
  317. printf("Imie: %s nazwisko: %s pesel: %s rok urodzenia: %d pracuje w firmie od: %d pensja: %.2f\n", biez->imie, biez->nazwisko, biez->pesel, biez->rok_urodzenia, biez->od_kiedy_pracuje, biez->pensja);
  318. biez = biez-> nast ;
  319.  
  320. }
  321. return first;
  322. }
  323.  
  324.  
  325. void szukaj(struct pracownik *biez) // DOKONCZYC!!!!!!
  326. {
  327. int w1, w2;
  328. struct pracownik el, el2;
  329. printf("podaj po jakich polach chcesz wyszukac pracownika (wybierz dwa dowolone) ");
  330. printf(" 1 - imie\n");
  331. printf(" 2 - nazwisko\n");
  332. printf(" 3 - pesel\n");
  333. printf(" 4 - rok urodzenia\n");
  334. printf(" 5 - rok zatrudnienia\n");
  335. printf(" 6 - pensja\n");
  336. scanf("%d %d", &w1, &w2);
  337. switch(w1)
  338. {
  339. case 1:
  340. printf("podaj imie \n");
  341. scanf("%s",el.imie);
  342. break;
  343. case 2:
  344. printf("podaj nazwisko \n");
  345. scanf("%s",el.nazwisko);
  346. break;
  347. case 3:
  348. printf("podaj pesel \n");
  349. scanf("%s",el.pesel);
  350. break;
  351. case 4:
  352. printf("podaj rok urodzenia \n");
  353. scanf("%d",&el.rok_urodzenia);
  354. break;
  355. case 5:
  356. printf("podaj od kiedy pracuje \n");
  357. scanf("%d",&el.od_kiedy_pracuje);
  358. break;
  359. case 6:
  360. printf("podaj pensje \n");
  361. scanf("%f",&el.pensja);
  362. break;
  363. }
  364. switch(w2)
  365. {
  366. case 1:
  367. printf("podaj imie \n");
  368. scanf("%s",el2.imie);
  369. break;
  370. case 2:
  371. printf("podaj nazwisko \n");
  372. scanf("%s",el2.nazwisko);
  373. break;
  374. case 3:
  375. printf("podaj pesel \n");
  376. scanf("%s",el2.pesel);
  377. break;
  378. case 4:
  379. printf("podaj rok urodzenia \n");
  380. scanf("%d",&el2.rok_urodzenia);
  381. break;
  382. case 5:
  383. printf("podaj od kiedy pracuje \n");
  384. scanf("%d",&el2.od_kiedy_pracuje);
  385. break;
  386. case 6:
  387. printf("podaj pensje \n");
  388. scanf("%f",&el2.pensja);
  389. break;
  390. }
  391. scanf("%s %s", el.imie, el.nazwisko);
  392. while(biez!=NULL)
  393. {
  394.  
  395. if((strcmp(biez->imie,el.imie)==0)&&(strcmp(biez->nazwisko,el.nazwisko)==0))
  396. printf("Imie: %s nazwisko: %s pesel: %s rok urodzenia: %d \n pracuje w firmie od: %d pensja: %.2f\n", biez->imie, biez->nazwisko, biez->pesel, biez->rok_urodzenia, biez->od_kiedy_pracuje, biez->pensja);
  397. biez=biez->nast;
  398. }
  399. }
  400.  
  401. struct pracownik * zapisz(struct pracownik *first)
  402. {
  403. struct pracownik *biez=first;
  404. FILE *plik;
  405. plik=fopen("dane.txt","w");
  406.  
  407. while(biez!=NULL)
  408. {
  409. fprintf(plik,"%s %s %s %d %d %.2f\n", biez->imie, biez->nazwisko, biez->pesel, biez->rok_urodzenia, biez->od_kiedy_pracuje, biez->pensja);
  410. biez = biez-> nast ;
  411.  
  412. }
  413. return first;
  414. }
  415. //struct pracownik * !!!!!!!!!!!!!!!!!!!!!!!!!!!!
  416.  
  417.  
  418. int main(void)
  419. {
  420. struct pracownik *biez;
  421. first = czytajzpliku(first);
  422. int w=10;
  423. while(w!=0)
  424. {
  425.  
  426.  
  427. printf("************Baza danych pracownikow firmy************\n\n");
  428. printf(" 1 - Utworz baze danych pracownikow \n");
  429. printf(" 2 - Dodaj pracownika \n");
  430. printf(" 3 - Edytuj dane pracownika \n");
  431. printf(" 4 - Usun pracownika \n");
  432. printf(" 5 - Wypisz wszystkich pracownikow \n");
  433. printf(" 6 - Wyszukaj pracownika \n");
  434. printf(" 0 - Zakoncz program \n");
  435.  
  436. scanf("%d", &w );
  437. printf("\n");
  438. switch(w)
  439. {
  440. case 1:
  441. tworzplik();
  442. break;
  443. case 2:
  444. akt = dodaj(akt);
  445. break;
  446. case 3:
  447. first = edytuj(first);
  448. break;
  449. case 4:
  450. first = usun(first);
  451. break;
  452. case 5:
  453. wypisz(first);
  454. break;
  455. case 6:
  456. szukaj(first);
  457. break;
  458. case 0:
  459. printf("Koniec programu \n\n");
  460. break;
  461. default:
  462. printf("Podales niewlasciwa cyfre \n\n");
  463. break;
  464. }
  465. biez=akt;
  466. najzarobki(first);
  467. najzatr(first);
  468. first = zapisz(first);
  469. }
  470.  
  471.  
  472. return 0;
  473. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement