Advertisement
Ivan_12

datoteka2

May 30th, 2016
358
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.79 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define PUTANJA "C:\\Podaci\\BinarnaDat2.dat"
  6. #define PUTANJA2 "C:\\Podaci\\TekstualnaDat2.txt"
  7.  
  8.  
  9.  
  10. typedef struct radnik {
  11.     char imePrezime[50];
  12.     char grad[50];
  13.     double plata;
  14.     int godina;
  15.  
  16. }RADNIK;
  17. typedef struct radnik NIZ[100];
  18.  
  19. typedef struct element *POKAZIVAC;
  20.  
  21. typedef struct element{
  22.     RADNIK podatak;
  23.     POKAZIVAC sledeci;
  24. }ELEMENT;
  25.  
  26. typedef struct glavaRep *LISTA;
  27.  
  28. struct glavaRep {
  29.     POKAZIVAC glava;
  30.     POKAZIVAC rep;
  31. };
  32.  
  33.  
  34. void kreirajListu (LISTA *lista){
  35.     (*lista)=malloc(sizeof(ELEMENT));
  36.     (*lista)->glava=NULL;
  37.     (*lista)->rep=NULL;
  38.  
  39. }
  40.  
  41. void ubacitiElementNaPocetakListe (LISTA lista, RADNIK r){
  42.     POKAZIVAC noviElement;
  43.     noviElement=malloc(sizeof(ELEMENT));
  44.  
  45.     if (lista->glava==NULL){
  46.         noviElement->podatak=r;
  47.         noviElement->sledeci=NULL;
  48.         lista->glava=noviElement;
  49.         lista->rep=noviElement;
  50.    
  51.     }else {
  52.         noviElement->podatak=r;
  53.         noviElement-lista->glava;
  54.         lista->glava=noviElement;
  55.     }
  56.  
  57.  
  58. }
  59.  
  60. void prikaziRadnika (RADNIK r){
  61.  
  62.     printf("Ime i prezime: %s\nGrad: %s\nPlata: %.2lf\nGodine: %d\n", r.imePrezime,r.grad,r.plata,r.godina);
  63. }
  64.  
  65. void prikazListe(LISTA lista){
  66.     POKAZIVAC pom;
  67.     int i=1;
  68.     pom=malloc(sizeof(ELEMENT));
  69.     pom=lista->glava;
  70.  
  71.     while(pom!=NULL){
  72.  
  73.         printf("%d. Radnik\n",i);
  74.         prikaziRadnika(pom->podatak);
  75.         i++;
  76.     }
  77.  
  78. }
  79.  
  80. void unosUBinarnuDatoteku (){
  81.     FILE *datoteka;
  82.     int kraj=0;
  83.     RADNIK r;
  84.  
  85.     datoteka=fopen(PUTANJA, "wb");
  86.  
  87.     if (datoteka==NULL){
  88.         printf("Doslo je do greske prilikom otvaranja datoteke!\n");
  89.         return;
  90.     }
  91.     do {
  92.    
  93.         printf("Unesite ime i prezime\n");
  94.         fflush(stdin);
  95.         gets(&r.imePrezime);
  96.         fflush(stdin);
  97.  
  98.         printf("Unesite naziv grada\n");
  99.         fflush(stdin);
  100.         gets(&r.grad);
  101.         fflush(stdin);
  102.  
  103.         printf("Unesite platu\n");
  104.         scanf("%lf", &r.plata);
  105.  
  106.         printf("Unesite broj godina\n");
  107.         scanf("%d", &r.godina);
  108.  
  109.         fwrite (&r,sizeof(RADNIK),1,datoteka);
  110.  
  111.         printf("Da li zelite da unesete jos radnika?(0-DA,1-NE)");
  112.         scanf("%d",& kraj);
  113.  
  114.    
  115.     }while (kraj==0);
  116.  
  117.  
  118.     fclose (datoteka);
  119. }
  120.  
  121. int brutoPlata (RADNIK r){
  122.    
  123.     double brutoPlata, PDV, nezaposlenost,zdravstveno,penziono;
  124.  
  125.     PDV=r.plata*10/100;
  126.     nezaposlenost=r.plata*1/100;
  127.     zdravstveno=r.plata*6/100;
  128.     penziono=r.plata*3/100;
  129.  
  130.     brutoPlata=r.plata-PDV-nezaposlenost-zdravstveno-penziono;
  131.  
  132.     return brutoPlata;
  133.  
  134. }
  135.  
  136. void dodeljivanjeBrutoPlate (NIZ niz, int brojEl){
  137.     int i;
  138.  
  139.     for (i=0;i<brojEl;i++){
  140.         niz[i].plata=brutoPlata(niz[i]);
  141.     }
  142. }
  143.  
  144. void prebacivanjeIzBinarneUNiz (NIZ niz, int *brojEl){
  145.     FILE *datoteka;
  146.     RADNIK r;
  147.     datoteka=fopen(PUTANJA, "rb");
  148.  
  149.     if (datoteka==NULL){
  150.         printf("Doslo je do greske prilikom otvaranja datoteke!\n");
  151.         return;
  152.     }
  153.  
  154.         while (fread(&r,sizeof(RADNIK),1,datoteka)!=0){
  155.             niz[*brojEl]=r;
  156.             (*brojEl)++;
  157.     }
  158.  
  159.  
  160.    
  161.     fclose (datoteka);
  162.  
  163. }
  164.  
  165. void izNizaUlistu(NIZ niz,int brojEl,LISTA lista){
  166.     int i;
  167.  
  168.     for (i=0;i<brojEl;i++){
  169.         ubacitiElementNaPocetakListe(lista,niz[i]);
  170.     }
  171.  
  172. }
  173.  
  174. void citanjeIzBinarneDatoteke (){
  175.  
  176.     FILE *datoteka;
  177.     RADNIK r;
  178.     int i=1;
  179.  
  180.     datoteka=fopen(PUTANJA, "rb");
  181.  
  182.     if (datoteka==NULL){
  183.         printf("Doslo je do greske prilikom otvaranja datoteke!\n");
  184.         return;
  185.     }
  186.  
  187.     while (fread(&r,sizeof(RADNIK),1,datoteka)!=0){
  188.         printf("%d. Radnik\n",i);
  189.         prikaziRadnika(r);
  190.         i++;
  191.         printf("\n");
  192.     }
  193.  
  194.     fclose (datoteka);
  195. }
  196.  
  197. void prikazNiza (NIZ niz, int brojEl){
  198.     int i;
  199.    
  200.  
  201.     for (i=0;i<brojEl;i++){
  202.         printf("%d.Radnik\n",i+1);
  203.         prikaziRadnika(niz[i]);
  204.         printf("\n");
  205.     }
  206.     printf("\n");
  207. }
  208.  
  209. int main(void){
  210.     NIZ niz;
  211.     int brojEl;
  212.     LISTA lista;
  213.     kreirajListu(&lista);
  214.  
  215.  
  216.     //unosUBinarnuDatoteku();
  217.     //citanjeIzBinarneDatoteke();
  218.     prebacivanjeIzBinarneUNiz(niz,&brojEl);
  219.     //izNizaUlistu(niz,brojEl,lista);
  220.     //prikazListe(lista);
  221.     prikazNiza(niz,brojEl);
  222.     return 0;
  223. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement