Algo assim:
include
include
include
define
struct Cliente {
char nome[50];
int idade;
char endereco[100];
};
struct Cliente clientes[MAX_CLIENTES];
int totalClientes = 0;
void cadastrarCliente() {
if (totalClientes >= MAX_CLIENTES) {
printf("Limite de clientes atingido!\n");
return;
}
struct Cliente novoCliente;
printf("----- Cadastro de Cliente -----\n");
printf("Nome: ");
scanf("%s", novoCliente.nome);
printf("Idade: ");
scanf("%d", &novoCliente.idade);
printf("Endereco: ");
scanf(" %[^\n]s", novoCliente.endereco);
clientes[totalClientes] = novoCliente;
totalClientes++;
printf("Cliente cadastrado com sucesso!\n");
}
void exibirClientes() {
printf("----- Lista de Clientes -----\n");
for (int i = 0; i < totalClientes; i++) {
printf("Cliente %d:\n", i + 1);
printf("Nome: %s\n", clientes[i].nome);
printf("Idade: %d\n", clientes[i].idade);
printf("Endereco: %s\n", clientes[i].endereco);
printf("---------------------------\n");
}
}
void editarCliente() {
int numeroCliente;
printf("Digite o número do cliente que deseja editar: ");
scanf("%d", &numeroCliente);
if (numeroCliente <= 0 || numeroCliente > totalClientes) {
printf("Cliente não encontrado!\n");
return;
}
struct Cliente *cliente = &clientes[numeroCliente - 1];
printf("----- Editar Cliente -----\n");
printf("Nome [%s]: ", cliente->nome);
scanf(" %[^\n]s", cliente->nome);
printf("Idade [%d]: ", cliente->idade);
scanf("%d", &cliente->idade);
printf("Endereco [%s]: ", cliente->endereco);
scanf(" %[^\n]s", cliente->endereco);
printf("Cliente editado com sucesso!\n");
}
void excluirCliente() {
int numeroCliente;
printf("Digite o número do cliente que deseja excluir: ");
scanf("%d", &numeroCliente);
if (numeroCliente <= 0 || numeroCliente > totalClientes) {
printf("Cliente não encontrado!\n");
return;
}
for (int i = numeroCliente - 1; i < totalClientes - 1; i++) {
clientes[i] = clientes[i + 1];
}
totalClientes--;
printf("Cliente excluído com sucesso!\n");
}
void salvarClientes() {
FILE *arquivo = fopen("clientes.txt", "w");
if (arquivo == NULL) {
printf("Erro ao abrir o arquivo de dados!\n");
return;
}
for (int i = 0; i < totalClientes; i++) {
fprintf(arquivo, "%s;%d;%s\n", clientes[i].nome, clientes[i].idade, clientes[i].endereco);
}
fclose(arquivo);
printf("Dados salvos com sucesso!\n");
}
void carregarClientes() {
FILE *arquivo = fopen("clientes.txt", "r");
if (arquivo == NULL) {
printf("Arquivo de dados não encontrado!\n");
return;
}
totalClientes = 0;
char linha[200];
while (fgets(linha, sizeof(linha), arquivo)) {
char *nome = strtok(linha, ";");
int idade = atoi(strtok(NULL, ";"));
char *endereco = strtok(NULL, "\n");
strcpy(clientes[totalClientes].nome, nome);
clientes[totalClientes].idade = idade;
strcpy(clientes[totalClientes].endereco, endereco);
totalClientes++;
}
fclose(arquivo);
printf("Dados carregados com sucesso!\n");
}
void exibirMenu() {
printf("----- Sistema de Cadastro de Clientes -----\n");
printf("1. Cadastrar Cliente\n");
printf("2. Exibir Clientes Cadastrados\n");
printf("3. Editar Cliente\n");
printf("4. Excluir Cliente\n");
printf("5. Salvar Dados\n");
printf("6. Carregar Dados\n");
printf("7. Sair\n");
printf("Opção: ");
}
int main() {
int opcao;
do {
exibirMenu();
scanf("%d", &opcao);
switch (opcao) {
case 1:
cadastrarCliente();
break;
case 2:
exibirClientes();
break;
case 3:
editarCliente();
break;
case 4:
excluirCliente();
break;
case 5:
salvarClientes();
break;
case 6:
carregarClientes();
break;
case 7:
printf("Encerrando o programa...\n");
break;
default:
printf("Opção inválida!\n");
break;
}
printf("\n");
} while (opcao != 7);
return 0;
}
Para escrever sua resposta aqui, entre ou crie uma conta
Algoritmos e Linguagem de Programação C
Compartilhar