100% au considerat acest document util (1 vot)
359 vizualizări7 pagini

Proiect Atp

Acest program gestionează o bază de date cu angajații unei companii. El oferă opțiuni pentru crearea de fișiere, adăugarea, modificarea și ștergerea de înregistrări, precum și rapoarte de listare.

Încărcat de

Valentin
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd
100% au considerat acest document util (1 vot)
359 vizualizări7 pagini

Proiect Atp

Acest program gestionează o bază de date cu angajații unei companii. El oferă opțiuni pentru crearea de fișiere, adăugarea, modificarea și ștergerea de înregistrări, precum și rapoarte de listare.

Încărcat de

Valentin
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd

PROIECT ALGORITMI SI

TEHNICI DE
PROGRAMARE
Oprescu Valentin 1113 ID

Realizati aplicatia care sa gestioneze salariatii unei [Link] cere sa se creeze un


meniu pentru a putea selecta urmatoarele functii:
-creare fisier
-adaugare salariati
-modificare salariati
-stergere salariati
-listare angajati
-listare selectiva angajati(criteriul-vechime in munca mai mare de 5 ani)
-afisare pe ecran date angajat
Articolele din fisierul organizat relativ au urmatoarea structura:
ANGAJAT:
COD
angaja
t

CNP

Nume

Prenume

Vechime

Salariu

Programul a fost realizat in Visual Studio 2010.


A fost conceput in urmatorul mod:
-a fost construita o structura denumita ANGAJAT cu mai multe campuri:
cod,cnp,nume,prenume,vechime,salariu,is;
-fiecare cerinta a fost facuta ca un subprogram:
Creare-creeaza un fisier ,denumirea este preluata de la tastatura;
Adaugare-adauga un salariat,un articol in fisier,completandu-se toate campurile
structurii ANGAJAT;
Stergere-sterge un articol din fisier in functie de cod-ul de angajat introdus de la
tastatura;
Modificare-modifica un articol in functie de cod-ul de angajat care este introdus
de la tastatura
ListaAngajati-creeaza un fisier text cu angajatii introdusi;
Lista2-creeaza un fisier text cu angajatii care corespund criteriului vechime in
munca mai mare de 5 ani
Afisare-afiseaza pe ecran datele unui angajat in functie de cod-ul de angajat
introdus de la tastatura
-un alt subprogram a fost folosit pntru a determina dimensiunea fisierelor nrart
-in main s-a folosit o structra de tip switch case pentru a construi un meniu
cu 7 variante de a alege
-fisierul este organizat relativ

-cheia relativa a fisierului este cod angajat


-is-indicatorul de stare, ne arata daca un articol este gol sau nu
Programul se poate folosi pentru a gestiona o baza de date cu angajatii unei
societati si i se pot adauga mai multe campuri in functie de nevoia [Link]
pot modifica criteriile de selectie pentru subprogramul lista2 in functie de
necesitati.
Codul sursa:

