Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.45 KB | None | 0 0
  1.  
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6.  
  7. int poprawne_opcje[]={1,2,3,4,5,6,7,8};
  8.  
  9. int zlicz=0;
  10. int opcja[1]; // albo int x = tab[0]; //numerowanie od indexu 0
  11.  
  12.  
  13. typedef struct pracownik
  14. {
  15. char imie[50];
  16. char nazwisko[50];
  17. char pesel[11];
  18. int rok;
  19. int miesiac;
  20. int dzien;
  21. float pensja;
  22. struct pracownik* next;
  23. } pracownik ;
  24.  
  25. void sortujNazwiska(pracownik* lista)
  26. {
  27.  
  28. pracownik* wsk=lista;
  29. pracownik* poprzedni=NULL;
  30.  
  31. if(lista==NULL)
  32. printf("Lista jest pusta");
  33. else
  34. {
  35.  
  36.  
  37. for(int r=0;r<zlicz;r++)
  38. {
  39. wsk=lista;
  40.  
  41. int i=1;
  42. int zmiana=0;
  43. char imie[50];
  44. char nazwisko[50];
  45. char pesel[11];
  46. int rok;
  47. int miesiac;
  48. int dzien;
  49. float pensja;
  50.  
  51. char imieP[50];
  52. char nazwiskoP[50];
  53. char peselP[11];
  54. int rokP;
  55. int miesiacP;
  56. int dzienP;
  57. float pensjaP;
  58.  
  59. while(wsk!=NULL)
  60. {
  61. if(poprzedni==NULL && i==1) {
  62. strcpy(imie, wsk->imie);
  63. strcpy(nazwisko, wsk->nazwisko);
  64. strcpy(pesel, wsk->pesel);
  65. strcpy(rok, wsk->rok);
  66. strcpy(miesiac, wsk->miesiac);
  67. strcpy(dzien, wsk->dzien);
  68. strcpy(pensja, wsk->pensja);
  69. } else {
  70. if(strcmp(wsk->nazwisko, nazwisko)>0) {
  71. // zostaja bez zmian
  72.  
  73. } else {
  74. //drugie wyzej
  75. strcpy(imie, wsk->imie);
  76. strcpy(nazwisko, wsk->nazwisko);
  77. strcpy(pesel, wsk->pesel);
  78. strcpy(rok, wsk->rok);
  79. strcpy(miesiac, wsk->miesiac);
  80. strcpy(dzien, wsk->dzien);
  81. strcpy(pensja, wsk->pensja);
  82. int wyk =0;
  83. poprzedni=lista;
  84. int k =0;
  85. while(poprzedni!=NULL)
  86. {
  87. if(wyk!=0)
  88. {break;}
  89. if(i==(k+2)) {
  90. strcpy(imieP, poprzedni->imie);
  91. strcpy(nazwiskoP, poprzedni->nazwisko);
  92. strcpy(poprzedni->imie, imie);
  93. strcpy(poprzedni->nazwisko, nazwisko);
  94. strcpy(wsk->imie, imieP);
  95. strcpy(wsk->nazwisko, nazwiskoP);
  96. wyk++;
  97. }
  98. k++;
  99. poprzedni=poprzedni->next;
  100. }
  101. poprzedni=NULL;
  102. }
  103. strcpy(imie, wsk->imie);
  104. strcpy(nazwisko, wsk->nazwisko);
  105. strcpy(pesel, wsk->pesel);
  106. strcpy(rok, wsk->rok);
  107. strcpy(miesiac, wsk->miesiac);
  108. strcpy(dzien, wsk->dzien);
  109. strcpy(pensja, wsk->pensja);
  110. }
  111.  
  112. i++;
  113. wsk=wsk->next;
  114.  
  115. }
  116. }
  117.  
  118.  
  119.  
  120.  
  121.  
  122. int i = 1;
  123. while( wsk != NULL)
  124. {
  125. printf("%d %s %s \n", i, wsk->imie, wsk->nazwisko);
  126. wsk=wsk->next;
  127. i++;
  128. }
  129. }
  130. }
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139. /* int j=1;
  140. int pomocnicza=1;
  141. pracownik* wsk1=lista;
  142.  
  143. while(wsk1!=NULL)
  144. { int i=1;
  145. char imieS[50];
  146. char nazwiskoS[50];
  147. char peselS[11];
  148. int rokS;
  149. int miesiacS;
  150. int dzienS;
  151. float pensjaS;
  152.  
  153. strcpy(imieS,wsk1->imie);
  154. strcpy(nazwiskoS,wsk1->nazwisko);
  155. strcpy(peselS,wsk1->pesel);
  156. rokS=wsk1->rok;
  157. miesiacS=wsk1->miesiac;
  158. dzienS=wsk1->dzien;
  159. pensjaS=wsk1->pensja;
  160.  
  161. if(pomocnicza!=i)
  162. {
  163. i++;
  164. wsk1=wsk1->next;
  165. }
  166. else
  167. {
  168. pomocnicza++;
  169. i=1;
  170. printf("\n%d. %s \n", j, nazwiskoS);
  171. j++;
  172. while(wsk1!=NULL)
  173. {
  174.  
  175. if(strcmp(nazwiskoS,wsk1->nazwisko)>0)
  176. {
  177. strcpy(imieS,wsk1->imie);
  178. strcpy(nazwiskoS,wsk1->nazwisko);
  179. strcpy(peselS,wsk1->pesel);
  180. rokS=wsk1->rok;
  181. miesiacS=wsk1->miesiac;
  182. dzienS=wsk1->dzien;
  183. pensjaS=wsk1->pensja;
  184. }
  185. }
  186.  
  187. }*/
  188. /* int j=1;
  189.  
  190. pracownik* wsk1=lista;
  191. pracownik* wsk2=lista;
  192.  
  193. for(int i=0;i<zlicz;i++)
  194. {
  195. char imieS[50];
  196. char nazwiskoS[50];
  197. char peselS[11];
  198. int rokS;
  199. int miesiacS;
  200. int dzienS;
  201. float pensjaS;
  202.  
  203. strcpy(imieS,wsk1->imie);
  204. strcpy(nazwiskoS,wsk1->nazwisko);
  205. strcpy(peselS,wsk1->pesel);
  206. rokS=wsk1->rok;
  207. miesiacS=wsk1->miesiac;
  208. dzienS=wsk1->dzien;
  209. pensjaS=wsk1->pensja;
  210.  
  211. while(wsk2!=NULL)
  212. {
  213. printf("\n%d. %s \n", j, nazwiskoS);
  214. j++;
  215.  
  216. if(strcmp(nazwiskoS,wsk2->nazwisko)<0)
  217. {
  218. strcpy(imieS,wsk2->imie);
  219. strcpy(nazwiskoS,wsk2->nazwisko);
  220. strcpy(peselS,wsk2->pesel);
  221. rokS=wsk2->rok;
  222. miesiacS=wsk2->miesiac;
  223. dzienS=wsk2->dzien;
  224. pensjaS=wsk2->pensja;
  225.  
  226. }
  227.  
  228. wsk2=wsk2->next;
  229.  
  230. }
  231.  
  232. wsk1=wsk1->next;
  233.  
  234. }
  235.  
  236. */
  237. /*char sortowanie[zlicz][50];
  238. char pomocnicza[zlicz][50];
  239. int i=0;
  240.  
  241. pracownik* wsk = lista;
  242.  
  243. if(lista == NULL)
  244. {
  245. printf("Lista jest pusta");
  246. }
  247. else
  248.  
  249. {
  250.  
  251.  
  252. while(wsk !=NULL)
  253. {
  254. sortowanie[i][50]=wsk->nazwisko;
  255. wsk=wsk->next;
  256. i++;
  257. }
  258. }
  259.  
  260. for(int j=0;j<i;j++)
  261. {
  262. printf("%s",sortowanie[i][50]);
  263. }*/
  264.  
  265.  
  266. void dodaj(pracownik** lista, pracownik* nowa)
  267. {
  268.  
  269. nowa->next=NULL;
  270.  
  271. if((*lista)==NULL)
  272. {
  273. *lista = nowa;
  274. }
  275. else
  276. {
  277. pracownik* wsk = *lista;
  278. while(wsk->next != NULL)
  279. {
  280. wsk = wsk->next;
  281.  
  282. }
  283. wsk->next = nowa;
  284. }
  285.  
  286. zlicz++;
  287. }
  288.  
  289. void wzor()
  290. {
  291. printf("#####################################\n\n");
  292. }
  293.  
  294. void menu()
  295. {
  296.  
  297.  
  298. puts("\tMenu: \n"); // menu mozna w tablicy rozpisac ewentualnie
  299.  
  300. puts(" 1.Dodanie nowego pracownika.");
  301. puts(" 2.Edycja obecnego pracownika.");
  302. puts(" 3.Usuwanie pracownika.");
  303. puts(" 4.Wypisanie wszystkich pracownikow.");
  304. puts(" 5.Wyszukanie wskazanego pracownika.");
  305. puts(" 6.Utworz plik ze wskazana data.");
  306. puts(" 7.Utworz plik ze wskazana placa.");
  307. puts(" 8.Zakoncz program.\n");
  308.  
  309. wzor();
  310.  
  311. printf(" Wybierz czynnosc: ");
  312. scanf("%d",&opcja[0]);
  313.  
  314. }
  315.  
  316. void dodajPracownika(pracownik** lista)
  317. {
  318. pracownik* nowa = (pracownik*)malloc(sizeof(pracownik));
  319. printf("Podaj imie: ");
  320. scanf("%s", nowa->imie);
  321.  
  322. printf("Podaj nazwisko: ");
  323. scanf("%s", nowa->nazwisko);
  324.  
  325. printf("Podaj pesel: " );
  326. scanf("%s", nowa->pesel);
  327.  
  328. printf("Podaj rok: " );
  329. scanf("%d", &nowa->rok);
  330.  
  331. printf("Podaj miesiac (odpowiednio 1-styczen 2-luty i tak do grudnia: " );
  332. scanf("%d", &nowa->miesiac);
  333.  
  334. printf("Podaj dzien: " );
  335. scanf("%d", &nowa->dzien);
  336.  
  337. printf("Podaj pensje: " );
  338. scanf("%f", &nowa->pensja);
  339.  
  340.  
  341. dodaj(lista, nowa);
  342. }
  343.  
  344. void edytujPracownika(pracownik* lista)
  345. {
  346.  
  347. if(lista == NULL) {
  348. printf("\nLista jest pusta. Nie posiada elementow do edycji.\n\n");
  349. } else
  350. {
  351.  
  352. system("@cls||clear");
  353. int i=1,nr,n1;
  354. pracownik*wsk=lista;
  355. while(wsk!=NULL)//wyswietlanie listy
  356. {
  357. printf("%d. ",i);
  358. printf("%s | %s\n",wsk->imie,wsk->nazwisko);
  359. i++;
  360. wsk=wsk->next;
  361. }
  362. printf("Podaj numer do edycji: ");//wybranie elementu po indexie do edycji
  363. scanf("%d",&nr);
  364. wsk=lista;
  365. for(i=1;i<nr;i++)//sprawdzenie czy dobry numer
  366. {
  367. wsk=wsk->next;
  368. if(wsk==NULL){printf("Zly numer");}
  369. }
  370. printf("Spis pracownikow: \n");
  371. printf("1.Imie | 2.Nazwisko | 3. Pesel | 4.Rok zatrudnienia | 5.Miesiac zatrudnienia. | 6.Dzien zatrudnienia | 7.Pensja.\n");
  372. printf("%s | %s | %s | %d | %d | %d | %f",wsk->imie,wsk->nazwisko,wsk->pesel,wsk->rok,wsk->miesiac,wsk->dzien,wsk->pensja);
  373. printf("\nWybierz numer kolumny do edycji: ");
  374. scanf("%d",&n1);//tutaj wybieramy jaka wartosc chce edytowac na podstawie nr kolumny, uzyty switch case
  375. switch(n1)
  376. {
  377.  
  378. case 1:
  379. printf("Podaj imie: ");
  380. scanf("%s", wsk->imie);
  381. break;
  382. case 2:
  383. printf("Podaj nazwisko: ");
  384. scanf("%s", wsk->nazwisko);
  385. break;
  386. case 3:
  387. printf("Podaj pesel: " );
  388. scanf("%s", wsk->pesel);
  389. break;
  390. case 4:
  391. printf("Podaj rok: " );
  392. scanf("%d", &wsk->rok);
  393. break;
  394. case 5:
  395. printf("Podaj miesiac (odpowiednio 1-styczen 2-luty i tak do grudnia: " );
  396. scanf("%d", &wsk->miesiac);
  397. break;
  398. case 6:
  399. printf("Podaj dzien: " );
  400. scanf("%d", &wsk->dzien);
  401. break;
  402. case 7:
  403. printf("Podaj pensje: " );
  404. scanf("%f", &wsk->pensja);
  405. break;
  406. default:
  407. printf("Zla kolumna");
  408. break;
  409. }
  410. }
  411. }
  412.  
  413. int usunPomocnicza(char* pesel,pracownik** lista)
  414. {
  415.  
  416. pracownik* poprzedni=NULL;
  417. pracownik* wsk= *lista;
  418.  
  419. while((wsk != NULL) && (strcmp(wsk->pesel, pesel)!=0) )
  420. {
  421. poprzedni=wsk;
  422. wsk=wsk->next;
  423. }
  424. if(wsk == NULL )
  425. {
  426. return 0;
  427. }
  428. else
  429. {
  430. if(poprzedni==NULL)
  431. {
  432. (*lista)=(*lista)->next;
  433. free(wsk);
  434. }
  435. else
  436. {
  437. poprzedni->next=wsk->next;
  438. free(wsk);
  439. }
  440. return 1;
  441. }
  442. }
  443.  
  444. void usunPracownika(pracownik** lista)
  445. {
  446. if((*lista) == NULL) {
  447. printf("\nLista jest pusta. Nie posiada elementow do usuniecia.\n\n");
  448. } else
  449. {
  450.  
  451.  
  452. char pesel[11];
  453.  
  454.  
  455. printf("Podaj PESEL pracownika ktorego chcesz usunac: ");
  456. scanf("%s", pesel);
  457.  
  458. if(usunPomocnicza(pesel, lista))
  459.  
  460. printf("Pracownik zostal usuniet z bazy.\n");
  461. else
  462. printf("\nPracownik nie zostal usuniety z bazy lub nie ma takiej osoby.\n\n");
  463. }
  464. }
  465.  
  466. void wypiszPracownikow(pracownik* lista)
  467. {
  468. pracownik* wsk = lista;
  469.  
  470. if(lista == NULL) {
  471. printf("\nLista jest pusta. Nie posiada elementow do wypisania\n\n");
  472. } else {
  473. int i=1;
  474. while( wsk != NULL)
  475. {
  476. printf("\n\n%d. %s %s %s %d %d %d %.2f\n\n", i, wsk->imie, wsk->nazwisko, wsk->pesel, wsk->rok, wsk->miesiac, wsk->dzien, wsk->pensja);
  477. wsk=wsk->next; // sortowanie przy wypisuwaniu dac
  478. i++;
  479. }
  480. }
  481.  
  482. }
  483.  
  484. void wyszukajPracownika(pracownik* lista)
  485. {
  486.  
  487. if(lista == NULL) {
  488. printf("\nLista jest pusta. Nie posiada zadnego elementu do wyszukania.\n\n");
  489. } else
  490. {
  491. char pomocnicza2[11];
  492.  
  493. printf("Podaj PESEL szukanego pracownika: " );
  494. scanf("%s", pomocnicza2);
  495.  
  496. pracownik* wsk = lista;
  497.  
  498. if(lista == NULL) {
  499. printf("LISTA JEST PUSTA");
  500. } else
  501. {
  502.  
  503. int i=0;
  504. while( wsk != NULL)
  505. { if(strcmp(wsk->pesel,pomocnicza2)==0)
  506. {
  507. printf("\n\n %s %s %s %d %d %d %.2f\n\n", wsk->imie, wsk->nazwisko, wsk->pesel, wsk->rok, wsk->miesiac, wsk->dzien, wsk->pensja);
  508. i++;
  509. }
  510.  
  511. wsk=wsk->next; // sortowanie przy wypisuwaniu dac
  512.  
  513. }
  514. if(i==0)
  515. {
  516. printf("Pracownik o podanym PESEL'u nie istnieje!");
  517. }
  518.  
  519. }
  520. }
  521. }
  522.  
  523. void dataPracownika(pracownik* lista)
  524. {
  525.  
  526. if(lista== NULL) {
  527. printf("\nLista jest pusta. Nie posiada elementow do zapisu.\n\n");
  528. } else
  529. {
  530. pracownik* wsk = lista;
  531.  
  532. FILE *data_pracownikow;
  533.  
  534. int i=1;
  535.  
  536. int dany_rok,dany_miesiac,dany_dzien;
  537.  
  538. printf("Podaj rok, od ktorego chcesz utworzyc spis pracownikow: ");
  539. scanf("%d",&dany_rok);
  540. printf("Podaj miesiac, od ktorego chcesz utworzyc spis pracownikow: ");
  541. scanf("%d",&dany_miesiac);
  542. printf("Podaj dzien, od ktorego chcesz utworzyc spis pracownikow: ");
  543. scanf("%d",&dany_dzien);
  544.  
  545. data_pracownikow=fopen("SpisDat.txt","w");
  546.  
  547. if(lista==NULL)
  548. {
  549. printf("Lista jest pusta");
  550. }
  551. else
  552. {
  553.  
  554. while( wsk != NULL)
  555. {
  556. if(((wsk->rok)>=dany_rok)&&((wsk->miesiac)>=dany_miesiac)&&((wsk->dzien)>=dany_dzien))
  557. {
  558. fprintf(data_pracownikow,"%d. %s %s %s %d %d %d %.2f\n", i, wsk->imie, wsk->nazwisko, wsk->pesel, wsk->rok, wsk->miesiac, wsk->dzien, wsk->pensja);
  559. i++;
  560. }
  561. wsk=wsk->next;
  562. }
  563.  
  564. }
  565. fclose(data_pracownikow);
  566. }
  567. }
  568.  
  569. void kwotaPracownika(pracownik* lista)
  570. {
  571. if(lista== NULL) {
  572. printf("\nLista jest pusta. Nie posiada elementow do zapisu.\n\n");
  573. } else
  574. {
  575. pracownik* wsk = lista;
  576.  
  577. FILE *kwota_pracownikow;
  578.  
  579. int i=1;
  580.  
  581. float dana_kwota;
  582.  
  583. printf("Podaj kwote, od jakiej chcesz utworzyc spis pracownikow: ");
  584. scanf("%f",&dana_kwota);
  585.  
  586. kwota_pracownikow=fopen("SpisKwot.txt","w");
  587.  
  588. if(lista == NULL)
  589. {
  590. printf("Lista jest pusta");
  591. }
  592. else
  593. {
  594.  
  595. while( wsk != NULL)
  596. {
  597. if((wsk->pensja)>=dana_kwota)
  598. {
  599. fprintf(kwota_pracownikow,"%d. %s %s %s %d %d %d %.2f\n", i, wsk->imie, wsk->nazwisko, wsk->pesel, wsk->rok, wsk->miesiac, wsk->dzien, wsk->pensja);
  600. i++;
  601. }
  602. wsk=wsk->next;
  603.  
  604. }
  605.  
  606. }
  607. fclose(kwota_pracownikow);
  608. }
  609. }
  610.  
  611. int main()
  612. {
  613. pracownik* lista=NULL;
  614.  
  615.  
  616. wzor();
  617. puts(" Witaj w bazie danych pracownikow.\n");
  618. wzor();
  619. menu();
  620.  
  621. while(1)
  622. {
  623. // if(opcja[0])
  624. switch(opcja[0])
  625. {
  626. case 1: dodajPracownika(&lista);
  627. break;
  628. case 2: edytujPracownika(lista);
  629. break;
  630. case 3: usunPracownika(&lista);
  631. break;
  632. case 4: wypiszPracownikow(lista);
  633. break;
  634. case 5: wyszukajPracownika(lista);
  635. break;
  636. case 6: dataPracownika(lista);
  637. break;
  638. case 7: kwotaPracownika(lista);
  639. break;
  640. case 8: printf("Nastepuje zamkniecie programu, nacisnij dowolny przycisk, aby zamknac.\n"); exit(0);
  641. break;
  642. case 9: sortujNazwiska(lista);
  643. break;
  644. default: puts("\nPodano niewlasciwe dane, prosze podac wlasciwe.\n\n");
  645. break;
  646.  
  647. }
  648. wzor();
  649. menu();
  650. }
  651.  
  652. return 0;
  653. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement