Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define PUTANJA "C:\\Podaci\\BinarnaDat.dat"
- #define PUTANJA2 "C:\\Podaci\\TekstualnaDat.txt"
- typedef struct radnik {
- char imePrezime[50];
- char grad[50];
- double plata;
- int godina;
- }RADNIK;
- typedef struct element *POKAZIVAC;
- typedef struct element {
- RADNIK podatak;
- POKAZIVAC sledeci;
- }ELEMENT;
- typedef struct glavaRep *LISTA;
- struct glavaRep{
- POKAZIVAC glava;
- POKAZIVAC rep;
- };
- void kreirajListu (LISTA *lista){
- (*lista)=malloc(sizeof(ELEMENT));
- (*lista)->glava=NULL;
- (*lista)->rep=NULL;
- }
- void ubaciNaPocetakListe (LISTA lista,RADNIK r){
- POKAZIVAC noviElement;
- noviElement=malloc(sizeof(RADNIK));
- if (lista->glava==NULL){
- noviElement->podatak=r;
- noviElement->sledeci=NULL;
- lista->glava=noviElement;
- lista->rep=noviElement;
- }else {
- noviElement->podatak=r;
- noviElement->sledeci=lista->glava;
- lista->glava=noviElement;
- }
- }
- void ubacivanjeUbinarnuDat () {
- FILE *datoteka;
- int kraj=0;
- RADNIK r;
- datoteka=fopen(PUTANJA, "wb");
- if (datoteka==NULL){
- printf("Doslo je do greske prilikom otvaranja datoteke!\n");
- return;
- }
- do{
- printf("Unesite ime i prezime radnika:\n");
- fflush(stdin);
- gets(&r.imePrezime);
- fflush(stdin);
- fwrite (&r.imePrezime,sizeof(RADNIK),1,datoteka);
- printf("Unesite ime grada:\n");
- fflush(stdin);
- gets(&r.grad);
- fflush(stdin);
- fwrite (&r.grad,sizeof(RADNIK),1,datoteka);
- printf("Unesite platu:\n");
- scanf("%lf", &r.plata);
- fwrite(&r.plata,sizeof(RADNIK),1,datoteka);
- printf("Unesite godine:\n");
- scanf("%d", &r.godina);
- fwrite(&r.godina,sizeof(RADNIK),1,datoteka);
- printf("Da li zelite da nastavite sa unosom?(0-DA, 1-NE)");
- scanf("%d",&kraj);
- }while (kraj==0);
- fclose (datoteka);
- }
- int netoPlata (RADNIK r){
- double PDV, zdravstveno,penziono,nezaposlenost,netoPlata;
- PDV=r.plata*10/100;
- zdravstveno=r.plata*7/100;
- penziono=r.plata*3/100;
- nezaposlenost=r.plata*1/100;
- netoPlata=r.plata-PDV-zdravstveno-penziono-nezaposlenost;
- return netoPlata;
- }
- void dodeljivanjeNetoPlate (LISTA lista){
- POKAZIVAC pom;
- pom=malloc(sizeof(RADNIK));
- pom=lista->glava;
- while (pom!=NULL){
- pom->podatak.plata=pom->podatak.plata-netoPlata(pom->podatak);
- }
- }
- void prebacivanjeIzBinarneUListu (LISTA lista){
- FILE *datoteka;
- RADNIK r;
- datoteka=fopen(PUTANJA,"rb");
- if (datoteka==NULL){
- printf("Doslo je do greske prilikom otvaranja datoteke!\n");
- return;
- }
- while (fread(&r,sizeof(RADNIK),1,datoteka)!=0){
- ubaciNaPocetakListe(lista,r);
- }
- fclose(datoteka);
- }
- void prikaziRadnika (RADNIK r){
- printf("Ime i prezime: %s\nGrad: %s\nPlata %.2lf\nGodine: %d\n",r.imePrezime,r.grad,r.plata,r.godina);
- }
- void prikazListe (LISTA lista){
- POKAZIVAC pom;
- int i;
- pom=malloc(sizeof(ELEMENT));
- pom=lista->glava;
- if (lista->glava==NULL){
- printf("Lista je prazna!\n");
- }
- while (pom!=NULL){
- printf("%d. radnik\n",i);
- prikaziRadnika(pom->podatak);
- i++;
- pom=pom->sledeci;
- }
- }
- void citanjeCelihBrojevaIzBinarneDatoteke(){
- char broj[1000];
- FILE *datoteka;
- printf("Sadrzaj binarne datoteke: \n");
- datoteka = fopen(PUTANJA, "rb"); //rb-read/binary
- if (datoteka == NULL){
- printf("Dogodila se greska prilikom otvaranja binarne datoteke za citanje!\n");
- return;
- }
- while (fread(&broj, sizeof(broj[1000]), 1, datoteka) != 0){ //fread(adresa broja koji citamo,velicina,koliko,odakle)
- printf("%s\t", broj); //funkcija sama menja kursor za 1
- }
- fclose(datoteka);
- }
- int main(void){
- LISTA lista;
- kreirajListu(&lista);
- ubacivanjeUbinarnuDat();
- prebacivanjeIzBinarneUListu(lista);
- prikazListe(lista);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement