Red de conocimiento informático - Computadora portátil - Diseño de sistema de gestión de información de biblioteca de formación en lenguaje C

Diseño de sistema de gestión de información de biblioteca de formación en lenguaje C

#include lt;dos.hgt;

#include lt;bios.hgt;

#include lt;conio.hgt; .hgt;

#include lt;stdlib.hgt;

#include lt;stdlib.hgt

#include lt;math.hgt; p>

p>

#ine define lt;stdlib.hgt;

#include lt;math.hgt

#define LEFT 0x4b00 /*Left** /

#define DERECHA 0x4d00 /*Derecha**/

#define ABAJO 0x5000 /*Siguiente.

#define ARRIBA 0x4800 /* ARRIBA */

#define ESPACIO 0x3920 /* ESPACIO */

#define ESC 0x011b /* Tecla ESC*/

#define ENTER 0x1c0d /* Tecla Enter*/

#define Retroceso 0xe08/* Tecla borrar*/

#define ALT_B 12288 /* Combinación de teclas ALT_B */

#define ALT_M 12800 /* Combinación de teclas ALT_M */

#define ALT_H 8960 /* Combinación de teclas ALT_H */

int key; /* Variable clave*/

int textx, texty /* Coordenadas del cursor, fila x, columna y*/

struct menustruct/* Estructura del menú*/

{

char name[10]; nombre*/

char str[10][20] /* opciones*/

int n; /* número de opciones*/

}ml [3];/ * Se han utilizado 3, se pueden agregar o eliminar según sea necesario*/

typedef struct BookList/* estructura del libro*/

