Sunteți pe pagina 1din 11

Ministerul Educației al Republicii Moldova

Universitatea Tehnică a Moldovei

Facultate

a Calculatoare, Informatică și Microelectronică

Departamentul Informatică și Ingineria Sistemelor

Lucrare de laborator
la disciplina : Structuri de date și algoritmi
Tema : Fișiere . Lucru cu fișiere.

A elaborat

studenta : TI-171 f/r , Florea Cristina ,

A verificat

prof.univ. : Carcea Liviu


Chișinău 2018

Scopul lucrării

Implimentarea în practică a cunoștințelor teoretice obținute la disciplina structuri de date


și algoritmi . Analiza datelor , crearea unui program ce ar permite de a lucra cu fișierele.
Aplicarea operațiilor și activităților cu fișiere în practică .

Sarcina lucrării

Să se elaboreze un program în C care conține funcția main în care se află meniul


programului și se apelează funcțiile care realizează următoarele activități :

- creare fișier
- afișarea din fișier a datelor
- adăugarea
- afișarea selectivă ( după un criteriu)
- corectarea
- ieșire.
Codul sursă
#include<stdio.h>

#include<stdlib.h>

FILE *f;

char editura[15];

struct biblioteca {

char nume_autor[25];

char denumire_carte[40];

int nr_pagini;

long anul_editie;

long timp_imprumut , taxa;

} lista1,lista2;

int i,n;

int creare(void)

printf("Indicati numarul de carti\n");

scanf("%d",&n);

printf("Introdu editura \n");

scanf("%s",editura);

f=fopen("biblioteca.inf","w");

for(i=0;i<n;i++)

printf("Introdu numele autorului :");

scanf("%15s",lista1.nume_autor);

fflush(stdin);

printf(" introdu denumirea cartii :");

scanf("%15s",lista1.denumire_carte);

fflush(stdin);

printf(" introdu numarul de pagini a cartii :");

scanf("%d",&lista1.nr_pagini);

fflush(stdin);

printf(" introdu anul editiei : ");

scanf("%d",&lista1.anul_editie);

printf(" introdu timpul de imprumut a cartii :");


scanf("%d",&lista1.timp_imprumut);

lista1.taxa=lista1.timp_imprumut*0.2;

fwrite(&lista1,sizeof(lista1),1,f);

fclose(f);

return 0;

// ########################################

// ########################################

int corectare()

int nn;

int k;

int i=0;

char edit[30];

l1:

printf("Introdu editura \n");

scanf("%s",edit);

if (edit != editura) printf("Eroare! Nu exista asa editura\n!");

printf("Introdu editura corect \n");

scanf("%s",edit);

fflush(stdin);

printf("Introdu numarul de corectari \n");

scanf("%d",&k);

//printf("Introdu numărul de pagini \n");

//scanf("%d",nr_pagini);

f=fopen("biblioteca.inf","r+");

while(i<k)

printf("Introdu numarul de ordine a cartii\n");

scanf("%d",&nn); fflush(stdin);

if (nn==-1) { fclose(f); break;}


fseek(f,(nn-1)*sizeof(lista2),SEEK_SET);

fread(&lista2,sizeof(lista2),1,f);

printf("Introdu timpul de imprumut nou nou\n");

scanf("%d",&lista2.timp_imprumut);

lista2.taxa=lista2.timp_imprumut*0.2;

fseek(f,(nn-1)*sizeof(lista2),SEEK_SET);

fwrite(&lista2,sizeof(lista2),1,f);

i++;

fclose(f);

return 0;

int afisare(void)

char edit[30];

l1:

printf("Introdu editura \n");

scanf("%s",edit);

if (edit != editura) printf("Eroare! Nu exista asa editura!\n");

printf("Introdu editura corect \n");

scanf("%s",edit);

f=fopen("biblioteca.inf","r");

