Escolar Documentos
Profissional Documentos
Cultura Documentos
#include <stdlib.h>
#include <fstream>
#include <cstring>
#include <limits>
using namespace std;
typedef struct
{
int codigo;
char marcaModelo[50], placa[7], categoria, situacao;
} Veiculo;
//Validacoes
int validaInt(string mensagem);
void validaPlaca(string mensagem,char vetor[]);
void validaMarca(string nome,char vetor[]);
int validaInt(string mensagem);
char validaCarac(string mensagem, char a, char b,char c, string d, string e,string
f);
//Impressoes e ordenacao
void imprimiMenu();
//ADD
void incluirVeiculo(int codigo,char marcaModelo[],char placa[],char categoria,char
situacao);
//Relatorios
void relatorioVeiculosPorCategoria(char categoria,bool &carroEncontra);
int main()
{
int opcao,codigo=1;
char marcaModelo[50], placa[7], categoria, situacao,escolhaExibir;
bool carroEncontra;
do
{
system("cls");
imprimiMenu();
opcao = validaInt("Informe a sua opcao: ");
switch (opcao)
{
case 1:
system("cls");
cout << "******** INCLUSAO DE VEICULO ********" << endl << endl;
validaPlaca("Informe sua placa de carro (LLLNNNN): ",placa); // ARRUMAR
A VALIDACAO PARA ELE AJUSTAR TODAS AS LETRAS EM CAPS LOCK
if("? "){ // COLOCAR O ACHADO
validaMarca("Insira o nome do carro",marcaModelo); // DEPOIS DE 1
TENTATIVA E DEIXAR TUDO EM BRANCO ELE DA PROBLEMA
categoria = validaCarac("Informe a categoria do
carro:",'B','I','S',"Basico","Intermediario","Super"); // RETORNEI CHAR EM VEZ DE
STRING COMO NO OUTRO TRABALHO
situacao = 'D'; // Sempre disponivel para nao dar problema
incluirVeiculo(codigo,marcaModelo,placa,categoria,situacao);
}else{
cout<<"Ja existe um carro com esta placa"<<endl;
system("pause");
break;
case 2:
system("cls");
cout << "*********** LOCACAO DE VEICULO ***********" << endl;
carroEncontra = false;
escolhaExibir = validaCarac("Informe a categoria do carro que voce
deseja fazer uma locacao:",'B','I','S',"Basico","Intermediario","Super");
relatorioVeiculosPorCategoria(escolhaExibir,carroEncontra); //
Verificar depois de alterar
if (!carroEncontra) {
cout << "Nenhum veiculo disponível encontrado na categoria
"<<escolhaExibir<< endl;
}
system("pause");
break;
case 3:
system("cls");
cout << "******** DEVOLUCAO DE VEICULO LOCADO ********" << endl;
system("pause");
break;
case 4:
system("cls");
cout << "******** RELATORIO ********" << endl << endl;
system("pause");
break;
case 5:
cout << endl << "Programa finalizado. Obrigado pela preferencia!!" <<
endl;
return 0;
break;
default:
cout<< endl << "Opcao invalida." << endl;
system("pause");
system("cls");
break;
}
}
while(opcao!=5);
return 0;
// Validacoes
-----------------------------------------------------------------------------------
----------
do
{
do
{
validada=true;
getline(cin,numero); // ler string!!!
if(numero=="")
{
validada=false;
}
if(num<0)
{
cout <<"Numero menor que zero, digite novamente: ";
}
}
while(num<0);
return num;
}
void validaPlaca(string mensagem,char vetor[])
{
string placa;
bool validada;
cout<<mensagem<<endl;
do
{
validada = true;
getline(cin, placa);
if (placa.length() != 7)
{
validada = false;
}
else
{
for (int i = 0; i < 3; i++)
{
if (!isalpha(placa[i]))
{
validada = false;
break;
}
}
if (!validada)
{
cout << "Placa invalida, digite novamente: ";
}
}
while (!validada);
strcpy(vetor, placa.c_str());
}
do {
caracteresValidos = true;
getline(cin, nome);
if (nome.empty() or nome.length() > 50) {
cout << "Nome invalido. Digite um nome valido com no maximo 50
caracteres." << endl;
caracteresValidos = false;
} else {
for (int i = 0; i < nome.size(); i++) {
if (!isalpha(nome[i]) and !isspace(nome[i])) {
caracteresValidos = false;
break;
}
}
if (!caracteresValidos) {
cout << "Nome invalido. Use apenas letras e espacos." << endl;
}
}
} while (nome.empty() or nome.length() > 50 or !caracteresValidos);
strcpy(vetor, nome.c_str());
}
letra = getchar();
letra = toupper(letra);
// Impressao e relatorio
----------------------------------------------------------------------------------
void imprimiMenu()
{
cout<<"------------------------"<<endl;
cout << "Controle de Locacao de Veiculos: " << endl;
cout<<" 1 - Inclusao de veiculo"<<endl;
cout<<" 2 - Locacao de veiculo"<<endl;
cout<<" 3 - Devolucao de veiculo locado"<<endl;
cout<<" 4 - Relatorio"<<endl;
cout<<" 5 - Fechar programa" << endl;
cout<<"------------------------"<<endl;
}
//incluir
void incluirVeiculo(int codigo,char marcaModelo[],char placa[],char categoria,char
situacao){
Veiculo novoVeiculo;
novoVeiculo.codigo = codigo;
strcpy(novoVeiculo.marcaModelo, marcaModelo); // JA USEI O STRCPY DEVO USAR DNV
COMO AGR?
strcpy(novoVeiculo.placa, placa);
novoVeiculo.categoria = categoria;
novoVeiculo.situacao = situacao;
ofstream arquivo("FROTA.DAD", ios::binary | ios::app);
if (!arquivo.is_open())
{
cerr << "Erro ao abrir o arquivo" << endl;
exit(1);
}
arquivo.write((char *)(&novoVeiculo), sizeof(Veiculo));
cout<<"Veiculo incluido com sucesso"<<endl;
arquivo.close();
}
// Relatorio
void relatorioVeiculosPorCategoria(char categoria, bool &encontrado) {
ifstream arquivo("FROTA.DAD", ios::binary);
if (!arquivo) {
cerr << "Erro ao abrir o arquivo" << endl;
exit(1);
}
Veiculo veiculo;
encontrado = false;
arquivo.close();
}