0% encontró este documento útil (0 votos)
9 vistas5 páginas

Actividad 13

El documento es un programa en C que gestiona un registro de usuarios, permitiendo guardar, leer y mostrar información de usuarios en archivos de texto y binarios. Incluye funciones para registrar nuevos usuarios, verificar la unicidad de los apodos y manejar la entrada y salida de archivos. El programa tiene un menú interactivo que permite al usuario seleccionar diferentes opciones para gestionar los datos.

Cargado por

Emilio Kinich
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
9 vistas5 páginas

Actividad 13

El documento es un programa en C que gestiona un registro de usuarios, permitiendo guardar, leer y mostrar información de usuarios en archivos de texto y binarios. Incluye funciones para registrar nuevos usuarios, verificar la unicidad de los apodos y manejar la entrada y salida de archivos. El programa tiene un menú interactivo que permite al usuario seleccionar diferentes opciones para gestionar los datos.

Cargado por

Emilio Kinich
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

/*Actividad 13*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX 5

typedef struct {
char nombres[40];
char apellidoMat[30];
char apellidoPat[30];
char tarjeta[20];
char cvc[6];
char nickname[30];
float saldo;
} usuario;

void guardarUsuarios(usuario reg[], int total);


void leerArchivoTexto();
void leerArchivoBinario();
void mostrarUsuario(usuario x);
usuario registro(usuario reg[], int pos);

int main() {
usuario reg[MAX] = {
{"Luis David", "García", "Pérez", "1234567891011", "123", "Maximander8", 150.0},
{"Hazel", "Hernández", "Ruiz", "1110987654321", "456", "UrialHaz7", 30000.5},
{"Sofia Sunashi", "Rojas", "Vásquez", "1223334444", "789", "Pebble", 75.25}
};
int total = 3;

int opcion;
do {
printf("\n==================== Menú de opciones ====================");
printf("\n1-Guardar usuarios en archivo binarion\n2-Mostrar contenido de
archivo\n3-Archivo binario\n4-Nuevo usuario\n0-Salir\nPor favor seleccione lo que desea
realizar: ");
scanf("%d", &opcion);
getchar();

switch (opcion) {
case 1:
guardarUsuarios(reg, total);
break;
case 2:
leerArchivoTexto();
break;
case 3:
leerArchivoBinario();
break;
case 4:
if (total < MAX) {
reg[total] = registro(reg, total);
total++;
printf("Usuario registrado exitosamente :D\n");
} else {
printf("Nos quedamos sin cupo para usuarios D: (máximo %d).\n", MAX);
}
break;
case 0:
printf("Hasta luego...\n");
break;
default:
printf("Opción incorrecta.\n");
}
} while (opcion != 0);

return 0;
}

void guardarUsuarios(usuario reg[], int total) {


char nombreArchivo[100];
printf("Por favor ingrese un nombre para el archivo binario: ");
fgets(nombreArchivo, sizeof(nombreArchivo), stdin);
nombreArchivo[strcspn(nombreArchivo, "\n")] = '\0';

FILE *f = fopen(nombreArchivo, "wb");


if (f == NULL) {
printf("Error al abrir el archivo...\n");
return;
}

fwrite(reg, sizeof(usuario), total, f);


fclose(f);
printf("Los usuarios se han guardado exitosamente (Yei) en '%s'.\n", nombreArchivo);
printf("\nContenido guardado en '%s':\n", nombreArchivo);
f = fopen(nombreArchivo, "rb");
if (f == NULL) {
printf("No se pudo abrir el archivo para lectura :C '%s'.\n", nombreArchivo);
return;
}

usuario u;
while (fread(&u, sizeof(usuario), 1, f)) {
mostrarUsuario(u);
}
fclose(f);
}

void leerArchivoTexto() {
char nombreArchivo[100];
printf("Ingrese el nombre del archivo de texto que desea ver: ");
fgets(nombreArchivo, sizeof(nombreArchivo), stdin);
nombreArchivo[strcspn(nombreArchivo, "\n")] = '\0';

FILE *f = fopen(nombreArchivo, "r");


if (f == NULL) {
printf("No se pudo abrir el archivo :C'%s'.\n", nombreArchivo);
return;
}

printf("\nAbriendo archivo :D '%s':\n\n", nombreArchivo);


char linea[200];
while (fgets(linea, sizeof(linea), f)) {
printf("%s", linea);
}

fclose(f);
}

void leerArchivoBinario() {
char nombreArchivo[100];
printf("Ingrese el nombre del archivo binario a leer: ");
fgets(nombreArchivo, sizeof(nombreArchivo), stdin);
nombreArchivo[strcspn(nombreArchivo, "\n")] = '\0';

FILE *f = fopen(nombreArchivo, "rb");


if (f == NULL) {
printf("No se pudo abrir el archivo :C '%s'.\n", nombreArchivo);
return;
}

usuario u;
printf("\nUsuarios almacenados en '%s':\n", nombreArchivo);
while (fread(&u, sizeof(usuario), 1, f)) {
mostrarUsuario(u);
}

fclose(f);
}

void mostrarUsuario(usuario x) {
printf("\n----------------------------------------");
printf("\nNombre completo: %s %s %s", [Link], [Link], [Link]);
printf("\nTarjeta: %s | CVC: %s", [Link], [Link]);
printf("\nNickname: %s", [Link]);
printf("\nSaldo: $%.2f", [Link]);
printf("\n----------------------------------------\n");
}

usuario registro(usuario reg[], int pos) {


usuario nueva;
int i, repetido;

printf("\nIngrese nombre(s): ");


fgets([Link], sizeof([Link]), stdin);
[Link][strcspn([Link], "\n")] = '\0';

printf("Apellido paterno: ");


fgets([Link], sizeof([Link]), stdin);
[Link][strcspn([Link], "\n")] = '\0';

printf("Apellido materno: ");


fgets([Link], sizeof([Link]), stdin);
[Link][strcspn([Link], "\n")] = '\0';

printf("Número de tarjeta: ");


fgets([Link], sizeof([Link]), stdin);
[Link][strcspn([Link], "\n")] = '\0';

printf("CVC: ");
fgets([Link], sizeof([Link]), stdin);
[Link][strcspn([Link], "\n")] = '\0';

do {
repetido = 0;
printf("Nickname: ");
fgets([Link], sizeof([Link]), stdin);
[Link][strcspn([Link], "\n")] = '\0';

for (i = 0; i < pos; i++) {


if (strcmp([Link], reg[i].nickname) == 0) {
printf("Ese nickname ya está registrado. Intente otro.\n");
repetido = 1;
break;
}
}
} while (repetido);

[Link] = 0;
return nueva;
}

También podría gustarte