Simulación de escena de venta de libros
# 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.