Red de conocimientos turísticos - Conocimientos sobre calendario chino - Le pedí a un compañero de clase de Baidu que me preguntara sobre el diseño de un curso de lenguaje C y un plan para tomar prestados libros de la biblioteca.

Le pedí a un compañero de clase de Baidu que me preguntara sobre el diseño de un curso de lenguaje C y un plan para tomar prestados libros de la biblioteca.

No escribí esto, pero puedo usarlo si lo modifico. Espero que esto ayude.

#include

#include

#include

/ /

#define MAXSIZE 100 //Valor máximo. Definido como 100

#define LIST_INIT_SIZE 100 // El valor máximo de usuarios de tarjetas de biblioteca se define como 100

// Estructura del prestatario

typedef struct Boro // Comportamiento de préstamo

{

char BNum[20]; // El número del libro prestado

char RetDate[8] // Fecha de devolución< / p>

struct Boro *next;

}Bor;

typedef struct LinkBook

{

Bor *next; // El acto de pedir prestado esta tarjeta de biblioteca

char CNum[20]; //número de tarjeta

int Total;//número de libros prestados

} lend [LIST_INIT_SIZE];//matriz de prestatarios

//información estructural sobre el libro

typedef struct LNode

{

char CardNum [20]; //Número de tarjeta de biblioteca

struct LNode *next;

}LinkList; //Préstamos

typedef struct book

{// Es necesario registrar cada tipo de libro, incluido el ISBN, el título del libro, el autor, la editorial, el inventario total y el inventario actual.

char num[20];//número de libro

char nombre[20];//título del libro

char auth[20];//autor

char pub[20];//editor

int TotNum;//stock total

int NowNum;//stock actual

LinkList *next;//Personas que han tomado prestado este libro

}ook[MAXSIZE];

int Retotal;//Número de lectores

int total ; //Definir variables externas.

Número de tipos de libros

//

//Inicialización de estructura

void InitBo(ook &boo) //Inicializar información del libro

