123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 | #include <iostream>#include <strings.h>#include <sstream>#include <locale>#include <fstream>#include "imovel.h"#include "cliente.h" using std::cout;using std::cin;using std::string;using std::stringstream; bool arquivoExiste(const char *arquivo);int receberValor(string texto);void emitirFatura (Timovel *imovel, int numRec, Tcliente *cliente);int main() { setlocale(LC_ALL,""); //================================================================================== Timovel * ptrImoveis= imovel_criar(); int numImoveis=0; if (arquivoExiste("imoveis.txt")){ //Eu uso fstream e não ifstream porque pretendo usar o mesmo arquivo como saída de dados std::fstream arqImoveis("imoveis.txt"); string linha=""; getline(arqImoveis, linha); //A primeira linha do arquivo contém o número de registros armazenados nele int numImoveisArq=stoi(linha); //Leio o registros com os clientes a partir do arquivo e adiciono ao array for (int i=0;i<numImoveisArq;i++){ imovel_adicionar(ptrImoveis,&numImoveis, &arqImoveis); } } //================================================================================== Tcliente * ptrClientes= cliente_criar(); int numClientes=0; if (arquivoExiste("clientes.txt")){ //Eu uso fstream e não ifstream porque pretendo usar o mesmo arquivo como saída de dados std::fstream arqClientes("clientes.txt"); string linha=""; getline(arqClientes, linha); //A primeira linha do arquivo contém o número de registros armazenados nele int numClientesArq=stoi(linha); //Leio o registros com os clientes a partir do arquivo e adiciono ao array for (int i=0;i<numClientesArq;i++){ cliente_adicionar(ptrClientes,&numClientes, &arqClientes); } } //================================================================================== string opcao=""; while (opcao!="0"){ cout <<"Número de clientes cadastrados: " << numClientes << '\n'; cout <<"Número de imóveis cadastrados: " << numImoveis << "\n\n"; cout <<"Escolha uma opção e em seguida tecle [ENTER]:\n\n"; cout <<"1 - Adicionar um imovel.\n"; if (numImoveis>0) cout <<"2 - Listar todos os imoveis.\n"; if (numImoveis>0) cout <<"3 - Deletar imovel.\n"; if (numImoveis>0) cout <<"4 - Editar imovel.\n"; if (numImoveis>0) cout <<"5 - Emitir Fatura.\n"; cout <<"6 - Adicionar um cliente.\n"; if (numClientes>0) cout <<"7 - Listar todos os clientes.\n"; cout <<"0 - Sair do programa.\n"; getline(cin, opcao); if (opcao=="1"){ if (system("CLS")) system("clear"); imovel_adicionar(ptrImoveis,&numImoveis); cout << "imovel adicionado."; cout << "Tecle ENTER para voltar ao menu."; }; if (opcao=="2"){ imovel_imprimirTodos(ptrImoveis, numImoveis); cout << "tecle ENTER para voltar ao menu."; getline(cin, opcao); }; if (opcao=="3"){ if (system("CLS")) system("clear"); imovel_deletar(ptrImoveis, &numImoveis, receberValor("Digite o número do imovel a deletar: ")); cout << "imovel deletado. "; cout << "Tecle ENTER para voltar ao menu."; getline(cin, opcao); }; if (opcao=="4"){ if (system("CLS")) system("clear"); imovel_editar(ptrImoveis, receberValor("Digite o número do imovel a editar: ")-1); cout << "imovel editado. "; cout << "Tecle ENTER para voltar ao menu."; getline(cin, opcao); }; if (opcao=="5"){ if (system("CLS")) system("clear"); emitirFatura(ptrImoveis, receberValor("Digite o número do imovel a faturar: ")-1, ptrClientes); cout << "imovel faturado. "; cout << "Tecle ENTER para voltar ao menu."; getline(cin, opcao); }; if (opcao=="6"){ if (system("CLS")) system("clear"); cliente_adicionar(ptrClientes,&numClientes); cout << "cliente adicionado. "; cout << "Tecle ENTER para voltar ao menu."; getline(cin, opcao); }; if (opcao=="7"){ cliente_imprimirTodos(ptrClientes, numClientes); cout << "Tecle ENTER para voltar ao menu."; getline(cin, opcao); }; if (system("CLS")) system("clear"); } // se eu tentar sair do programa sem ter adicionado nenhum item o programa trava if (numImoveis>0) imovel_destruir(ptrImoveis); if (numClientes>0) cliente_destruir(ptrClientes);return 0;} int receberValor(string texto){ string temp=""; int num=0; while (true){ cout << texto; getline(cin, temp); stringstream myStream(temp); if (myStream >>num) break; //sucesso na conversão else cout << "\nNúmero inválido. Tente de novo." << '\n'; }; return num;} bool arquivoExiste(const char *arquivo){ //Não é preciso fechar o stream porque o destrutor de ifstream é chamado //na saída da função std::ifstream infile(arquivo); return infile.good();} void emitirFatura (Timovel *imovel, int numRec, Tcliente *cliente){ string codCliente= ""; string situacaoImovel= ""; float valorFatura= imovel_calcularFatura(imovel, numRec, &codCliente, &situacaoImovel); //codCliente e situacaoCliente voltam de imovel_calcularFatura preenchido cliente_imprimir( cliente, stoi(codCliente)-1); cout << "Valor a pagar: R$" << valorFatura <<"\n"; if (situacaoImovel=="atrasado"){ cout<< "\n\nCaro cliente. Nosso sistema indica um débito em atraso.\n"; cout<< "Por favor entre am contato com nossa Central de Atendimento\n"; cout<< "para regularizar sua situação. Se esse débito já foi pago,\n"; cout<< "favor desconsiderar este aviso.\n\n"; }} |