Colección de citas famosas - Libros antiguos - Tomé prestada una pregunta de un compañero de clase en Baidu, pidiendo un diseño de curso de lenguaje C sobre procedimientos de préstamo de bibliotecas.

Tomé prestada una pregunta de un compañero de clase en Baidu, pidiendo un diseño de curso de lenguaje C sobre procedimientos de préstamo de bibliotecas.

Esto no lo escribí yo, pero se puede utilizar si lo modifico. Espero eso ayude. . .

#include

#include

#include

/ /

#define MAXSIZE 100 //El valor máximo se define como 100

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

// Estructura del prestatario

typedef struct Boro//Comportamiento del préstamo

{

char BNum[20];//Número de libro del préstamo

p>

char RetDate[8];//Fecha de regreso

struct Boro *next;

}Bor;

typedef struct LinkBook

{

Bor *next;//Comportamiento de préstamo de esta tarjeta de biblioteca

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

int Total ;//El número de libros prestados

}lend[LIST_INIT_SIZE];//Matriz de prestatarios

//Información de estructura de los libros

typedef struct LNode

{

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

struct LNode *next;

}LinkList;

typedef struct book

{//Los contenidos que deben registrarse para cada libro incluyen ISBN, título del libro, autor, editorial, inventario total e inventario actual.

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

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

char auth[20];//autor

char pub[20];//editorial

int TotNum;//inventario total

int NowNum;//inventario actual

LinkList *next;//Personas que tomaron prestado el libro

}ook[MAXSIZE];

//

int Retotal;//Número de lectores

int total; //Definir variables externas

//

//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 < LIST_INIT_SIZE;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[]) //Búsqueda binaria y número de libro de comparación

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

int low=0,high=total-1;

int found= 0;

while(bajo<=alto)

{

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

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

{

found=1;

return true;

}//Buscar correctamente

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

alto=medio-1;

else bajo=medio+1

}

if(found==0)

return false; //Encontrar error

}

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

{/1. Compre un libro nuevo si el libro ya existe en la cuenta de libros, se aumentará su inventario (incluido el inventario total y el inventario actual). Si el libro no existe, se agrega un libro a la cuenta de libros y el inventario total. y el inventario actual son ambos 1.

if(BinarySearch(boo,BuyNum)) //Si este libro está en la biblioteca

{

boo[mid].TotNum++ //Total; inventario Agregar 1

boo[mid].NowNum++ //Agregar 1 al inventario actual

printf("Almacenamiento exitoso.\n");

printf ( "La información del libro en la biblioteca ha sido cambiada. El autor del libro %s con número %s es %s, el editor es %s, el inventario total actual es %d y 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 adecuada para mantener el orden

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

printf("El libro está en la biblioteca no existe Para crear un nuevo libro, complete los detalles del libro \n");

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

printf("Esta La cantidad 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 de este libro es:");

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

printf ("El editor de este libro sí: ");

scanf(" %s",&boo[i].pub);//Información completa

boo[i]. next=NULL;

total++;//Monto total +1

printf("La información del libro ha sido agregada. El autor del libro %s con el número %s es % s, el editor es %s y el inventario total actual es %d y 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("Almacenamiento exitoso.\n");

}

}

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

{/2. Borrar inventario: si un determinado libro no tiene valor de retención, escríbalo. fuera de la cuenta del libro

if(BinarySearch(boo,DeleteNum)==false||total==0) //Si no existe tal libro

printf("Hay no existe tal libro en la biblioteca.\n");

if(BinarySearch(boo,DeleteNum))//si existe

{

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("Eliminación exitosa del libro.\n");

}

else printf("Este libro tiene un prestatario y no se puede eliminar. \n");

}

}

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

{//3. Préstamo: si el inventario actual de un libro es mayor que cero, entonces preste un libro y reduzca el inventario actual en 1,

//Y registre la tarjeta de biblioteca del prestatario. número y plazo de devolución.

Bor *p,*q;

LinkList *m,*n;

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

printf("Este libro no está en la biblioteca.