#include<stdio.h>
#include <math.h>
#include <string.h>
#include<stdlib.h>
#include <conio.h>
#include <ctype.h>
typedef struct{
int cod;
char nume[20];
char cnp[13];
char prenume[20];
float salariu;
int vechime;
int is;
}ANGAJAT;
int nrart(FILE *f, int l)
{long p; int n;
p=ftell(f); fseek(f,0,2); n=ftell(f)/l;
fseek(f,p,0);return n;
}
FILE * creare()
{
FILE *f;
char nume[20];
char a;
printf("\nFisier: ");gets(nume);
f=fopen(nume,"rb+");
if(f==NULL)
{
printf("Se creaza fisierul cu numele %nume?", nume);
a=getch();
if(toupper(a)=='D')
{
f=fopen(nume, "wb");
fclose(f);
fopen(nume,"rb+");
}
}
return f;
}
FILE *adaugare(FILE *f)
{
ANGAJAT p; int i, cod;

printf("\t\t--------------------");
printf("\t\tADAUGARE ANGAJAT NOU");
printf("\t\t--------------------");

printf("\n Cod angajat: "); scanf("%d",&cod);


while(!feof(stdin))
{
if(cod>=nrart(f,sizeof(ANGAJAT)))
{
[Link]=0; fseek(f,0,2);
for(i=nrart(f,sizeof(ANGAJAT));i<=cod;i++)
fwrite(&p,sizeof(ANGAJAT), 1, f);
}
fseek(f,cod*sizeof(ANGAJAT),0); fread(&p,sizeof(ANGAJAT), 1, f);
if([Link]) printf("\nExista deja un angajat cu acest cod");
else{
fseek(f,cod*sizeof(ANGAJAT),0);
printf("CNP: "); fflush(stdin);gets([Link]);
printf("NUME: "); fflush(stdin);gets([Link]);
printf("PRENUME: "); fflush(stdin);gets([Link]);
printf("Vechime:"); scanf("%d",&[Link]);
printf("Salariu:"); scanf("%f",&[Link]);
[Link]=1; [Link]=cod;
fwrite(&p,sizeof(ANGAJAT), 1, f);
}
printf("\nCod: "); scanf("%d",&cod);
}
return f;
}
FILE *modificare(FILE *f)
{
ANGAJAT p;
int CodModificat;
printf("\n Introduceti codul angajatului pe care doriti sa il modificati: "); scanf("%d",
&CodModificat);
fseek(f, CodModificat*sizeof(ANGAJAT),0);
fread(&p, sizeof(ANGAJAT),1,f);
if([Link]!=1){ printf("\nNu exista angajat cu acest cod..."); }
else
{
printf("CNP: "); fflush(stdin);gets([Link]);
printf("NUME: "); fflush(stdin);gets([Link]);
printf("PRENUME: "); fflush(stdin);gets([Link]);
printf("Vechime:"); scanf("%d",&[Link]);
printf("Salariu:"); scanf("%f",&[Link]);
fseek(f, CodModificat*sizeof(ANGAJAT),0);
fwrite(&p,sizeof(ANGAJAT),1,f);
printf("\nAngajatul cu codul %d a fost modificat...", CodModificat);
}
return f;
}
FILE *stergere(FILE *f)
{
ANGAJAT p;
int CodStergere;
printf("\n Introduceti codul angajatului pe care doriti sa il stergeti: "); scanf("%d",
&CodStergere);
fseek(f, CodStergere*sizeof(ANGAJAT),0);
fread(&p, sizeof(ANGAJAT),1,f);
if([Link]!=1){ printf("\nNu exista angajat cu acest cod..."); }
else
{

[Link]=0;
fseek(f, CodStergere*sizeof(ANGAJAT),0);
fwrite(&p,sizeof(ANGAJAT),1,f);
printf("Angajatul cu codul %d a fost sters din baza de date...", CodStergere);
}
return f;

void listaAngajati(FILE *f)


{
FILE *h;
ANGAJAT x;
fseek(f,0,0);
h=fopen("[Link]", "wt");
fprintf(h, "\t\tLISTA ANGAJATILOR SOCIETATII COMERCIALE");
fseek(f,0,0);
fread(&x, sizeof(ANGAJAT),1,f);
while(!feof(f))
{
if([Link]==1)
{
fprintf(h,"&d &s &d &s &s &f &d",
[Link],[Link],[Link],[Link],[Link],[Link],[Link]);
}
fread(&x, sizeof(ANGAJAT),1,f);
}
fclose(h);
}
void lista2(FILE *f) //angajati cu vechime mai mare de 5 ani
{
FILE *h;
ANGAJAT x;
fseek(f,0,0);
h=fopen("[Link]", "wt");
fprintf(h, "\t\tLISTA ANGAJATILOR SOCIETATII COMERCIALE CU VECHIME MAI MARE DE 5
ANI");
fseek(f,0,0);
fread(&x, sizeof(ANGAJAT),1,f);
while(!feof(f))
{ if([Link]==1&& [Link]>=5)
{
fprintf(h,"&d &s &d &s &s &f &d",
[Link],[Link],[Link],[Link],[Link],[Link],[Link]);
}
fread(&x, sizeof(ANGAJAT),1,f);
}
fclose(h);
}
void afisare (FILE *f)
{
ANGAJAT p;
int CodAfisare;
printf("\n Introduceti codul angajatului pe care doriti sa il afisati: "); scanf("%d",
&CodAfisare);
fseek(f, CodAfisare*sizeof(ANGAJAT),0);
fread(&p, sizeof(ANGAJAT),1,f);

if([Link]!=1){ printf("\nNu exista angajat cu acest cod..."); }


else
{
fseek(f,0,1);
printf("\n&d &s &d &s &s &f &d",
[Link],[Link],[Link],[Link],[Link],[Link],[Link]);
}
}
void main()
{

FILE *f=NULL;
int opt=1;
while(opt!=0)
{
system ("cls");
printf("GESTIONAREA UNEI BAZE DE DATE CU INFORMATII DESPRE ANGAJATI");
printf("\n1. Alegere fisier de lucru.");
printf("\n2. Adaugare angajati in baza de date.");
printf("\n3. Modificare angajat din baza de date.");
printf("\n4. Stergere angajat din baza de date.");
printf("\n5. Generare raport cu angajatii actuali .");
printf("\n6. Generare raport angajati cu vechime mai mare de 5 ani .");
printf("\n7. Afisare date angajat.");
printf("\n0. Iesire");
printf("\n Alegeti optiunea: "); scanf("%d", &opt);
switch (opt)
{
case 1:
{
f=creare();
}
break;
case 2:
{
if(f==NULL)
{printf("\n NU ATI ALES FISIERUL DE LUCRU");
getch();
}
else f=adaugare(f);
}
break;
case 3:
{
if(f==NULL)
{
printf("\n NU ATI ALES FISIERUL DE LUCRU");
getch();
}
else {modificare(f);getch();}
}
break;
case 4:
{
if(f==NULL)
{

printf("\n NU ATI ALES FISIERUL DE LUCRU");


getch();
else {f=stergere(f);getch();}
}
break;
case 5:
{
if(f==NULL)
{
printf("\n NU ATI ALES FISIERUL DE LUCRU");
getch();
}
else {listaAngajati(f);getch();}

}
break;
case 6:
{
if(f==NULL)
{
printf("\n NU ATI ALES FISIERUL DE LUCRU");
getch();
}
else
lista2(f);

}
break;
case 7:
{
if(f==NULL)
{
printf("\n NU ATI ALES FISIERUL DE LUCRU");
getch();
}
else
afisare(f);
}
break;

}
fclose(f);
}

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