Advertisement
Guest User

Untitled

a guest
Jan 20th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.24 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int poprawne_opcje[]={1,2,3,4,5,6,7,8};
  6.  
  7. int zlicz=0;
  8. int opcja[1];
  9.  
  10.  
  11. typedef struct pracownik
  12. {
  13. char imie[100];
  14. char nazwisko[100];
  15. char pesel[11];
  16. int rok;
  17. int miesiac;
  18. int dzien;
  19. float pensja;
  20. struct pracownik* next;
  21. } pracownik ;
  22.  
  23. void sortujNazwiska(pracownik* lista)
  24. {
  25.  
  26. char sortowanie[zlicz][3];
  27.  
  28. pracownik* wsk = lista;
  29.  
  30. if(lista == NULL)
  31.  
  32. {
  33. printf("Lista jest pusta");
  34. }
  35.  
  36. else
  37. {
  38. int i = 0;
  39. while(wsk !=NULL)
  40. {
  41. sortowanie[i][0]=wsk->imie;
  42. sortowanie[i][1]=wsk->nazwisko;
  43. sortowanie[i][2]=wsk->pesel;
  44. wsk=wsk->next;
  45. i++;
  46. }
  47.  
  48. }
  49. }
  50.  
  51. void dodaj(pracownik** lista, pracownik* nowa)
  52. {
  53.  
  54. nowa->next=NULL;
  55.  
  56. if((*lista)==NULL)
  57. {
  58. *lista = nowa;
  59. }
  60. else
  61. {
  62. pracownik* wsk = *lista;
  63. while(wsk->next != NULL)
  64. {
  65. wsk = wsk->next;
  66.  
  67. }
  68. wsk->next = nowa;
  69. }
  70.  
  71. zlicz++;
  72. }
  73.  
  74. void wzor()
  75. {
  76. printf("#####################################\n\n");
  77. }
  78.  
  79. void menu()
  80. {
  81.  
  82.  
  83. puts("\tMenu: \n"); // menu mozna w tablicy rozpisac ewentualnie
  84.  
  85. puts(" 1.Dodanie nowego pracownika.");
  86. puts(" 2.Edycja obecnego pracownika.");
  87. puts(" 3.Usuwanie pracownika.");
  88. puts(" 4.Wypisanie wszystkich pracownikow.");
  89. puts(" 5.Wyszukanie wskazanego pracownika.");
  90. puts(" 6.Utworz plik ze wskazana data.");
  91. puts(" 7.Utworz plik ze wskazana placa.");
  92. puts(" 8.Zakoncz program.\n");
  93.  
  94. wzor();
  95.  
  96. printf(" Wybierz czynnosc: ");
  97. scanf("%d",&opcja[0]);
  98.  
  99. }
  100.  
  101.  
  102. void dodajPracownika(pracownik** lista)
  103. {
  104. pracownik* nowa = (pracownik*)malloc(sizeof(pracownik));
  105. printf("Podaj imie: ");
  106. scanf("%s", nowa->imie);
  107.  
  108. printf("Podaj nazwisko: ");
  109. scanf("%s", nowa->nazwisko);
  110.  
  111. printf("Podaj pesel: " );
  112. scanf("%s", nowa->pesel);
  113.  
  114. printf("Podaj rok: " );
  115. scanf("%d", &nowa->rok);
  116.  
  117. printf("Podaj miesiac (odpowiednio 1-styczen 2-luty i tak do grudnia: " );
  118. scanf("%d", &nowa->miesiac);
  119.  
  120. printf("Podaj dzien: " );
  121. scanf("%d", &nowa->dzien);
  122.  
  123. printf("Podaj pensje: " );
  124. scanf("%f", &nowa->pensja);
  125.  
  126.  
  127. dodaj(lista, nowa);
  128. }
  129.  
  130. void edytujPracownika(pracownik* lista)
  131. {
  132. system("@cls||clear");
  133. int i=1,nr,n1;
  134. pracownik*wsk=lista;
  135. while(wsk!=NULL)//wyswietlanie listy
  136. {
  137. printf("%d. ",i);
  138. printf("%s | %s\n",wsk->imie,wsk->nazwisko);
  139. i++;
  140. wsk=wsk->next;
  141. }
  142. printf("Podaj numer do edycji: ");//wybranie elementu po indexie do edycji
  143. scanf("%d",&nr);
  144. wsk=lista;
  145. for(i=1;i<nr;i++)//sprawdzenie czy dobry numer
  146. {
  147. wsk=wsk->next;
  148. if(wsk==NULL){printf("Zly numer");}
  149. }
  150. printf("1.Imie | 2.Nazwisko | 3. Pesel | 4.Rok zatrudnienia | 5.Miesiac zatrudnienia. | 6.Dzien zatrudnienia | 7.Pensja.\n");
  151. printf("%s | %s | %s | %d | %d | %d | %f",wsk->imie,wsk->nazwisko,wsk->pesel,wsk->rok,wsk->miesiac,wsk->dzien,wsk->pensja);
  152. printf("\nWybierz numer kolumny do edycji: ");
  153. scanf("%d",&n1);//tutaj wybieramy jaka wartosc chce edytowac na podstawie nr kolumny, uzyty switch case
  154. switch(n1)
  155. {
  156.  
  157. case 1:
  158. printf("Podaj imie: ");
  159. scanf("%s", wsk->imie);
  160. break;
  161. case 2:
  162. printf("Podaj nazwisko: ");
  163. scanf("%s", wsk->nazwisko);
  164. break;
  165. case 3:
  166. printf("Podaj pesel: " );
  167. scanf("%s", wsk->pesel);
  168. break;
  169. case 4:
  170. printf("Podaj rok: " );
  171. scanf("%d", &wsk->rok);
  172. break;
  173. case 5:
  174. printf("Podaj miesiac (odpowiednio 1-styczen 2-luty i tak do grudnia: " );
  175. scanf("%d", &wsk->miesiac);
  176. break;
  177. case 6:
  178. printf("Podaj dzien: " );
  179. scanf("%d", &wsk->dzien);
  180. break;
  181. case 7:
  182. printf("Podaj pensje: " );
  183. scanf("%f", &wsk->pensja);
  184. break;
  185. default:
  186. printf("Zla kolumna");
  187. break;
  188. }
  189.  
  190. }
  191.  
  192. int usunPomocnicza(char* pesel,pracownik** lista)
  193. {
  194. pracownik* poprzedni=NULL;
  195. pracownik* wsk= *lista;
  196.  
  197. while((wsk != NULL) && (strcmp(wsk->pesel, pesel)!=0) )
  198. {
  199. poprzedni=wsk;
  200. wsk=wsk->next;
  201. }
  202. if(wsk == NULL )
  203. {
  204. return 0;
  205. }
  206. else
  207. {
  208. if(poprzedni==NULL)
  209. {
  210. (*lista)=(*lista)->next;
  211. free(wsk);
  212. }
  213. else
  214. {
  215. poprzedni->next=wsk->next;
  216. free(wsk);
  217. }
  218. return 1;
  219. }
  220. }
  221.  
  222. void usunPracownika(pracownik** lista)
  223. {
  224. char pesel[11];
  225.  
  226.  
  227. printf("Podaj PESEL pracownika ktorego chcesz usunac: ");
  228. scanf("%s", pesel);
  229.  
  230. if(usunPomocnicza(pesel, lista))
  231.  
  232. printf("Pracownik zostal usuniet z bazy.");
  233. else
  234. printf("Pracownik nie zostal usuniety z bazy lub nie ma takiej osoby.");
  235.  
  236. }
  237.  
  238. void wypiszPracownikow(pracownik* lista)
  239. {
  240. pracownik* wsk = lista;
  241.  
  242. if(lista == NULL) {
  243. printf("Lista jest pusta");
  244. } else {
  245. int i = 1;
  246. while( wsk != NULL)
  247. {
  248. 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);
  249. wsk=wsk->next; // sortowanie przy wypisuwaniu dac
  250. i++;
  251. }
  252. }
  253.  
  254. }
  255.  
  256. void wyszukajPracownika(pracownik* lista)
  257. {
  258.  
  259. char pomocnicza2[11];
  260.  
  261. printf("Podaj PESEL szukanego pracownika: " );
  262. scanf("%s", pomocnicza2);
  263.  
  264. pracownik* wsk = lista;
  265.  
  266. if(lista == NULL) {
  267. printf("LISTA JEST PUSTA");
  268. } else
  269. {
  270.  
  271. int j=0;
  272. while( wsk != NULL)
  273. { if(strcmp(wsk->pesel,pomocnicza2)==0)
  274. {
  275. 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);
  276. j++;
  277. }
  278.  
  279. wsk=wsk->next; // sortowanie przy wypisuwaniu dac
  280.  
  281. }
  282. if(j==0)
  283. {
  284. printf("Pracownik o podanym PESEL'u nie istnieje!");
  285. }
  286.  
  287. }
  288.  
  289. }
  290.  
  291. void dataPracownika(pracownik* lista) // zapis do pliku pracownikow od podanej daty
  292. {
  293. pracownik* wsk = lista;
  294.  
  295. FILE *data_pracownikow;
  296.  
  297. int i = 1;
  298.  
  299. int dany_rok,dany_miesiac,dany_dzien;
  300.  
  301. printf("Podaj rok, od ktorego chcesz utworzyc spis pracownikow: ");
  302. scanf("%d",&dany_rok);
  303. printf("Podaj miesiac, od ktorego chcesz utworzyc spis pracownikow: ");
  304. scanf("%d",&dany_miesiac);
  305. printf("Podaj dzien, od ktorego chcesz utworzyc spis pracownikow: ");
  306. scanf("%d",&dany_dzien);
  307.  
  308. data_pracownikow=fopen("SpisDat.txt","w+");
  309.  
  310. if(lista == NULL)
  311. {
  312. printf("Lista jest pusta");
  313. }
  314. else
  315. {
  316.  
  317. while( wsk != NULL)
  318. {
  319. if(((wsk->rok)>=dany_rok)&&((wsk->miesiac)>=dany_miesiac)&&((wsk->dzien)>=dany_dzien))
  320. {
  321. 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);
  322. wsk=wsk->next; // sortowanie przy wypisuwaniu dac
  323. i++;
  324. }
  325. }
  326.  
  327. }
  328. fclose(data_pracownikow);
  329. }
  330.  
  331. void kwotaPracownika(pracownik* lista)
  332. {
  333. pracownik* wsk = lista;
  334.  
  335. FILE *kwota_pracownikow;
  336.  
  337. int i = 1;
  338.  
  339. float dana_kwota;
  340.  
  341. printf("Podaj kwote, od jakiej chcesz utworzyc spis pracownikow: ");
  342. scanf("%f",&dana_kwota);
  343.  
  344. kwota_pracownikow=fopen("SpisKwot.txt","w+");
  345.  
  346. if(lista == NULL)
  347. {
  348. printf("Lista jest pusta");
  349. }
  350. else
  351. {
  352.  
  353. while( wsk != NULL)
  354. {
  355. if((wsk->pensja)>=dana_kwota)
  356. {
  357. 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);
  358. wsk=wsk->next; // sortowanie przy wypisuwaniu dac
  359. i++;
  360. }
  361. }
  362.  
  363. }
  364. fclose(kwota_pracownikow);
  365. }
  366.  
  367. int main()
  368. {
  369. pracownik* lista=NULL;
  370.  
  371.  
  372. wzor();
  373. puts(" Witaj w bazie danych pracownikow.\n");
  374. wzor();
  375. menu();
  376.  
  377. while(1)
  378. {
  379. switch(opcja[0])
  380. {
  381. case 1: dodajPracownika(&lista);
  382. break;
  383. case 2: edytujPracownika(lista);
  384. break;
  385. case 3: usunPracownika(&lista);
  386. break;
  387. case 4: wypiszPracownikow(lista);
  388. break;
  389. case 5: wyszukajPracownika(lista);
  390. break;
  391. case 6: dataPracownika(lista);
  392. break;
  393. case 7: kwotaPracownika(lista);
  394. break;
  395. case 8: printf("Nastepuje zamkniecie programu, nacisnij dowolny przycisk, aby zamknac.\n"); exit(0);
  396. break;
  397. default: puts("\nPodano niewlasciwe dane, prosze podac wlasciwe.\n\n");
  398. break;
  399.  
  400. }
  401. menu();
  402. }
  403.  
  404. return 0;
  405. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement