La Red de Conocimientos Pedagógicos - Conocimientos históricos - Simulación de escena de venta de libros

Simulación de escena de venta de libros

//Solo da una idea general, no seas demasiado detallado. Simplemente ejecute el siguiente código. Por supuesto, también puede ser mejor y más complejo, equivalente a un sistema de gestión de biblioteca. Lo siguiente trata principalmente sobre el préstamo de libros, la devolución de libros y la verificación de su vencimiento.

# incluir ltstdio.h gt

# incluir lttime.h gt

# incluir ltstring.h gt

#defineN? Cinco

¿#Definición? ¿metro? Cinco

typedef? Estructura {

int? Año;

int? Mes;

int? Día;

}Fecha;

typedef? Estructura{

¿Caracteres? Nombre[100];

¿Ciel? Autor[50];

int? Disponible; // ¿Se puede tomar prestado (1 se puede tomar prestado, 0 no se puede tomar prestado)

Fecha? fecha;? ///Almacenamiento/préstamo/fecha de devolución

}Libro;

typedef? Estructura {

int? Número;

¿Carácter? Nombre[20];

int? Contar;? //Número de libros en poder de los estudiantes

¿Libros? libro[3];? //Cada estudiante sólo puede conservar 3 libros al mismo tiempo.

}Estudiante;

¿Nulo? add_book(libro?*);? //Ingresa un nuevo libro

int? Borrow_book (¿libro?*, ¿estudiante?*);? //Pedir prestados libros

int? return_book(libro?*,estudiante?*);?

int? consulta(libro?*, char*);? //Consulta

¿Fecha? get_time();? //Obtener la hora actual

int? cal_day(fecha);? // Calcula si está vencido.

¿Anulado? Principal()

{

¿Libro? Libro;

¿Estudiante? stu[M];

¿Carácter? Nombre[100];

int? Yo;

//Leer la información del libro y la información del estudiante del archivo.

¿Archivo? * fp

fp=fopen("d:\\book.txt "," r ");

For (i?=?0;iltN amp amp!feof( FP );i)

fscanf(fp,"ssddd",libro[i].nombre,libro[i].autor y.libro[i].disponible&libro[i].fecha, año y; libro[i]. fecha, mes y; libro[I]. fecha . .txt "," r ");

for(i=?0;iltM amp amp!feof(FP);i)

{

fscanf (fp, " dsd ", ampStu[i]. Número, Stu[i]. Nombre ampStu[i]. Cuenta

for(int? j ? =0; j lt3; j )<); /p>

fscanf(fp, " ssddd ", stu[i]. Libro[j]. Nombre, Stu[i]. Libro[j]. Autor y. Stu[i]. Disponible amp Stu[i] . Fecha, año y Stu[j]. Fecha, Mes y Stu.

libro[j].fecha.día);

}

fclose(FP);

int? Modo;

Bucle:

Printf("1. Ingresar libros\n2. Pedir prestado libros\n3. Devolver libros\n4. Consulta\n*. Salir\n ");

scanf("d", modo amplificador);

cambiar(modo)

{

¿Caso? 1:

add_book(libro);

Romper;

¿Caso? 2:

If (borrow _ book (book, stu)) printf ("Préstamo exitoso\ n ");

¿Y si? Printf("Préstamo fallido\n");

Rotura;

¿Caso? 3:

If (return _ book (book, stu)) printf ("libro devuelto correctamente\ n ");

¿Y si? Printf("Error al devolver el libro\ n ");

Rotura;

¿Caso? 4:

Printf("Ingrese título: ");

scanf("s ", nombre

If (! Consulta(libro, nombre) )printf("No se encontró información del libro\n ");

Descanso

Valor predeterminado:

Retorno

}

¿ir a? Loop;

}

//Compruebe si aún puede pedir prestados libros según su número de estudiante, como actualizar la información del estudiante y la información del libro.

int? Borrow_book (libro? *b, estudiante? *s)

{

Printf("Ingrese el título: ");

Char? Nombre[100];

scanf("s ", nombre);

Printf("Ingrese el número de estudiante: ");

int? num

scanf("d ", ampnum);

for(int?i?=?0;iltm;i)

if (s[ i ]. ¿Número? ==? amp? s[i].

{

int? ¿do? =?s[yo]. Count;

for(int?j?=0;j ltn;j)

if(strcmp(b[j].name,name)==0)? //El préstamo del libro se realizó correctamente, actualice la información.

{

b[j]. ¿Disponible? =?0;

b[j]. ¿Tener una cita? =?get_time();

s[i]. ¿Libro[c]? =?b[j];

s[i]. ¿Contar? =?c 1;

¿Volver? 1;

}

}

¿Volver? 0;

}

// Busque la información de préstamo según el número de estudiante y el título del libro, actualice la información de devolución y calcule si está vencida.

int? return_book(libro? *b, estudiante? *s)

{

Printf("Ingrese el título: ");

Char? Nombre[100];

scanf("s ", nombre);

Printf("Ingrese el número de estudiante: ");

int? num

scanf("d ", ampnum);

for(int?j=?0;j ltm;j)

if(s[j ].número? ==?número de amperios[j].count gt0)

{

for(int?k = 0;k lts[j].count;k )

if(strcmp(s[j].libro[k].nombre,nombre)==0)

{

s[j]. contar-;? //Actualizar el número de libros en poder de los estudiantes.

for(int?i?=0;iltn;i)

if(strcmp(b[i].name,name)==0)

{

if(query(b, name) gt; 0)

Printf("Si el préstamo está vencido por d días, pague una multa\n ");

b[yo]. ¿Disponible? =?1;

b[i]. ¿Tener una cita? =?get_time();

¿Volver? 1;

}

}

}

¿Volver? 0;

}

¿No es válido? add_book(book?*book)

{

//Ingrese un libro nuevo y guárdelo en el archivo

}

/ /Buscar información del libro según el título del libro (también se puede buscar según los estudiantes, no implementado aquí)

int? Consulta (¿libro? *b, char? *nombre)

{

for(int?i?=0;iltn;i)

if( strcmp (b[i].name, name)==0)

{

if(b[i].Available?==1){printf("Este libro está disponible Préstamo\n ");¿Devolución? -1;}

¿Y si?

{

int? ¿Cuántos días? =?cal_day(b[i].Fecha);

Printf("Este libro ha sido prestado durante d días\n ", días);

If (número de días gt10)

p>

Printf("Este libro está vencido por d días\n ", días-10);

¿Devolver? Día 10;

}

}

¿Regresar? 0;

}

¿Una cita? Obtener hora()

{

¿Fecha? Fecha;

hora_t? curtime

estructura? ¿tm? *?timeinfo

¿Hora? (?ampCurtis?); //Obtener tiempo

timeinfo? =?Hora local? (?ampCurtis?); //Convertir a hora local

Fecha. ¿años? =?timeinfo-gt;TM_año 1900;

Fecha. ¿mes? =?timeinfo- gt;TM_mon 1;

Fecha. ¿Qué día de la semana es? =?timeinfo- gt;tm_mday

¿Volver? Fecha;

}

//Calcular el número total de días de préstamo.

int? cal_day(fecha?d)

{

¿Fecha? ¿sobredosis? =?get_time();

Si (od.año?==?d año)

{

Si (od.mes?== ?d .mes)? ¿devolver? ¿Día D? -?od día;

¿Y si? ¿devolver? ¿Día D? -?¿día.día? (od.mes?-?d . mes)* 30; //30 días por mes

}

Otro

{Return? ((d.mes-1)*30 d.día)? -?((od.mes-1)*30?od.día)? ?(d.año?-?od . año)* 365;}?//365 días por año

Los siguientes son algunos resultados actualizados y el texto de información para estudiantes del libro.

Muchos libros se guardan mediante matrices y el tiempo se calcula mediante funciones de biblioteca.