Witam,
mam do napisania prostą bazę danych na zaliczenie C++ na pierwszym roku studiów. Baza danych ma być oparta na strukturze kilku pól (lista jednokierunkowa) i umożliwiać dodawanie rekordów, przeglądanie i usuwanie. Funkcje do usuwania, przeglądania, dodawania mamy napisać sami, nie korzystając z klas.
Ogólnie wymyśliłem to tak, że program zapisuje wprowadzone wartości do pliku tekstowego (jeden rekord na jedną linię), oddzielając kolejne pola struktury średnikiem.
struct OSOBA
{
string imie;
string nazwisko;
string wiek;
string zawod;
OSOBA *next;
};
OSOBA top=NULL;
void Add(){
bool again;
do{
system("cls");
OSOBA *rekord = new OSOBA;
cout << "\n Podaj imie: ";
cin >> rekord->imie;
cout << "\n Podaj nazwisko: ";
cin >> rekord->nazwisko;
cout << "\n Podaj wiek: ";
cin >> rekord->wiek;
cout << "\n Podaj plec: ";
cin >> rekord->plec;
rekord->next=NULL;
OSOBA *temptop=top;
if(temptop==NULL)
{
top=rekord;
}
else
{
while(temptop!=NULL) temptop=temptop->next;
temptop=rekord;
}
FILE *plik = fopen("db.txt", "a+");
fprintf(plik, "%s;%s;%s;%s;\n", rekord->imie, rekord->nazwisko, rekord->wiek, rekord->zawod);
fclose(plik);
cout << "\n Dodać kolejny element?\n";
char znak=getch();
while(znak!='t' && znak!='n') znak=getch();
if(znak=='t') again=true;
if(znak=='n') again=false;
}while(again);
}
Załóżmy, że mamy plik tekstowy postaci:
Jan;Kowalski;35;inżynier;
Piotr;Nowak;40;bezrobotny;
Anna;Polak;22;studentka;
Przy uruchamianiu programu chciałbym, żeby ładował on cały plik tekstowy do struktury, żeby póżniej można było na niej dokonywać operacji przeglądania, wyszukiwania czy usuwania. Napisałem kod, który wyciąga poszczególne wartości z kolejnych linii i je zapisuje w zmiennych, tylko że nie wiem, jak zapisywać kolejne wartości w strukturze... Czy ktoś mogłby podzielić się jakimś pomysłem, opinią, poradą? Byłbym bardzo wdzięczny :)
struct OSOBA
{
string imie;
string nazwisko;
string wiek;
string zawod;
OSOBA *next;
};
char c;
FILE * plik;
plik = fopen ("db.txt","r");
if (plik!=NULL)
{
do{
string imie;
string nazwisko;
string plec;
string wiek;
do{
c=fgetc(plik);
if(c!=';') imie+=c;
}while(c!=';');
do{
c=fgetc(plik);
if(c!=';') nazwisko+=c;
}while(c!=';');
do{
c=fgetc(plik);
if(c!=';') plec+=c;
}while(c!=';');
do{
c=fgetc(plik);
if(c!=';') wiek+=c;
}while(c!=';');
//tutaj jakiś kod do zapisania w strukturze?
}while(c!=EOF);
Byłbym naprawdę wdzięczny, gdyby ktoś wskazał mi właściwą drogę wykonania tego zadania. Cpp uczę się dopiero od dwóch miesięcy, więc napisanie powyższego kodu zajęło mi trochę czasu i myślenia.