La Red de Conocimientos Pedagógicos - Currículum vitae - Diseño de sistema de gestión de información de libro de formación en lenguaje C.

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

#include

#include

#include

# incluir

#include

#include

#define IZQUIERDA 0x4b00 /*izquierda*/

#define DERECHA 0x4d00 /*derecha*/

#define ABAJO 0x5000 /*abajo*/

#define ARRIBA 0x4800 /*superior*/

p>

#define ESPACIO 0x3920 /*Espacio*/

#define ESC 0x011b /*Tecla ESC*/

#define ENTER 0x1c0d /*Enter key*/

#define Retroceso 0xe08 /*Borrar tecla*/

#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;/*Clave variable*/

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

struct menustruct/*Estructura del menú*/

{

nombre char[10] ; /*Nombre del menú principal*/

char str[10][20];/*Opciones*/

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

}ml[3];/*3 se utilizan y se pueden agregar o eliminar según sea necesario*/

typedef struct BookList/*La estructura del libro*/

{

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

char nombre[20];/*título del libro*/

precio int;/ *precio del libro* /

char person[20];/*Prestatario*/

int yes;/*Juzga si el libro existe o ha sido prestado, 1 existe, 0 tiene sido prestado*/

struct BookList *next

}Libro

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;

}Miembro;

char save[4096];/*Guardar espacio en el área de texto*/

/*char sav1[4096];*/

char c[4096];/*Espacio especial para borrar la pantalla*/

int i,j;/ *Variables de uso común*/

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

void Selectitem();/*Definir menú*/

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

void BlackText(

int x,int y,char *z);/*Menú seleccionado*/

void RedText(int x,int y,char *z);/*Menú normal*/

void Run();/*Proceso de operación detallado*/

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();/*Eliminar información del libro*/

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

void BookReturn(); /*Devolver libro*/

void MemberAdd() /*Agregar miembro*/

void MemberConsult();/*Consultar miembros*/

void MemberDel(); /*Eliminar miembros*/

void MemberBook() /*Consultar información de préstamo de miembros * /

void Help(); /*Ayuda*/

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

void ClrScr();/ * Función de borrar pantalla personalizada*/

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

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

void main(void)

{

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

Ejecutar();/*Proceso de operación detallado*/

}

/*Interfaz de inicialización*/

void Menu()

{

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

textbackground(BLUE);/*Establecer el fondo en azul* /

window(1,1,25,80);

clrscr();

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 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); /*Dibujar esquina inferior derecha*/

gotoxy(1,1

textcolo;

r(7); /*Establecer gris*/

for(i=0;i<80;i++)

cprintf("%c",219);/*Usar El símbolo realiza el dibujo del área de fondo gris del menú principal*/

Selectitem() /*Llamando a la función de opción*/

DrawSelectitem() /*Dibujando el option*/

gettext(2,3,78,23,c /*Guardar el área de texto actual*/

}

/*Definir menu*/

void Selectitem()

{

strcpy(ml[0].name,"Book");/*Las opciones específicas a continuación son lleno de espacios para que el fondo negro de cada menú sea el mismo */

strcpy(ml[0].str[0],"Add ");/*Add books*/

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

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

strcpy(ml[0].str[3],"Préstamo ");/*Préstamo de libros*/

strcpy(ml[0] .str[4],"Return ");/*Devolver Libro*/

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

ml[0].n=6; / *Guardar el número de elementos del menú*/

strcpy(ml[1].name,"Miembro"); p>strcpy(ml[1].str[0],"Agregar ");/*Agregar nuevo miembro*/

strcpy(ml[1].str[1],"Consultar "); /*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].name,"Ayuda");/ *Ayuda del sistema*/

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

ml[2]. n=2;

}

/*Mostrar nombre principal*/

void DrawSelectitem()

{

for(i=0;i<3;i++)

RedText(i,1,ml[i].nombre)

}

/*Mostrar 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);/*primera letra Mostrar rojo*/

else

textcolor(BLACK); /*Establecer negro*/

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

}

}

/*Mostrar menú seleccionado */

voi

d 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 operación clave*/

void Run()

