Proiect fișiere relative - algoritmi în programare

Proiect
6.3/10 (4 voturi)
Conține 5 fișiere: doc, cpp, exe, txt, dat
Pagini : 14 în total
Cuvinte : 2516
Mărime: 27.30KB (arhivat)
Publicat de: Rozalia Nicoară
Puncte necesare: 10
ase-informatica ec-an 2 proiectu contine crearea fis rel, adaugare in fis rel, stergere, modificare, cautare si altele, toate intr-un meniu. arhiva contine sursa in c++, executabilul, descrierea completa in word si un fisier exemplu pentru rulare.

Extras din proiect

Proiectul contine un meniu pt creearea si accesarea datelor despre elevii olimpici, memorate intr-un fisier relativ. Se defineste structura elev care contine campurile: nume (de tip sir de caractere), prenume (de tip sir de caractere),

nrmat (numar matricol), varsta (de tip intreg), clasa (de tip intreg), olimp(olimpiada (de tip sir de caractere)), premiul (de tip intreg). "Is" reprezinta indicatorul de stare, folosit in fisierul relativ pentru a determina daca

exista sau nu intregistrare pe pozitia respectiva.

typedef struct {int is;

char nume[30];

char prenume[20];

int nrmat;

int varsta;

int clasa;

char olimp[20];

int premiul;

}elev;

Functia nrart cu 2 parametrii, va returna numarul de articole memorate in fisierul transmis ca parametru. In variabila s se memoreaza cu ajutorul functiei ftell(f), pozitia curenta in fisier (în numãr de octeti fata de începutul fisierului). Ne pozionam la sfarsitul fisierului prin functia fseek(f,0,2), 2 semnifica sfarsitul de fisier si 0 reprezinta deplasamentul fata de sfarsitul de fisier. In p se memoreaza pozitia actuala, si aflandu-ne la sfarsitul fisierului in p se va memora

lungimea totala a zonei de memorie asociata tuturor articolelor din fisier. Numarul de articole din fisier este determinat prin impartirea lungimii totale a zonei de memorie asociata tuturor articolelor la lungimea unui singur articol

(prin parametrul l va fi transmisa lungimea zonei de memorie asociate articolului elev prin operatorul sizeof(elev) ).

int nrart(FILE *f, int l)

{int p,n;int s;

s=ftell(f);

fseek(f,0,2);

p=ftell(f);

n=p/l;

fseek(f,s,0);

return(n);

}

Functia CREARE creaza fisierul binar "elev.dat". Fisierul se deschide in modul wb+ care suprascrie un fisier existent sau creeaza unul nou, fiind permise atât citiri cât si scrieri pentru fisier binar.Daca fisierul poate sau nu poate fi creat se va afisa un mesaj corespunzator.

void creare(FILE *f)

{

if (f=fopen("elev.dat","wb+"))

printf("n fisierul a fost creat n");

else printf("n fisierul nu poate fi creat");

fclose(f);

}

Functia ADAUGARE adauga date in fisier. Se deschide fisierul in modul rb+ pentru consultare si actualizare fisier binar. Se citeste de la tastatura numarul relativ, n, reprezentand pozitia de pe lista a unui elev. Intr-o structura while se verifica sfarsitul de fisier cu functia feof(f). Cat timp nu s-a ajuns la sfarsitul

inserarii (ctrl+z) se face prelucrarea: avem 2 cauzuri- n citit sa fie mai mare decat numarul de articole deja adaugate in fisier, caz in care adaugarea se face la sfarsit, sau n sa fie mai mic, caz in care se face un fel de inserare in fisier.