{

char num[20] ;/* Número de libro*/

char nombre[20] /* Nombre del libro*/

precio int /* Precio del libro*/

p>

char person[20]; /* Prestatario*/

int sí;

struct BookList *next; p>

typedef struct MemberList/* estructura de miembros*/

{

nombre de char[20];/* nombre de miembro*/

sexo de char [2 ]; /* Género del miembro*/

int edad; /* Edad del miembro*/

struct MemberList *next

}Miembro; p>

guardar caracteres[409

6]; /* Guardar el espacio del área de texto*/

/*char sav1[4096];*/

char c[4096] /* Borrar el espacio dedicado de la pantalla* /

int i, j; /* Variables comunes*/

void Menu() /* Interfaz de inicialización*/

void Selectitem()./ * Menú de definición*/

void DrawSelectitem() /* Mostrar el menú principal*/

void BlackText(int x, int y, char *z); */

void RedText(int x, int y, char *z);

*Menú normal*/

void Run(); /* Proceso de operación específico*/

void DrawMl(int n /* Mostrar menú desplegable*/

void MoveMl(int n, int x); /* Control de opciones del menú*/

void Enter(int m, int n /* Funciones específicas de las opciones del menú*/

void BookAdd(); /* Agregar libro*/

void BookConsult(); /* Consulta de libro*/

void BookDel(); */

void BookBorrow(); /* Pedir prestado libros*/

void BookReturn(); /* Devolver libros*/

void MemberAdd(); /* Agregar miembro*/

void MemberConsult(); /* Consultar un miembro*/

void MemberDel() /* Eliminar miembro**/

void MemberBook() /* Consultar información sobre préstamos de libros de miembros**/

void Help() /* Ayuda**

void Ver() /* Información de versión* */

void ClrScr();/* Función ClearScreen personalizada*/

void DrawFrame(int left, int up, int right, int down, int textcolor, int backgroundcolor); / * DrawFrame */

/** Función principal****/

void main(void)

{

Menú ( );/* Interfaz de inicialización*/

Ejecutar();/* Proceso de operación específico*/

}

/* Interfaz de inicialización*/

void Menu()

{

system(" cls"); /* Llama al comando de limpieza de pantalla del sistema*/

textbackground( AZUL ); /* Establece el fondo en azul*/

window(1, 1, 25, 80

clrscr(); 3; /* Posición de inicialización del cursor*/

texty=2;

gotoxy(1, 2);

printf("c", 218); /*Dibuja la esquina superior izquierda*/

for(i=0;ilt;78;i)

printf("c", 196); line*/

printf("c", 191); /*Dibuja la esquina superior derecha*/

for(i=3;ilt;=23;i)

{

gotoxy(1, i);

printf("c", 179 /*Dibuja una línea vertical*/

gotoxy(80, i) ;

printf("c", 179);

}

printf("c", 192); Dibuja la esquina inferior izquierda*/

p>

for(i=0;ilt;78;i

)

printf("c", 196);

printf ("c", 217); /* Dibuja la esquina inferior derecha*/

gotoxy (1 , 1);

textcolor(7); /* Establecer gris*/

for(i=0; ilt; 80; i )

cprintf( "c", 219); /* Usa símbolos para dibujar el menú principal

void Selectitem()

{

strcpy(ml[0] .name , "Book"); /*Rellene los espacios en blanco con las opciones específicas a continuación para que cada menú tenga el mismo fondo negro*/

strcpy(ml[0].str[0], " Agregar"); /*Agregar libros*/

strcpy(ml[0].str[1], "Consultar"); /*Consultar libros*/

strcpy(ml [0]. str[2], "Del"); /*Eliminar información del libro*/

strcpy(ml[0].

strcpy(ml[0].str [3], "Pedir prestado "); /* Pedir prestado un libro*/

strcpy(ml[0].str[4], "Devolver"); >

strcpy( ml[0].str[5], "Salir"); /* Salir del sistema*/

ml[0].n=6; elementos en el menú*/

strcpy(ml[1].name, "Member");

strcpy(ml[1].str[0], "Add") ; /* Agregar nuevo miembro*/

stracpy(ml[1].str[1], "Consultar"); /* Consultar información del miembro*/

strcpy(ml[ 1].str[2], " Del"); /* Eliminar perfil de miembro */

strcpy(ml[1].str[3], "Member&book"); >ml[1].n =4;

strcpy(ml[2].name, "Ayuda " /* Ayuda del sistema*/

strcpy(ml[2]); .str[0], " Este sistema ");

strcpy(ml[2].str[1], "Ver "); 2;

}

//* Mostrar el nombre del menú principal*/

void DrawSelectitem()

{

for(i=0 ;ilt;3;i)

RedText(i, 1, ml[i].name /* Muestra el nombre del menú principal y muestra la primera letra en rojo); */

}

//* Muestra el nombre del menú principal.

// Muestra el menú normalmente.

void RedText(int x, int y, char *z)

{

textbackground(7) /*Establece el color de fondo en gris claro* /

gotoxy(3 x*20, ​​​​y);

for(j=0; z[j]; j)

{

if(j==0)

textcolor(RED);/* La primera letra se muestra en rojo*/

else

textcolor(BLACK ); /* Establecer negro */

cprintf("c", z[j] /* Nombre del menú de salida*/

}

}

//* Mostrar el menú seleccionado*/

void BlackText(int x, int y, char *z)

{

textbackground(0); /* Establece el color de fondo en negro*/

textcolor(15); /* Establece el color del texto en blanco*/

gotoxy( 3 20*x , y); /* Coordenadas de posicionamiento*/

cputs(z /* Cadena de nombre del menú de salida*/

}

/ / Proceso de pulsación de tecla */

void Run( )

{

while(1)

{

gotoxy(texty , textx);

key=bioskey(0);/*Recibir clave*/

cambiar(clave)

{

case ALT_ B:

case ESC:

case ALT_M: DrawMl(0); /*Mostrar menú desplegable 1**/

case ALT_M: DrawMl(1); break; /*Mostrar menú desplegable 2**/

case ALT_H: DrawMl(2);

caso ARRIBA:

{

if(textx==3)

textx=23

; textx--;

gotoxy(texty, textx);

}break;

caso ABAJO:

if(textx== 23)

textx =3;

textx;

gotoxy(texty, textx

}romper;

gotoxy(texty, textx);

} case IZQUIERDA: /* Control de acción de la tecla del cursor izquierdo*/

{

if(texty== 2)

texty =79;

texty--;

gotoxy(texty, textx

}romper; p>

gotoxy(texty, textx );

} caso Retroceso:

{

if(texty==2amp;amp;textx== 3)

continuar

else

{

if(texty!=2)

texty--; /* Borra detalles clave, borra algunas cosas primero, luego el el cursor debe devolver un fotograma*/

else

if(texty==2)

{

texty=78 < / p>

textx--;

}

gotoxy(texty, textx

printf(" "); >gotoxy(texty, textx);

}.

}}break; /*end case 0xe08*/

case RIGHT: /* Control de operación de la tecla del cursor derecho**}

textcolor(tcolor); /* Color del borde*/

for(i=u 1; ilt; d; i) /* Genera la línea del borde del área de fondo*/

{

gotoxy(l,i);

cprintf("c",179); /* línea vertical*/

gotoxy(r,i);

cprintf("c", 179);

}

for(i=l 1;ilt;r;i)

{

gotoxy(i, u);

cprintf("c", 196); /*línea horizontal**/

gotoxy(i, d); /p>

cprintf("c", 196);

}

gotoxy(l, u);

cprintf("c", 218); /*Esquina superior izquierda*/

gotoxy(r, u

cprintf("c", 191); >

gotoxy (l, d);

cprintf("c", 192); /* Esquina inferior izquierda*/

gotoxy(r, d); p>

cprintf (" c", 217); /* Esquina inferior derecha*/

/* gettext(l 1, u 1, r-1, d-1, save1); // /* Guardar dentro del área del borde*/

}

// Mostrar selecciones desplegables específicas*/

void DrawMl(int n)

{ <

gettext(1, 1, 80, 25, save); /* Dónde guardar la máscara*/

BlackText(n, 1, ml[n].name); /* Invierte la selección para mostrar el menú principal*/

DrawFrame(3 20*n-1, 2, 3 20*n 19, 3 ml[n]. n, 0, 7); /* Borde del menú desplegable*/

for(i=3;ilt;3 ml[n].n;i)/*Salida de cada opción del menú seleccionado */

{

if(i==3)

BlackText(n, i, ml[n].str[i-3]); /* El primer elemento está seleccionado de forma predeterminada*/

else

RedText(n,i,ml[n].str[i-3]);/* El primer carácter de los elementos restantes se muestra en rojo*/

}

gotoxy(79, 1

MoveMl(n, 3); control*/

}

/* Controla las opciones del menú, n determina los elementos horizontales, x determina las opciones desplegables*/

void MoveMl(int n, int x)

{

int bandera=1

mientras(bandera)

{

gotoxy (79, 1);

key=bioskey (0); /*recibir pulsaciones de teclas**/

gotoxy(79,1);

witch(key)

{

case ESC: /* Salir del bucle**/

puttext(1, 1, 80, 25, save); / * Restaurar como estaba antes de abrir el menú*/

flag=0;

break;

case LEFT: /* Mover a la opción izquierda */

break; p>

puttext(1, 1, 80, 25, save /* Restaurar como estaba antes de abrir el menú*/

if); (n==0)/* Si moverse hacia la izquierda está fuera de los límites, entonces vaya a la última opción*/

DrawMl(2

else

DrawMl(n-1);

bandera =0;

romper;

caso DERECHA:

puttext(1, 1). , 80, 25, save); /* Restaura el estado antes de abrir el menú */

if(n==2)/* Pasar a la primera opción si cruza la línea de la derecha* /

DrawMl(0);

else

DrawMl(n 1);

flag=0; p>break;

flag=0;

flag=0;

break;

case DERECHA: // Si quieres para abrir el menú, vaya a la derecha a la primera opción.

flag=0;

break;

case UP: /* Mover opciones específicas hacia arriba*/

RedText(n, x , ml[n].str[x-3]);/* Salida de fuente roja*/

if(x==3)/* Vaya a la parte superior, luego presione la tecla ARRIBA, pasar a Abajo*/

x=3 ml[n].n-1;

else

x-- /* Pasar al nuevo que se mostrará Posición*/

BlackText(n, x, ml[n].str[x-3] /* Salida de fuente negra*/

flag=1;

break;

case DOWN: /* Opciones específicas para moverse hacia abajo*/

RedText(n, x, ml[n].str[x- 3] );

if(x==(3 ml[n].n-1))/* Muévete hacia abajo y luego presiona la tecla nuevamente para ir hacia arriba*/

x=3;

else

x ;/* Mover al nuevo contenido que se mostrará*/

BlackText(n, x, ml[n] .str[x-3]);

flag=1;

romper;

caso ENTER:

puttext( 1, 1, 80, 25, save); /* Restaura el estado antes de abrir el menú*/

Enter(n, x-3); */

flag=0;

romper;

}

gotot( n, x, ml[n].

gotoxy(79 , 1);

}

}

}

/* Funciones específicas de las opciones del menú. */

void Enter(int m, int n)

{

cambiar(m)

{

caso 0: switch(n ) /*La opción del menú libro está seleccionada*/

{

caso 0: BookAdd() /* Agregar libro*/

caso 1: BookConsult(); break /* Consulta de libro*/

caso 2: BookDel() /* Eliminar archivo de libro*/

caso 3.BookBorrow(); descanso ;/* Pedir prestado libro**/

caso 4: BookReturn(); descanso /* Devolver libro**/

caso 5: exit(0); break;

p>

} break; /* Salir del sistema**/

caso 1.Switch(n) /*Opción de menú de miembro seleccionada */

{

caso 0: MemberAdd(); romper /*Agregar miembro*/

caso 1: MemberConsult(); MemberCheck*/

caso 2.

caso 3: MemberBook(); /* Consultar los libros prestados por los miembros*/

}break; >

caso 2: switch(n) /* Seleccionar ayuda vegetal

Opción única*/

{ <

caso 0: Ayuda(); break

caso 1: Ver()

; }

}

}/* Extremos del interruptor externo**/

}