Jump to content

problemas em um codigo


RAfa

Recommended Posts

boa noite estou com um problema em um codigo toda vez que executo parece Erro ao abrir o arquivo ESPETACULOS.txt sendo que ja verifiquei o nome e estão na mesmo pasta

 

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define MAX_SESSIONS 100
#define MAX_SEATS 112
#define MAX_USERS 10
 
// Estrutura para armazenar informações de uma sessão
typedef struct {
    char id[4];
    char title[20];
    char director[20];
    int duration;
    int ageRecommendation;
    char date[9];
    char time[6];
} Session;
 
// Estrutura para armazenar informações de um assento
typedef struct {
    char session[4];
    char row;
    char seats[17];
} Seat;
 
// Estrutura para armazenar informações de um usuário
typedef struct {
    char login[21];
    char password[21];
    char type;
} User;
 
// Função para carregar as sessões do arquivo ESPETACULOS.TXT
int loadSessions(Session sessions[], int *sessionCount) {
    FILE *file = fopen("ESPETACULOS.txt", "r");
    if (file == NULL) {
        printf("Erro ao abrir o arquivo ESPETACULOS.txt\n");
        return 0;
    }
 
    // Loop para ler cada linha do arquivo e armazenar as informações nas estruturas de sessão
    while (!feof(file)) {
        if (fscanf(file, "%3s %20s %20s %d %d %8s %5s",
                   sessions[*sessionCount].id,
                   sessions[*sessionCount].title,
                   sessions[*sessionCount].director,
                   &sessions[*sessionCount].duration,
                   &sessions[*sessionCount].ageRecommendation,
                   sessions[*sessionCount].date,
                   sessions[*sessionCount].time) != 7) {
            break;
        }
 
        (*sessionCount)++;
    }
 
    fclose(file);
    return 1;
}
 
// Função para salvar as sessões no arquivo ESPETACULOS.TXT
void saveSessions(Session sessions[], int sessionCount) {
    FILE *file = fopen("ESPETACULOS.txt", "w");
    if (file == NULL) {
        printf("Erro ao abrir o arquivo ESPETACULOS.txt\n");
        return;
    }
 
    // Loop para escrever cada sessão no arquivo
    for (int i = 0; i < sessionCount; i++) {
        fprintf(file, "%s %s %s %d %d %s %s\n",
                sessions[i].id,
                sessions[i].title,
                sessions[i].director,
                sessions[i].duration,
                sessions[i].ageRecommendation,
                sessions[i].date,
                sessions[i].time);
    }
 
    fclose(file);
}
 
// Função para carregar os assentos do arquivo ASSENTOS.TXT
int loadSeats(Seat seats[], int *seatCount) {
    FILE *file = fopen("ASSENTOS.txt", "r");
    if (file == NULL) {
        printf("Erro ao abrir o arquivo ASSENTOS.txt\n");
        return 0;
    }
 
    // Loop para ler cada linha do arquivo e armazenar as informações nas estruturas de assento
    while (!feof(file)) {
        if (fscanf(file, "%3s %c %16s",
                   seats[*seatCount].session,
                   &seats[*seatCount].row,
                   seats[*seatCount].seats) != 3) {
            break;
        }
 
        (*seatCount)++;
    }
 
    fclose(file);
    return 1;
}
 
// Função para salvar os assentos no arquivo ASSENTOS.TXT
void saveSeats(Seat seats[], int seatCount) {
    FILE *file = fopen("ASSENTOS.txt", "w");
    if (file == NULL) {
        printf("Erro ao abrir o arquivo ASSENTOS.txt\n");
        return;
    }
 
    // Loop para escrever cada assento no arquivo
    for (int i = 0; i < seatCount; i++) {
        fprintf(file, "%s %c %s\n",
                seats[i].session,
                seats[i].row,
                seats[i].seats);
    }
 
    fclose(file);
}
 
// Função para carregar os usuários do arquivo USUARIOS.TXT
int loadUsers(User users[], int *userCount) {
    FILE *file = fopen("USUARIOS.txt", "r");
    if (file == NULL) {
        printf("Erro ao abrir o arquivo USUARIOS.txt\n");
        return 0;
    }
 
    // Loop para ler cada linha do arquivo e armazenar as informações nas estruturas de usuário
    while (!feof(file)) {
        if (fscanf(file, "%20s %20s %c",
                   users[*userCount].login,
                   users[*userCount].password,
                   &users[*userCount].type) != 3) {
            break;
        }
 
        (*userCount)++;
    }
 
    fclose(file);
    return 1;
}
 
