Cześć, słuchajcie mam taki malutki problem.
Piszę aktualnie program aplikacji bazodanowej działający na plikach. Zrobiłem podstawową funkcjonalność programu, dane wczytują się z pliku tekstowego do wektora klasy, ale teraz pojawia mi się problem z taką zmienną jak ID. No dobra, załóżmy, że z nią sobie poradziłem i w prosty sposób pętla tworzy za pomocą inkrementacji ID. Według mnie jest to trochę złe rozwiązanie, bo jeżeli raz usunę wpis o ID 7, to ponownie będę mógł dodać w to miejsce nową osobę - przejmować się tym, czy na tak starej architekturze olać ten problem? Wiem, że w typowych bazach danych jak raz się usunie jakiś element, to potem już nie można wstawić w to samo miejsce innych danych.
No dobra, a teraz mój jeden z poważniejszych problemów. Ktoś mógłby mi opisać słownie, jak wybrać konkretne ID pacjenta (w moim przypadku takie dane przechowuję) i wyświetlić tylko te dane do edycji z wektora?
//Struktura pliku tekstowego Imie Nazwisko Wiek Telefon
// main.cpp #include <string> #include <vector> #include <fstream> #include <cstdlib> #include <iostream> #include <conio.h> #include "patient.h" void WczytywanieDanych() { std::vector<Patient> patients; int id = 0; std::string name, surname; unsigned char age; unsigned int phone_number; std::ifstream file("patient.txt"); if(file.good()) { std::string line; //przechowuje pobrana linie tekstu: int number_line = 0; while(getline(file, line)) { switch(number_line % 4) { //case 0: // id = atoi(line.c_str()); // break; case 0: name = line; break; case 1: surname = line; break; case 2: age = atoi(line.c_str()); break; case 3: phone_number = atoi(line.c_str()); id++; patients.push_back(Patient{id, name, surname, age, phone_number}); break; } number_line++; } for(size_t i = 0; i < patients.size(); ++i) { patients[i].say_hello(); } } else { std::cout << "Ten plik nie istnieje - blad."; } } void patients_hello() { std::vector<Patient> patients; for(size_t i = 0; i < patients.size(); ++i) { patients[i].say_hello(); } } void SaveToFile() { int id; std::string name, surname; unsigned int ages = 0; unsigned int phone_number; //std::cout << "Podaj identyfikator: "; //std::cin >> id; std::cout << "Podaj imie: "; std::cin >> name; std::cout << "Podaj nazwisko: "; std::cin >> surname; do { std::cout << "Podaj wiek: "; std::cin >> ages; if (ages > 125) { system("CLS"); std::cout << "Za duzy wiek. Podaj poprawna wartosc! \n \n"; } } while (ages > 125); std::cout << "Podaj numer telefonu: "; std::cin >> phone_number; std::ofstream file("patient.txt", std::ios::app); if(file.good()) { Patient patient{id, name, surname, ages, phone_number}; file << patient.get_data_string(); file.close(); } else { std::cout << "Ten plik nie istnieje - blad."; } } void Menu() { system("CLS"); //WczytywanieDanych(); std::cout << "1. Wyswietl i edytuj dane o pacjentach. \n"; std::cout << "2. Wprowadz nowego pacjenta. \n"; std::cout << "3. Usun pacjenta. \n"; std::cout << "4. Wyszukiwanie pacjenta. \n"; std::cout << "5. Sortowanie pacjentow. \n \n"; std::cout << "Twoj wybor: "; int zmienna; std::cin >> zmienna; system("CLS"); switch(zmienna) { case 1: { WczytywanieDanych(); //patients_hello(); std::cout << "\nKtorego pacjenta chcesz edytowac? "; int ktorego_edytowac; std::cin >> ktorego_edytowac; std::cout << "\n\nAby wrocic do menu kliknij przycisk: [R]."; /*if (choise == 'R') { system("CLS"); MainMenu(); } */ } break; case 2: { SaveToFile(); std::cout << "\nAby wrocic do menu kliknij przycisk: [1]. "; int choise; std::cin >> choise; if (choise = 1) { system("CLS"); ///MainMenu(); } } break; default: std::cout << "Zly wybor - wybierz ponownie."; } } void MainMenu() { std::cout << " ------------------------------ \n \n"; std::cout << " BAZA DANYCH SZPITALA \n \n"; std::cout << " ------------------------------ \n \n"; std::cout << "1. Pacjenci \n"; std::cout << "2. Lekarze \n"; std::cout << "3. Karta chorob \n"; std::cout << "\nTwoj wybor: "; int choice; std::cin >> choice; switch(choice) { case 1: Menu(); break; } } int main() { MainMenu(); }