{

for(int i=0;i

{

boo[ i].NowNum=0;

boo[i].TotNum=0;

boo[i].next=NULL;

}

}

void InitRe (lend &Lin) //Inicializa la información del prestatario

{

> for(int i=0;i

Lin[i] .next=NULL;

}

//

int mid=0;//Función externa mid, utilizada para devolver la posición encontrada

bool BinarySearch(ook boo,char SearchNum[]) //Número de libro de comparación de búsqueda binaria

{//Utilice la función bool, pero como la función no puede tener dos valores de retorno, se establece una variable externa mid, usado para devolver la posición encontrada

int low=0,high=total- 1;

int found=0;

while(low<= alto)

{

mid=(bajo+alto)/2; //punto medio

if(strcmp(boo[mid].num,SearchNum )==0)//Mismo número de libro

{

encontrado=1;

return true;

}//Buscar exitosamente

if(strcmp(boo[mid].num,SearchNum)!= 0) //El ISBN es diferente

high=mid-1

else bajo =medio+1;

}

if(found==0)

return false //encontrar falló

}

void Buy(boo & ; boo, char BuyNum[])

{/1. Compra e inventario: compra un libro nuevo, si el libro ya existe en el cuenta de libros, entonces su inventario aumentará (incluido

//inventario total e inventario actual. Si el libro no existe, agregue un libro a la cuenta de libros y se obtendrán el inventario total y el inventario actual). 1.

if(BinarySearch(boo,BuyNum)) //Si el libro existe en la cuenta del libro

{

boo[mid].TotNum++ // Inventario total más 1

boo[mid].NowNum++; //Inventario actual más 1

printf("Inventario exitoso. \n");

printf ("Se modificó información sobre el libro en la biblioteca. Número de libro %s, el autor es %s, el editor es %s, el inventario total actual es %d, el inventario actual es %d.

\n",boo[mid].num,boo[mid].name,boo[mid].auth,boo[mid].pub,boo[mid].TotNum,boo[mid].NowNum);

}

if(!BinarySearch(boo.BuyNum)))

{

for(int i=total;i>mid&&total;i --) //Insertar en la posición apropiada Mantenerlo en orden

boo[i]=boo[i-1] //Vaciar la posición de inserción

printf("The El libro en la biblioteca no existe. Creando un libro nuevo. Complete los detalles del libro \n");

strcpy(boo[i].num,BuyNum);

printf("El número de libros comprados es:");

scanf(" %d",&boo[i].NowNum);

boo[ i].TotNum =boo[i] .NowNum;

printf("El nombre del libro es:");

scanf(" %s",&boo[i] .name);

printf("El autor del libro es:");

scanf(" %s",&boo[i].auth);

printf); ("La editorial del libro es:");

scanf(" %s",&boo[i].pub);//completando la información

boo[ i].next =NULL;

total++;//total+1

printf("Información agregada sobre el libro. Número de libro %s autor es %s, editor es % s, el total actual el inventario es %d, el inventario actual es %d \n",boo[i].num,boo[i].name,boo[i].auth,boo[i].pub,boo[i. ].TotNum ,boo[i].NowNum);

printf("Inventario exitoso.\n");

}

}

}

void Delete(ook &boo,char DeleteNum[])

{//2, borrar inventario: un determinado tipo de libro ya no tiene valor de retención y se eliminará de la lista. reservar cuenta Cerrar sesión.

if(BinarySearch(boo,DeleteNum)==false||total==0)

if(BinarySearch(boo,DeleteNum))//si es así

{

if(!boo[mid].next)

{

for(int j=mid;j

boo[j]=boo[j+1];

strcpy(boo[j].num,boo[j+1].num);

strcpy(boo[j].nombre,boo[j+1].nombre);

strcpy(boo[j].auth,boo[j+1] .auth);

strcpy(boo[j].pub,boo[j+1].pub);

boo[j].TotNum=boo[j+1].TotNum;

boo[j].NowNum=boo[j+1].NowNum;

printf("El libro se ha eliminado correctamente.\n");

}

else printf("El libro tiene prestatarios y no se puede eliminar. \n");

}

}

}

void Borrow(ook &boo,lend &Lin,char BorrowNum[],char CaNum[])

{/3. Préstamo de libros: si el inventario actual de un determinado libro es mayor que cero, pedir prestado un libro y restar el inventario actual menos 1,

//Y registrar el número de tarjeta de biblioteca del prestatario y el período de devolución.

Bor *p,*q;

LinkList *m,*n;

if(!BinarySearch(boo,BorrowNum)||total==0 )//Si no se encuentra el libro

printf("No hay ningún libro en la biblioteca.\n");//Si existe este libro

if(BinarySearch( boo,BorrowNum)) //Hay en la librería

{

if(boo[mid].NowNum>0) //Mira si nowNum es mayor que 0

{

boo[mid].NowNum--;//Hay en la librería p=(Bor *)malloc(sizeof(Boro)); //Asignar espacio

Lin[i].next=p;

strcpy(p->BNum,BorrowNum);

printf("Ingrese la fecha de devolución:");

scanf(" %s",&p->RetDate);

p->next=NULL;

Retotal++ //El número total de información de BorrowNum más 1.

printf("Préstamo exitoso.\n");

}

}

else printf("Préstamo fallido. El libro ahora está disponible en 0.\n");

}

}

}

void Return(ook &boo,lend &Lin,char ReturnNum[],char BorrowerNum[])

