Skocz do zawartości

Projekt 'Księgarnia' - proszę o pomoc w kilku kwestiach


Rekomendowane odpowiedzi

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

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający forum Projekt 'Księgarnia'   0 użytkowników
    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...