// Função para salvar os usuários no arquivo USUARIOS.TXT
void saveUsers(User users[], int userCount) {
    FILE *file = fopen("USUARIOS.txt", "w");
    if (file == NULL) {
        printf("Erro ao abrir o arquivo USUARIOS.txt\n");
        return;
    }
 
    // Loop para escrever cada usuário no arquivo
    for (int i = 0; i < userCount; i++) {
        fprintf(file, "%s %s %c\n",
                users[i].login,
                users[i].password,
                users[i].type);
    }
 
    fclose(file);
}
 
// Função para realizar o login do usuário
User *login(User users[], int userCount) {
    char login[21];
    char password[21];
 
    printf("Login: ");
    scanf("%20s", login);
    printf("Senha: ");
    scanf("%20s", password);
 
    // Verificar se as credenciais estão corretas
    for (int i = 0; i < userCount; i++) {
        if (strcmp(users[i].login, login) == 0 && strcmp(users[i].password, password) == 0) {
            User *user = malloc(sizeof(User));
            strcpy(user->login, users[i].login);
            strcpy(user->password, users[i].password);
            user->type = users[i].type;
            return user;
        }
    }
 
    printf("Credenciais inválidas.\n");
    return NULL;
}
 
// Função para cadastrar uma nova sessão
void addSession(Session sessions[], int *sessionCount) {
    printf("ID da sessão: ");
    scanf("%3s", sessions[*sessionCount].id);
    printf("Título: ");
    scanf(" %[^\n]", sessions[*sessionCount].title);
    printf("Diretor: ");
    scanf(" %[^\n]", sessions[*sessionCount].director);
    printf("Duração (em minutos): ");
    scanf("%d", &sessions[*sessionCount].duration);
    printf("Recomendação de faixa etária: ");
    scanf("%d", &sessions[*sessionCount].ageRecommendation);
    printf("Data da sessão (dd/mm/aa): ");
    scanf("%8s", sessions[*sessionCount].date);
    printf("Horário da sessão (hh:mm): ");
    scanf("%5s", sessions[*sessionCount].time);
 
    (*sessionCount)++;
}
 
// Função para excluir uma sessão existente
void deleteSession(Session sessions[], int *sessionCount) {
    char sessionId[4];
 
    printf("ID da sessão a ser excluída: ");
    scanf("%3s", sessionId);
 
    // Encontrar a sessão com o ID correspondente e removê-la
    int found = 0;
    for (int i = 0; i < *sessionCount; i++) {
        if (strcmp(sessions[i].id, sessionId) == 0) {
            for (int j = i; j < *sessionCount - 1; j++) {
                sessions[j] = sessions[j + 1];
            }
            (*sessionCount)--;
            found = 1;
            break;
        }
    }
 
    if (found) {
        printf("Sessão excluída com sucesso.\n");
    } else {
        printf("Sessão não encontrada.\n");
    }
}
 
// Função principal
int main() {
    Session sessions[MAX_SESSIONS];
    int sessionCount = 0;
    Seat seats[MAX_SEATS];
    int seatCount = 0;
    User users[MAX_USERS];
    int userCount = 0;
    User *currentUser = NULL;
 
    // Carregar sessões, assentos e usuários dos arquivos
    if (!loadSessions(sessions, &sessionCount) ||
        !loadSeats(seats, &seatCount) ||
        !loadUsers(users, &userCount)) {
        return 1;
    }
 
    // Loop principal do programa
    while (1) {
        // Verificar se há um usuário logado
        if (currentUser == NULL) {
            currentUser = login(users, userCount);
            if (currentUser == NULL) {
                break;
            }
        }
 
        // Menu de opções
        printf("\n--- Menu ---\n");
        if (currentUser->type == 'G') {
            printf("1. Cadastrar sessão\n");
            printf("2. Excluir sessão\n");
            // Mais opções do gerente...
        }
        printf("0. Sair\n");
        printf("Escolha uma opção: ");
 
        int option;
        scanf("%d", &option);
 
        switch (option) {
            case 1:
                if (currentUser->type == 'G') {
                    addSession(sessions, &sessionCount);
                    saveSessions(sessions, sessionCount);
                }
                break;
            case 2:
                if (currentUser->type == 'G') {
                    deleteSession(sessions, &sessionCount);
                    saveSessions(sessions, sessionCount);
                }
                break;
            case 0:
                // Logout do usuário
                free(currentUser);
                currentUser = NULL;
                break;
            default:
                printf("Opção inválida.\n");
                break;
        }
    }
 
    // Salvar sessões, assentos e usuários nos arquivos
    saveSessions(sessions, sessionCount);
    saveSeats(seats, seatCount);
    saveUsers(users, userCount);
 
    return 0;
}
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...