{

mientras(1)

{

gotoxy(texty,textx

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

interruptor(tecla)

{

caso ALT_B:

caso ESC: DrawMl(0);romper; * Mostrar menú desplegable 1*/

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

case ALT_H: DrawMl(2) ;/*Mostrar menú desplegable Menú 3*/

case UP: /*Control de operación de la tecla de cursor superior*/

{

if( textx==3)

textx=23;

textx--;

gotoxy(texty,textx); ;

case DOWN: /*Control de operación de la tecla del cursor inferior*/

{

if(textx==23)

textx=3;

textx++;

gotoxy(texty,textx);

}caso IZQUIERDA: /*Operación control de la tecla del cursor izquierdo*/

{

if(texty==2)

texty=79; ;

gotoxy (texty,textx);

}break;

case Retroceso: /*Borrar configuración de clave*/

{

if(texty==2&&textx==3)

continuar

si no

{

si; (texty!=2)

texty--; /*Detalles de la tecla de borrado, primero borra la cosa y luego el cursor tiene que retroceder un espacio*/

else

if (texty==2)

{

texty=78

textx--; >}

gotoxy(texty,textx);

printf(" "

gotoxy(texty,textx);

}

}break;/*end case 0xe08*/

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

{

if(texty== 79)

texty=2;

texty++;

gotoxy(texty,textx); }break;

case SPACE: /*Operación de la barra espaciadora*/

{

if(texty==79)

>continuar;

else

{

gotoxy(texty,textx); /*Operación detallada de espacios*/

printf( " ");

texty++;

gotoxy(texty,textx

}

}romper; p>case ENTER: /*Ingresar operación de control*/

{

if(textx==23)

continuar

textx++;

texty=2;

gotoxy(texty,textx);

}break; teclas sin control*/

{

if(texty==79&&textx==23)/*Ya no se genera salida al llegar al final*/

continuar

else

if(texty==79&&textx!=23) /*Hasta el final de la línea*/

{

textx++ ;

texty=2;

}

gotoxy(texty,textx);/*Resultado de salida*/

printf (" %c",clave);

if(texty==79) /*No ejecutar si texty==79*/

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++

}

}

}/*Tirantes para bucles grandes*/

}

/*Función de dibujo de marco*/

void DrawFrame(int l ,int u, int r,int d,int tcolor,int bcolor)

{

textbackground(bcolor /*Color de fondo*/

textcolor); (bcolor); /*Color del texto*/

for(i=l;i<=r;i++) /*Área de fondo de salida*/

{

for( j=u;j<=d;j++)

{

gotoxy(i,j);

printf("%c" ,219); /*Caracteres de fondo de salida*/

}

}

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

for( i=u+1;i

{

gotoxy(l,i); /p>

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

gotoxy(r,i);

cprintf("%c", 179);

}

for(i=l+1;i

{

gotoxi(i ,u);

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

gotoxy(i,d);

cprintf( "%c", 196);

}

gotoxy(l,u

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

cprintf("%c",218); p>

gotoxy(r,u);

/p>

cprintf("%c",191);/*esquina superior derecha*/

gotoxy(l,d);

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

gotoxy(r,d);

cprintf("%c",217); /p>

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

}

/*Mostrar elementos de selección desplegable específicos*/

void DrawMl(int n)

{

gettext(1,1 ,80,25,save) ;/*Guardar el área enmascarada*/

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

DrawFrame(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++)/*Imprimir las opciones del menú seleccionadas*/

{

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);

p>

MoveMl(n,3);/*Control de opciones del menú*/

}

/*Control de opciones del menú, n determina el elemento horizontal, x determina las opciones desplegables*/

void MoveMl(int n,int x)

{

int flag=1;

mientras(bandera )

{

gotoxy(79,1); >

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

gotoxy(79,1);

switch(key)

{

case ESC:/*Salir del bucle*/

puttext (1,1,80,25,save);/*Restaurar la forma en que estaba antes de abrir el menú*/

flag=0;

break;

case IZQUIERDA:/*Mover la opción hacia la 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 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 la forma en que estaba antes de abrir el menú*/

if(n==2)/*Si te mueves hacia la derecha y cruzas el límite, pasa a la primera opción*/

DrawMl(0);

else

DrawMl(n+1);

bandera=0;

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

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

if(x==3)/*Mover hacia arriba y presionar la tecla arriba para ir hacia abajo*/

x=3+ml [n].

n-1;

else

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

BlackText(n,x,ml[ n ].str[x-3]);/*Fuente de salida negra*/

flag=1;

break

case DOWN:/* Específico; opciones moverse hacia abajo*/

RedText(n,x,ml[n].str[x-3]); .n-1))/*Mover hacia abajo y presionar la tecla para ir hacia arriba*/

x=3

else

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

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

break;

case ENTER:

puttext(1,1,80,25,save);/*Restaurar la forma en que estaba 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)

{

cambiar(m)

{

case 0:switch(n) /*Opción de menú Libro seleccionada*/

{

case 0:BookAdd();break;/*Agregar libro*/

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

caso 2:BookDel();break;/*Eliminar datos de un libro*/

caso 3 :BookBorrow();break;/*pedir prestado libro*/

caso 4:BookReturn();break;/*devolver libro*/

caso 5:exit(0 ); break;

} break;/*Salir del sistema*/

caso 1: switch(n) /*Opción de menú de miembro seleccionada*/

{

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

caso 1: MemberConsult();break;/*Consulta de miembro*/

caso 2:MemberDel();break;/*Eliminar la información de un miembro*/

caso 3:MemberBook();/*Consultar el estado de los libros prestados por un miembro*/

}break;

caso 2:switch(n) /*Opción del menú Ayuda seleccionada*/

{

caso 0:Help();

caso 1:Ver();

}

}/*Fin del interruptor externo*/

}