Sunteți pe pagina 1din 16

Ministerul Educatiei al Republicii Moldova Universitatea Tehnica a Moldovei Catedra Sisteme si Dispozitive electronice.

La disciplina:Programare

Lucrare de Laborator nr 8 Tema:Prelucrarea Fisierelor


A efectuat st. gr. SOE-121 A verificat I. sup. Corman Corneliu Chihai Andrei

Chisinau 2013

1)Varianta 11 2)Sarcini: De alcatuit un articol cu N inscrieri, care contine informatia despre amplasarea
cartilor pe rafturile unei biblioteci.a)De realizat cautarea cartilor dupa numarul raftului.b)De aranjat inscrierile in ordine descrescatoare dupa numarul raftului.

3)Schema logica.
START A

m 0

1 B 2

m1

Clrscr()

m2

n\n\t *** Meniu *** \n\n


\t1:Completarea bazei de date\

m3

t2:Citirea bazei de date din fisier\n

m 4

\t3:Introducerea unei noi inscrieri\n

m 5

\t4:Cautarea studentilor dupa virsta\n

m 6

\t5:Schimbarea cu locul a studentilor cu cea mai mica si cea mai mare virsta\n

iesire\n

m1

m1

Clrscr()

f1=fopen ("agenda.txt","w ")

\n\nCulege numarul de carti\n

i=0;i<n;i++

&n

&x[i],sizeof(x[i]),1 ,f1

i=0;i<n;i++

\nCulege numele cartilor%d\n",i+1

fclose(f1)

%s",x[i] .nume

\nBaza de date completata a fost inscrisa in fisierul \"biblioteca.txt\"\n

\nculege nr raftului %d\n",i+1

nPentru iesire in meniu culegeti tasta ENTER\n

%d",&x[i] .raft

getch();

\nCulege sectia bibliografica %d\n",i+1

m 0

%s",x[i].s ectiab

m1

m 2

clrscr()

fread(&x[i], sizeof(x[i]), 1,f1)==1

n\n\t*** Baza citita din fisier este ***\n\n

\nPentru iesire culegeti tasta ENTER\n

\t|%11s|%15d|%11s\ n",x[i].nume,x[i].raft,x[i ].grupa

getch()
\t|---------------------------------------|\n

t|--------------|-----------|------------|\n

\t| Numele | raft | sectiab |\n

m 0

fclose(f1)

n=i
\t|--------------|-----------|-----------|\n

f1=fopen("biblio teca.txt","r")

i=0

m 3

clrscr()

f1=fopen ("agenda.txt","a")

nDoriti sa adaugati inca o inscriere? y/n\n

&aux,sizeof(aux), 1,f1

w=getch()

fclose(f1)

w=='n')||( w=='N')

m 0

\nInscrierea a fost adaugata la sfirsitul fisierului \"biblioteca.txt\"\n

(w=='y')||( w=='Y') \nCulege numele cartilor

\nPentru iesire culegeti ENTER\n

getch()

%s",aux.n ume

m 0

\nCulege nr raftului

%d",&aux. raft

\nCulege sectiab

%s",aux.se ctiab

m 4

clrscr()

k=0;

f1=fopen("agenda. txt","r"

i=0;i<n;i++

x[i].nume== caut

k++;
fread(&x[i],si zeof(x[i]),1,f 1)==1

i++

n=i

\t|%11s|%15d|%11s\ n",x[i].nume,x[i].raftx[i] .grupa

fclose(f1)

\t|--------------|-----------|-----------|\n

\nculegeti nr raftului cautat\n

k==0

%d",&caut

\nNu exista carti cu asa nr\n

\n\n\t ***** Rezultatul Cautarii ****\n\n

\nPentru iesire culegeti ENTER\n

\t|--------------------------------------|\n

getch()

\t| Numele | raft | grupab |\n

\t|--------------|-----------|------------|\n

m 0

m 5
f1=fopen("agenda. txt","r");

i=0;i<n;i++

i=0

x[i].numar <max

max=(x[i].numar)

fread(&x[i],siz eof(x[i]),1,f1) ==1

z=i

n=i

i++

fclose(f1)

min=x[0].numar

max=x[0].raft

i=0;i<n;i++

z=i
x[i].numar >min

min=x[i].numar

f=i

a=x[f]

\n\n\t****Baza aranjata este****\n\n

x[f]=x[z]

\t|--------------------------------------|\n

x[z]=a

\t| Numele | raft | sectiab |\n

\t|-----------|--------------|-----------|\n"

L
i=0;i<n;i++

\t|%11s|%15d|%11s\ n",x[i].nume,x[i].raft,x[i ].grupa

m 6

clrscr()

\t|-----------|--------------|-----------|\n

\nPentru iesire culegeti orice tasta ..."

\nPentru iesire culegeti ENTER\n

getch()

getch()

STOP

m0

3)Listimgul programului:
#include<conio.h> #include<stdio.h> #include<string.h> struct biblioteca { char nume[30]; char sectiab[30]; int raft;}; void main (void){ struct biblioteca x[50],art,aux; int i,n,k,z,d,max,q; char caut[30],r,w; FILE*f1; //Afisarea meniului m0:clrscr(); printf("\n\n\t***MENIU***\n\n"); printf("\t1:Completarea bazei de date.\n"); printf("\t2:Citirea bazeii de date din fisier.\n"); printf("\t3:Introducerea unei noi inscrieri.\n"); printf("\t4:Cautarea statiileor dupa denumire.\n"); printf("\t5:Aranjarea inscrierilor in descrestere.\n"); printf("\t6:Iesire.\n\t"); scanf("%d",&q); switch(q){ case 1:goto m1; case 2:goto m2; case 3:goto m3; case 4:goto m4; case 5:goto m5;

