Plan de diseño del sistema de gestión de información de libros escrito en programa C

/*13.book.c programa fuente*/

# 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* /

# 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* /

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*/

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ú*/

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*/

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*/

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 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*/

texty++;

}

}

}/*Tirantes para bucles grandes*/

}

/*Función de borde de dibujo*/

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

{

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*/

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)

{

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