Documente Academic
Documente Profesional
Documente Cultură
Ref Prog 8
Ref Prog 8
La disciplina:Programare
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
m3
m 4
m 5
m 6
\t5:Schimbarea cu locul a studentilor cu cea mai mica si cea mai mare virsta\n
iesire\n
m1
m1
Clrscr()
i=0;i<n;i++
&n
&x[i],sizeof(x[i]),1 ,f1
i=0;i<n;i++
fclose(f1)
%s",x[i] .nume
%d",&x[i] .raft
getch();
m 0
%s",x[i].s ectiab
m1
m 2
clrscr()
getch()
\t|---------------------------------------|\n
t|--------------|-----------|------------|\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")
&aux,sizeof(aux), 1,f1
w=getch()
fclose(f1)
w=='n')||( w=='N')
m 0
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
fclose(f1)
\t|--------------|-----------|-----------|\n
k==0
%d",&caut
\t|--------------------------------------|\n
getch()
\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)
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]
x[f]=x[z]
\t|--------------------------------------|\n
x[z]=a
\t|-----------|--------------|-----------|\n"
L
i=0;i<n;i++
m 6
clrscr()
\t|-----------|--------------|-----------|\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;
//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;}
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;
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.