Daca avem n in primul caz ne pozitionam la sfarsitul fisierului, se face o preformare dinamica (se scriu articole cu indicatorul de stare is=0 pana la pozitia n, pe care vrem sa adaugam noul articol. Se citesc de la tastatura caracteristicile campurilor articolului in variabila e de tip elev si se scrie artcolul in fiser cu functia fwrite(articolul e, pe o lungime sizeof(elev), 1 singura data, in fisierul f). In cazul in care n este mai mic decat numarul de articole din fisier, ne pozitionam in fisier dupa primele n-1 articole, verificam daca indicatorul de stare este 0, adica nu exista articol pe pozitia respectiva, se citeste si se scrie articolul pe pozitia n. Daca avem articol pe pozitia respectiva se va da un mesaj corespunzator.

void adaugare(FILE *f)

{

elev e; int n,i;

f=fopen("elev.dat","rb+");

printf("n Pentru a adauga date in fisier dati n, pentru a incheia CTRL+Z");

printf("n n=");scanf("%d",&n);

while (!feof(stdin))

{

if (n>nrart(f,sizeof(elev)))

{

fseek(f,0,2);

e.is=0;

for (i=nrart(f,sizeof(elev))+1;i<n;i++){e.is=0;

fwrite(&e,sizeof(elev),1,f);}

e.is=1;

printf("nume: "); fflush(stdin);scanf("%s",&e.nume);

printf("prenume: "); scanf("%s",&e.prenume);

printf("nr. mat: ");scanf("%d",&e.nrmat);

printf("varsta: ");scanf("%d",&e.varsta);

printf("clasa: "); scanf("%d",&e.clasa);

printf("olimpiada: ");scanf("%s",&e.olimp);

printf("premiul: ");scanf("%d",&e.premiul);

Preview document

Proiect fișiere relative - algoritmi în programare - Pagina 1
Proiect fișiere relative - algoritmi în programare - Pagina 2
Proiect fișiere relative - algoritmi în programare - Pagina 3
Proiect fișiere relative - algoritmi în programare - Pagina 4
Proiect fișiere relative - algoritmi în programare - Pagina 5
Proiect fișiere relative - algoritmi în programare - Pagina 6
Proiect fișiere relative - algoritmi în programare - Pagina 7
Proiect fișiere relative - algoritmi în programare - Pagina 8
Proiect fișiere relative - algoritmi în programare - Pagina 9
Proiect fișiere relative - algoritmi în programare - Pagina 10
Proiect fișiere relative - algoritmi în programare - Pagina 11
Proiect fișiere relative - algoritmi în programare - Pagina 12
Proiect fișiere relative - algoritmi în programare - Pagina 13
Proiect fișiere relative - algoritmi în programare - Pagina 14

Conținut arhivă zip

  • alg raluca .cpp
  • alg raluca .exe
  • elev.dat
  • elev1.txt
  • proiect alg raluca.doc

Alții au mai descărcat și

Grilă sisteme informaționale de gestiune - Access

Adăugarea de câmpuri la o tabelă se face în modul de vizualizare:...... Previzualizare inaintea imprimarii Aplicarea unei restrictii de...

Hackeri

Hackerii sunt pasionati ai informaticii, care, de obicei au ca scop „spargerea” anumitor coduri, baze de date, pagini web etc. Ei sunt considerati...

Baze de Date

3.Introducere in bd si sgbd-uri Definitie: Numim baza de date o colectie partajata de date aflata in interdependenta logica impreuna cu o...

Te-ar putea interesa și

Analiza și Proiectarea Sistemului Informatic privind Calculul Concediilor de Odihnă și de Boală

Capitolul I Analiza sistemului informaţional privind activitatea de calcul a concediilor de boală şi odihnă la societatea SMART S.A. 1.1...

Proiect pentru evaluarea activității practice - pachetul de programe Saga

CAPITOLUL 1: DESCRIEREA GENERALÃ A PACHETULUI DE PROGRAME Succesul unei afaceri este determinat, printre altele, ºi de existenþa unui sistem...

Algoritmi în Programare - Gestiunea unui Magazin Vestimentar

Prezentare proiect Tema proiectului: Sa se realizeze in limbajul C un program multifunctional pentru gestiunea fisierelor. Fisierul principal...

Rețelistică

Societatea umană a înregistrat un traseu evolutiv marcat de trecerea de la era agricola la era industrială şi acum la societatea informaţională,...

Funcții recursive - Turbo Pascal

CUVÂNT ÎNAINTE Acest proiect la informatica consta în prezentarea în limbajul de programare Turbo Pascal a unei probleme ce îsi propune sa...

Proiect algoritmi în programare - fișiere organizate relativ

Fişiere organizate relativ În acest proiect am încercat crearea unui fişier organizat relativ. Programul gestionează produsele existente într-un...

Proiect pentru Evaluarea Activității Practice

Cap. 1. DESCRIEREA GENERALĂ A PACHETULUI DE PROGRAME Programul NIBOSAL este un program de salarii şi evidenţă personal, care rezolvă într-o...

Proiect Algoritmi în Programare

Societatea comercială “SC JUST DISTRIBUTION” se ocupă cu achizitia de produse de curatenie pe care ulterior le vinde. Aceasta îşi desfăşoară...

Ai nevoie de altceva?