Olka utworzono 11 czerwca 2007 utworzono 11 czerwca 2007 Witajcie! Mam do napisania program, który nazwany jest biblioteka. maja byc 3 klasy: uzytkownik, ksiazka i wypozyczalnia. Mamy tez 2 pliki, jeden z uzytkownikami(nr pozycji, imie, nazwisko i ilosc wypozyczonych ksiazek) drugi z ksiazkami(nt pozycji, tytul, autor i ilosc dostepnych ksiazek) Na razie mam cos takiego: (jesli gdzies sa bledy to prosze piszcie!) #include <iostream> #include <fstream> #include <string> #include <vector> using namespace std; //------------------klasa uzytkownik---------------- class Uzytkownik { public: Uzytkownik(int nr, string imie, string nazwisko); void setNr(int nr){nr=nr;}; void setImie(string imie){imie=imie;} void setNazwisko(string nazwisko){nazwisko=nazwisko;} int getNr(){return nr;}; string getImie(){return imie;}; string getNazwisko(){return nazwisko;}; private: int nr; string imie; string nazwisko; }; //-----------------klasa ksiazka------------------- class Ksiazka { public: Ksiazka(string tytul,string autor,int ilosc); void setTytul(string tytyl){tytul=tytul;} void setAutor(string autor){autor=autor;} void setIlosc(int ilosc){ilosc=ilosc;} string getTytul(){return tytul;}; string getAutor(){return autor;}; int getIlosc(){return ilosc;}; private: string tytul; string autor; int ilosc; }; //typedef vector<Uzytkownik>uzyt; //typedef vector<Ksiazka>ks; //----------------klasa wypozyczalnia---------------- class Wypozyczalnia { //public: Wypozyczalnia(string, string, int); public: void wszyscyUzytkownicy(); void wszystkieKsiazki(); void dodajKsiazke(); void dodajUzytkownika(); void usunUzytkownika(); private:string imie; string nazwisko; string tytul; string autor; int iloscKsiazek; int nr; int iloscWypozyczonych; //vector<string>uzytkownik; <- to wena twórcza, nie znam sie na vectorach....nie moge tez nigdzie znalezc ladnego ich opisu //vector<string>ksiazka; }; w ten sposób mam zrobione wybieranie konretnej rzeczy która chce zrobic w tej bibliotece uzytkownik: int main() { int liczba=1; Wypozyczalnia wyp; while(liczba !=0)//dopoki uzytkownik nie wpisze 0 program wciaz bedzie wczytywal { cout << "wybierz jeden wariant: "; cout << " n "; cout << "1 - wypisz uzytkownikow" << endl; cout << "2 - wypisz ksiazki" << endl; cout << "3 - dodaj ksiązki" << endl; cout << "4 - dodaj uzytkownika" << endl; cout << "5 - usun uzytkownika" << endl; cout << "0 - koniec, milego dnia! " << endl; cout << "Twoj wybor: "; cin>>liczba; switch (liczba) { case 1: wyp.wszyscyUzytkownicy(); break; case 2: wyp.wszystkieKsiazki(); break; case 3: wyp.dodajKsiazke(); break; case 4: wyp.dodajUzytkownika(); break; case 5: wyp.usunUzytkownika(); break; case 0: cout<<"dziekujemy "; break; default : cout<<"nieznana opcja !"; } } // getch(); } a teraz funkcje....i tu zaczynają sie schody, bo nie chce czytac z pliku wartosci. void Wypozyczalnia :: wszyscyUzytkownicy() { //funkcja nie pobiera i nie zwraca zadnej wartosci string imie, nazwisko; //l1 pobiera pozycje z pliku, a l2 ilosc wypozyczonych ksiazek przez uzytkow. int l1,l2; vector<int> v,v1; vector<string> ve,ve1; ifstream plik; plik.open("uzytkownicy2.txt"); while(plik >> l1 >> imie >> nazwisko >> l2){ v.push_back(l1); ve.push_back(imie); ve1.push_back(nazwisko); v1.push_back(l2); } for (int i=0;i<v.size(); ++i) { cout << v<<" "<<ve<<" "<<ve1<< " "<<v1<< endl; } plik.close(); } Jesli ktos jest w stanie mi pomóc to zapraszam:) jak an razie nei dziala wypisywanie wiec dalszych funkcji nie robiłam. Pozdrawiam i czekam na pomoc. [ Dodano: 2007-06-12, 19:53 ] Odnosnie popprzedniego programu! void Wypozyczalnia :: wszyscyUzytkownicy() { string imie, nazwisko; int l1,l2; vector<int> v,v1; vector<string> ve,ve1; ifstream plik; plik.open("uzytkownicy2.txt"); while(plik >>l1>>imie>>nazwisko>>l2){ v.push_back(l1); ve.push_back(imie); ve1.push_back(nazwisko); v1.push_back(l2); } for (int i=0;i<v.size(); ++i) { cout << v<<" "<<ve<<" "<<ve1<< " "<<v1<< endl; } plik.close(); } void Wypozyczalnia :: dodajUzytkownika() { vector<int> v,v1; vector<string> ve,ve1; unsigned int i; string imie,nazwisko ; int l1,l2; ifstream plik1; plik1.open("uzytkownicy2.txt"); while(plik1 >>l1>>imie>>nazwisko>>l2){ v.push_back(l1); ve.push_back(imie); ve1.push_back(nazwisko); v1.push_back(l2); } plik1.close(); ofstream plik; // * ofstream - zapis do pliku plik.open("uzytkownicy2.txt"); cout << "dodawanie uzytkownika do biblioteki" << endl; cout << "Podaj dane uzytkownika: imie, nazwisko, ilosc wypozyczonych ksiazek" << endl; cin >>imie>>nazwisko>>l2; l1=v.size()+1; v.push_back(l1); ve.push_back(imie); ve1.push_back(nazwisko); v1.push_back(l2); for(i=0; i<ve.size(); ++i){ cout <<i<<" "<< v<<" "<<ve<<" "<<ve1<< " "<<v1<< endl; plik<<v<<" "<<ve<<" "<<ve1<< " "<<v1<< endl; } plik.close(); } Mam juz zrobione wypisywanie i dodawanie uzytkowników...niestety nie chodzi mi usuwanie, nie wiem co zrobic, jak te "erase" wcisnac...ma ktos pomysł?
raytheon komentarz 22 lipca 2007 komentarz 22 lipca 2007 public: Uzytkownik(int nr, string imie, string nazwisko); void setNr(int nr){nr=nr;}; void setImie(string imie){imie=imie;} void setNazwisko(string nazwisko){nazwisko=nazwisko;} to takie przypisywanie wogole jest mozliwe?? czy tu przypadkiem nie zachodzi zasłanianie nazw?
piotrusgit komentarz 23 lipca 2007 komentarz 23 lipca 2007 Tak takie przypisanie jest możliwe pod warunkiem że składnik klasy bedzie poprzedzony wskaźnikiem <b>this-></b>
Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!
Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.