wexmop2 Opublikowano 2 Stycznia 2017 Udostępnij Opublikowano 2 Stycznia 2017 Witam Mam do wykonania projekt księgarni, napisałem już trochę kodu i działa mi prawidłowo dodawanie rekordów (dodawanie 1 rekordu omija imie, nie wiem dlaczego) oraz wyszukiwanie po nazwisku, cenie. Zadanie wygląda następująco: Napisać program, który będzie służył do zarządzania informacjami o książkach w księgarni. Dane mają być przechowywane w pliku – przykładowy plik podany na moodlu. O każdej książce przechowywane są następujące informacje: imię i nazwisko autora, tytuł, ilość egzemplarzy, cena. Można założyć, że przechowywane będą informacje o maksymalnie 500 książkach. Program ma wyświetlać na ekranie menu z którego użytkownik będzie mógł wybrać jedno z działań: • dodawanie nowej książki • usuwanie książek • wyszukiwanie (po nazwisku autora, po ilości egzemplarzy i w przedziale cenowym) • zmianę ilości egzemplarzy wybranej książki (można wprowadzić numerację książek i użytkownik może podawać numer książki której ilość egzemplarzy chce zmienić) oraz zmianę ceny Program ma zapisywać zmienione informacje o książkach z powrotem do pliku. Mój kod: #include <iostream> #include <fstream> #include <string> #include <windows.h> #include <conio.h> #include <cstdlib> using namespace std; int id_last(){ int id_int; string id, imie, nazwisko, tytul, ilosc, cena, odstep; int koniec; fstream plik; plik.open("plik.txt", ios::in); while(!plik.eof()){ getline(plik,id); id_int = atoi(id.c_str()); getline(plik,imie); getline(plik,nazwisko); getline(plik,tytul); getline(plik,ilosc); getline(plik,cena); getline(plik,odstep); } return id_int; } int main(){ int id_ostatnie; string id, imie, nazwisko, tytul, ilosc, cena; int x; string odstep="\n"; id_ostatnie = id_last(); do{ cout<<"KSIEGARNIA"; cout<<"\n0. Wyswietlanie"; cout<<"\n1. Dodawanie"; cout<<"\n2. Usuwanie"; cout<<"\n3. Wyszukiwanie"; cout<<"\n4. ilosc"; cout<<"\nWybierz opcje: "; cin>>x; switch(x){ case 0:{ system("cls"); cout<<"WYSWIETLANIE"<<endl; fstream plik; plik.open("plik.txt", ios::in); while(!plik.eof()){ getline(plik,id); getline(plik,imie); getline(plik,nazwisko); getline(plik,tytul); getline(plik,ilosc); getline(plik,cena); getline(plik,odstep); cout<<id<<"\t"<<imie<<"\t"<<nazwisko<<"\t\t"<<tytul<<"\t\t"<<ilosc<<"\t\t"<<cena<<endl; } plik.close(); cout<<endl; Sleep(1000); break; } case 1:{ system("cls"); fstream plik; plik.open("plik.txt", ios::app); id_ostatnie = id_last(); id_ostatnie +=1; int q; cout<<"DODAWANIE REKORDU"<<endl; cout<<"Podaj liczbe rekordow do dodania: "; cin>>q; for(int i=0;i<q;i++){ cout<<"Dodawanie "<<i+1<<" rekordu: "<<endl; cout<<"\nPodaj imie autora: "; getline(cin,imie); cout<<"\nPodaj nazwisko autora: "; getline(cin,nazwisko); cout<<"\nPodaj tytul ksiazki: "; getline(cin,tytul); cout<<"\nPodaj ilosc ksiazek: "; getline(cin,ilosc); cout<<"\nPodaj cene ksiazki: "; getline(cin,cena); plik<<"\n\n"<<id_ostatnie<<"\n"<<imie<<"\n"<<nazwisko<<"\n"<<tytul<<"\n"<<ilosc<<"\n"<<cena; id_ostatnie +=1; } plik.close(); cout<<endl; Sleep(1000); break; } case 2:{ int usun; cout<<"\nPodaj ID ksiazki do usuniecia: "; cin>>usun; fstream plik; int id_int; plik.open("plik.txt", ios::in | ios::out); while(!plik.eof()){ getline(plik,id); id_int = atoi(id.c_str()); getline(plik,imie); getline(plik,nazwisko); getline(plik,tytul); getline(plik,ilosc); double ilosc_double = atoi(ilosc.c_str()); getline(plik,cena); double cena_double = atoi(cena.c_str()); getline(plik,odstep); } plik.close(); Sleep(1000); break; } case 3:{ system("cls"); fstream plik; plik.open("plik.txt", ios::in); double OD,DO; string nazwisko_w; cout<<"Wyszukiwanie"<<endl; cout<<"Podaj nazwisko autora: "; cin>>nazwisko_w; cout<<"Podaj cene od: "; cin>>OD; cout<<"Podaj cene do: "; cin>>DO; while(!plik.eof()){ getline(plik,id); int id_int = atoi(id.c_str()); getline(plik,imie); getline(plik,nazwisko); getline(plik,tytul); getline(plik,ilosc); double ilosc_double = atoi(ilosc.c_str()); getline(plik,cena); double cena_double = atoi(cena.c_str()); getline(plik,odstep); if(nazwisko_w==nazwisko){ cout<<id<<"\t"<<imie<<"\t"<<nazwisko<<"\t"<<tytul<<"\t"<<ilosc<<"\t"<<cena<<endl; } else if(cena_double >=OD && cena_double<=DO){ cout<<id<<"\t"<<imie<<"\t"<<nazwisko<<"\t"<<tytul<<"\t"<<ilosc<<"\t"<<cena<<endl; } } plik.close(); Sleep(1000); break; } case 4:{ system("cls"); int zmiana,czy,czy2,iloscnew; fstream plik,plik2; plik.open("plik.txt", ios::in | ios::out); cout<<"Podaj ID ksiazki: "; cin>>zmiana; cout<<"Czy chcesz zmienic ilosc egzemplarzy?"<<endl; cout<<"1-TAK\t 2-NIE"<<endl; cout<<"Podaj liczbe: "; cin>>czy; int id_int; if(czy==1){ cout<<"Podaj nowa ilosc egzemplarzy: "; cin>>iloscnew; while(!plik.eof()){ getline(plik,id); getline(plik,imie); getline(plik,nazwisko); id_int = atoi(id.c_str()); if(id_int == zmiana){ plik<<"\n"<<iloscnew; } getline(plik,tytul); getline(plik,ilosc); getline(plik,cena); double cena_double = atoi(cena.c_str()); getline(plik,odstep); } } cout<<"Czy chcesz zmienic cene ksiazki?"<<endl; cout<<"1-TAK\t 2-NIE"<<endl; cout<<"Podaj liczbe: "; cin>>czy2; if(czy2==1){ } plik.close(); break; } } }while(x<5); return 0; } plik.txt: plik.txt Jakby ktoś mi pomogł z tym problemem dodawania oraz usuwaniem rekordów z pliku i zmiana ilosci egzemplarzy, ceny. Pozdrawiam i dziękuję za zwrócenie uwagi Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
wexmop2 Opublikowano 6 Stycznia 2017 Autor Udostępnij Opublikowano 6 Stycznia 2017 @ref Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
wexmop2 Opublikowano 11 Stycznia 2017 Autor Udostępnij Opublikowano 11 Stycznia 2017 do kosza Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Zarchiwizowany
Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.