Código de versión en lenguaje C del sistema de gestión de préstamo de libros
#include
#include
#include
# incluir
# incluir
# incluir
#incluir #define IZQUIERDA 0x4b00 /*Izquierda** #define DERECHA 0x4d00 /*Derecha** #define ABAJO 0x5000 /* ABAJO*/ #define ARRIBA 0x4800 /* ARRIBA*/ #define ESPACIO 0x3920 /* ESPACIO*/ #define ESC 0x011b /* Tecla ESC*/ #define ENTER0x1c0d /* 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 de clave*/< / p> int textx, texty; /*coordenadas del cursor, fila x, columna y*/ struct menustruct/*estructura del menú*/ { p > char name[10];/* Nombre del menú principal*/ char str[10][20];/* Opciones*/ int n;/ * Número de opciones*/ }ml[3];/* Utilice 3, puede agregar o eliminar según sea necesario*/ typedef struct BookList/* Estructura del libro*/< / p> { char num[20];/* número de libro*/ char nombre[20];/* título de libro*/ int precio;/* precio del libro*/ char person[20];/* prestatario*/ int sí; struct BookList * next; }Libro; typedef struct MemberList/* estructura miembro*/ { nombre char[ 20];/ * Miembro nombre** char sex[2];/* Género del miembro** int edad;/* Edad del miembro*** struct MemberList *next ; }Miembro; char save[4096];/* Guardar espacio en el área de texto*** /*char sav1[4096] ;*/ char c[4096];/* Borrar espacio de pantalla dedicado*** int i,j;/* Variables de uso común*** void Menu();/*Interfaz de inicialización** void Selecti tem();/* Definir menú**/ void DrawSelectitem();/* Mostrar menú principal**/ void BlackText(int x,int y,char *z );/* Seleccionar menú**/ void RedText(int x, int y,char *z);/* Comprobar menú* void RedText(int x, int y ,char *z);/* Comprobar menú* void RedText(int x, int y,char *z);/* Comprobar menú* strcpy(ml[1] .name, "Miembro"); strcpy(ml[1].str[0], "Agregar");/* Agregar nuevo miembro*/ strcpy(ml[ 1].str[1], "Consult");/* Consultar información del miembro*/ strcpy(ml[1].str[2], "Del");/* Eliminar información del miembro*/ strcpy(ml[1].str[3], "Miembro&libro "); ml[1].n=4; strcpy(ml[2].nombre," Help");/* Ayuda del sistema*/ strcpy(ml[2].str[0], "Este sistema "); strcpy(ml[2].str [1], "Ver "); ml[2].n=2; } /* Mostrar nombre de lista principal* void DrawSelectitem() { for(i=0;i<3;i++) RedText(i,1,ml[ i].name);/*Mostrar la primera letra del nombre del menú principal en rojo*/ } /*Mostrar el menú normalmente*/ void RedText(int x,int y,char *z) { textbackground(7 /*Establece el color de fondo en gris claro*/
for(j=0;z[ j];j++)
{
if( j ==0)
textcolor(RED);/* La primera letra se muestra en rojo*/
else
textcolor(BLACK); Configuración de 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 posición*/
cputs(z); /*Cadena de nombre del menú de salida*
}
//// Proceso de pulsación de tecla*/ p>
void Run()
{
while(1)
{
gotoxy(texty,textx
key=bioskey(0);/*Recibir clave*/
switch(key)
{
caso
caso ARRIBA: /* Control de operación de la tecla de flecha hacia arriba**
{
if(textx==3)
textx=23;
textx--;
gotoxy(texty,textx);
}break
case ABAJO: /* Control de operación de la tecla de flecha hacia abajo**
{
if(textx==23)
textx=3;
textx++;
gotoxy(texty,textx);
}break;
case LEFT: /* Control de operación de la tecla del cursor izquierdo***
{
if(texty==2)
texty=79;
texty--;
gotoxy(texty,textx);
}break;
case Retroceso:/* Borrar configuración de tecla**
{
if(texty==2&&textx==3)
continuar;
else
{
if(texty!=2)
texty--; /* Borra los detalles clave, borra el contenido primero, luego el cursor debe regresar a un cuadro*/
else
if(texty= =2)
{
texty=78;
textx--;
}
gotoxy( texty,textx);
printf(" ");
gotoxy(texty,textx);
}
}romper; /*end case 0xe08*/
case DERECHA: /* Control de operación de la tecla del cursor derecho**/
{
if(texty==79)
texty=2;
texty++;
gotoxy(texty,textx);
}romper;
case SPACE:/*Operación de la barra espaciadora*/
{
if(texty==79)
continuar;
else
{
gotoxy(texty,textx); /*Operación de detalles del espacio**
printf(" ");
texty++;
gotoxy(texty,textx);
}
}break;
case ENTER: /* Controla la operación de retorno de carro* *
{
if(textx==23)
continuar;
textx ++;
texty =2;
gotoxy(texty,textx);
}break;
Valor predeterminado: /* Resultado de clave sin control**
{
if(texty==79&&textx== 23)/* Detener la salida al llegar al final*/
Continuar;
else p>
if(texty==79&&textx! =23) /* hasta el final de la línea*/
{
t
exx++;
texty=2;<
}
gotoxy(texty,textx);/* Resultado de salida*/
printf ("%c",key);
if(texty==79) /* Si texty==79, no ejecutar*/
continuar;
else /* Si no se llega al final de la línea, continúa la ejecución y mueve el cursor una posición hacia adelante*/
texty++;
}
} p>
}/* Usar llaves para bucles grandes*/
}
/*Función DrawFrame*/
void DrawFrame(int l,int u,int r,int d,int e,int f.int g,int g,int h,int h. ,int h ,int g,int h,int h,int h,int h)int u,int r,int d,int tcolor,int bcolor)
{
fondo de texto (bcolor) ;/* Color de fondo*/
textcolor(bcolor); /* Color de texto*/
for(i=l;i <=r;i++) /* Área de fondo de salida */
{
for(j=u;j<=d;j++)
{
gotoxy( i,j );
printf("%c",219); /* Salida de caracteres de fondo*/
}
}
textcolor( tcolor /* Color del borde***
for(i=u+1;i { gotoxy(l,i); cprintf("%c",179 /* línea vertical*** gotoxy(r); ,i); cprintf("%c",179); } for(i=l+1;i { gotoxy(i,u); cprintf("%c",196); /*Línea horizontal** gotoxy(i ,d); cprintf("%c",196); } gotoxy(l,u); p> cprintf("%c",218);/* Esquina superior izquierda** gotoxy(r,u); cprintf("%c", 191);/* Esquina superior derecha Esquina*/ gotoxy(l,d); cprintf("%c",192);/* Esquina inferior izquierda*/ gotoxy(r ,d); cprintf(" %c",217); /* Esquina inferior derecha*/ /* gettext(l+) 1,u+1,r-1, d-1,save1);*//// Guardar el área dentro del borde*/ } /// Mostrar específico selecciones desplegables*/ void DrawMl(int n) { gettext(1,1,80,25,save) ;/* Dónde guardar la máscara*/ p> BlackText(n,1, ml[n].name);/* Mostrar el menú principal mediante selección inversa*/ DrawFrame(3+20*n-1,2,3+20*n+19,3+ml[ n ].n,0,7);/* Borde del menú desplegable*/ for(i=3;i<3+ml[n].str[i-3]);/ * El primer carácter de los elementos restantes se muestra en rojo*/ } gotoxy(79,1); MoveMl(n,3); /* Control de opciones de menú*/ } /* Control de opciones de menú, n determina los elementos horizontales, x determina las opciones desplegables*/ void MoveMl(int n,int x) { int bandera=1; while(bandera) { gotoxy(79,1); key=bioskey(0);/* recibir clave** gotoxy(79,1); p> cambiar (tecla) { case ESC:/* Salir del bucle** puttext(1,1,80,25 ,save);/*Restaurar el estado antes de abrir el menú*/ flag=0; break; case LEFT: /* Mover al opción izquierda*/ puttext(1,1,80,25,save);/* Restaurar la forma en que estaba antes de abrir el menú*/ if(n==0 )/* Si moverse hacia la izquierda está fuera de los límites, muévase Ir a la última opción*/ DrawMl(2); else DrawMl(n- 1); flag=0 ; break; case DERECHA: /* Mover la opción a la derecha*** puttext(1,1,80,25,save);/ * Restaurar el estado antes de que se abriera el menú*** if(n==2)/* Pasar a la primera opción si cruza la línea a la derecha*** DrawMl (0); else DrawMl(n+1); bandera=0; ruptura; caso DERECHA. bandera=0; ruptura; case UP:/* Mover opciones específicas hacia arriba*/ RedText(n,x,ml[n].str[x-3]);/* Generar fuente roja*/ if(x==3)/* Muévete hacia arriba y presiona la tecla arriba, se moverá hacia abajo*/ x=3+ml[n].n-1; else x--;/ * Mover a la nueva posición a mostrar */ 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 a la nueva posición a mostrar */ BlackText( n,x,ml[n].str[x-3]); flag=1; p> descanso; case ENTER: puttext( 1,1,80,25,save);/* Restaura el estado antes de abrir el menú** Enter(n,x -3 );/* Funciones específicas de las opciones del menú** flag=0; break; } gotoxy( 79, 1); } } /*Funciones específicas de las opciones del menú*/ void Enter(int m, int n ) { switch(m) { caso 0: switch(n) /*Opción de menú Libro seleccionada * / { caso 0:BookAdd();break;/* Agregar libro*/ caso 1:BookConsult();break;/* Consulta de libro*/ caso 2:BookDel();break;/* Eliminar información del libro*/ caso 3.BookBorrow();break;/* Pedir prestado libro**< / p> case 4:BookReturn();break;/* Devolver el libro** case 5:exit(0);break; } break;/ * Salir del sistema** caso 1.Switch(n) /*Opción de menú de miembros seleccionada** { caso 0: MemberAdd();break ; /*Agregar miembro** caso 1: MemberConsult();break;/*MemberConsult** caso 2.MemberDel();break;/* Eliminar información del miembro* / caso 3:MemberBook();/* Consultar los libros prestados por los miembros*/ }break; caso 2: switch(n) / * Seleccione Definir opciones del menú de ayuda*/ {< case 0:Help();break; case 1:Ver(); } } }/* Finalizar interruptor externo** }