Ir para conteúdo
Fórum Script Brasil
  • 0

[Problema com leitura de dados] Bloco de notas


tataboy67

Pergunta

Alguém pode me dar uma força aqui em 1 programa no qual estou fazendo para minha faculdade?
Estamos fazendo 1 sistema simples de registro de pessoas dentro de uma palestra... Porem estamos com problemas na hora de ler os dados dentro do bloco de notas.

 

(Observação: Só esta salvo em C++ por conta de funções de cor que colocamos, POREM as funções usadas devem ser em C apenas C [Normas do professor])

Problemas:

  • Linha 91: Ler dentro do bloco de notas para que não tenha 2 CPF's iguais...
    • Teria que fazer 1 verificação, se possuir 1 CPF já cadastrado, envia uma mensagem de erro.
  • Linha 300: Fazer a mesma verificação que o de cima... Não pode haver 2 pessoas sentadas no mesmo lugar.
    • Se possuir uma pessoa sentada naquela cadeira, a cadeira deve ficar vermelha.
    • Caso contrario ela ficará verde.
      • 1674753852_Semttulo.png.3bf0b12601980697c07c3f7ebbc92df7.png
      • 2.png.cebf995a0143b5b85618857f713740e0.png

 

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <locale.h>
#include <conio.h>
#include <time.h>

// Sera usado para verificação de caracteres / strings
#include <string.h>

// Habilita função SetConsoleTextAttribute()
#include <windows.h>

// COR BRANCA | NOME DO ARQUIVO.TXT
#define COR_PRINCIPAL 15
#define BLOCO_DE_NOTAS "Cadastro.txt"

// Struct Principal de cadastro do palestrante
typedef struct {
	char nome[50], email[30], cpf[15];
	int cadeira[15][10];
	bool deficiencia;
} Palestrante ;

// Struct de tempo
struct tm agora_data= {0};
time_t tempo_data;

// Definir o valor x a struct Palestrante
Palestrante x;

// Função base para alterar cor de caractere 
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

// Citando funções
void registro();
void representacao();
void checkPeaple();
void cadeiras();

// Criando ponteiro de memoria
FILE * arq;
int op, op2;

int main(){
	setlocale(LC_ALL, "Portuguese");
	char op;
	
	SetConsoleTextAttribute(hConsole, COR_PRINCIPAL);
	representacao();
	scanf("%s", &op);

	switch(op){
		case '1':
			registro();
			break;
		case '2':
			printf("\nComando ainda não cadastrado.");
			getch();
			system("cls");
			main();
			break;
		case '3':
			checkPeaple();
			break;
		case '4':
			exit(0);
			break;
		default:			
			printf("\nComando inexistente.\n\n", SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_INTENSITY));
			SetConsoleTextAttribute(hConsole, COR_PRINCIPAL);
			system("pause");
			system("cls");
			main();
			break;
	}
}

