# include & ltdos.h & gt
# include & ltbios.h & gt
# include & ltconio.h & gt
# incluir & ltstdio.h & gt
# incluir & ltstdlib.h & gt
# incluir & ltmath.h & gt
#define left 0x4b00 /*left*/
# define right 0x4d 00/* right */
#define 0x5000 hacia abajo bajo */ /*
#Definir 0x4800 en */ /*
#Definir espacio 0x3920 /* espacio */
#Definir ESC 0x011b/* Tecla ESC* / p>
# definir ENTER 0x 1c0d/* ENTER */
#Definir retroceso 0xe08 /*Tecla de borrado*/
#Definir ALT_B 12288 /* Combinación de teclas ALT_B */
#Definir ALT_M 12800/*Combinación de teclas ALT_M */
#Definición ALT_H 8960/*Combinación de teclas ALT_H */
int key ;/*Variables clave */
int textx, texty/*Coordenadas del cursor, fila X, columna Y*/
Estructura estructura del menú/*Estructura del menú*/
{
Nombre del personaje[10];/*Nombre del menú principal*/
char str[10][20];/*Opciones*/
int n; /*Número de opciones*/
} ml[3] /*Use tres, puede agregar o eliminar según sea necesario*/
Typedef struct BookList/ *La estructura del libro*/
{
Número de carácter[20];/*Número de libro*/
nombre de carácter[20];/*Título* / p>
int precio; /*precio del libro*/
char person[20];/*prestatario*/
int yes/*determinar si el libro existe o ha sido prestado, 1 existe, 0 es prestado*/
struct BookList * next
}book;
Typedef struct MemberList/* Estructura de miembros*/
{
char name[20];/*Nombre del miembro*/
char sex[2];/*Género del miembro */
int age/*Member age*/
struct MemberList * next
}member;
char save[4096] ;/*Guardar espacio en el área de texto */
/* char sav 1[4096];*/
char c[4096];/*Limpiar el espacio especial de la pantalla*/
int i, j; /*Variables públicas*/
void Menu(); /*Interfaz de inicialización*/
void Selectitem() /*Menú de definición*/ p>
void DrawSelectitem(); /*Mostrar el menú principal*/
void BlackText(int x, int y, char * z) /*Seleccionar menú*/
<); p>void RedText(int x, int y, char * z); /*Menú normal*/Ejecución en seco() /*Proceso de operación detallado
*/
void DrawMl(int n); /*Mostrar menú desplegable*/
void MoveMl(int n, int x) /*Control de opciones del menú*/ p>
void Enter(int m, int n); /*Funciones específicas de las opciones del menú*/
void BookAdd() /*Agregar libros*/
anular consulta de libro();/*consulta de libro*/
void BookDel();/*eliminar libros y materiales*/
anular préstamo de libro();/*pedir prestado libro */
void book return();/*devolver el libro*/
void member add();/*add member*/
void member consultar() ;/*Consultar miembro*/
void member del();/*Eliminar miembro*/
void member book();/*Consultar información de préstamo de miembro*/ p>
void Help(); /*Ayuda*/
void Ver() /*Información de versión*/
void clr SCR(); Función de limpieza de pantalla personalizada*/
void DrawFrame(int left, int up, int right, int down, int textcolor, int background color) /*Dibujar borde*/
/ * * *Funciones principales* */
Administrador no válido (no válido)
{
menu() /*Interfaz de inicialización*/
run();/*Proceso de operación detallado*/
}
/*Interfaz de inicialización*/
Menú no válido()
{
System("cls");/*Llamar al comando de limpieza de pantalla del sistema*/
textbackground(blue);/*Establecer el fondo en azul*/ p>
Ventana (1, 1, 25, 80);
clr SCR();
textx = 3; /*Posición de inicialización del cursor*/ p>
texty = 2;
gotoxy(1, 2);
printf("%c ", 218); /*Dibuja la esquina superior izquierda*/
for(I = 0;i<78;i++)
printf("%c ", 196); /*Dibuja una línea recta horizontal*/
printf( " %c ", 191);/*Dibuja la esquina superior derecha*/
for(I = 3;i<=23;i++)
{
gotoxy(1,I);
printf("%c ",179);/*Dibujar una línea vertical*/
gotoxy(80,I);
printf("%c ", 179);
}
printf("%c ", 192 /*Dibuja la esquina inferior izquierda*/
for(I = 0;i<78;i++)
printf("%c ", 196
printf("%c ", 217);/ * Dibuja la esquina inferior derecha*/
gotoxy(1,1);
color del texto(7);/*Establecer gris*/
for(I = 0;i<80;i++)
cprintf("%c", 219);/*Usa símbolos para dibujar el área de fondo gris del menú principal*/
selecciona elemento ();/ *Función de opción de compra*/
DrawSelectitem();/*Dibujo
Opciones*/
gettext(2, 3, 78, 23, c /*Guardar el área de texto actual*/
}
/*Definir); menú */
void Selectitem()
{
strcpy(ml[0]). name, "book"); /*Para que el fondo negro de cada menú sea el mismo, complete las siguientes opciones específicas en el espacio en blanco*/
strcpy(ml[0]). str[0], "Agregar"); /*Agregar libros*/
strcpy(ml[0]). str[1], "Consulta"); /*Consultar libros*/
strcpy(ml[0]). str[2], "Del"); /*Eliminar libros y materiales*/
strcpy(ml[0]). str[3], "pedir prestado"); /*pedir prestado un libro*/
strcpy(ml[0]). str[4], "Regresar"); /*Devolver el libro*/
strcpy(ml[0]). str[5], "Salir"); /*Salir del sistema*/
ml[0]. n = 6; /*El número de elementos en el menú guardado*/
strcpy(ml[1]. Nombre, "Miembro");
strcpy(ml[1] . str[0], "Agregar"); /*Agregar nuevo miembro*/
strcpy(ml[1]. str[1], "Consulta"); / p>
strcpy(ml[1].str[2],"Del");/*Eliminar información de miembro*/
strcpy(ml[1].str[3]," Miembro &Book》);
ml[1]. n = 4;
strcpy(ml[2]).name, "Ayuda"); /p>
strcpy(ml[2]). str[0], "Este sistema");
strcpy(ml[2]). p>ml[2].
n = 2;
}
/*Mostrar nombre único principal*/
void DrawSelectitem()
{
for(I = 0;i<3;i++)
RedText(i, 1, ml[i].name); /*Muestra el nombre del menú principal, la primera letra es roja* /
}
/*Menú de visualización normal*/
void RedText(int x, int y, char *z)
{
text background(7);/*Establece el color de fondo en gris claro*/
gotoxy(3+x*20, y);
for(j = 0; z[j]; j++)
{
Si (j==0)
textcolor(rojo);/ *th Una letra es roja*/
Otros
textcolor(black); /*Establecer en negro*/
cprintf("%c ", z [ j]);/*Nombre del menú de salida*/
}
}
/*Mostrar menú seleccionado*/
void BlackText(int x, int y, char *z)
{
text background(0 /*Establece el color de fondo en negro*/
); color del texto(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 operación clave*/
Operación no válida ()
{
mientras(1)
{
gotoxy(texty, textx);
clave = clave BIOS(0) ;/ *Botón de recepción*/
Interruptor (tecla)
{
Caso ALT_B:
caso ESC:DrawMl(0) ;Break ; /*Mostrar menú desplegable 1*/
case ALT _ M:DrawMl(1); /*Mostrar menú desplegable 2*/
case ALT _ H: DrawMl(2);/*Mostrar menú desplegable 3*/
Control de operación de las teclas de cursor en el chasis:/* *
{
if(textx= =3)
textx = 23
textx-;
gotoxy(texty, textx);
} Roto;
Control de operación de las teclas de cursor debajo del chasis:/* *
{
if(textx==23)
textx = 3;
p>textx++;
gotoxy(texty, textx);
}Roto;
Caso IZQUIERDO: /*Control de operación de la tecla del cursor izquierdo* /
{
if(texty==2)
texty = 79
texty-;
gotoxy(texty, textx);
}Roto;
Retroceso de mayúsculas y minúsculas: /*Borrar configuración de teclas*/
{
if(texty == 2 &&textx==3)
Continuar;
Otro
{
Si (texty ! =2)
texty-; /* Borrar detalles clave.
Primero elimine el contenido, luego mueva el cursor un espacio hacia atrás*/
Otros
if(texty==2)
{
texty = 78
textx-;
}
gotoxy(texty, textx);
printf(" ");
gotoxy(texty, textx);
}
}Roto; /*Fin de caso 0xe08*/
Caso DERECHO: /* Control de operación de la tecla del cursor derecho*/
{
if(texty==79)
texty = 2;
texty++; /p>
gotoxy(texty, textx);
}Roto;
Espacio entre mayúsculas y minúsculas:/*Operación de la barra espaciadora*/
{< / p>
if(texty==79)
Continuar;
Otros
{
gotoxy(texty, textx )
printf(" ");
texty++;
gotoxy(texty, textx);
}
}Roto;
Entrada de caso:/*Ingresar operación de control*/
{
if(textx == 23)
Continuar;
textx++;
texty = 2;
gotoxy(texty, textx);
}Roto;
Valor predeterminado: /*Resultado de la clave sin control*/
{
if(texty == 79 & amp; & ampTextx==23)/*Sin salida al final*/
Continuar;
Otros
if(texty == 79 & amp;& amptextx! = 23) /*Hasta el final de la línea*/
{
textx++;
texty = 2;
}
gotoxy(texty, textx); /*resultado de salida*/
printf("%c ", clave);
If(texty==79) /*si texty ==79, no se ejecutará*/
Continuar;
De lo contrario /*Si la línea no está al final, la ejecución continuará y el cursor avanzar una posición*/ p>
texty++;
}
}
}/*Tirantes para bucles grandes*/ p>
} p>
/*Función de borde de dibujo*/
void DrawFrame(int l, int u, int r, int d, int tcolor, int bcolor) p>
{ p>
fondo del texto(bcolor);/*color de fondo*/
color del texto(bcolor);/*color del texto*/
for(I = l;i & lt= r; I++) /*Área de fondo de salida*/
{
for(j = u; j & lt= d; j++ )
{
gotoxy(i, j);
printf("%c ", 219 /*Salida de caracteres de fondo*/
}
}
color del texto(tcolor);/*color del borde*/
for(I = u+1;i<d;I++ ) /*en el área de fondo Línea de borde de salida*/
{
gotoxy(l, I);
c
printf("%c ", 179); /*línea vertical*/
gotoxy(r, I);
cprintf("%c ", 179);
}
for(I = l+1;i<r;i++)
{
gotoxy(i,u);
p>cprintf("%c ", 196); /*línea horizontal*/
gotoxy(i, d);
cprintf("%c ", 196 ) ;
}
gotoxy(l,u);
cprintf("%c ", 218); /*esquina superior izquierda*/ p>
gotoxy(r,u);
cprintf("%c ",191);/*esquina superior derecha*/
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, save 1); *//*Guardar el área dentro del borde*/
}
/*Mostrar opciones desplegables específicas*/
void DrawMl(integer)
{
gettext(1, 1, 80, 25, save); /*Guardar la posición oculta*/
BlackText(n, 1, ml[n]. Nombre); *Deseleccionar el menú principal*/
Marco de imagen (3+20*n-1, 2, 3+20*n+19, 3+ml[n]). n, 0, 7);/*El borde del menú desplegable*/
for(I = 3;I<3+ml[n].n;I++)/*Generar la opción de menú seleccionada */
{
Si (i==3)
TextoNegro(n, I, ml[n]). str[I-3]);/*El primer elemento está seleccionado de forma predeterminada*/
Otro
RedText(n, I, ml[n].
str[I-3]);/*El primer carácter de otros elementos se muestra en rojo*/
}
gotoxy(791);
MoveMl (n, 3); /*Control de opciones del menú*/
}
/*Control de opciones del menú, donde n determina los elementos horizontales y x determina las opciones desplegables* /
void MoveMl(int n, int x)
{
int bandera = 1;
mientras(bandera) p>
{
gotoxy(791);
tecla = tecla BIOS(0); /*botón de recepción*/
gotoxy(791) ;
Interruptor (tecla)
{
Caso ESC:/*Salir del bucle*/
puttext(1, 1, 80, 25, guardar); /*Restaurar la apariencia antes de abrir el menú*/
flag = 0;
Break;
Caso IZQUIERDO:/* Opción para moverse hacia la izquierda* /
puttext(1, 1, 80, 25, save /*Restaurar la apariencia antes de abrir el menú*/
If(n==0); )/*Mover a la izquierda y pasar a la última opción*/
DrawMl(2);
Otro
DrawMl(n-1);
flag = 0;
Salir;
Caso DERECHA:/*Opción Mover a la derecha*/
puttext(1, 1, 80 , 25, guardar); /*Restaurar la apariencia antes de abrir el menú*/
If(n==2)/*Mover a la derecha y a la primera opción*/
DrawMl(0);
Otros
DrawMl(n+1);
bandera = 0
Romper
p>
Mover caso hacia arriba:/*Mover opciones específicas hacia arriba*/
RedText(n, x, ml[n]). str[x-3]);/*Fuente de salida roja*/
Si(x==3)/*Mover hacia arriba, mover la tecla hacia abajo*/
x= 3+ml[n]. n-1;
Otro
x-;/*Mover al nuevo contenido que se mostrará*/
BlackText(n, x, ml[n] ). str[x-3]);/*Fuente de salida negra*/
flag = 1;
Break;
Caso y minúscula hacia abajo:/*Opciones específicas Mover hacia abajo*/
RedText(n, x, ml[n]). str[x-3]);
If(x==(3+ml[n]).n-1))/*Mover hacia abajo, presione la tecla para ir hacia arriba* /
x = 3;
Otro
x++; /*Mover al nuevo contenido para mostrar*/
BlackText(n , x, ml[n]).
str[x-3]);
flag = 1;
Break;
Entrada de caso:
puttext(1, 1 , 80, 25, guardar); /*Restaurar la apariencia antes de abrir el menú*/
Introducir (n, x-3) /*Funciones específicas de las opciones del menú*/
bandera = 0;
Romper;
}
gotoxy(791);
}
}
/*Funciones específicas de las opciones del menú*/
void Enter(int m, int n)
{
Switch(m )
{
Caso 0: Cambiar (n) /*Seleccionar opción de menú de libro*/
{
Caso 0: BookAdd (); Break; /*Agregar libro*/
Caso 1: consulta de libro(); /*Consulta de libro*/
Caso 2: BookDel(); /*Eliminar libro*/
Caso 3: préstamo de libro(); descanso; /*Libro prestado*/
Caso 4: devolución de libro(); libro */
Caso 5: Salir (0); roto;
} roto /*Salir del sistema*/
Caso 1: Cambiar (n) ) seleccionado ) /*Opción de menú de miembros*/
{
Caso 0: miembro add();*Agregar miembro*/
Caso 1; : consulta de miembro(); /*consulta de miembro*/
Caso 2: miembro del(); /*eliminar información de miembro*/
Caso 3: libro de miembro; () ;/*Consultar los libros prestados por los miembros*/
}Roto;
Caso 2: Seleccione el interruptor (n) /*Opción del menú Ayuda*/
{
Caso 0: Ayuda();
Caso 1: Ver()
}
}/ *Finalizar interruptor externo*/
}
También hay ```` pero no encaja aquí ````.
Solo como referencia``