Baixe o app para aproveitar ainda mais
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*)®,(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*)®, 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*)®, 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*)®, 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*)®,(sizeof(struct registro))); retorno = true; break; } arquivo.read((char*)®, 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*)®, 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*)®, 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*)®, 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*)®, 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; }
Compartilhar