Extras din proiect
Introducere
Aplicaţia realizează gestiunea activităţii unei librării:
- Înregistrează într-o bază de date cărţile care se găsesc în librărie;
- Permite adăugarea de noi înregistrări;
- Permite modificarea editurii cărţilor;
- Permite ştergerea unei înregistrări;
- Afişarea cărţilor aparţinând unei anumite edituri;
- Afişarea cărţilor după cota unică;
- Sortarea cărţilor după editură şi autor.
Datele sunt iniţial memorate într-un fişier binar organizat relativ. Programul permite afişarea într-un fişier text a înregistrărilor făcute în fişierul binar iniţial, însă pentru consultare se va folosi doar fişierul binar. De asemenea, listarea cărţilor după cote şi după gradele de total se va face în fişier text.
Atributele care caracterizează înregistrările sunt următoarele:
- Is: este indicatorul de stare,acesta luand valorile 0 daca pe linia din fisier nu sunt introduse date si 1 daca sunt introduse date;
- Cota: cod unic – ia valori numerice;
- Autor: autorul cărţii;
- Titlu: titlul cărţii;
- Editura: editura de care aparţine cartea;
- Anul apariţiei: anul în care a fost publicată cartea;
- Vânzări[i]: valoarea in lei a vânzării cărţii în lunile I, II şi III.
Aplicaţia este realizată în C şi constă dintr-o serie de subprograme ce sunt apelate în programul principal:
- nr_art(): numără înregistrările dintr-un fişier. Este de tip integer şi are 2 argumente: fişierul şi o mărime de tip int ce va fi egală cu lungimea unei înregistrări la momentul apelului funcţiei;
- creare_fisier_date(): creează fişierul binar şi îl încarcă cu înregistrări;
- afişare_fişier_date(): realizează listarea înregistrărilor din fişierul binar atât pe monitor cât şi în fişierul text „Afisare date.txt”;
- adaugare_date(): adaugă date în fişierul deja creat;
- modificare_editura(): modifică editura unei cărţi a cărei cotă este introdusă de la tastatură;
- stergere_carte(): sterge o carte a cărei cotă este introdusă de la tastatură;
- listare_editura(): listează toate cărţile aparţinând unei edituri introduse de la tastatură;
- listare_cota(): listează toate atributele unei cărţi a cărei cotă este introdusă de la tastatură atât pe ecran cât şi în fişierul text „Listare cota.txt”;
- creare_secv(): copiază înregistrările într-un fişier secvenţial („fis.secv.dat”) pentru a le pregăti de sortare;
- sort(): sortează înregistrările din fişierul secvenţial după editură iar în interiorul editurii, după autor;
- grade(): problema cu grade de total. Calculează media vânzărilor pentru fiecare carte, pentru fiecare editură şi pe întreaga librărie.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <process.h>
#include <string.h>
#include <ctype.h>
typedef struct
{
int an_aparitie, is, cota, vanzari[3];
char autor[30], titlu[20], editura[25];
} carte;
int nr_art(FILE *f, int l)
{
long p;
int n;
fseek(f,0,2);
p=ftell(f);
n=p/l;
return n;
}
void creare_fisier_date()
{
int i, nr, corect;
carte c;
char sir[30];
FILE *f;
f=fopen("fisier.dat","wb+");
corect=0;
do
{
printf("Introduceti cota "); fflush(stdin);gets(sir);
corect = 1;
for (unsigned char j=0; j<strlen(sir); j++)
if (!isdigit(sir[j])) corect=0;
}
while (corect==0);
nr=atoi(sir);
while(!feof(stdin))
{
if(nr>=nr_art(f,sizeof(carte)))
{
c.is=0;
fseek(f,0,2);
for(i=nr_art(f,sizeof(carte));i<=nr;i++)
fwrite(&c,sizeof(carte),1,f);
}
fseek(f,nr*sizeof(carte),0);
fread(&c,sizeof(carte),1,f);
if (c.is==1)
printf("Exista o carte cu aceasta cotann");
else
{
fseek(f,nr*sizeof(carte),0);
c.cota=nr;
corect=0.
Preview document
Conținut arhivă zip
- Gestiunea Bazei de Date a unei Librarii.doc