void registro(){
	// Armazenar o NOME
	printf("\n- Digite o primeiro Nome: ");	
	fflush(stdin);
 	scanf("%[^\n]s", x.nome, SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN | FOREGROUND_INTENSITY));
 	
	// Armazenar o E-MAIL
	printf("- Digite o E-Mail: ", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL));	
	scanf("%s", &x.email, SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN | FOREGROUND_INTENSITY));
	
	// Armazenar o CPF
	printf("- Digite o CPF [Apenas numeros]: ", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL));	
	scanf("%s", &x.cpf, SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN | FOREGROUND_INTENSITY));
	char info[50];
	arq = fopen(BLOCO_DE_NOTAS, "r");
	if(arq == NULL)
			printf("Erro, não foi possivel abrir o arquivo\n");
	else
		while( (fgets(info, sizeof(info), arq))!=NULL )
			if (!(strcmp(x.cpf, info))) {
				printf("%s", info);
			}
	
	fclose(arq);
	
	// Armazenar a deficiencia
	int def;
	printf("- Possui deficiencia [1 or 0]: ", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL));	
	scanf("%d", &def, SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN | FOREGROUND_INTENSITY));

	if (def == 1) {
		x.deficiencia = true;
	}else if (def == 0) {
		x.deficiencia = false;
	}else{	
		printf("\nComando inexistente.\n\n", SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_INTENSITY));
		SetConsoleTextAttribute(hConsole, COR_PRINCIPAL);
		system("pause");
		system("cls");
		representacao();
		printf("\n");
		registro();
	}
	
	// Chamando a função de apresentação das cadeiras
	// 8 x 15 [8 linhas - 15 fileiras - 120 acentos]
	SetConsoleTextAttribute(hConsole, COR_PRINCIPAL);
	cadeiras();

	// Printar dados digitados
	printf("\n\n.----------------------------------------.\n");
	printf("| Nome: ");	
	printf("%s\n", x.nome, SetConsoleTextAttribute(hConsole, 3));	
	
	printf("| Email: ",	SetConsoleTextAttribute(hConsole, COR_PRINCIPAL));	
	printf("%s\n", x.email, SetConsoleTextAttribute(hConsole, 3));	
	
	printf("| CPF: ",SetConsoleTextAttribute(hConsole, COR_PRINCIPAL));
	printf("%s\n", x.cpf, SetConsoleTextAttribute(hConsole, 3));		
	
	printf("| Possui deficiencia: [",SetConsoleTextAttribute(hConsole, COR_PRINCIPAL));	
	if (x.deficiencia == true) {		
		printf("%s", x.deficiencia ? "true" : "false", SetConsoleTextAttribute(hConsole, 6 | FOREGROUND_INTENSITY));		
		printf("]",	SetConsoleTextAttribute(hConsole, COR_PRINCIPAL));
	}else{	
		printf("%s", x.deficiencia ? "true" : "false", 	SetConsoleTextAttribute(hConsole, 12));
		printf("]",	SetConsoleTextAttribute(hConsole, COR_PRINCIPAL));
	}

	// Variaveis globais usadas em diversas funções
	int i, f;
	printf("\n| Assento selecionado: ");
	for (i = 0; i < 15; i++){
		for (f = 0; f < 8; f++){
			if (x.cadeira[i][f] == op) {
				printf("%i", op, SetConsoleTextAttribute(hConsole, 3));
			}
		}
	}
	
	// Selecionando data e horario de cadastro
	time(&tempo_data);
	agora_data = *localtime(&tempo_data);
	
	printf("\n| Horario de cadastro: ",	SetConsoleTextAttribute(hConsole, COR_PRINCIPAL));	
    printf("[%.2d:%.2d]", agora_data.tm_hour, agora_data.tm_min, SetConsoleTextAttribute(hConsole, 3 | FOREGROUND_INTENSITY));	
	printf("\n| Data de cadastro: ", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL));	
    printf("[%.2d:%.2d:%d]", agora_data.tm_mday, agora_data.tm_mon+1, agora_data.tm_year+1900, SetConsoleTextAttribute(hConsole, 3 | FOREGROUND_INTENSITY));		
	printf("\n*----------------------------------------*",SetConsoleTextAttribute(hConsole, COR_PRINCIPAL));

	// Editar dados
	int edit;
	printf("\n\n- [0. Cancelar | 1. Editar | 2. Armazenar]: ");
	scanf("%i", &edit);
	if (edit == 2) {
		// Armazenar no BLOCO DE NOTAS
		arq = fopen(BLOCO_DE_NOTAS, "a");
		if (arq == NULL) {
			printf("Não foi possivel abrir o arquivo.", SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_INTENSITY));
			SetConsoleTextAttribute(hConsole, COR_PRINCIPAL);
			exit(0);
		}
		fprintf(arq, "%s %s %s %s %i [%.2d:%.2d] [%.2d:%.2d:%d]\n", x.nome, x.email, x.cpf, x.deficiencia ? "true" : "false", op, agora_data.tm_hour, agora_data.tm_min, agora_data.tm_mday, agora_data.tm_mon+1, agora_data.tm_year+1900);
		printf("- Dado armazenado -\n\n", SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN));
		SetConsoleTextAttribute(hConsole, COR_PRINCIPAL);
		fclose(arq);
		system("pause");
		system("cls");
		main();
	}else if (edit == 1) {
		system("cls");
		representacao();
		printf("\n");
		registro();
	}else if (edit == 0) {
		system("cls");
		main();
	}else{
		printf("\nComando inexistente.\n\n", SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_INTENSITY));
		SetConsoleTextAttribute(hConsole, COR_PRINCIPAL);
		system("pause");
		system("cls");
		representacao();
		printf("\n");
		registro();
	}
}

// Apenas apresentação da tela principal
void representacao(){
	printf("\n\t[SYSTEM] Palestra\n\n.-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-.\n");
	printf("| 1. Register			|\n");
	printf("| 2. Delete			|\n");
	printf("| 3. Check People	        |\n");
	printf("| 4. Exit			|\n");
	printf("*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\n\nSua Escolha: ");
}

