Prezentacja programu PowerPoint
Transkrypt
Prezentacja programu PowerPoint
Język ANSI C-struktury i pliki
Podstawowe operacje plikowe w prostej bazie danych (cz.1)
Operacje te ( poza tworzeniem, otwieraniem i zamykaniem pliku) to:
- dopisywanie struktury (rekordu) do pliku bazy
- sortowanie pliku
- usuwanie struktury z pliku
- modyfikacja struktury
Algorytm dopisywania
1. Ustaw wskaźnik pliku na końcu pliku
2. Dopisz strukturę
fseek( fp,0,SEEK_END);
fwrite(&st, sizeof( struct student),1,fp);
Język ANSI C-struktury i pliki
Podstawowe operacje plikowe w prostej bazie danych (cz.2)
Algorytm sortowania pliku struktur przy użyciu sortowania bąbelkowego
1. Ustaw wskaźnik pliku na początku pliku, zeruj sygnalizator zamian.
2. Czytaj dwie struktury.
3. Porównaj odpowiednie pola, jeżeli nie spełniają kryterium
sortowania, zamień struktury w pliku miejscami.
4. Jeżeli nie osiągnięto elementu n-2, przejdź do
kroku 2.
5. Jeśli wystąpiła zamiana, przejdź do kroku 1.
6. Zakończ.
Język ANSI C-struktury i pliki
Podstawowe operacje plikowe w prostej bazie danych (cz.3)
Przykład. Realizacja sortowania ( fragment funkcji sortującej z
pliku Projekt2_s3.
struct student st1,st2;
do { zam=0;
fseek(fp,0,SEEK_SET);
for (i=0;i<*p_nr-1;i++)
{
fseek(fp,i*sizeof (struct student),SEEK_SET);
fread(&st1,sizeof(struct student),1,fp);
fread(&st2,sizeof(struct student),1,fp);
if (strncmp (st1.nazwisko,st2.nazwisko,18)>0)
{
fseek(fp,i*sizeof(struct student),\
SEEK_SET);
fwrite(&st2,sizeof(struct student),1,fp);
fwrite(&st1,sizeof(struct student),1,fp);
zam=1;
} } } while (zam);
Język ANSI C-struktury i pliki
Podstawowe operacje plikowe w prostej bazie danych (cz.4)
Kolejną operacją jest usuwanie określonej struktury (rekordu).
Operacja ta może być zrealizowana w różny sposób, w zależności
od przyjętych założeń, np. poprzez przepisanie poszczególnych
struktury z pliku do tablicy struktur i następnie zapisanie do pliku
wszystkich struktur poza usuwaną.
Jeżeli chcemy wykonać działanie bez przepisywania do tablicy
struktur, można utworzyć plik tymczasowy i przepisać do niego
struktury poza usuwaną, następnie usunąć plik struktur i zmienić
nazwę pliku tymczasowego na tę, którą miał plik struktur.
Język ANSI C-struktury i pliki
Podstawowe operacje plikowe w prostej bazie danych (cz.4)
Innym rozwiązaniem może być uzupełnienie o dodatkowe pole,
zaznaczane przy poleceniu usunięcia struktury, i następnie takie
zmodyfikowanie działań na pliku, by nie uwzględniały przy
poszczególnych działaniach struktur oznaczonych, jako usunięte.
Poniżej przedstawiono algorytm polegający na odczycie ostatniej
struktury w pliku i zapis jej w miejsce usuwanej i następnie obcięciu pliku
do rozmiaru mniejszego o rozmiar ostatniej struktury. Rozwiązanie to jest
proste, ale wymaga sortowania, co zmniejsza efektywność.
( Aby uniknąć sortowania, można "przesunąć" zawartość pliku w kierunku
początku pliku drogą odpowiedniego przepisywania. )
Język ANSI C-struktury i pliki
Podstawowe operacje plikowe w prostej bazie danych (cz.5)
handle=open(s,O_RDWR|O_BINARY))==-1)
printf("\n plik nie zostal otwarty");
chsize(handle,(ilosc-1)*sizeof(struct student));
int open(const char *path, int access [, unsigned mode]);
Parametr path oznacza ścieżkę do tworzonego/otwieranego
pliku, drugi parametr - access określa czy ma być realizowany tylko
zapis, tylko odczyt czy też zapis i odczyt. Odpowiednie wartości to
O_RDONLY
otwieranie do tylko odczytu
O_WRONLY
otwieranie do tylko zapisu
O_RDWR
otwieranie do zapisu i odczytu