case 6:goto m6; default:goto m0;}

//1:Completarea bazei de date m1:clrscr(); printf("\n\nCulege munarul cartilor\n"); scanf("%d",&n); for(i=0;i<n;i++){ printf("\n\nCulege numarul raftului %d:",i); scanf("%d",x[i].raft); printf("\nCulege numele cartii %d:",i); scanf("%s",x[i].nume); printf("\nCulege sectia bibliografica\n %d:",i); scanf("%s",&x[i].sectiab);} // 1:Inscrierea bazei in fisierul baza.txt f1=fopen("baza.txt","w"); for(i=0;i<n;i++){ fwrite(&x[i],sizeof(x[i]),1,f1);} fclose(f1); printf("\Baza de date completata a fost inscrisa in fisierul\"baza.txt\"\n"); printf("\nPentru iesire in meniu culegeti ENTER\n"); getch();goto m0;

// 2:Citirea bazei din fisierul baza.txt si afisarea ei la monitor. m2:clrscr(); printf("\n\n\t***Baza citita din fisier este***\n\n"); printf("\t---------------------------------------\n"); printf("\t| RAFT | NUME | S.B |\n"); f1=fopen("baza.txt","r");i=0; while(fread(&x[i],sizeof(x[i]),1,f1)==1){

printf("\t|%15d|%15s|%15s|\n",x[i].raft,x[i].nume,x[i].sectiab);i++; printf("\t|------------|------------|-----------|\n");} fclose(f1);n=i; printf("\nPentru iesire in meniu culegeti ENTER\n"); getch();goto m0;

// 3:Introducerea unei noi inscrieri m3:clrscr(); printf("\nDoriti sa mai adaogati o inscriere ? y/n\n"); w=getch(); if((w=='n')||(w=='N')) {goto m0;} if((w=='y')||(w=='Y')) { printf("\nCulege numele catii"); scanf("%s",aux.nume); printf("nCulege sectia bibliografica"); scanf("%s",aux.sectiab); printf("\nCulege numarul raftului"); scanf("%d",aux.raft); f1=fopen("baza.txt","a"); fwrite(&aux,sizeof(aux),1,f1); fclose(f1); printf("\nInscrierea a fost adaogata la sfirsitul fisierului\n"); printf("\nPentru iesire in meniu culegeti ENTER\n"); getch();goto m0;}

// 4:Cautarea statiilor dupa nume m4:clrscr(); f1=fopen("baza.txt","r");i=0; while(fread(&x[i],sizeof(x[i]),1,f1)==1){i++;}; n=i;fclose(f1);

printf("\nCautarea raftului dupa numar.\nCulegeti numarul cautat:"); scanf("%s",caut); printf("\n\n\t***Rezultatul Cautarii***\n\n"); printf("\t--------------------------------\n"); printf("\t| Raft | Nume | s.b |\n"); printf("\t|--------|--------|-------|\n"); k=0; for(i=0;i<n;i++){ if(strcmp(x[i].nume,caut)==0){k++; printf("\t|%15d|%15s|%15s|\n",x[i].raft,x[i].nume,x[i].sectiab); printf("t|---------|--------|--------|\n");}} if(k==0)printf("\nNu exista statie cu asa nume.\n"); printf("\nPentru iesire in meniu culegeti ENTER\n"); getch();goto m0;

//5:Aranjarea inscrierilor m5:f1=fopen("baza.txt","r");i=0; while(fread(&x[i],sizeof(x[i]),1,f1)==1){i++;}; n=i;fclose(f1); for(i=0;i<n;i++){ max=x[i].raft;z=i; for(d=i;d<n;d++){ if(max<x[d].raft){max=x[d].raft;z=d;}} art=x[i];x[i]=x[z];x[z]=art;} clrscr(); printf("\n\n\t***Baza aranjata este***\n\n"); printf("\t---------------------------\n"); printf("\t| Raft | Nume | s.b |\n"); printf("\t|----------|-----------|---------|\n"); for(i=0;i<n;i++){

printf("\t|%15d|%15s|%15s|\n",x[i].raft,x[i].nume,x[i].sectiab);} printf("\t|----------|-----------|---------|\n"); printf("\Pentru iesire in meniu culegeti ENTER\n"); getch(); goto m0;

//6:Iesire m6:clrscr(); printf("\nPentru Iesire culegeti orice tasta..."); getch();}

5)Descrierea si analiza rezultatelor:


Am dat programul la compilare si am obtinut :

*** Meniu ***

1:Completarea bazei de date 2:Citirea bazei de date din fisier 3:Introducerea unei noi inscrieri 4:cautarea studentilor dupa virsta 5:Schimbarea studentilor cu cea mai mica si cea mai mare virsta 6:Iesire

6.Concluzii: In urma realizarii acestei lucrari de laborator am invatat cum se poate opera cu o baza de date, cum poate ea fi creata si salvata in fisier, si mi-am dat seama de avantajele oferite de programele realizate cu ajutorul bazelor de date.

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