Sunteți pe pagina 1din 12

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: Ogorodnic Nicolae C-171 F\R

A verificat prof.univ. : Carcea Liviu

Chișinău 2019

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 proiect[50];

struct companie_de_constructie {

char nume_companie[55];

char denumire_lucrarii[65];

int nr_proiecte;

long anul_executarii;

long timp_executare , taxa;

} lista1,lista2;

int i,n;

int creare(void)

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

scanf("%d",&n);

printf("Introdu proiectul \n");


scanf("%s",proiect);

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

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

printf("Introdu numele companie :");

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

fflush(stdin);

printf(" introdu denumirea lucrarii :");

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

fflush(stdin);

printf(" introdu numarul de proiecte :");

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

fflush(stdin);

printf(" introdu anul executarii : ");

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

printf(" introdu timpul de executare a proiectului :");

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

lista1.taxa=lista1.timp_executare*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 proiect \n");

scanf("%s",edit);

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

printf("Introdu proiect corect \n");

scanf("%s",edit);

fflush(stdin);

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

scanf("%d",&k);

//printf("Introdu num?rul de proiecte \n");

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

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

while(i<k)

printf("Introdu numarul de ordine a proiectului\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 executare a proiectului nou nou\n");

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

lista2.taxa=lista2.timp_executare*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 proiect \n");

scanf("%s",edit);

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

printf("Introdu proiect corect \n");

scanf("%s",edit);

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

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


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

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

printf("| Nr | Nume companie | Denumire lucrarii | Numar de proiecte |


Anul executarii | Timp de executare | 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 | %2 %d\n",

i++,

lista2.nume_companie,

lista2.denumire_lucrarii,

lista2.nr_proiecte,

lista2.anul_executarii,

lista2.timp_executare,
lista2.timp_executare*2);

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

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

printf("\n");

fclose(f);

return 0;

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

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

int afis_select()

int min;

char edit[30];

l1:

printf("Introdu proiect \n");

scanf("%s",edit);

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

printf("Introdu proiect corect \n");

scanf("%s",edit);

printf("indicati timpul minimal\n");

scanf("%d",&min);

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

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


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

printf("=====================================================================
==============================================\n");
printf("| Nr | Nume companie | Denumire lucrarii | Numar de
proiecte | Anul executarii | Timp de executare| Taxa \n");

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

i=1;

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

while (!feof(f) )

if (lista2.timp_executare>min)

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

i++,

lista2.nume_companie,

lista2.denumire_lucrarii,

lista2.nr_proiecte,

lista2.anul_executarii,

lista2.timp_executare,

lista2.timp_executare*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 proiect \n");

scanf("%s",proiect);

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

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

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

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

printf("Introdu numele autorului :");

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

fflush(stdin);

printf(" introdu denumirea lucrrii :");

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

fflush(stdin);

printf(" introdu numarul de proiecte :");

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

fflush(stdin);

printf(" introdu anul executarii : ");

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

printf(" introdu timpul de executare a proietului :");

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

lista1.taxa=lista1.timp_executare*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ă

5.Adaugarea
Afisarea

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