Ir ao conteúdo

Sistema Caixa em C


Vhoxxx

Posts recomendados

Postado

Bom dia, Galera!

O meu problema é o seguinte: sou muito iniciante em programação em linguagem C. E tenho um trabalho para fazer sobre Caixas de Banco.

Já pesquisei na net e aqui mesmo no fórum. Achei algumas coisas e o básico das operações (saldo, saque, depósito) o programa esta fazendo.

O que eu não achei q não consigo fazer é a parte de login e senha. Alguém poderia me ajudar?

Eu precisava digitar a agencia, conta corrente e senha. Nisso o programa verifica se existe num arquivo texto (que seria o banco de dados) e autoriza ou nao a operação.

Alguém poderia me ajudar? Como abrir, e fazer a busca nesse arquivo texto, etc?

Desde já agradeço!

Abraços!

Postado

Olá senhores! Agradeço a atenção.

Essa parte do código que estou escrevendo abaixo apenas desenha a tela de login.

A minha dúvida é como consultar o arquivo texto criado. Caso batam as informações, o programa continua. Se não, ele mostra uma mensagem de erro.

O arquivo texto teria as seguintes informações:

0111;123456 (agencia e conta respectivamente)


#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>

// Nome do arquivo de auditoria da aplicação
#define LOG_FILE "app.log"

// Modo de abertura do arquivo de auditoria
#define LOG_FILE_OPEN_MODE "a"

// Comando para limpar a tela
#define CLEAR_SCREEN_PROGRAM "cls"

// Mensagems de erro
#define ERROR_INTERNAL "ERRO: Favor contatar o suporte técnico no telefone XXXX-XXXX"

// Estrutura para armazenar as dimensões de janela do CMD do MS-Windows,
struct CMD_DIMENSION {
int rows;
int columns;
};

// Estrutura para amazenar as informações do usuário (agência, c/c e senha)
struct USER_INFO {
int branch;
int account;
};

// Variável global do tipo struct CMD_DIMENSION que deve ser inicializada
// uma vez, no início do programa. Como se espera que o programa rode
// em tela cheia, não se considera isto um problema
struct CMD_DIMENSION cmd_dimension;

// Variável global do tipo USER_INFO para guardar as informações do usuário -
// agência e c/c - que está utilizando o caixa eletrônico;
struct USER_INFO user_info;

// Arquivo de auditoria da aplicação. Utilizado para armazenar mensagens
// geradas pela aplicação para auxiliar na depuração de problemas
FILE* log_file;

// Função para auditar mensagens geradas pela aplicação, com o intuito de
// auxiliar na depuração de problemas
// TODO: Próxima fase adicionar data/hora na linha do log.
void log(LPSTR message)
{
log_file = fopen(LOG_FILE, LOG_FILE_OPEN_MODE);
fprintf(log_file, "%s\n", message);
fclose(log_file);
}

// Função para pegar as dimenções da janela CMD que executa o programa,
// utilizando a API do MS-Windows
int get_cmd_dimension()
{
// Variável local para receber as dimensões da janela CMD, de tipo definido pelo MS-Windows
CONSOLE_SCREEN_BUFFER_INFO csbi;

// Variável local para receber o estado de retorno de chamada de uma função, de tipo definido
// pelo MS-Windows
BOOL status;

// Variável local para receber o código de erro, caso ocorra, de tipo definido pelo MS-Windows
DWORD error_code;

// Variável local para receber a mensagem de erro, de tipo definido pelo MS-Windows
LPVOID message;

// Solicita ao MS-Windows as dimensões da janela CMD que executa o programa
status = GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
if ( ! status ) { // Caso o retorno seja zero, a funcão anterior não funcionou corretamente.
// Pega o erro e a mensagem associada, auditando-a.
error_code = GetLastError();
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
status,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPSTR) &message,
0,
NULL);
log((LPSTR) message);
LocalFree(message);

return 0;
}

cmd_dimension.columns = csbi.srWindow.Right - csbi.srWindow.Left + 1;
cmd_dimension.rows = csbi.srWindow.Bottom - csbi.srWindow.Top + 1;

return 1;
}

// Função para apresentar a tela de login.
// Esta tela obtém a agência e c/c do usuário do caixa eletrônico.
void login_window()
{
int i;

system(CLEAR_SCREEN_PROGRAM);
for ( i = 0 ; i < cmd_dimension.columns ; i++ ) {
printf("=");
}
printf(" CAIXA eletrônico \n");

for ( i = 0 ; i < ( cmd_dimension.rows / 2 - 3 ) ; i++ ) {
printf("\n");
}

printf(" Entre o numero de sua agencia (4 digitos): ");
scanf("%d", &(user_info.branch));
printf(" Entre o numero de sua c/c (4 digitos): ");
scanf("%d", &(user_info.account));

for ( i = 0 ; i < ( cmd_dimension.rows / 2 - 3 ) ; i++ ) {
printf("\n");
}

for ( i = 0 ; i < cmd_dimension.columns ; i++ ) {
printf("=");
}
}

int main(int argc, char** argv)
{
// Primeiro obtém o tamanho da janela CMD - será utilizada para construir os menus
if ( ! get_cmd_dimension() ) {
printf(ERROR_INTERNAL);
return 1;
}

// Apresenta a tela de login
login_window();

system("pause");

return 0;
}

Abraços!

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!