[C] baza danych biblioteki

maya22
Użytkownik
Użytkownik
Posty: 1
Rejestracja: 1 maja 2012, o 16:19
Płeć: Kobieta
Lokalizacja: gg

[C] baza danych biblioteki

Post autor: maya22 »

hej :( mam problem z zadaniem na programowanie w c. a dokładnie to mój program powinien pozwolić przechować informacje co najwyżej o 10 książkach. ma wypisać informacje o dowolnej książce lub o wszystkich, pozwala wpisać jedną książke na raz a potem pyta o następną , jeśli mamy już 10 to ma być komunikat, że nie możemy już wpisać więcej, mamy możliwość usunąć jakąś książke ze zbioru. a wszystkie informacje będą przechowywane w pliku ksiazka i maja tam zostac po zamknieciu programu.
no cóż a moje marne wypociny nie spełniają tych wymagań .zawiesza się gdy próbuje wpisać jakas ksiazke. nie przechowuje informacji w pliku i nie mam zielonego pojęcia jak można usunąć którąś z pozycji.więc mam taka prośbe by pomóc mi wpaść na odpowiedni trop.

Kod: Zaznacz cały

#include <stdio.h>
#include <stdlib.h>
typedef struct
{
	char tytul[40];
	char autor[30];
	int rok_wyd;
	char gatunek[20];
	int ocena;
                    }
  book;

void wypisz (book w)
{
	printf("Tytul: %s\n", w.tytul);
	printf("Autor:  %s\n", w.autor);
	printf("Rok wydania:  %d\n", w.rok_wyd);
	printf("Gatunek:  %s\n", w.gatunek);
	printf("Ocena: %d\n", w.ocena);
                                             }
                                        
book zapisz()
{
	book z;
	printf("Podaj tytul: ");
	gets(z.tytul);
	printf("Podaj autora: ");
	gets(z.autor);
	printf("Podaj rok wydania: ");
	scanf("%d",z.rok_wyd);
	printf("Podaj gatunek: ");
	gets(z.gatunek);
	printf("Ocen: ");
	scanf("%d", z.ocena);
	return z;
								}
int main()
{
     FILE*do_zapisu;
	 do_zapisu=fopen("ksiazki", "w");
	 int n, i=0, c=0;
	 char znak;
	 book a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, d;
book tab[]={a1, a2, a3, a4, a5, a6, a7, a8, a9, a10};
	 do
	 {
	 printf("Chcesz wpisac nowy egzemplarz <t/n> \n");
	 znak=getch();
    if(znak=='t'|| znak=='T')
	{
	d=tab[i];
		d=zapisz();
	i++;
                        };
    c++;
    if(c==10)
   { printf("Nie mozesz wpisac egzemplarza z powodu pelnaj pamieci");
    break;};
                                                                        }
    while(znak=='t'|| znak=='T');
	 fwrite(&a1, sizeof(book), 10, do_zapisu);
	 fclose(do_zapisu);
	 do
	 	{
		 printf("czy chcesz zobaczyć ktoras z pozycji <t/n> \n");
		 znak=getch();
		 if(znak=='t' ||znak=='T')
		 {
		  printf("który numer z pozycji czy wszystkie, gdzie wszystkie to 11, wypisac : %d/n");	
				switch(n)
				{
					case '1':wypisz(a1); break;
					case '2':wypisz(a2); break;
					case '3':wypisz(a3); break;
					case '4':wypisz(a4); break; 
					case '5':wypisz(a5); break; 
					case '6':wypisz(a6); break; 
					case '7':wypisz(a7); break; 
					case '8':wypisz(a8); break; 
					case '9':wypisz(a9); break; 
					case '10':wypisz(a10); break; 
					case '11':wypisz(a1); wypisz(a2); wypisz(a3); wypisz(a4); wypisz(a5); wypisz(a6); wypisz(a7); wypisz(a8); wypisz(a9); wypisz(a10); 
					default: return 0;  
					}
				
					}
				}
	while(znak=='t' ||znak=='T');
	
	                                                  
   

	
	return 0;
}
Ostatnio zmieniony 2 maja 2012, o 23:30 przez Afish, łącznie zmieniany 2 razy.
Powód: Kod obieraj w tago [code]. Taguj tematy.
ODPOWIEDZ