{/4. Devolución: Cancelar el registro del prestatario y cambiar el inventario actual de libros.

Bor *p,*q;

LinkList *m,*n;

int flag=0;//Establecer un parámetro

if(!BinarySearch(boo,ReturnNum)||!total) //No hay libro

printf("No hay ningún libro en la biblioteca.\n");

if(BinarySearch(boo,ReturnNum)) //hay un libro

{

m=boo[mid].next;

if(!strcmp (m->CardNum,BorrowerNum)) //si el primer prestatario lo devuelve

{

boo[mid].NowNum++ //ahora inventario más 1

;

boo[mid].next=m->next; //eliminar el nodo

free(m); //liberar el espacio del nodo

}

else

{

while(m->next) //encuentra el nodo Prestatario del retornado

{

if(!strcmp(m->next->CardNum,BorrowerNum)) //si se encuentra

{

n=m->next; //n es el prestatario del que regresa. node

m->next=n->next; //m apunta al siguiente nodo en el nodo prestatario del que regresa

free(n); //libera el espacio

boo[mid].NowNum++; //ahora inventario más 1

descanso;

}

m=m->next;

}

}

}

//Buscar información del prestatario en la tabla de prestatarios

para (int i=0;i

{

if(! strcmp(Lin[i].CNum,BorrowerNum)) //si encuentra prestatario

{

p=Lin[i].next;

if(!strcmp(p->BNum,ReturnNum)) //si se devuelve es el primer libro prestado

{

Lin[i].next=p->next; // Señala el siguiente nodo prestado

free(p);

printf("El libro se devolvió correctamente.\n");

flag=1;

break;

}< / p>

else //no puedo encontrarlo

{

while(p->next) //busca el nodo de préstamo que

No devolví el libro

{

if(!strcmp(p->next->BNum,ReturnNum)) //si se encuentra

{

q=p->next; //q es el nodo de préstamo del libro devuelto

p->next=q->next; //p apunta al siguiente nodo de préstamo

free(q); //Espacio libre

printf("El libro se devolvió exitosamente.\n");

flag=1;

pausa;

}

p=p->siguiente;

}

}

}

}

}

for(int k=0;k

if(!Lin[k] .next )

{

for(int j=k;j

Lin[j]=Lin[j+1]; // Avanzar todos los siguientes uno, sobrescribiendo la información actual

strcpy(Lin[j].CNum, " "); //Eliminar el número de tarjeta de la biblioteca

Retotal -- ; //El número de tarjetas de la biblioteca menos 1

}

If (!//elimina la información del estado actual de la tarjeta de la biblioteca a la que no se le ha prestado un libro para ahorrar espacio

if(flag==0) printf("No hay información en esta tarjeta. \n");

}

5. Buscar: Implementación tres Buscar con una de las condiciones de búsqueda: Buscar por número de libro,

/Buscar por título de libro, Buscar por autor Nota: La búsqueda combinada, es decir, la búsqueda por múltiples condiciones, no es posible.

void SearchByNum(ook &boo,char SeaNum[])

{/BY NUM Búsqueda por número de libro

LinkList *p;

p=boo[mid].next;

if( BinarySearch(boo,SeaNum)==false)printf("Lo sentimos, no se encontró el libro que estás buscando. Número de libro┃título┃autor ┃ Editorial┃Stock actual┃Stock total┃n");

printf("̈━━━━━━━╋━━━━━━━╋━━━━━━━━╋━ ━━━━━━━╋━━━━━╋━━━━━\n");

printf("̈%14s┃%14s┃%16s┃%16s┃%10d┃ %10d┃\n",boo[mid].num,boo[mid].name,boo[mid].auth,boo[mid].pub,boo[mid].NowNum,boo[mid].TotNum);

printf("┗━━━━━━━┻━━━━━ ->siguiente;

}

printf("兾━━━ ━━━━兾兾n");

}

}

mientras(p)

{

printf(" %s ",p->CardNum);//El número de tarjeta del prestatario también se mostrará en la función de búsqueda del número de libro

p=p->next;

}

printf(" \n");

}//Mostrar información sobre el libro buscado

}

void SearchByName(ook &boo)

