Advertisement
Guest User

Untitled

a guest
Jan 24th, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.92 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <time.h>
  5. #include <ctype.h>
  6.  
  7. //Tablica pomocnicza przy zapisie imion, nazwisk
  8. char znaki[52]="QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm";
  9.  
  10. //Tablica pomocnicza przy zapisie daty, peselu, pensji oraz wyborze menu.
  11. int cyfry[10]={1,2,3,4,5,6,7,8,9,0};
  12.  
  13. //Zmienna pomocnicza przy zliczaniu ilosci pracownikow.
  14. int zlicz=0;
  15.  
  16.  
  17. //Zmienna przechowujaca wybor w menu podany przez uzytkownika. Jest sprawdzana w instrukcji switch.
  18. char opcja[1];
  19.  
  20. //Lista przechowujaca dane pracownika oraz wskaznik na kolejny element.
  21. typedef struct pracownik
  22. {
  23. char imie[50];
  24. char nazwisko[50];
  25. char pesel[11];
  26. int rok;
  27. int miesiac;
  28. int dzien;
  29. int pensja;
  30. struct pracownik* next;
  31. } pracownik ;
  32.  
  33. //Funkcja sortujaca i wypisujaca pracownikow wedlug nazwisk - alfabetycznie.
  34. void sortujNazwiska(pracownik* lista)
  35. {
  36. //Inicjacja poczatku listy (wskaznika na poczatek listy).
  37. pracownik* wsk=lista;
  38. //Przypisanie wartosci dla wskaznika na poprzedni element jako NULL.
  39. pracownik* poprzedni=NULL;
  40.  
  41. //Sprawdzenie, czy lista zawiera jakiekolwiek elementy.
  42. if(lista==NULL)
  43. {
  44. printf("Lista jest pusta");
  45. }
  46.  
  47. else
  48. {
  49.  
  50. //Wykonanie petli sortowania tyle razy, ile jest elementow w liscie.
  51. for(int r=0;r<zlicz;r++)
  52. {
  53. //Przydzielenie wartosci dla wskaznika.
  54. wsk=lista;
  55. //Zmienna pomocnicza i w petli while.
  56. int i=1;
  57. char imie[50];
  58. char nazwisko[50];
  59. char pesel[11];
  60. int rok;
  61. int miesiac;
  62. int dzien;
  63. int pensja;
  64.  
  65. //Inicjacja zmiennych pomocniczych przechowujacych zamieniane wartosci z listy.
  66. char imieP[50];
  67. char nazwiskoP[50];
  68. char peselP[11];
  69. int rokP;
  70. int miesiacP;
  71. int dzienP;
  72. float pensjaP;
  73.  
  74. //Sprawdzenie, czy wskazniki w liscie nie sa rowne NULL.
  75. while(wsk!=NULL)
  76. {
  77. //Jesli wskaznik na poprzednia wartosc jest rowny NULL oraz i=1
  78. //nastepuje przypisanie zawartosci wskaznikow na konkretne dane pracownikow.
  79. if(poprzedni==NULL && i==1) {
  80. strcpy(imie, wsk->imie);
  81. strcpy(nazwisko, wsk->nazwisko);
  82. strcpy(pesel, wsk->pesel);
  83. rok=wsk->rok;
  84. miesiac=wsk->miesiac;
  85. dzien=wsk->dzien;
  86. pensja=wsk->pensja;
  87. } else {
  88. if(strcmp(wsk->nazwisko, nazwisko)>0) {
  89.  
  90. // Jesli funkcja strcmp, ktora porownuje wartosci wyrazow zwroci wartosc wieksza od
  91. // zera wtedy zmienne pozostaja bez zmian. Jesli zwroci inna wartosc wtedy nastepuje
  92. // ponowne przypisanie wartosci wskaznikow dla ich zmienych.
  93.  
  94. } else {
  95.  
  96. strcpy(imie, wsk->imie);
  97. strcpy(nazwisko, wsk->nazwisko);
  98. strcpy(pesel, wsk->pesel);
  99. rok=wsk->rok;
  100. miesiac=wsk->miesiac;
  101. dzien=wsk->dzien;
  102. pensja=wsk->pensja;
  103.  
  104. //Zmienna pomocnicza do warunku if.
  105. int wyk =0;
  106.  
  107. //Przypisanie wartosci poczatku listy dla poprzedniego wskaznika.
  108. poprzedni=lista;
  109.  
  110. //Zmienna pomocnicza
  111. int k=0;
  112.  
  113. //Warunek petli, kiedy wartosc poprzedniego (poczatku listy) jest rozny od zera
  114. while(poprzedni!=NULL)
  115. {
  116. if(wyk!=0)
  117.  
  118. {break;}
  119.  
  120. //Jesli wartosc i jest rowna k+2 wykonywana jest operacja
  121. // zapisu do zmiennych pomocniczych z dopiskiem "P" zawartosci poprzednich wskaznikow,
  122. // a nastepnie przypisanie tym samym zmiennym wartosci aktualnych wskaznikow.
  123. if(i==(k+2))
  124. {
  125. strcpy(imieP, poprzedni->imie);
  126. strcpy(nazwiskoP, poprzedni->nazwisko);
  127. strcpy(peselP, poprzedni->pesel);
  128. rokP=wsk->rok;
  129. miesiacP=wsk->miesiac;
  130. dzienP=wsk->dzien;
  131. pensjaP=wsk->pensja;
  132. strcpy(poprzedni->imie, imie);
  133. strcpy(poprzedni->nazwisko, nazwisko);
  134. wsk->rok=rok;
  135. wsk->miesiac=miesiac;
  136. wsk->dzien=dzien;
  137. wsk->pensja=pensja;
  138. strcpy(wsk->imie, imieP);
  139. strcpy(wsk->nazwisko, nazwiskoP);
  140. strcpy(poprzedni->pesel, peselP);
  141. wsk->rok=rokP;
  142. wsk->miesiac=miesiacP;
  143. wsk->dzien=dzienP;
  144. wsk->pensja=pensjaP;
  145. wyk++;
  146. }
  147. k++;
  148. //przypisane wartosci poprzedniego wskaznika jako wskaznika na pierwszy element listy.
  149. poprzedni=poprzedni->next;
  150. }
  151. //Po zakonczeniu petli while, zapisujemy ponownie wskaznik na poprzedni element
  152. //jako NULL (aby mogla ponownie wykonac sie petla
  153. poprzedni=NULL;
  154. }
  155. //Przypisane wartosci podstawowym zmiennym wartosci wskaznikow na aktualny element.
  156. strcpy(imie, wsk->imie);
  157. strcpy(nazwisko, wsk->nazwisko);
  158. strcpy(pesel, wsk->pesel);
  159. rok=wsk->rok;
  160. miesiac=wsk->miesiac;
  161. dzien=wsk->dzien;
  162. pensja=wsk->pensja;
  163. }
  164.  
  165. i++;
  166.  
  167. //Przesuniecie wskaznika na kolejny element.
  168. wsk=wsk->next;
  169.  
  170. }
  171. }
  172.  
  173.  
  174. int i = 1;
  175.  
  176. //Przesuniecie wskaznika na poczatek listy.
  177. wsk=lista;
  178.  
  179. //Wypisanie posortowanych elementow listy wedlug nazwiska. Dopoki wskaznik jest rozny od NULL, czyli do konca listy.
  180. while(wsk!=NULL)
  181. {
  182. printf("\n\n%d. %s %s %s %d %d %d %d\n\n", i, wsk->imie, wsk->nazwisko, wsk->pesel, wsk->rok, wsk->miesiac, wsk->dzien, wsk->pensja);
  183. wsk=wsk->next;
  184. i++;
  185. }
  186.  
  187. }
  188.  
  189. }
  190.  
  191. //Funkcja dodajaca kolejne wskazniki na elementy w liscie.
  192. void dodaj(pracownik** lista, pracownik* nowa)
  193. {
  194. //Wskaznik nowej na nastepny element jest ustawiany na wartosc NULL.
  195. nowa->next=NULL;
  196.  
  197. //Jesli lista nie istnieje jest tworzona nowa.
  198. if((*lista)==NULL)
  199. {
  200. //
  201. *lista=nowa;
  202. }
  203.  
  204. else
  205. {
  206. //
  207. pracownik* wsk = *lista;
  208. while(wsk->next != NULL)
  209. {
  210. wsk = wsk->next;
  211.  
  212. }
  213. wsk->next = nowa;
  214. }
  215.  
  216. zlicz++;
  217. }
  218.  
  219. //Funkcja upiekszajaca menu.
  220. void wzor()
  221. {
  222. printf("#####################################\n\n");
  223. }
  224.  
  225. //Funkcja wypisujaca zawartosc menu wraz z pobieraniem opcji wyboru.
  226. void menu()
  227. {
  228. wzor();
  229.  
  230. puts("\tMenu: \n"); // menu mozna w tablicy rozpisac ewentualnie
  231.  
  232. wzor();
  233.  
  234. puts(" 1.Dodanie nowego pracownika.");
  235. puts(" 2.Edycja obecnego pracownika.");
  236. puts(" 3.Usuwanie pracownika.");
  237. puts(" 4.Wypisanie wszystkich pracownikow.");
  238. puts(" 5.Wyszukanie wskazanego pracownika.");
  239. puts(" 6.Utworz plik ze wskazana data.");
  240. puts(" 7.Utworz plik ze wskazana placa.");
  241. puts(" 8.Zakoncz program.\n");
  242.  
  243. wzor();
  244.  
  245. }
  246.  
  247. //Funkcja dodajaca pracownika.
  248. void dodajPracownika(pracownik** lista)
  249. {
  250. int z;
  251. system("cls");
  252.  
  253. //Dynamiczna alokacja pamieci pod nowy element listy. Oraz podanie jego zawartosci.
  254. pracownik* nowa = (pracownik*)malloc(sizeof(pracownik));
  255.  
  256. imie:
  257. printf("Podaj imie: ");
  258. scanf("%s", nowa->imie);
  259.  
  260. z=strlen(nowa->imie);
  261. for(int x=0;x<z;x++)
  262. {
  263. if(isalpha(nowa->imie[x]))
  264. {
  265.  
  266. }
  267. else
  268. { printf("Prosze o podanie znakow alfabetu.\n");
  269. //Zmienna pomocnicza do uspania
  270. float time = 0;
  271. int i;
  272. //Petla uspania. Nastepuje moment przerwy w programie.
  273. for (i=1; i>=0;i--)
  274. { //Uplywanie czasu.
  275. while (clock() - time < 2000) {}
  276. time = clock();
  277. }
  278. //Czyszczenie ekranu.
  279. system("cls");
  280. goto imie;
  281. }
  282. }
  283.  
  284. system("cls");
  285.  
  286. nazwisko:
  287. printf("Podaj nazwisko: ");
  288. scanf("%s", nowa->nazwisko);
  289.  
  290. z=strlen(nowa->nazwisko);
  291. for(int x=0;x<z;x++)
  292. {
  293. if(isalpha(nowa->nazwisko[x]))
  294. {
  295.  
  296. }
  297. else
  298. { printf("Prosze o podanie znakow alfabetu.\n");
  299. //Zmienna pomocnicza do uspania
  300. float time = 0;
  301. int i;
  302. //Petla uspania. Nastepuje moment przerwy w programie.
  303. for (i=1; i>=0;i--)
  304. { //Uplywanie czasu.
  305. while (clock() - time < 2000) {}
  306. time = clock();
  307. }
  308. //Czyszczenie ekranu.
  309. system("cls");
  310. goto nazwisko;
  311. }
  312. }
  313.  
  314. system("cls");
  315.  
  316. pesel:
  317.  
  318. printf("Podaj pesel: " );
  319. scanf("%s", nowa->pesel);
  320.  
  321. z=strlen(nowa->pesel);
  322. for(int x=0;x<z;x++)
  323. {
  324. if(isdigit(nowa->pesel[x]))
  325. {
  326.  
  327. }
  328. else
  329. { printf("Prosze o podanie cyfr.\n");
  330. //Zmienna pomocnicza do uspania
  331. float time = 0;
  332. int i;
  333. //Petla uspania. Nastepuje moment przerwy w programie.
  334. for (i=1; i>=0;i--)
  335. { //Uplywanie czasu.
  336. while (clock() - time < 2000) {}
  337. time = clock();
  338. }
  339. //Czyszczenie ekranu.
  340. system("cls");
  341. goto pesel;
  342. }
  343. }
  344.  
  345. system("cls");
  346.  
  347. rok:
  348. printf("Podaj rok: " );
  349. scanf("%d", &nowa->rok);
  350.  
  351. if(nowa->rok%2==0 || nowa->rok%1==0)
  352. {
  353. printf("dobre");
  354. }
  355. else
  356. {
  357. goto rok;
  358. }
  359.  
  360. //system("cls");
  361.  
  362. printf("Podaj miesiac (odpowiednio 1-styczen 2-luty az do grudnia: " );
  363. scanf("%d", &nowa->miesiac);
  364.  
  365. //system("cls");
  366.  
  367. printf("Podaj dzien: " );
  368. scanf("%d", &nowa->dzien);
  369.  
  370. //system("cls");
  371.  
  372. printf("Podaj pensje: " );
  373. scanf("%d", &nowa->pensja);
  374.  
  375.  
  376.  
  377.  
  378. dodaj(lista, nowa);
  379.  
  380. system("cls");
  381. }
  382.  
  383. //Funkcja edytujaca pracownika.
  384. void edytujPracownika(pracownik* lista)
  385. {
  386.  
  387. if(lista == NULL) {
  388. printf("\nLista jest pusta. Nie posiada elementow do edycji.\n\n");
  389.  
  390. } else
  391. {
  392. //Funkcja czyszczaca ekran.
  393. system("@cls||clear");
  394.  
  395. int i=1,nr,n1;
  396.  
  397. //Ustawienie wskaznika na poczatek listy.
  398. pracownik*wsk=lista;
  399.  
  400. //Wyswietlenie aktualnej zawartosci imion i nazwisk pracownikow przy pomocy przesuwania wskaznika.
  401. while(wsk!=NULL)
  402. {
  403. printf("%d. ",i);
  404. printf("%s | %s\n",wsk->imie,wsk->nazwisko);
  405. i++;
  406. wsk=wsk->next;
  407. }
  408.  
  409. //Pobranie numeru elementu listy do edycji.
  410. printf("Podaj numer do edycji: ");
  411. scanf("%d",&nr);
  412.  
  413. //Ustawienie wskaznika na poczatek listy.
  414. wsk=lista;
  415.  
  416. //Sprawdzenie, czy podany numer jest zgodny z wyswietlonymi.
  417. for(i=1;i<nr;i++)
  418. {
  419. wsk=wsk->next;
  420. if(wsk==NULL){printf("Zly numer");}
  421. }
  422.  
  423. //Przedstawienie elementow listy.
  424. printf("Spis pracownikow: \n");
  425. printf("1.Imie | 2.Nazwisko | 3. Pesel | 4.Rok zatrudnienia | 5.Miesiac zatrudnienia. | 6.Dzien zatrudnienia | 7.Pensja.\n");
  426. printf("%s | %s | %s | %d | %d | %d | %d",wsk->imie,wsk->nazwisko,wsk->pesel,wsk->rok,wsk->miesiac,wsk->dzien,wsk->pensja);
  427.  
  428. //Wybor numeru zawartosci do edycji i przekazanie parametru do instrukcji sterujacej switch.
  429. printf("\nWybierz numer zawartosci do edycji: ");
  430. scanf("%d",&n1);
  431.  
  432. switch(n1)
  433. {
  434.  
  435. case 1:
  436. printf("Podaj imie: ");
  437. scanf("%s", wsk->imie);
  438. break;
  439. case 2:
  440. printf("Podaj nazwisko: ");
  441. scanf("%s", wsk->nazwisko);
  442. break;
  443. case 3:
  444. printf("Podaj pesel: " );
  445. scanf("%s", wsk->pesel);
  446. break;
  447. case 4:
  448. printf("Podaj rok: " );
  449. scanf("%d", &wsk->rok);
  450. break;
  451. case 5:
  452. printf("Podaj miesiac (odpowiednio 1-styczen 2-luty i tak do grudnia: " );
  453. scanf("%d", &wsk->miesiac);
  454. break;
  455. case 6:
  456. printf("Podaj dzien: " );
  457. scanf("%d", &wsk->dzien);
  458. break;
  459. case 7:
  460. printf("Podaj pensje: " );
  461. scanf("%d", &wsk->pensja);
  462. break;
  463. default:
  464. printf("Zla kolumna");
  465. break;
  466. }
  467. }
  468. }
  469.  
  470. //Funkcja pomocnicza przy usuwaniu wezlow (wskaznikow) listy.
  471. int usunPomocnicza(char* pesel,pracownik** lista)
  472. {
  473. //
  474. pracownik* poprzedni=NULL;
  475. pracownik* wsk=*lista;
  476.  
  477. //Dopoki wartosc wskaznika jest rozna od NULL oraz wartosc porownania
  478. //zawartosci wskaznika na aktualny PESEL oraz ten podany
  479. while((wsk!=NULL) && (strcmp(wsk->pesel, pesel)!=0))
  480. {
  481. poprzedni=wsk;
  482. wsk=wsk->next;
  483. }
  484. if(wsk==NULL)
  485. {
  486. return 0;
  487. }
  488. else
  489. {
  490. if(poprzedni==NULL)
  491. {
  492. (*lista)=(*lista)->next;
  493. free(wsk);
  494. }
  495. else
  496. {
  497. poprzedni->next=wsk->next;
  498. free(wsk);
  499. }
  500. return 1;
  501. }
  502. }
  503.  
  504. //Funkcja usuwajaca elementy listy w oparciu o funkcje pomocnicza usunPomocnicza.
  505. void usunPracownika(pracownik** lista)
  506. {
  507. //Jesli zawartosc listy jest rowna NULL oznacza to, ze nie posiada zadnych zapisanych elementow.
  508. if((*lista) == NULL) {
  509. printf("\nLista jest pusta. Nie posiada elementow do usuniecia.\n\n");
  510. } else
  511. {
  512.  
  513.  
  514. char pesel[11];
  515.  
  516.  
  517. printf("Podaj PESEL pracownika ktorego chcesz usunac: ");
  518. scanf("%s", pesel);
  519.  
  520. //Wywolanie funkcji pomocniczej usuwajacej wezly wraz z wartosciami poszczegolnych elementow.
  521. if(usunPomocnicza(pesel, lista))
  522.  
  523. printf("Pracownik zostal usuniet z bazy.\n");
  524. else
  525. printf("\nPracownik nie zostal usuniety z bazy lub nie ma takiej osoby.\n\n");
  526. }
  527. }
  528.  
  529. //Funkcja wyszukujaca pracownikow.
  530. void wyszukajPracownika(pracownik* lista)
  531. {
  532.  
  533. if(lista==NULL) {
  534. printf("\nLista jest pusta. Nie posiada zadnego elementu do wyszukania.\n\n");
  535. } else
  536. {
  537. char pomocnicza2[11];
  538.  
  539. printf("Podaj PESEL szukanego pracownika: " );
  540. scanf("%s", pomocnicza2);
  541. //Ustawienie wskaznika na poczatek listy.
  542. pracownik* wsk = lista;
  543.  
  544.  
  545. int i=0;
  546. while(wsk!=NULL)
  547.  
  548. //Porownanie funkcja strcmp poszczegolnych PESEL'ow, jesli funkcja strcmp zwroci 0 oznacza to, ze
  549. //PESEL'e sa rowne.
  550. { if(strcmp(wsk->pesel,pomocnicza2)==0)
  551. { //Wypisanie wyszukanego elementu listy.
  552. printf("\n\n %s %s %s %d %d %d %d\n\n", wsk->imie, wsk->nazwisko, wsk->pesel, wsk->rok, wsk->miesiac, wsk->dzien, wsk->pensja);
  553. i++;
  554. }
  555. //Przesuniecie wskaznika na kolejny element.
  556. wsk=wsk->next; //
  557.  
  558. }
  559.  
  560. //Jesli nie nastapila iteracja, oznacza to, ze nie wyszukano elementu.
  561. if(i==0)
  562. {
  563. printf("Pracownik o podanym PESEL'u nie istnieje!");
  564. }
  565.  
  566.  
  567. }
  568. }
  569.  
  570. //Funkcja zapisujaca elementy listy do pliku w zaleznosci od daty.
  571. void dataPracownika(pracownik* lista)
  572. {
  573. printf("\nLista jest pusta. Nie posiada elementow do zapisu.\n\n");
  574. if(lista==NULL) {
  575.  
  576.  
  577. } else
  578. {
  579. //Ustawienie wskaznika na poczatek listy.
  580. pracownik* wsk = lista;
  581.  
  582. //Utworzenie pliku.
  583. FILE *data_pracownikow;
  584.  
  585. int i=1;
  586.  
  587. int dany_rok,dany_miesiac,dany_dzien;
  588.  
  589. //Wprowadzenie wartosci od ktorych zostana zapisane elementy listy do pliku.
  590. printf("Podaj rok, od ktorego chcesz utworzyc spis pracownikow: ");
  591. scanf("%d",&dany_rok);
  592. printf("Podaj miesiac, od ktorego chcesz utworzyc spis pracownikow: ");
  593. scanf("%d",&dany_miesiac);
  594. printf("Podaj dzien, od ktorego chcesz utworzyc spis pracownikow: ");
  595. scanf("%d",&dany_dzien);
  596.  
  597. //Otwarcie pliku.
  598. data_pracownikow=fopen("SpisDat.txt","w");
  599.  
  600. if(lista==NULL)
  601. {
  602. printf("Lista jest pusta");
  603. }
  604. else
  605. {
  606.  
  607. while( wsk!=NULL)
  608.  
  609. { //Jesli spelnione sa 3 warunki jednoczesnie nastepuje zapis do pliku.
  610. if(((wsk->rok)>=dany_rok)&&((wsk->miesiac)>=dany_miesiac)&&((wsk->dzien)>=dany_dzien))
  611. {
  612. //Zapis elementow do pliku.
  613. fprintf(data_pracownikow,"%d. %s %s %s %d %d %d %d\n", i, wsk->imie, wsk->nazwisko, wsk->pesel, wsk->rok, wsk->miesiac, wsk->dzien, wsk->pensja);
  614. i++;
  615. }
  616. wsk=wsk->next;
  617. }
  618.  
  619. }
  620. //Zamkniecie pliku
  621. fclose(data_pracownikow);
  622. }
  623. }
  624.  
  625. //Funkcja zapisujaca elementow listy od podanej wartosci pensji pracownikow.
  626. void kwotaPracownika(pracownik* lista)
  627. {
  628. if(lista== NULL) {
  629. printf("\nLista jest pusta. Nie posiada elementow do zapisu.\n\n");
  630. } else
  631. {
  632. //Ustawienie wskaznika na poczatek listy.
  633. pracownik* wsk = lista;
  634.  
  635. //Utworzenie pliku.
  636. FILE *kwota_pracownikow;
  637.  
  638. int i=1;
  639.  
  640. int dana_kwota;
  641.  
  642. printf("Podaj kwote, od jakiej chcesz utworzyc spis pracownikow: ");
  643. scanf("%d",&dana_kwota);
  644.  
  645. //Otwarcie pliku.
  646. kwota_pracownikow=fopen("SpisKwot.txt","w");
  647.  
  648. if(lista == NULL)
  649. {
  650. printf("Lista jest pusta");
  651. }
  652. else
  653. {
  654.  
  655. while( wsk != NULL)
  656. {
  657. if((wsk->pensja)>=dana_kwota)
  658. { //Zapis elementow do pliku.
  659. fprintf(kwota_pracownikow,"%d. %s %s %s %d %d %d %d\n", i, wsk->imie, wsk->nazwisko, wsk->pesel, wsk->rok, wsk->miesiac, wsk->dzien, wsk->pensja);
  660. i++;
  661. }
  662. //Przestawienie wskaznika na kolejny element.
  663. wsk=wsk->next;
  664.  
  665. }
  666.  
  667. }
  668. //Zamkniecie pliku.
  669. fclose(kwota_pracownikow);
  670. }
  671. }
  672. //Funkcja wymazujaca stare dane z ekranu.
  673. void wymaz()
  674. {
  675.  
  676.  
  677. printf("Wprowadzone dane sa niepoprawne. Prosze wprowadzic nowe.");
  678.  
  679.  
  680.  
  681.  
  682. //Zmienna pomocnicza do uspania
  683. float time = 0;
  684. int i;
  685. //Petla uspania. Nastepuje moment przerwy w programie.
  686. for (i=1; i>=0;i--)
  687. { //Uplywanie czasu.
  688. while (clock() - time < 2000) {}
  689. time = clock();
  690. }
  691. //Czyszczenie ekranu.
  692. system("cls");
  693. menu();
  694. }
  695. int main()
  696. { //Ustawienie wartosci wskaznika poczatku listy na NULL.
  697. pracownik* lista=NULL;
  698.  
  699. //Wyswietlenie kompletnego menu.
  700. puts(" \nWitaj w bazie danych pracownikow.\n");
  701. menu();
  702.  
  703.  
  704. while(1)
  705. {
  706. printf(" Wybierz czynnosc: ");
  707. scanf("%s",&opcja[0]);
  708.  
  709. if(strlen(opcja)==1)
  710. {
  711.  
  712. //Instrukcja sterujaca switch w zaleznosci od wartosci parametru podanego przez uzytkownika.
  713. switch(opcja[0])
  714. {
  715. case '1': dodajPracownika(&lista);
  716. break;
  717. case '2': edytujPracownika(lista);
  718. break;
  719. case '3': usunPracownika(&lista);
  720. break;
  721. case '4': sortujNazwiska(lista);
  722. break;
  723. case '5': wyszukajPracownika(lista);
  724. break;
  725. case '6': dataPracownika(lista);
  726. break;
  727. case '7': kwotaPracownika(lista);
  728. break;
  729. case '8': return 0;
  730. break;
  731. default: wymaz();
  732. break;
  733.  
  734. }
  735. //Ponowne wyswietlenie menu.
  736. menu();
  737. }
  738.  
  739. else
  740. {
  741. wymaz();
  742. }
  743.  
  744. }
  745.  
  746. return 0;
  747. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement