Advertisement
Ivan_12

datoteka

May 30th, 2016
2,599
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define PUTANJA "C:\\Podaci\\BinarnaDat.dat"
  6. #define PUTANJA2 "C:\\Podaci\\TekstualnaDat.txt"
  7.  
  8. typedef struct radnik {
  9.     char imePrezime[50];
  10.     char grad[50];
  11.     double plata;
  12.     int godina;
  13. }RADNIK;
  14.  
  15. typedef struct element *POKAZIVAC;
  16.  
  17. typedef struct element {
  18.     RADNIK podatak;
  19.     POKAZIVAC sledeci;
  20. }ELEMENT;
  21.  
  22. typedef struct glavaRep *LISTA;
  23.  
  24. struct glavaRep{
  25.     POKAZIVAC glava;
  26.     POKAZIVAC rep;
  27. };
  28.  
  29.  
  30. void kreirajListu (LISTA *lista){
  31.     (*lista)=malloc(sizeof(ELEMENT));
  32.     (*lista)->glava=NULL;
  33.     (*lista)->rep=NULL;
  34. }
  35.  
  36. void ubaciNaPocetakListe (LISTA lista,RADNIK r){
  37.     POKAZIVAC noviElement;
  38.     noviElement=malloc(sizeof(RADNIK));
  39.  
  40.     if (lista->glava==NULL){
  41.         noviElement->podatak=r;
  42.         noviElement->sledeci=NULL;
  43.         lista->glava=noviElement;
  44.         lista->rep=noviElement;
  45.     }else {
  46.         noviElement->podatak=r;
  47.         noviElement->sledeci=lista->glava;
  48.         lista->glava=noviElement;
  49.     }
  50.  
  51. }
  52.  
  53. void ubacivanjeUbinarnuDat () {
  54.     FILE *datoteka;
  55.     int kraj=0;
  56.     RADNIK r;
  57.    
  58.     datoteka=fopen(PUTANJA, "wb");
  59.  
  60.     if (datoteka==NULL){
  61.         printf("Doslo je do greske prilikom otvaranja datoteke!\n");
  62.         return;
  63.     }
  64.    
  65.     do{
  66.         printf("Unesite ime i prezime radnika:\n");
  67.         fflush(stdin);
  68.         gets(&r.imePrezime);
  69.         fflush(stdin);
  70.         fwrite (&r.imePrezime,sizeof(RADNIK),1,datoteka);
  71.  
  72.         printf("Unesite ime grada:\n");
  73.         fflush(stdin);
  74.         gets(&r.grad);
  75.         fflush(stdin);
  76.         fwrite (&r.grad,sizeof(RADNIK),1,datoteka);
  77.  
  78.         printf("Unesite platu:\n");
  79.         scanf("%lf", &r.plata);
  80.         fwrite(&r.plata,sizeof(RADNIK),1,datoteka);
  81.    
  82.  
  83.         printf("Unesite godine:\n");
  84.         scanf("%d", &r.godina);
  85.         fwrite(&r.godina,sizeof(RADNIK),1,datoteka);
  86.    
  87.  
  88.  
  89.         printf("Da li zelite da nastavite sa unosom?(0-DA, 1-NE)");
  90.         scanf("%d",&kraj);
  91.     }while (kraj==0);
  92.  
  93.     fclose (datoteka);
  94. }
  95.  
  96. int netoPlata (RADNIK r){
  97.     double PDV, zdravstveno,penziono,nezaposlenost,netoPlata;
  98.  
  99.     PDV=r.plata*10/100;
  100.     zdravstveno=r.plata*7/100;
  101.     penziono=r.plata*3/100;
  102.     nezaposlenost=r.plata*1/100;
  103.  
  104.     netoPlata=r.plata-PDV-zdravstveno-penziono-nezaposlenost;
  105.  
  106.     return netoPlata;
  107. }
  108.  
  109. void dodeljivanjeNetoPlate (LISTA lista){
  110.     POKAZIVAC pom;
  111.     pom=malloc(sizeof(RADNIK));
  112.     pom=lista->glava;
  113.  
  114.     while (pom!=NULL){
  115.         pom->podatak.plata=pom->podatak.plata-netoPlata(pom->podatak);
  116.     }
  117.  
  118.  
  119. }
  120.  
  121. void prebacivanjeIzBinarneUListu (LISTA lista){
  122.     FILE *datoteka;
  123.     RADNIK r;
  124.  
  125.     datoteka=fopen(PUTANJA,"rb");
  126.  
  127.     if (datoteka==NULL){
  128.         printf("Doslo je do greske prilikom otvaranja datoteke!\n");
  129.         return;
  130.     }
  131.  
  132.     while (fread(&r,sizeof(RADNIK),1,datoteka)!=0){
  133.         ubaciNaPocetakListe(lista,r);
  134.     }
  135.  
  136.    
  137.  
  138.     fclose(datoteka);
  139. }
  140.  
  141. void prikaziRadnika (RADNIK r){
  142.    
  143.     printf("Ime i prezime: %s\nGrad: %s\nPlata %.2lf\nGodine: %d\n",r.imePrezime,r.grad,r.plata,r.godina);
  144.    
  145. }
  146.  
  147. void prikazListe (LISTA lista){
  148.     POKAZIVAC pom;
  149.     int i;
  150.     pom=malloc(sizeof(ELEMENT));
  151.     pom=lista->glava;
  152.  
  153.     if (lista->glava==NULL){
  154.         printf("Lista je prazna!\n");
  155.     }
  156.  
  157.     while (pom!=NULL){
  158.         printf("%d. radnik\n",i);
  159.         prikaziRadnika(pom->podatak);
  160.         i++;
  161.         pom=pom->sledeci;
  162.     }
  163. }
  164.  
  165. void citanjeCelihBrojevaIzBinarneDatoteke(){
  166.     char broj[1000];
  167.     FILE *datoteka;
  168.  
  169.     printf("Sadrzaj binarne datoteke: \n");
  170.    
  171.     datoteka = fopen(PUTANJA, "rb");            //rb-read/binary
  172.    
  173.     if (datoteka == NULL){
  174.         printf("Dogodila se greska prilikom otvaranja binarne datoteke za citanje!\n");
  175.         return;
  176.     }
  177.    
  178.     while (fread(&broj, sizeof(broj[1000]), 1, datoteka) != 0){     //fread(adresa broja koji citamo,velicina,koliko,odakle)
  179.         printf("%s\t", broj);                               //funkcija sama menja kursor za 1
  180.     }
  181.     fclose(datoteka);
  182. }
  183. int main(void){
  184.     LISTA lista;
  185.  
  186.     kreirajListu(&lista);
  187.     ubacivanjeUbinarnuDat();
  188.     prebacivanjeIzBinarneUListu(lista);
  189.     prikazListe(lista);
  190.    
  191.     return 0;
  192. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement