Diseño de sistema de gestión de información de biblioteca de formación en lenguaje C
#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 */ p>
#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*/ p >
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) p>
{
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)
{ p>
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)
{ p>
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 */
{ p>
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*/ p>
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]. p>
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**/
}