printf("\n\n Tabela de plata a taxelor pentru


cartile de imprumut a editurei %s\n\n",editura);

printf("=====================================================================
================================================\n");

printf("| Nr | Nume autor | Denumire carte | Numar de pagini


| Anul editiei | Timp de imprumut | Taxa | \n");

printf("=====================================================================
================================================\n");

i=1;

fread(&lista2,sizeof(lista2),1,f);
while (!feof(f) )

//printf("|%4d |%-15 %-15s | %6ld | %6ld | %5.1f | %7.2f |\n",

printf("|%4d |%-15s | %s | %d | %d
| %d | %0.2f\n",

i++,

lista2.nume_autor,

lista2.denumire_carte,

lista2.nr_pagini,

lista2.anul_editie,

lista2.timp_imprumut,

lista2.timp_imprumut*0.2);

fread(&lista2,sizeof(lista2),1,f);

printf("=====================================================================
================================================\n");

printf("\n");

fclose(f);

return 0;

// ########################################

// ########################################

int afis_select()

float min;

char edit[30];

l1:

printf("Introdu editura \n");

scanf("%s",edit);

if (edit != editura) printf("Eroare! Nu exista asa editura!\n");

printf("Introdu editura corect \n");

scanf("%s",edit);

printf("indicati taxa minimala\n");

scanf("%f",&min);
f=fopen("biblioteca.inf","r");

printf("\n\n Tabela de plata a taxelor pentru


cartile de imprumut a editurei %s\n\n",editura);

printf("=====================================================================
================================================\n");

printf("| Nr | Nume autor | Denumire carte | Numar de pagini


| Anul editiei | Timp de imprumut | Taxa | \n");

printf("=====================================================================
================================================\n");

i=1;

fread(&lista2,sizeof(lista2),1,f);

while (!feof(f) )

if (lista2.taxa>min)

printf("|%4d |%-15s | %s | %d | %d
| %d | %0.2f\n",

i++,

lista2.nume_autor,

lista2.denumire_carte,

lista2.nr_pagini,

lista2.anul_editie,

lista2.timp_imprumut,

lista2.timp_imprumut*0.2);

fread(&lista2,sizeof(lista2),1,f);

printf("=====================================================================
================================================\n");

fread(&lista2,sizeof(lista2),1,f);

printf("\n");
fclose(f);

return 0;

// ########################################

// ########################################

int adaugare(void)

printf("Introdu numarul de carti\n");

scanf("%d",&n);

printf("Introdu editura \n");

scanf("%s",editura);

//printf("Introdu numarul de pagini \n");

//scanf("%f",&nr_pagini);

f=fopen("biblioteca.inf","a");

for(i=0;i<n;i++)

printf("Introdu numele autorului :");

scanf("%15s",lista1.nume_autor);

fflush(stdin);

printf(" introdu denumirea cartii :");

scanf("%15s",lista1.denumire_carte);

fflush(stdin);

printf(" introdu numarul de pagini a cartii :");

scanf("%d",&lista1.nr_pagini);

fflush(stdin);

printf(" introdu anul editiei : ");

scanf("%d",&lista1.anul_editie);

printf(" introdu timpul de imprumut a cartii :");

scanf("%d",&lista1.timp_imprumut);

lista1.taxa=lista1.timp_imprumut*0.2;

fwrite(&lista1,sizeof(lista1),1,f);
}

fclose(f);

return 0;

// ########################################

// ########################################

int main(void)

int optie;

while (1)

printf("\n\n M E N I U\n");

printf(" Alege o optie \n");

printf(" 1 - crearea fisierului\n");

printf(" 2 - afisarea fisierului\n");

printf(" 3 - corectarea fisierului\n");

printf(" 4 - afisarea selectata\n");

printf(" 5 - adaugare la fisier\n");

printf(" 6 - iesire din program\n");

scanf("%d",&optie); fflush(stdin);

switch (optie)

case 1: creare(); break;

case 2: afisare(); break;

case 3: corectare(); break;

case 4: afis_select(); break;

case 5: adaugare(); break;

case 6: exit(1);

default: printf("Alegeti optia corect\n"); break;

} }

return 0;

}
Testarea programului.

1. Crearea unui fișier :

2. Afișarea conținutului
3. Corectarea fișierului :

și când accesăm din nou conținutul fișierului vedem modificările făcute :

4. Afișarea selectivă

S-ar putea să vă placă și