Buscar

livro

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

#include <iostream> 
#include <fstream> 
#include <string> 
using namespace std; 
struct registro { 
 	int codigo; 
 	char titulo[50]; 
 	char editora[50];
 	char autor[50];
 	char categoria[5];
	float valor;
};
void menu() { 
 	cout << "M E N U" << endl; 
 	cout << "1 - Inserir livro" << endl; 
 	cout << "2 - Excluir livro" << endl; 
 	cout << "3 - Listar todos os livros Cadastrados" << endl; 
	cout << "4 - Listar todos os livros Cadastrados de uma categoria " << endl; 
 	cout << "5 - Pesquisar livro" << endl; 
 	cout << "6 - Sair" << endl; 
}
void cadastrarlivro() { 
 struct registro reg; 
 ofstream arquivo; 
 arquivo.open("livro.dat", ios::ate | ios::app); 
 if (!arquivo) { 
 cerr << "Arquivo nao pode ser aberto para gravacao!" << endl; 
 } 
 
 cout << "Codigo: "; 
 cin >> reg.codigo; 
 cout << "Titulo: "; 
 cin.get(); 
 cin.getline(reg.titulo, 50); 
 
 cout << "Editora: "; 
 cin.getline(reg.editora, 50); 
 cout << "Autor: "; 
 cin.getline(reg.autor, 50); 
 
 cout << "Categoria (A, P, C e O): "; 
 cin.getline(reg.categoria, 5); 
 
 cout << "Valor: "; 
 cin >> reg.valor;
 arquivo.seekp((reg.codigo-1) * sizeof(struct registro)); 
 arquivo.write((char*)&reg,(sizeof(struct registro))); 
 arquivo.close(); 
}
void mostrarlivro() { 
 struct registro reg; 
 ifstream leitura; 
 leitura.open("livro.dat"); 
 if (!leitura){ 
 cerr << "Arquivo nao pode ser aberto para leitura!" << endl; 
 } 
 cout << endl; 
 leitura.seekg(0); 
 leitura.read((char*)&reg, sizeof(struct registro)); 
 while ((leitura) && (!leitura.eof())) { 
 if (reg.titulo[0] != '\0') { 
 cout << "Codigo: " << reg.codigo << endl; 
 cout << "Titulo: " << reg.titulo << endl; 
 cout << "Editora: " << reg.editora << endl;
 cout << "Autor: " << reg.autor << endl;
 cout << "Categoria: " << reg.categoria << endl; 
 } 	 cout << "Valor: " << reg.valor << endl<<endl;
 leitura.read((char*)&reg, sizeof(struct registro)); 
 } 
 leitura.close(); 
} 
void excluirlivro(int codigo){ 
 struct registro reg; 
 fstream arquivo; 
 arquivo.open("livro.dat"); 
 if (!arquivo) {
 cerr << "Arquivo nao pode ser aberto para leitura!" << endl; 
 } 
 
 bool retorno = false; 
 arquivo.seekg(0); 
 arquivo.read((char*)&reg, sizeof(struct registro)); 
 while ((arquivo) && (!arquivo.eof())) { 
 if (reg.codigo == codigo) { 
 arquivo.seekp((reg.codigo-1) * sizeof(struct registro)); 
 reg.titulo[0] = '\0'; 
 reg.editora[0] = '\0'; 
 reg.autor[0] = '\0'; 
 reg.categoria[0] = '\0'; 
 reg.valor = 0; 
	 arquivo.write((char*)&reg,(sizeof(struct registro))); 
 retorno = true; 
 break; 
 } 
 arquivo.read((char*)&reg, sizeof(struct registro)); 
 } 
 arquivo.close(); 
 if (!retorno) cout << "Livro nao encontrado!" << endl; 
} 
void verificarlivro(int codigo){ 
 bool retorno = false; 
 if (codigo > 0) { 
 struct registro reg; 
 ifstream leitura; 
 leitura.open("livro.dat"); 
 if (!leitura) { 
 cerr << "Arquivo nao pode ser aberto para leitura!" << endl; 
 } 
 
 leitura.seekg(0); 
 leitura.read((char*)&reg, sizeof(struct registro)); 
 while ((leitura) && (!leitura.eof())) { 
 if (reg.codigo == codigo) { 
 if (reg.titulo[0] != '\0') { 
 cout << "LIVRO ENCONTRADO" << endl; 
 cout << "Codigo: " << reg.codigo << endl; 
 cout << "Titulo: " << reg.titulo << endl; 
 cout << "Editora: " << reg.editora << endl;
 cout << "Autor: " << reg.autor << endl; 
 cout << "Categoria: " << reg.categoria << endl; 
		cout << "Valor: " << reg.valor << endl<<endl; 
		retorno = true; 
 break; 
 } 
 } 
 leitura.read((char*)&reg, sizeof(struct registro)); 
 } 
 leitura.close(); 
 } 
 if (!retorno) cout << "Livro nao encontrado!" << endl; 
} 
void mostralivrocategoria(char cat) { 
 struct registro reg; 
 ifstream leitura; 
 leitura.open("livro.dat"); 
 if (!leitura){ 
 cerr << "Arquivo nao pode ser aberto para leitura!" << endl; 
 } 
 cout << endl; 
 leitura.seekg(0); 
 leitura.read((char*)&reg, sizeof(struct registro)); 
 while ((leitura) && (!leitura.eof())) { 
 if (reg.categoria[0] == cat) { 
 cout << "Codigo: " << reg.codigo << endl; 
 cout << "Titulo: " << reg.titulo << endl; 
 cout << "Editora: " << reg.editora << endl;
 cout << "Autor: " << reg.autor << endl;
 cout << "Categoria: " << reg.categoria << endl; 
 } 	 cout << "Valor: " << reg.valor << endl<<endl;
 leitura.read((char*)&reg, sizeof(struct registro)); 
 } 
 leitura.close(); 
} 
int main () { 
 int i, opcao, codigo; 
 char cat;
 do {
	menu(); 
 	cout << "Opcao: "; 
 	cin >> opcao; 
 	if (opcao == 1) cadastrarlivro(); 
 	else if (opcao == 2) {
 		cout << "Informe o codigo do livro: "; 
 		cin >> codigo;
 		excluirlivro(codigo); 
 	}
 	else if (opcao == 3) mostrarlivro();
 	
else if (opcao == 4) { 
cout<<"Informe uma categoria: ";
cin>>cat;
mostralivrocategoria(cat);
}
else if (opcao == 5) { 
 		cout << "Informe o codigo do livro: "; 
 		cin >> codigo; 	
 		verificarlivro(codigo);
 	}
 } while (opcao != 6); 
 return 0; 
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais