para fins didáticos estou disponibilizando esse programa para controle de bordel.
A idéia é cadastrar as garotas no sistema informando suas carecterisiticas fisicas e o valor cobrado por hora.
Essas informações serão armazenadas em arquivos de texto.
O sistema também permite dar "saida" nas garotas mudando seu estatus para "S" de saida.
Os relatórios também permitem escolher as garotas por nome, caracteristicas fisicas etc.
Além de mostrar todas as garotas que estão na rua e por quantas horas.
PS.: Código bem comentado ( até demais )
/*
Name: PEIXE XOTA V.1.0
Copyright: Epic Solutions
Desenvolvedor : Paulo E.P. Jardim.
E-mail : inf-paulo@bol.com.br
Projeto Finalizado em 03/12/10 23:22
Description:
Controle e Gerenciamento de Garotas
Trabalho em C, 1 Semestre Faculdade FTC, Professor: Lúcio
*/
#include <stdio.h>
#include <ctype.h> //Para usar o toupper()
#include <string.h>
#include <conio.h> //Para usar o getch()
#include <stdlib.h>
#include <windows.h> //Para poder mover o cursor com a função gotoxy()
void gotoxy(int x, int y) { //Função para reposicionar o cursor
COORD c;
c.X = x - 1;
c.Y = y - 1;
SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
}
int main ()
{
typedef struct //Criado typedef Struct ao invez de Struct para facilitar o código
{
char nome[26]; // Variavel para o nome da Garota
char status; // estatus da garota
char corcabelo[15]; // cor do cabelo da garota
char cor_olho[15]; // cor do olho da garota
float valor_hora; // valor por hora que a garota cobra
}dados; //nome dado a minha estrutura
typedef struct
{
char nome2[26];
char status2;
char cliente2[13];
int horas2;
float valorhora2;
}dados2;
dados banco;
dados2 banco2;
system("color 2F"); // mudança de cor do dos para verde
FILE *garotas; // aponta para o arquivo garotas
FILE *saida;
fpos_t position; // variavel necessária para uso de algumas funções stdio.h
//Variaveis
int op=0, op2=0, op4=0, op5=0, op6=0;
char op3, letra;
// Dado o nome de banco a minha estrutura dados
int n_garotas =0; // contador de garotas
int i; // Usado como contador
int qtd_letras; //Contador de Letras
char cabelo, olho;
char deletar;
int tamfile, tamfile2; //Usado para mostrar o tamanho do arquivo
char del[30];
char status;
char cliente[13];
char nomegarota[26];
int achou=0;
int horas=0;
int total=0;
float valorhora;
int total_horas;
float total_grana;
int achou2;
int horas2;
do //Laço para teste condicional do MENU Principal
{
//Menu
system("color 2F"); // Cor Verde do Menu Principal
system("cls");
printf("\n\t\t\t PEIXE XOTA v.1.0\n\n\n\n");
printf("\n[1] Pesquisa e Relatorios");
printf("\n[2] Cadastro de Garotas");
printf("\n[3] Limpar Lista de Contatos");
printf("\n[4] DELETAR Lista de Contatos");
printf("\n[5] Alterar Status ");
printf("\n[6] Entrada de Garotas");
printf("\n[7] Saida de Garotas");
printf("\n[0] Sair\n");
printf("\n\nDigite a opcao desejada -> "); //local para onde reposiciono o cursor
printf("\n\n\n\n\n\t\t\t\t\t\t\t By Paulo Jardim");
fflush(stdin);
gotoxy(28,17); //Reposicionar o Cursor no local certo
scanf("%d", &op);
}while(op != 1 && op != 2 && op != 3 && op != 4 && op != 5 && op != 6 && op!=7 && op !=0);
//FIM LAÇO MENU
switch (op) // Switch do MENU PRINCIPAL
{
case 1:
do{
system("cls");
printf("\n\t\t\t Pesquisa e Relatorios\n\n\n");
printf("\n[1] Pesquisa Personalizada");
printf("\n[2] Listar todas as Meninas");
printf("\n[3] Listar Por Nome");
printf("\n[4] Garotas na Rua -> ");
fflush(stdin);
scanf("%d", &op4);
}while (op4 != 1 && op4 !=2 && op4 !=3 && op4 !=4);
switch (op4)
{
case 1 : garotas = fopen("garotas.txt", "a+"); //a+ cria o arquivo caso ele não exista, e adiciona a partir do final do arquivo.
system("color 1F"); //Muda a cor pra azul
system("cls"); //Limpa a tela
fseek (garotas , 0 , SEEK_END); //Le o arquivo do 0 até o final
tamfile = ftell (garotas); //armazena em tamfile o tamanho em bytes do arquivo.
rewind (garotas); //volta pro começo do arquivo.
if (tamfile == 0) //se o arquivo estiver vazio, ou seja, com 0 bits..
{
printf ("\n\n\n\t\t\tVc não tem Garotas, favor cadastrar");
getche();
fclose(garotas);
main();
}
else //se tiver arquivos, ou seja, diferente de 0 bytes ele continua.
{
do{ //Teste condicional para cor de cabelo
printf("Digite a cor do cabelo da mulher desejada\n\n");
printf("[1] Morena \n");
printf("[2] Loira \n");
printf("[3] Ruiva -> ");
fflush(stdin); //Limpa o buffer para limpar a lixeira, uso para diminuir o risco de erros.
scanf("%d", &op3);
}while (op3 != 1 && op3 != 2 && op3 != 3); //se ele digitar algo diferente de 1 2 ou 3 irá repetir a msg
switch (op3){ //Swtich para cabelo
case 1 : cabelo = 'M';
break;
case 2 : cabelo = 'L'; //caso ele digite opção 2 'loira' armazenará na variavel loira o caracter 'L'
break;
case 3 : cabelo = 'R';
break;
}
do { //Teste condicional para COr Olho
printf("\nCordo Olho\n[1] CLaro [2] Escuro -> ");
scanf("%d", &op5);
}while (op5 != 1 && op5 != 2 && op5 != 3);
switch (op5) {
case 1 : olho = 'C';
break;
case 2 : olho = 'E';
break;
}
op6=0; //Zerando váriavel já que vou utiliza-la
do{ //Teste condicional do Status do Cliente
printf("\n\nDigite o Status do Cliente");
printf("\n[1] Ativo");
printf("\n[2] Dasabilitado");
printf("\n[3] Saida -> ");
fflush(stdin);
scanf("%d", &op6);
}while (op6 != 1 && op6 !=2 && op6 != 3);
switch (op6){
case 1 : status = 'A';
break;
case 2 : status = 'D'; //Armazenar em status o caracter 'D'
break;
case 3 : status = 'S';
break;
}
printf("\n\n\n");
while(!feof(garotas)) //Enquanto não for final do arquivo garotas.
{
fscanf(garotas, "%s", &banco.nome); //le o txt e armazena a primeira string em banco.nome
for(i=0;banco.nome[i]!='\0'; i++) //enquanto não terminar a string
if(banco.nome[i]=='_') //Verifica se a o caracter '_'
banco.nome[i]=' '; //e substitui por ' ', que é espaço.
fscanf(garotas, "%s", &banco.status);
fscanf(garotas, "%s", &banco.corcabelo);
for(i=0; banco.corcabelo[i]!='\0';i++)
if (banco.corcabelo[i]== '_')
banco.corcabelo[i]=' ';
fscanf(garotas, "%s", &banco.cor_olho);
for(i=0; banco.cor_olho[i]!='\0';i++)
if (banco.cor_olho[i]== '_')
banco.cor_olho[i]=' ';
fscanf(garotas, "%f", &banco.valor_hora);
if (banco.corcabelo[0] == cabelo) //Lembrem-se que a variavel cabelo, olho e status
if (banco.cor_olho[6] == olho) //são caracteres e tem apenas uma letra cada
if (banco.status == status) //então comparo apenas a primeira letra de cada
{ //e verifico se são iguais.
//no caso do olho comparo a 6 string que pode ser 'C' = claro
//ou pode ser 'E' = escuro
printf("%s | %c | %s | %s | %.2f \n", banco.nome, banco.status, banco.corcabelo, banco.cor_olho, banco.valor_hora);
n_garotas++; //contador de registros
}
//Esse processo será repitido até o final do arquivo, graças ao laço while(!feof(garotas))
}
printf("\n\n\nO numero de Garotas com essa caracteristica e de -> %d ", n_garotas);
getch();
fclose(garotas); //Fechando arquivo. (Sempre que abrir feche) Não feche 2 vezes ou abra 2 vezes nunca.)
main(); //Uma simples Recursividade, onde chamo a função main dentro da main.
break;
} // FIM CASE 1 (Procura Perssonalizada).
case 2: garotas = fopen("garotas.txt", "a+"); //Abre o arquivo
system("color 5F"); // Muda cor para roxo
n_garotas=0; //zera contador de garotas
system("cls");
printf("\n\t\t\tGarotas Cadastradas\n\n\n");
fseek (garotas , 0 , SEEK_END);
tamfile = ftell (garotas);
rewind (garotas);
if (tamfile == 0) //Verifica se o arquivo esta vazio
printf ("\n\n\t\tVc não tem Garotas Cadastradas, favor cadastrar");
else //se Não estiver vazio...
while(!feof(garotas)) //Enquanto não for final de arquivo....
{
fscanf(garotas, "%s", &banco.nome); //leio do texto e armazeno na struct
for(i=0;banco.nome[i]!='\0';i++)
if(banco.nome[i]=='_')
banco.nome[i]=' ';
fscanf(garotas, "%s", &banco.status);
fscanf(garotas, "%s", &banco.corcabelo);
for(i=0; banco.corcabelo[i]!='\0';i++)
if (banco.corcabelo[i]== '_')
banco.corcabelo[i]=' ';
fscanf(garotas, "%s", &banco.cor_olho);
for(i=0; banco.cor_olho[i]!='\0';i++)
if (banco.cor_olho[i]== '_')
banco.cor_olho[i]=' ';
fscanf(garotas, "%f", &banco.valor_hora);
printf("%s | %c | %s | %s | %.2f \n", banco.nome, banco.status, banco.corcabelo, banco.cor_olho, banco.valor_hora);
n_garotas++; //Cada vez que acha um nome e imprime ele conta
}
printf("\n\n\n\t\ttotal de: %d Garotas Cadastradas", n_garotas); // Imprime o total de garotas
fclose(garotas); //fecha o arquivo
getch(); //espera ser digitado algo
main(); //chama o main
break; //fim CASE 3 (listar todas as garotas)
case 3 : garotas = fopen("garotas.txt", "a+"); //SUBMENU //Listar Meninas por Nome.
system("color 6F"); //muda cor
n_garotas=0; //zera variavel...
system("cls");
fseek (garotas , 0 , SEEK_END);
tamfile = ftell (garotas);
rewind (garotas);
if (tamfile == 0) //verifica se está vazio o arquivo.
printf ("\n\n\n\t\tVc não tem Garotas, favor cadastrar");
else //caso não esteja vazio...
{
do{ //Laço para repetir se o usuário digitar enter
system("cls");
printf("\n\nDigite a letra inicial do nome e aperte <ENTER> -> ");
fflush(stdin);
scanf("%c", &letra);
}
while ( letra == '\n'); //caso seja apertado enter repete a instrução
printf("\n\n\n");
while(!feof(garotas))
{
fscanf(garotas, "%s", &banco.nome);
for(i=0;banco.nome[i]!='\0';i++)
if(banco.nome[i]=='_')
banco.nome[i]=' ';
fscanf(garotas, "%s", &banco.status);
fscanf(garotas, "%s", &banco.corcabelo);
for(i=0; banco.corcabelo[i]!='\0';i++)
if (banco.corcabelo[i]== '_')
banco.corcabelo[i]=' ';
fscanf(garotas, "%s", &banco.cor_olho);
for(i=0; banco.cor_olho[i]!='\0';i++)
if (banco.cor_olho[i]== '_')
banco.cor_olho[i]=' ';
fscanf(garotas, "%f", &banco.valor_hora);
if(banco.nome[0]=='\0')
printf ("\n\n\tVc não tem Garotas Cadastradas.\n");
else
if(toupper(banco.nome[0]) == toupper(letra))
{
printf("%s | %c | %s | %s | %.2f \n", banco.nome, banco.status, banco.corcabelo, banco.cor_olho, banco.valor_hora);
n_garotas++;
}
}
printf("\n\n\nO numero de Garotas com a letra '%c' e %d", toupper(letra), n_garotas);
}
getch();
fclose(garotas);
main();
break;
case 4 : saida = fopen("saida.txt", "a+"); //Pesquisa de Garotas na RUA
total_horas=0;
total_grana =0;
system("cls");
printf("\n\n\n\t\t\tPesquisa de Garotas na Rua\n\n\n\n");
fseek (saida , 0 , SEEK_END); //Le o arquivo do 0 até o final
tamfile = ftell (saida); //armazena em tamfile o tamanho em bytes do arquivo.
rewind (saida); //volta pro começo do arquivo.
if (tamfile == 0) //se o arquivo estiver vazio, ou seja, com 0 bits..
{
printf ("\n\n\n\t\t\tVc não tem Garotas na Rua");
getche();
fclose(saida);
main();
}
while(!feof(saida))
{
fscanf(saida, "%s", &banco.nome);
for(i=0;banco.nome[i]!='\0';i++) //enquanto não terminar a string
if(banco.nome[i]=='_') //Verifica se a o caracter '_'
banco.nome[i]=' ';
fscanf(saida, "%s", &banco.status);
fscanf(saida, "%s", &cliente);
for(i=0;cliente[i]!='\0';i++) //enquanto não terminar a string
if(cliente[i]=='_') //Verifica se a o caracter '_'
cliente[i]=' ';
fscanf(saida, "%d", &horas);
fscanf(saida, "%f", &valorhora);
if (banco.status == 'S')
{
printf("%s | %c | %s | %d | %.2f \n", banco.nome, banco.status, cliente, horas, valorhora);
n_garotas++;
total_grana += valorhora;
total_horas += horas;
}
}
printf("\n\n\n você tem %d garotas na rua", n_garotas);
printf("\n\n\n\t Total de Horas da garotas e : %d", total_horas);
printf("\n\n\n\t\t\t Total de arrecadacao e de : %.2f", total_grana);
getch();
fclose(saida);
main();
break;
}// FIM SUBMENU RELATÒRIOS
case 2: garotas = fopen("garotas.txt", "a+"); // Abrindo arquivo garotas novamente
system("color 3F"); //Mudando cor para Roxa
system("cls");
do //Laco usado para se o usuário quiser cadastrar mais de uma garota
{
qtd_letras = 0; //Zerando contador de letras
system("cls");
printf("\n\t\t\tCadastro de Garotas\n");
printf("\n\nDigite o Nome da Garota ou Aperte <ENTER> pra voltar: -> ");
fflush(stdin); //sempre limpando o buffer antes de pegar algo da memória
gets(banco.nome);
if (banco.nome[0] == ' ' || banco.nome[0] =='\0' || banco.nome[0] == '\n') // Verifica s digitou alguma coisa
{
fclose(garotas);
main();
} //caso deixe o nome em branco,
else
qtd_letras = (strlen(banco.nome)); //conta quantas letras tem no nome digitado
for(qtd_letras+1; qtd_letras < 25; qtd_letras++) // laço para adicionar '_',
banco.nome[qtd_letras] = ('_'); //a partir do fim do nome até a 24 posição
banco.nome[25] ='\0'; //Determinar que o fim do nome é na 25 posição
for(i=0; banco.nome[i] !='\0'; i++) //Enquanto for diferente de fim de string
if (banco.nome[i] == ' ') //preencho com '_' o espaço vazio.
banco.nome[i] = '_';
banco.status = 'A'; //Toda garota cadastrada entrará como Ativa
do { //Teste condição do Cor cabelo
op3=0;
printf("\n\nDigite a Cor do cabelolo: \n");
printf("[1] Morena \n");
printf("[2] Loira \n");
printf("[3] Ruiva -> ");
fflush(stdin);
scanf("%d", &op3);
}while (op3 != 1 && op3 !=2 && op3 != 3);
// transformar o inteiro na String Respectiva.
switch (op3){
case 1 : strcpy(banco.corcabelo, "Morena"); //
break;
case 2 : strcpy(banco.corcabelo, "Loira_");
break;
case 3 : strcpy(banco.corcabelo, "Ruiva_");
break;
}
op5 = 0;
do { //teste condição de cor de olho
printf("\n\nCor do Olho\n[1] Claro [2] Escuro -> ");
fflush(stdin);
scanf("%d", &op5);
switch (op5) {
case 1 : strcpy(banco.cor_olho, "Olhos_Claros_");
break;
case 2 : strcpy(banco.cor_olho, "Olhos_Escuros");
break;
}
}while (op5 != 1 && op5 !=2);
printf("\n\nValor Cobrado por Hora (em reais) -> ");
fflush(stdin);
scanf("%f", &banco.valor_hora);
//A LINHA SEGUINTE INSERE DADOS NO TXT
fprintf(garotas, "\n%s %c %s %s %.2f", banco.nome, banco.status, banco.corcabelo, banco.cor_olho, banco.valor_hora);
printf("\nDeseja Cadastrar outra Garota? [1] Sim e [2] não\n");
fflush(stdin);
scanf("%d", &op2);
}while (op2 == 1); // fim do laço para continuar cadastrando.
fclose(garotas); //Fechando arquivo
main(); //chama a função main
break; // fim do case 2 (cadastro de garotas)
case 3 : //Deletar Cadastros
printf("\n\n\n\n\n\nTem certeza que deseja limpar sua lista de Garotas? (S/N) -> ");
system("color 4F");
fflush(stdin);
scanf("%c", &deletar);
if(toupper(deletar)=='S') //Toupper transforma a variavel deletar em maiscula
{ //ou seja, caso digite 'S' ou 's' faça...
garotas = fopen("garotas.txt", "w"); //abre o arquivo em modo gravação
banco.nome[0]='\0'; //zera o conteudo
banco.corcabelo[0] ='\0';
banco.cor_olho[0] ='\0';
banco.valor_hora ='\0';
fclose(garotas);
saida = fopen("saida.txt", "w");
banco.nome[0] ='\0';
cliente[0] ='\0';
horas ='\0';
banco.valor_hora ='\0';
fclose(saida);
puts("\n\nPronto, Sua garotas foram removidos!");
getch();
}
main(); // Fim case 5 ( deletar cadastros )
break;
case 4 : //Deletar o arquivo.
system("color 4f");
printf("\b\n\n\n\n\n\nTem Certeza que deseja deletar o arquivo Garotas.txt? (S/N) -> ");
fflush(stdin);
scanf("%c", &deletar);
if(toupper(deletar)=='S')
{
if( remove( "garotas.txt" ) != 0 ) //Caso seja possivel deleta o arquivo.
perror( "\n\n\nErro ao deletar Arquivo" );//caso não informa o motivo.
else
puts( "\n\nArquivo deletado com Sucesso" );
getch();
if( remove( "saida.txt" ) != 0 ) //Caso seja possivel deleta o arquivo.
perror( "\n\n\nErro ao deletar Arquivo" );//caso não informa o motivo.
else
puts( "\n\nArquivo deletado com Sucesso" );
getch();
}
main(); //Fim menu 6 ( Deletar arquivo )
break;
case 5 : garotas = fopen("garotas.txt", "r+"); //r+ abre o arquivo em modo edição
op6=0; //permitindo o uso de funções para localização
tamfile=0; //Zerando variaveis
system("color 0F");
n_garotas=0;
achou=0;
system("cls");
printf("\n\t\t\tAlterar Status das Garotas\n\n\n");
fseek (garotas , 0 , SEEK_END);
tamfile = ftell (garotas);
rewind (garotas);
if (tamfile == 0)
printf ("\n\n\t\tNão existem cadastros, favor cadastrar");
else
{
printf("\nDigite o nome da Garota que desja alterar o status -> ");
fflush(stdin);
gets(nomegarota);
qtd_letras = (strlen(nomegarota)); //conta quantos caracteres tem a palavra digitada
for(qtd_letras+1; qtd_letras < 25; qtd_letras++) //adiciona '_" ao final da palavra
nomegarota[qtd_letras] = ('_'); //até a 24 posção
nomegarota[25] ='\0'; //fecha a string na 25 posição
//Nada bom caso deixe aberto
for(i=0; nomegarota[i] !='\0'; i++)
if (nomegarota[i] == ' ')
nomegarota[i] = '_';
for(i=0; nomegarota[i] !='\0'; i++)
if (nomegarota[i] == '_')
nomegarota[i] = ' ';
printf("\n\n\n");
achou=0;
while( !feof(garotas) && achou ==0) //repete até achar o nome digitado ou o final do arquivo
{
fscanf(garotas, "%s", &banco.nome);
for(i=0;banco.nome[i]!='\0';i++)
if(banco.nome[i]=='_')
banco.nome[i]=' ';
fscanf(garotas, "%s", &banco.status);
fseek (garotas, 0, SEEK_CUR);
tamfile=ftell (garotas); //ESSE COMANDO LOCALIZA A POSIÇÃO EM BYTS DO TEXTO
//ASSIM É POSSÍVEL SABER ONDE ESTA LOCALIZADO O BANCO.STATUS
fscanf(garotas, "%s", &banco.corcabelo);
for(i=0; banco.corcabelo[i]!='\0';i++)
if (banco.corcabelo[i]== '_')
banco.corcabelo[i]=' ';
fscanf(garotas, "%s", &banco.cor_olho);
for(i=0; banco.cor_olho[i]!='\0';i++)
if (banco.cor_olho[i]== '_')
banco.cor_olho[i]=' ';
fscanf(garotas, "%f", &banco.valor_hora);
if (strcmpi (banco.nome, nomegarota) == 0 ) //compara o nome digtado com o nome no txt
{
achou=1;
printf("%s | %c | %s | %s | %.2f \n", banco.nome, banco.status, banco.corcabelo, banco.cor_olho, banco.valor_hora);
}
}// fim while
if (achou ==1)
do
{
printf("\n\nDigite o novo Status da Garota");
printf("\n[1] Ativo");
printf("\n[2] Dasabilitado");
printf("\n[3] Saida -> ");
fflush(stdin);
scanf("%d", &op6);
}while (op6 != 1 && op6 !=2 && op6 != 3); //teste de condição 1 2 ou 3
fseek ( garotas , tamfile-1 , SEEK_SET ); // TAMFILE ARMAZENOU A POSIÇÃO DO STATUS NO TXT
if (op6 == 1) //'TAMLIFE-1' É A POSIÇÃO EXATA ONDE FICA O STATUS
fputs ( "A" , garotas ); //ASSIM POSSO SUBSTITUIR O STATUS.
if (op6 == 2)
fputs ( "D" , garotas );
if (op6 == 3)
fputs ( "S" , garotas );
}// FIM IF GAROTAS
fclose(garotas);
//INICIO PROCEDIMENTO PARA ALTERAR NO SAIDA
for(i=0;banco.nome[i]!='\0';i++)
if(banco.nome[i]==' ')
banco.nome[i]='_';
for(i=0;nomegarota[i]!='\0';i++)
if(nomegarota[i]==' ')
nomegarota[i]='_';
saida = fopen("saida.txt", "r+");
achou2=5;
while ( !feof(saida) && achou2 ==5) // mudar o status do arquivo saida
{
fscanf(saida, "%s", &banco2.nome2);
fscanf(saida, "%s", &banco2.status2);
fseek (saida, 0, SEEK_CUR);
tamfile2=ftell (saida);
fscanf(saida, "%s", &banco2.cliente2);
fscanf(saida, "%d", &banco2.horas2);
fscanf(saida, "%f", &banco2.valorhora2);
if (strcmpi (nomegarota, banco2.nome2) == 0 ) // Caso já tenha no arquivo saida.txt o nome só mudar o status para A
{
fseek ( saida , tamfile2-1 , SEEK_SET ); // TAMFILE ARMAZENOU A POSIÇÃO DO STATUS NO TXT
if (op6 == 1) //'TAMLIFE-1' É A POSIÇÃO EXATA ONDE FICA O STATUS
fputs ( "A" , saida ); //ASSIM POSSO SUBSTITUIR O STATUS.
if (op6 == 2)
fputs ( "D" , saida );
if (op6 == 3)
fputs ( "S" , saida );
achou2=3;
fclose(saida);
}
}// fim while
if (achou == 1 || achou2 ==3)
printf("\n\n\nStatus Alterado com Sucesso");
if (achou == 0 && achou2 ==5)
printf("Nennhuma garota encontrada com este nome");
getch();
main();
break; //Fim do MENU 7 ( ALteração de Status)
case 6 : garotas = fopen("garotas.txt", "r+"); //abrindo arquivo em modo de adição
op2=0;
tamfile=0;
system("color 3F");
n_garotas=0;
system("cls");
printf("\n\t\t\tEntrada De Garotas\n\n\n");
fseek (garotas , 0 , SEEK_END);
tamfile = ftell (garotas);
rewind (garotas);
if (tamfile == 0)
printf ("\n\n\t\tVc não tem Garotas na rua");
else
{
printf("\nDigite o nome da Garota para dar entrada -> ");
fflush(stdin);
gets(nomegarota);
qtd_letras = (strlen(nomegarota));
for(qtd_letras+1; qtd_letras < 25; qtd_letras++)
nomegarota[qtd_letras] = ('_');
nomegarota[25] ='\0';
for(i=0; nomegarota[i] !='\0'; i++)
if (nomegarota[i] == ' ')
nomegarota[i] = '_';
for(i=0; nomegarota[i] !='\0'; i++)
if (nomegarota[i] == '_')
nomegarota[i] = ' ';
printf("\n\n\n");
achou=0;
while(!feof(garotas) && achou ==0)
{
fscanf(garotas, "%s", &banco.nome);
for(i=0;banco.nome[i]!='\0';i++)
if(banco.nome[i]=='_')
banco.nome[i]=' ';
fscanf(garotas, "%s", &banco.status);
fseek (garotas, 0, SEEK_CUR);
tamfile=ftell (garotas);
fscanf(garotas, "%s", &banco.corcabelo);
for(i=0; banco.corcabelo[i]!='\0';i++)
if (banco.corcabelo[i]== '_')
banco.corcabelo[i]=' ';
fscanf(garotas, "%s", &banco.cor_olho);
for(i=0; banco.cor_olho[i]!='\0';i++)
if (banco.cor_olho[i]== '_')
banco.cor_olho[i]=' ';
fscanf(garotas, "%f", &banco.valor_hora);
if (strcmpi(banco.nome, nomegarota) == 0 )
{
printf("%s | %c | %s | %s | %.2f \n", banco.nome, banco.status, banco.corcabelo, banco.cor_olho, banco.valor_hora);
if (banco.status == 'S')
{
achou=1;
do
{
printf("\n\n\nDeseja Confirmar a Entrada de %s", banco.nome);
printf("\n[1] SIM");
printf("\n[2] não -> ");
fflush(stdin);
scanf("%d", &op2);
}while (op2 !=1 && op2 !=2);
if (op2 == 1)
{
garotas = fopen ("garotas.txt" , "r+");
fseek ( garotas , tamfile-1 , SEEK_SET );
fputs ( "A" , garotas );
fclose(garotas);
//Fazer o mesmo com o arquivo txt saida
achou=0;
for(i=0;banco.nome[i]!='\0';i++)
if(banco.nome[i]==' ')
banco.nome[i]='_';
saida = fopen("saida.txt", "r+");
while (!feof(saida) && achou ==0) // mudar o status do arquivo saida
{
fscanf(saida, "%s", &banco2.nome2);
fscanf(saida, "%s", &banco2.status2);
fseek (saida, 0, SEEK_CUR);
tamfile2=ftell (saida);
fscanf(saida, "%s", &banco2.cliente2);
fscanf(saida, "%d", &banco2.horas2);
fscanf(saida, "%f", &banco2.valorhora2);
if (strcmpi (banco.nome, banco2.nome2) == 0 ) // Caso já tenha no arquivo saida.txt o nome só mudar o status para A
{
fseek ( saida , tamfile2-1 , SEEK_SET );
fputs ( "A" , saida );
achou =1;
fclose(saida);
}
}// fim while
printf("\n\n Entrada efetuada com sucesso");
}
}else
{
printf("\n\n\nEsta garota já esta Aativa ou se encontra Desligada");
achou=2;
}
}
}
if (achou == 0)
printf("\n\n\nNennhuma Garota Encontrada com este nome");
}
getch();
main();
break;
case 7 : saida = fopen("saida.txt", "a+"); // apenas para criar o arquivo caso não exista
fclose(saida);
garotas = fopen("garotas.txt", "r+"); // Saida de Garotaas
op2=0;
tamfile=0;
system("color 0F");
n_garotas=0;
system("cls");
printf("\n\t\t\tSaida De Garotas\n\n\n");
fseek (garotas , 0 , SEEK_END);
tamfile = ftell (garotas);
rewind (garotas);
if (tamfile == 0)
{
printf ("\n\n\t\tVc não tem Garotas Cadastradas");
getch();
main();
}
printf("\n\nDigite o Nome do Cliente -> ");
fflush(stdin);
gets(cliente);
if (cliente[0] == ' ' || cliente[0] == '\n' || cliente[0] =='\0')
{
fclose(garotas);
main();
}
qtd_letras = strlen(cliente);
for(qtd_letras+1; qtd_letras < 13; qtd_letras++) // laço para adicionar '_',
cliente[qtd_letras] = ('_'); //a partir do fim do nome até a 24 posição
cliente[13] ='\0'; //Determinar que o fim do nome é na 25 posição
for(i=0; cliente[i] !='\0'; i++) //Enquanto for diferente de fim de string
if (cliente[i] == ' ') //preencho com '_' o espaço vazio.
cliente[i] = '_';
printf("\nDigite o nome da Garota desejada -> ");
fflush(stdin);
gets(nomegarota);
qtd_letras = (strlen(nomegarota));
for(qtd_letras+1; qtd_letras < 25; qtd_letras++)
nomegarota[qtd_letras] = ('_');
nomegarota[25] ='\0';
for(i=0; nomegarota[i] !='\0'; i++)
if (nomegarota[i] == ' ')
nomegarota[i] = '_';
printf("\n\n\n");
achou=0;
while(!feof(garotas) && achou ==0)
{
fscanf(garotas, "%s", &banco.nome);
for(i=0;banco.nome[i]!='\0';i++)
if(banco.nome[i]==' ')
banco.nome[i]='_';
fscanf(garotas, "%s", &banco.status);
fseek (garotas, 0, SEEK_CUR);
tamfile=ftell (garotas);
fscanf(garotas, "%s", &banco.corcabelo);
for(i=0; banco.corcabelo[i]!='\0';i++)
if (banco.corcabelo[i]== '_')
banco.corcabelo[i]=' ';
fscanf(garotas, "%s", &banco.cor_olho);
for(i=0; banco.cor_olho[i]!='\0';i++)
if (banco.cor_olho[i]== '_')
banco.cor_olho[i]=' ';
fscanf(garotas, "%f", &banco.valor_hora);
if (strcmpi(banco.nome, nomegarota) == 0 )
{
achou= 2;
if (banco.status == 'A')
{
achou=1;
}
}
}// fim while do arquivo garotas
if (achou == 0)
{
printf("Nennhuma Garota Encontrada com este nome");
getch();
fclose(garotas);
main();
}
if (achou == 2)
{
for(i=0; cliente[i] !='\0'; i++)
if (cliente[i] == '_')
cliente[i] = ' ';
for(i=0; banco.nome[i] !='\0'; i++)
if (banco.nome[i] == '_')
banco.nome[i] = ' ';
printf("%s não se encontra disponivel %s", banco.nome, cliente);
fclose(garotas);
getch();
main();
}
if (achou ==1)
{
for(i=0; banco.nome[i] !='\0'; i++)
if (banco.nome[i] == '_')
banco.nome[i] = ' ';
printf("%s | %c | %s | %s | %.2f \n", banco.nome, banco.status, banco.corcabelo, banco.cor_olho, banco.valor_hora);
printf("\n\nPor quantas Horas deseja alugar %s", banco.nome);
fflush(stdin);
scanf("%d", &horas);
do
{
printf("\n\n\nDeseja Confirmar o aluguel dessa garota por %d horas no valor de %.2f", horas, banco.valor_hora*horas);
printf("\n[1] SIM");
printf("\n[2] não -> ");
fflush(stdin);
scanf("%d", &op2);
}while (op2 != 1 && op2 != 2);
if (op2 == 1)
{
fseek ( garotas , tamfile-1 , SEEK_SET );
fputs ( "S" , garotas );
fclose(garotas);
for(i=0;banco.nome[i]!='\0';i++) //enquanto não terminar a string
if(banco.nome[i]==' ') //Verifica se a 0 caracter '_'
banco.nome[i]='_';
//Verificando se tem nome repetido no arquivo saida
saida = fopen("saida.txt", "r+");
valorhora= banco.valor_hora* horas;
achou2=0;
if (achou== 1)
while (!feof(saida) && achou2 ==0)
{
fscanf(saida, "%s", &banco2.nome2);
fscanf(saida, "%s", &banco2.status2);
fseek (saida, 0, SEEK_CUR);
tamfile2=ftell (saida);
fscanf(saida, "%s", &banco2.cliente2);
fscanf(saida, "%d", &banco2.horas2);
fscanf(saida, "%f", &banco2.valorhora2);
if (strcmpi (banco.nome, banco2.nome2) == 0 ) // Caso já tenha no arquivo saida.txt o nome só mudar o status para A
{
fseek ( saida , tamfile2-1 , SEEK_SET );
fputs ( "S" , saida );
achou2 =1;
}
}// fim while
if (achou2 ==0)
{
banco.status = 'S';
fprintf(saida, "\n%s %c %s %.2d %.2f", banco.nome, banco.status, cliente, horas, valorhora);
}
for(i=0; cliente[i] !='\0'; i++) //Enquanto for diferente de fim de string
if (cliente[i] == '_') //preencho com '_' o espaço vazio.
cliente[i] = ' ';
printf("\n\n Muito Obrigado e Volte sempre %s", cliente);
}// Fim Opção De confirmação de saida de garota
}// fim if achou =1
getch();
fclose(garotas);
main();
break;
case 0 : exit(0); //Fecha o Programa
}// FIM DO MENU
printf("\n\n");
fclose(garotas);
getchar();
return 0;
} //FIM
Pergunta
Paulo Jardim
Galera,
para fins didáticos estou disponibilizando esse programa para controle de bordel.
A idéia é cadastrar as garotas no sistema informando suas carecterisiticas fisicas e o valor cobrado por hora.
Essas informações serão armazenadas em arquivos de texto.
O sistema também permite dar "saida" nas garotas mudando seu estatus para "S" de saida.
Os relatórios também permitem escolher as garotas por nome, caracteristicas fisicas etc.
Além de mostrar todas as garotas que estão na rua e por quantas horas.
PS.: Código bem comentado ( até demais )
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.