Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

prosta baza danychw c++

#1
prosta baza danychw c++
Witam.
Znalazłem trochę wolnego czasu i wymyśliłem sobie, żeby pouczyć sie trochę C++. Kumpel powiedział żebym napisał prostą bazę danych. Wymyśliłem sobie jakoś prostą, która zapisuje do pliku imię, nazwisko i nr. telefonu.

Nie wiem jak sensownie odczytać dane z pliku, może je źle zapisuje?
Pomóżcie miPłaczePłacze

Kod, który stworzyłem:
Kod:
#include <iostream>
#include <fstream>

using namespace std;
struct rekord
{
       string imie;
       string nazwisko;
       int telefon;
};
rekord nowy_rekord()
{
    cout << "Podaj dane :\n";
    rekord pierwszy;
    cout << "imie: ";
    cin >>  pierwszy.imie;
    cout << "nazwisko: ";
    cin >> pierwszy.nazwisko;
    cout << "telefon: ";
    cin >>  pierwszy.telefon;
    system("cls");
    
    return pierwszy;
}
int menu()
{
     cout << "[1] Dodaj rekord\n";
     cout << "[2] Zapisz do pliku\n";
     cout << "[3] Wczytaj z pliku\n";
     cout << "[0] Wyjscie\n";
     int odp;
     cin >> odp;
     system("cls");
     return odp;    
}
void zapisz_baze(rekord *tab, int ile)
{
     ofstream fout("plik.txt", ios::app);
     for (int a = 0; a < ile; a++)      //zapisuje wszystkie nowe rekordy
     {
         fout << tab[a].imie << "\n";
         fout << tab[a].nazwisko << "\n";
         fout << tab[a].telefon << "\n";
     }
     fout.close();
}
void odczytaj_baze()
{
     ifstream fin("plik.txt");
     // jak odczytać dane z pliku??
     // najlepiej zeby zapisac je odpowiednio w strukturze rekord
     // tzn. odczytać imie i zapisac je w obiekcie rekord do imienia i tak z nazwiskiem oraz tel.
     fin.close();
    
}
int main()
{
    int odp ,a = 0;
    rekord tablica_rekordow[100];
    do{
       odp = menu();
       switch(odp)
       {
            case 1:{
                  tablica_rekordow[a] = nowy_rekord();
                  a++;
                  break;}
            case 2:{
                 zapisz_baze(tablica_rekordow, a);
                 break;}
            case 3:{
                 odczytaj_baze();
                 break;}
            case 0:
                 break;
            default: break;
       }
    } while (odp != 0);
}

Pisałem to Dev-C++.
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#2
RE: prosta baza danychw c++
zależy, czy Twój rekord MUSI zawierać wszystkie pola, jeśli tak, i nie ma potrzeby sprawdzania to odczytujesz tak:
Kod:
while(!fin.eof())
{
fin>>tmp;
rekord.nazwisko = tmp;
fin>>tmp;
rekord.imie = tmp;
...itd
}

edit: poza tym proponuje zapisać telefon jako ciąg znaków, powód? chociażby taki, że "0" na początku zostanie zjedzone i wprowadzenie (0)9X1XXXXXX da błąd
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#3
RE: prosta baza danychw c++
a jak zrobić, żeby odczytał na przykład tylko trzecią osobę w bazie danych, albo po podaniu nazwiska lub imienia odczytał odpowiednią osobę?
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#4
RE: prosta baza danychw c++
~Anonim napisał(a):a jak zrobić, żeby odczytał na przykład tylko trzecią osobę w bazie danych,
http://www.cplusplus.com/doc/tutorial/files.html