// Checkando pessoas [Pesquisa de pessoas {DENTRO DO BLOCO_DE_NOTAS}]
void checkPeaple(){	
	printf("\n. [NOME] [EMAIL] [CPF] [DEFICIENCIA] [ASSENTO] [HORARIO] [DATA] .\n", SetConsoleTextAttribute(hConsole, 14 | FOREGROUND_INTENSITY));	
	SetConsoleTextAttribute(hConsole, COR_PRINCIPAL);
	arq = fopen(BLOCO_DE_NOTAS, "r");
	
	if (arq == NULL) {
		printf("Não foi possivel abrir o arquivo.\n\n", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL));
		system("pause");
		exit(0);
	}
	char frase[5000];
	printf("\n");
	while(fgets(frase, 5000, arq) != NULL) {
		printf("%s", frase);
	}
		
	char ch;
	int num = 0;	
	arq = fopen(BLOCO_DE_NOTAS, "r");
	if(arq == NULL)
		printf("Erro, não foi possivel abrir o arquivo\n");
	else
		while( (ch=fgetc(arq))!= EOF )
			if(ch == '\n')
				num++;				
				printf("\n. Existem [%d] pessoas cadastradas .\n", num, SetConsoleTextAttribute(hConsole, 13 | FOREGROUND_INTENSITY));				
				SetConsoleTextAttribute(hConsole, COR_PRINCIPAL);
				fclose(arq);
	
	fclose(arq);
	printf("\n");
	getch();
	system("cls");
	main();
}

// Apresentação das cadeiras
void cadeiras(){
	int i, f, incremento = 0;
	
	printf("\n     .-----------------------------------------------.");
	for (i = 0; i < 15; i++){
		printf("\n     | ", i+1);
		for (f = 0; f < 8; f++){
			incremento++;
			x.cadeira[i][f] = incremento;
			if ((x.cadeira[i][f] == 5) || (x.cadeira[i][f] == 5 + 8*i)){
				printf(" ");
				printf("   ", SetConsoleTextAttribute(hConsole, 70));	
				printf(" ", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL));
			}
			if ((x.cadeira[i][f] >= 1) && (x.cadeira[i][f]) <= 16){
				printf("[");
				printf("%.3i", x.cadeira[i][f], SetConsoleTextAttribute(hConsole, 6 | FOREGROUND_INTENSITY));
				printf("]", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL));
				if ((x.cadeira[i][f] % 8) == 0) {
					printf(" |");
				}
				continue;
			}
			printf("[");
			printf("%.3i", x.cadeira[i][f], SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN | FOREGROUND_INTENSITY));
			printf("]", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL));
			if ((x.cadeira[i][f] % 8) == 0) {
				printf(" |");
			}
		}
	}
	printf("\n     *--------------------|     |--------------------*");

	if (x.deficiencia == true) {
		printf("\n\n[*] Você tem acesso aos acentos ");
		printf("amarelos", SetConsoleTextAttribute(hConsole, 6 | FOREGROUND_INTENSITY));
		printf(".", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL));
	}else{
		printf("\n\n[*] Você ");
		printf("NÃO ", SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_INTENSITY));
		printf("tem acesso aos acentos ", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL));
		printf("amarelos", SetConsoleTextAttribute(hConsole, 6 | FOREGROUND_INTENSITY));
		printf(".", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL));
	}
	printf("\n\nDigite o cadeira que deseja: ");
	scanf("%i", &op);
	
	if (op > 120) {
		printf("\n[-] ");
		printf("Não", SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_INTENSITY));
		printf(" existe cadeira com essa numeração no auditório.\n\n", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL));
		getch();
		system("cls");
		representacao();
		printf("\n");
		registro();	
	}
	
	if (x.deficiencia == false) {
		for (i = 0; i < 15; i++){
			for (f = 0; f < 8; f++){
				if ((op >= 1) && (op <= 16)) {
					printf("\nVocê ");
					printf("NÃO", SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_INTENSITY));
					printf(" pode escolher essa cadeira.", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL));
					getch();
					system("cls");
					representacao();
					printf("\n");
					registro();
				}
			}
		}
	}
}

// Cadeira vermelha ao cadastrar
void cadeiraCadastrada(){
	int i, f, incremento = 0;
	printf("\n     .-----------------------------------------------.");
	for (i = 0; i < 15; i++){
		printf("\n     | ", i+1);
		for (f = 0; f < 10; f++){
			if (x.cadeira[i][f] == x.cadeira[op-1][op2-1]){
				printf("[");				
				printf("%.3i", x.cadeira[i][f], SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_INTENSITY));				
				printf("]", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL));
			}else if ((x.cadeira[i][f] >= 1) && (x.cadeira[i][f]) <= 20){
				printf("[");				
				printf("%.3i", x.cadeira[i][f], SetConsoleTextAttribute(hConsole, 6 | FOREGROUND_INTENSITY));				
				printf("]", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL));
			}else{
				printf("[");
				printf("%.3i", x.cadeira[i][f], SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN | FOREGROUND_INTENSITY));				
				printf("]", SetConsoleTextAttribute(hConsole, COR_PRINCIPAL));
			}
		}
	}
	printf("\n     *--------------------|     |--------------------*");
}

 

Gente se alguém puder por favor me ajudar nessas coisas, ficarei muito grato !

Editado por tataboy67
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...