Versión en lenguaje C del código del sistema de gestión de préstamo de libros.
Si quieres otros archivos, ¡pregúntame!
#incluye & ltdos.h & gt
# incluye & ltbios.h & gt
#incluye & ltconio.h & gt
# incluir & ltstdio.h & gt
# incluir & ltstdlib.h & gt
# incluir & ltmath.h & gt
#definir izquierda 0x4b00 /*izquierda*/
# definir derecha 0x4d 00/* derecha */
#definir 0x5000 /*
#bajo */ */definir 0x4800 /*
#define espacio 0x3920 /* espacio */
#define ESC 0x011b/* Tecla ESC*/
# define ENTER 0x 1c0d/* ENTER */
#Definir retroceso 0xe08 /*Tecla de borrado*/
#Definir ALT_B 12288 /*Tecla combinada ALT_B */
#Definir ALT_M 12800/* Clave combinada ALT_M */
#Define ALT_H 8960/*Clave combinada ALT_H */
int key; /*Variable clave*/
int textx, texty /*Coordenadas del cursor, fila X, columna Y*/
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*/
{ p>
Número de carácter[20];/*número de libro*/
nombre de carácter[20];/*título*/
precio int; libro*/
char person[20]; /*Prestatario*/
int yes/*Juzga si el libro existe o ha sido prestado, 1 existe, 0 préstamo*/
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 /*Edad del miembro*/
struct MemberList * next
}member;
char save[4096];/*Guardar espacio en el área de texto*/ p>
/* 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() /*Definir menú*/
void DrawSelectitem(); el menú principal*/
void BlackText(int x, int y, char * z /*Seleccionar menú*/
void RedText(int x, int y, char *); z); /*Menú normal*/
Ejecución en seco(); /*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 libros*/
void book consulta(); / p>
void BookDel();/*Eliminar libros y materiales*/
void book listening();/*Pedir libros prestados*/
void book return() ; /*Devolver el libro*/
miembro vacío add(); /*Agregar miembro*/
miembro vacío consultar() /*Consultar miembro*/
;void member del();/*Eliminar miembro*/
void member book();/*Consultar información de préstamo de miembros*/
void Help();/* Ayuda */
void Ver(); /*Información de versión*/
void clr SCR() /*Función de borrado de pantalla personalizada*/
void DrawFrame(int izquierda, int arriba, int derecha, int abajo, int color de texto, int color de fondo*/
/* * *Funciones principales* * */
);Administrador no válido (no válido)
{
menu(); /*Interfaz de inicialización*/
run() /*Proceso de operación específico* /
}
/*Interfaz de inicialización*/
Menú no válido()
{
Sistema( " cls"); /*Llamar al comando de pantalla clara del sistema*/
textbackground(blue); /*Establecer el fondo en azul*/
Ventana (1, 1, 25); , 80);
clr SCR();
textx = 3; /*posición de inicialización del cursor*/
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 parte superior esquina derecha */
for(I = 3;i<=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*/
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*/
selectitem() /*Función de opción de compra*/ p>
DrawSelectitem();/*Opciones de dibujo*/
gettext(2, 3, 78
, 23, c); /*Guardar el área de texto actual*/
}
/*Definir el menú*/
void Selectitem() p>
{
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 hacia atrás un espacio*/
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 pasar a la primera opción*/
DrawMl(0);
Otros
DrawMl(n+1);
bandera = 0; /p>
Mover caso hacia arriba:/*Mover opciones específicas hacia arriba*/
RedText(n, x, ml[n]). str[x-3]);/*Fuente de salida roja*/
If(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 negra de salida*/
flag = 1;
Break;
Mover mayúsculas y minúsculas 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*/
}