a co do wyszukiwania, hmm najprościej to przeszukiwanie liniowe, czyli czytasz np tylko nazwiska i jeżeli porównanie z szukanym wypadnie pozytywnie to wyświetlasz cały rekord.
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#5
RE: prosta baza danychw c++
ale ma czytać każdą z linii czy tylko te co są w niej nazwiska, bo nie mam pojęcia jak ustawić, żeby czytał co 3 linijkę
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#6
RE: prosta baza danychw c++
raczej musisz czytać każdą linię(tak mi się przynajmniej wydaje w przypadku łańcuchów)
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#7
RE: prosta baza danychw c++
a to nie spowolni bardzo pracy programu?
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#8
RE: prosta baza danychw c++
zależy jak duże bazy zamierzasz tworzyć, jeżeli duuże to już lepiej się zapoznać z MySQL, a tak w celach edukacyjnych to Ci przy testowaniu wszytko wyjdzie.
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#9
RE: prosta baza danychw c++
Napisałem coś takiego na razie:
Kod:
void odczytaj_baze()
{
     ifstream fin("plik.txt");
     string imie, nazwisko, telefon;
     int indeks = 0;
     cout << "*********************************************************************\n";
     cout << "Lp. " << "Imie" << "\tNazwisko" << "\tNr. telefonu\n";
     cout << "*********************************************************************\n";
     while(!fin.eof())
     {
          fin >> imie >> nazwisko >> telefon;
          cout << ++indeks << "). " << imie << " \t" << nazwisko << " \t" << telefon << endl;
          cout << "---------------------------------------------------------------------\n";
     }
     fin.close();
     system("pause");
     system("cls");
}
i nie wiem dlaczego ostatnia osoba w pliku jest zawsze wypisywana dwukrotnie, próbowałem pozmieniać tam coś, ale zawsze było to samo.
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#10
RE: prosta baza danychw c++
Zauważ że ile razy klikniesz na Zapisz do pliku to tyle razy dubluje Ci ostatni wiersz. Błąd tkwi w funkcji zapisz_baze
 System operacyjny: windows_vista Przeglądarka: opera
Programy: Polecane / Nowe / Inne



Użytkownicy forum szukali:
prosta baza danych c++c++ prosta baza danychbaza + c++ jak zrobić bazę danych w c++dev c++ baza danychjak zrobic baze danych c++jak stworzyć bazę danych w c++c++ baza danych sklepubaza danych c++ prostatutorial bazy danych c++

Podobne wątki (prosta baza danychw c++)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
Ściana Prosta gra w Builder C++ Kiranek1 1 938 31.05.2019, 15:20
Ostatni post: Szachista
  Baza danych w Accessie - sprawdzenie poprawności Fei 1 5805 12.01.2017, 00:40
Ostatni post: Chudy2000
  Baza danych w accessie Bernkow 1 6641 31.05.2016, 08:37
Ostatni post: koneton

Skocz do:


Wybrane wątki (prosta baza danychw c++)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  [Java] Strona z zadaniami do rozwiązania i odpowiedziami rafal12999 2 4520 27.01.2019 13:44
Ostatni post: rafal12999
  kompilacja biblioteki Agui - cmake jurek2 0 3938 10.01.2019 13:12
Ostatni post: jurek2
  Zamiana całego zestawu znaków wg przyporządkowania BarHorab 5 4657 19.12.2018 16:45
Ostatni post: Szachista
  Sumowanie licz excel - problem OxyGenE 2 7743 19.12.2018 16:29
Ostatni post: Szachista
  Transfer plików via FTP Visual Basic FireBytes 1 3048 17.11.2018 21:07
Ostatni post: Szachista
  Jaki kod pod pewne zdarzenia visualbasic 2010 aktywny27 4 5503 07.11.2018 13:41
Ostatni post: Ajgor
Scared Ipad Pro programowanie? NissmoOne 4 6302 06.10.2018 12:22
Ostatni post: NissmoOne
  C# pierwsza pusta komórka Excel DonCorleone 0 6013 21.09.2018 16:58
Ostatni post: DonCorleone
  .bat nie kompresuje plików GIENTY 3 6281 06.09.2018 07:20
Ostatni post: broda99
  problem z programem .bat wiktrom12 4 7373 30.08.2018 08:25
Ostatni post: wiktrom12
  Silnik do gier ZigglerGames 1 6196 23.08.2018 09:03
Ostatni post: Szachista
  Chciałbym zrobić prosty plik exe z jedną funkcją densour 4 6887 09.08.2018 16:24
Ostatni post: Ajgor
  Który język wybrać do stworzenia aplikacji synchronizujące pliki z urządzeniem mobiln Elemental 2 2234 18.07.2018 12:05
Ostatni post: Ajgor
  Pomysł napisania programu ROM FireBytes 3 7559 28.06.2018 16:56
Ostatni post: FireBytes
  [VBA] Tworzenie nowego arkusza z danymi z TextBox'a Pioro 4 7725 19.06.2018 23:24
Ostatni post: broda99