{/BY NAME Buscar por nombre

char SeaName[20];

printf("Ingrese el nombre del libro que desea buscar:\n");

scanf(" %s",&SeaName);

printf("Los detalles del libro que coincide con el nombre se encontraron de la siguiente manera: \n");

printf("Los detalles del libro que coincide con el nombre se encontraron de la siguiente manera:

for(int i=0;i

{

if(strcmp(SeaName,boo[i].name)==0)//Si los nombres de los libros son iguales

{

printf("Número de libro: %s\nTítulo:%s\nAutor:%s\nEditorial:%s\nInventario total:%d\nInventario actual:%d\n",boo[i].num ,boo[ i].name,Sh[i].auth,Sh[i].pub,Sh[i].TotNum,Sh[i].NowNum);

}//Mostrar todas las coincidencias información Información del libro

}

}

void SearchByAuth(ook &boo)

{// BY AUTH Búsqueda por autor

char SeaAuth

[20];

printf(" Ingrese el autor del libro que desea encontrar:\n");

scanf(" %s",&SeaAuth);

printf("Los detalles del libro encontrado que coincide con este autor son los siguientes:\n");

for(int i=0;i

{

if(strcmp(SeaAuth,boo[i].auth)==0)//si el autor es el mismo

{

printf( "Número de libro: %s\nTítulo: %s\nAutor: %s\nEditorial: %s\nInventario total: %d\nInventario actual: %d\n\n",boo[i].num, boo[i] .name,boo[i].auth,boo[i].pub,boo[i].TotNum,boo[i].NowNum);

}//Muestra todos los libros que coinciden con la información Información

}

}

//6. Ver: puede ver todos los libros prestados por el prestatario con un determinado número de tarjeta de biblioteca, puede ver todos Libros vencidos.

void ViewCard(ook &boo,lend &Lin)

{//Ver todos los libros prestados por el prestatario de un determinado número de tarjeta de biblioteca

char Num[ 20];

printf("Ingrese el número de la tarjeta de la biblioteca que desea ver:\n");

scanf(" %s",&Num);

Bor *p;

int qqq=0;

for(int i=0;i

{

if(strcmp(Lin[i].CNum,Num) ==0)//encontrar esta tarjeta

{

printf("Los libros prestados con esta tarjeta son:\n");

p=Lin[i].next;

while(p)

{

printf(" %s ",p->BNum); //Número de libro

p> p=p->siguiente;

}

printf ("\n");

qqq=1;

descanso;

}

}

}

if (qqq==0)

printf("El certificado no existe.\n");

}

void ViewBook(ook &boo,lend &Lin)

{/Ver todos los libros vencidos

char date[8];

Bor *p;

printf("Ingrese la fecha (ingrese en formato 20060605):\n");

scanf(" %s",&date);

printf( "Todos los libros vencidos tienen:\n");

for(int i=0;i

{

p=Lin[ i].next;

while(p)//cuando p no está vacío

{

if(strcmp(p->RetDate,date)< 0)//overdate

{

printf("El número de libro es %s Número de certificado %s Debería ser La fecha de devolución es %s \n",p->BNum,Lin [i].CNum,p->RetDate);

}//Mostrar información sobre todos los libros vencidos

p=p->next;

}

}

}

}

void Menu() //Menú

{

printf("Ciudad ------- ---------- M E N U--------- -------

┓n");

printf("│ │\n");

│\n");

printf("│ Si el libro de cuentas no existe, agregue el tipo de cuenta en el libro mayor de cuentas, │\n");

printf("│ Tanto el inventario total como el inventario actual son números ingresados. │\n");

printf("│ 2. Inventario vacío: Cancelar de los libros de contabilidad los libros que ya no tienen valor de reserva. │\n");

printf("│ 3. Préstamo: Si un libro Si el inventario actual es mayor que cero, preste un libro y reduzca el inventario actual en uno, │\n");

printf("│ y registre el número de tarjeta de biblioteca del prestatario y el período de devolución │\ n");

printf("│ 4. Devolución: Cancelar el registro del prestatario y cambiar el inventario actual del libro. │\n");

printf( "│ 5. Buscar por número de libro │\n");

printf("│ 6. Buscar por título de libro. │n");

printf("│ 7. Buscar por autor │n");

printf("│ 8. Ver todos los libros prestados por un prestatario con un número de tarjeta de biblioteca. │\n");

printf. ( "│ 9. Ver todos los libros vencidos. │\n");

printf("│ 0. Salga del sistema de gestión de la biblioteca.

│ \n");

printf("│ │ \n");

printf(":------ ------- Seleccione su Operaciones requeridas-- ---------- \n");

}

void main()

{

ook Bo;

prestar Lin;

char BNum[20];

char CNum[20];

printf ("-------- --------------- ¡Bienvenido al sistema de gestión de bibliotecas! ------------------ ---------\n\n");

int elección=10;

int SearchCho=10,ViewCho=10;

while(choice!=0)

{

Menú ();//Mostrar el menú

scanf(" %d",&choice);

switch(choice)

{

caso 1://Recopilar y editar en la biblioteca

printf("Por favor, ingrese el libro número del libro a ingresar a la biblioteca:");

scanf(" %s",BNum);

Buy(Bo,BNum);

break;

caso 2: //borrar inventario

printf("Ingrese el número del libro que desea borrar:"); scanf(" %s",BNum);

Eliminar(Bo,BNum);

romper;

caso 3: //pedir prestado

printf("Ingrese el número del libro que desea pedir prestado:\n");

scanf(" %s",&BNum);

printf( "Ingrese el número de libro de la tarjeta de la biblioteca.:");

scanf(" %s",&CNum);

Borrow(Bo,Lin,BNum,CNum);

break;

case 4://Return

printf("Ingrese el número del libro que desea devolver:\n");

scanf(" %s",&BNum);

printf("Por favor, introduzca el número de tarjeta de la biblioteca:");

scanf(" %s" ,&CNum);

Return(Bo,Lin,BNum,CNum);

break;

case 5://find //buscar por número de libro <

/p>

printf("Ingrese el número del libro: ");//ingrese el número del libro a buscar

scanf(" %s",&BNum);

SearchByNum( Bo,BNum);

break;

case 6://Buscar por título de libro

SearchByName(Bo);

break ;

caso 7://Buscar por autor

SearchByAuth(Bo);

break;

caso 8://Ver todos los libros tomados prestados por una determinada tarjeta de libro

ViewCard(Bo,Lin);

break;

caso 9: //Ver todos los libros vencidos

ViewBook(Bo,Lin);

break;

caso 0://Salir del sistema exit(0);break;

predeterminado: printf("¡Error de entrada!\n");salir(0);romper;

}

}

}

}