Advertisement
antisa

Untitled

May 25th, 2023 (edited)
680
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.09 KB | None | 0 0
  1. ///// MAIN
  2.  
  3. #define _CRT_SECURE_NO_WARNINGS
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include "header.h"
  7.  
  8. const char* const imeDatoteke = "C:\\Users\\student\\source\\repos\\aaaaLV8\\clanovi.bin";
  9.  
  10. int main() {
  11.  
  12.     int temp = 1;
  13.  
  14.     kreiranjeDatoteke(imeDatoteke);
  15.  
  16.     while (temp) {
  17.         temp = izbornik(imeDatoteke);
  18.     }
  19.  
  20.     printf("Kraj programa!\n");
  21.     return 0;
  22. }
  23.  
  24. /////// FUNCTIONS
  25.  
  26. #define _CRT_SECURE_NO_WARNINGS
  27. #include <stdio.h>
  28. #include <stdlib.h>
  29. #include <string.h>
  30. #include "header.h"
  31.  
  32.  
  33. static int brojClanova = 0;
  34.  
  35. void kreiranjeDatoteke(const char* const imeDatoteke) {
  36.  
  37.     FILE* pF = fopen(imeDatoteke, "wb");
  38.     if (pF == NULL) { exit(EXIT_FAILURE); }
  39.     fwrite(&brojClanova, sizeof(int), 1, pF);
  40.     fclose(pF);
  41.  
  42. }
  43.  
  44. int izbornik(const char* const imeDatoteke) {
  45.     printf("====================");
  46.     printf("Odaberite jednu od ponudenih opcija:");
  47.     printf("====================\n");
  48.     printf("\t\t\tOpcija 1: Dodavanje clanova!\n");
  49.     printf("\t\t\tOpcija 2: Citanje clanova!\n");
  50.     printf("\t\t\tOpcija 3: Ispis o svim korisnicima!\n");
  51.     printf("\t\t\tOpcija 4: Pretraga po ID-u!\n");
  52.     printf("\t\t\tOpcija 5: Zavrsetak programa!\n");
  53.     printf("======================================\
  54. ======================================\n");
  55.     int uvjet;
  56.     static CLAN* poljeClanova = NULL;
  57.     static CLAN* pronadeniClan = NULL;
  58.     scanf("%d", &uvjet);
  59.     switch (uvjet) {
  60.     case 1:
  61.         dodavanjeClanova(imeDatoteke);
  62.         break;
  63.     case 2:
  64.         if (poljeClanova != NULL) { free(poljeClanova); poljeClanova = NULL; }
  65.         poljeClanova = (CLAN*)ucitavanjeClanova(imeDatoteke);
  66.         if (poljeClanova == NULL) { exit(EXIT_FAILURE); }
  67.         break;
  68.     case 3:
  69.         ispisivanjeClanova(poljeClanova); break;
  70.     case 4:
  71.         pronadeniClan = (CLAN*)pretrazivanjeClanova(poljeClanova); break;
  72.     case 5:
  73.         uvjet = izlazIzPrograma(poljeClanova); break;
  74.     default:
  75.         uvjet = 0;
  76.     }
  77.     return uvjet;
  78. }
  79.  
  80.  
  81. void dodavanjeClanova(const char* const imeDatoteke) {
  82.  
  83.     FILE* pF = fopen(imeDatoteke, "rb+");
  84.     if (pF == NULL) { perror("Dodavanje clanova"); exit(EXIT_FAILURE); }
  85.  
  86.     fread(&brojClanova, sizeof(int), 1, pF);
  87.     CLAN temp = { 0 };
  88.     temp.id = brojClanova;
  89.     getchar();
  90.     printf("Unesite ime clana!\n");
  91.     scanf("%19[^\n]", temp.ime);
  92.     printf("Unesite prezime clana!\n");
  93.     getchar();
  94.     scanf("%29[^\n]", temp.prezime);
  95.     printf("Unesite adresu clana!\n");
  96.     getchar();
  97.     scanf("%49[^\n]", temp.adresa);
  98.     printf("Unesite broj mobitela clana!\n");
  99.     scanf("%d", &temp.brMob);
  100.     do {
  101.    
  102.         printf("Unesite broj posudenih filmova:\n");
  103.         scanf("%d", &temp.brFilm);
  104.  
  105.     } while (temp.brFilm > 5);
  106.     fseek(pF, sizeof(CLAN) * brojClanova, SEEK_CUR);
  107.     fwrite(&temp, sizeof(CLAN), 1, pF); rewind(pF); brojClanova++; fwrite(&brojClanova, sizeof(int), 1, pF);
  108.     fclose(pF);
  109.     printf("\n");
  110.  
  111. }
  112.  
  113. void* ucitavanjeClanova(const char* const imeDatoteke) {
  114.  
  115.     FILE* pF = fopen(imeDatoteke, "ab+");
  116.     if (pF == NULL) { return NULL; }
  117.     fread(&brojClanova, sizeof(int), 1, pF);
  118.     CLAN* poljeClanova = (CLAN*)calloc(brojClanova, sizeof(CLAN));
  119.     if (poljeClanova == NULL) { return NULL; }
  120.     fread(poljeClanova, sizeof(CLAN), brojClanova, pF);
  121.     return poljeClanova;
  122.     printf("\n");
  123. }
  124.  
  125. void ispisivanjeClanova(const CLAN* const poljeClanova) {
  126.  
  127.     if (poljeClanova == NULL) { return; }
  128.     int i;
  129.     for (i = 0; i < brojClanova; i++) {
  130.    
  131.         printf("Clan broj %d      ID: %d      ime: %s          prezime: %s      adresa: %s      broj mobitela: %d      broj posudenih filmova: %d\n",
  132.             i + 1,
  133.             (poljeClanova + i)->id,
  134.             (poljeClanova + i)->ime,
  135.             (poljeClanova + i)->prezime,
  136.             (poljeClanova + i)->adresa,
  137.             (poljeClanova + i)->brMob,
  138.             (poljeClanova + i)->brFilm);
  139.  
  140.  
  141.     }
  142.     printf("\n");
  143. }
  144.  
  145. void* pretrazivanjeClanova(CLAN* const poljeClanova) {
  146.  
  147.     if (poljeClanova == NULL) { return NULL; }
  148.     int i, b, priv = 0;
  149.     printf("Unesite id\n");
  150.     scanf("%d", &b);
  151.     for (i = 0; i < brojClanova; i++) {
  152.    
  153.         if (b == (poljeClanova + i)->id) {
  154.  
  155.             printf("Clan pronaden!\n");
  156.             printf("Clan broj %d\tID: %d\time: %s\tprezime: %s\tadresa: %s\tbroj mobitela: %d\tbroj posudenih filmova: %d\n\n",
  157.                 i + 1,
  158.                 (poljeClanova + i)->id,
  159.                 (poljeClanova + i)->ime,
  160.                 (poljeClanova + i)->prezime,
  161.                 (poljeClanova + i)->adresa,
  162.                 (poljeClanova + i)->brMob,
  163.                 (poljeClanova + i)->brFilm);
  164.             return(poljeClanova + 1);
  165.  
  166.         }
  167.         else priv = 1;
  168.    
  169.     }
  170.     if (priv == 1) { printf("Clan ne postoji!\n"); }
  171.     printf("\n");
  172.  
  173. }
  174.  
  175. int izlazIzPrograma(CLAN* poljeClanova) {
  176.  
  177.     char ime[3] = { '\0' };
  178.     printf("Jeste li sigurni da zelite zavrsiti program?\n");
  179.     scanf("%2s", ime);
  180.     if (!strcmp("da", ime)) {
  181.         free(poljeClanova);
  182.         return 0;
  183.     }
  184.     return 1;
  185.  
  186. }
  187.  
  188.  
  189. //////// HEADER
  190.  
  191.  
  192. #pragma once
  193. typedef struct {
  194.  
  195.     int id;
  196.     char ime[20];
  197.     char prezime[20];
  198.     char adresa[50];
  199.     int brMob;
  200.     int brFilm;
  201.  
  202. }CLAN;
  203.  
  204. void kreiranjeDatoteke(const char* const imeDatoteke);
  205. int izbornik(const char* const imeDatoteke);
  206. void dodavanjeClanova(const char* const imeDatoteke);
  207. void* ucitavanjeClanova(const char* const imeDatoteke);
  208. void ispisivanjeClanova(const CLAN* const poljeClanova);
  209. void* pretrazivanjeClanova(CLAN* const poljeClanova);
  210. int izlazIzPrograma(CLAN* poljeClanova);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement