Por favor ayúdenme a construir un sistema de gestión de bibliotecas
#include
#include
#include
# incluir
#include
#define STACK_INIT_SIZE 10
#define OK 1
# define TRUE 1
#define FALSE 0
#define ERROR 0
struct Student /*Define el tipo de estudiante, utilizado para almacenar libros prestados*/
{
int carnum;
char lendbook[10];
}estudiante[1000]
estructura emplear; /*definir tipo de empleado*/
{
int empleadonum;
char nombre de empleo[15]
int empleo; p>
char empleasex[2];
char emplealeve[10];
empleo int largo
}empleo[50]; p>
struct book /*definir el tipo de libro*/
{
int booknum
char bookname[10]; >
p>
char bookcreat[10];
int turefalse; /*Condiciones utilizadas por el módulo de préstamo y devolución para determinar si un libro ha sido prestado*/
} book[1000];
struct car /*Tipo de datos de la tarjeta de biblioteca*/
{
int carnum; >char nombre de estudiante[10];
int clase de estudiante;
}car[100];
huanbook() /*Función de devolución de libro*/
{
ARCHIVO *fp,*fp2; /*Define dos punteros de archivo, fp2 se usa para configurar un archivo temporal al modificar datos para evitar daños a los datos*/
int i,n;
int carnum;
char lendbook[10];
printf("Ingrese su número de tarjeta\n"); /p>
p>
scanf("%d",&carnum);
fp=fopen("car.txt","r"); /*Leer registro de número de tarjeta* /
for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++) /*bucle for para determinar si el número de tarjeta existe*/
{
if(car[i].carnum==carnum) /*El número de tarjeta existe, ingresa al siguiente ciclo*/
{ p>
n=i;
n=i;
p>
fclose(fp);
printf("Por favor, ingrese el nombre del libro que desea devolver\n");
scanf("%s",lendbook) ;
fp=fopen("record.txt","r"
para(i=0;fre);
ad(&student[i],sizeof(struct Student),1,fp)!=0;i++) /*Determinar si el libro ingresado ha sido prestado*/
{
if (strcmp(student[i].lendbook,lendbook)==0) /*Pide prestado el libro e ingresa al siguiente ciclo; de lo contrario, se mostrará un error*/
{
fclose( fp);
fp=fopen("record.txt","r");
fp2=fopen("libro.txt","w");
for(i=0;fread(&student[i],sizeof(struct Student),1,fp)!=0;i++)
{
if( strcmp(student[i].lendbook,lendbook)==0)
{
continue /*Eliminar el registro de préstamo del libro devuelto*/
}
fwrite(&student[i],sizeof(struct Student),1,fp2 /*Escribe el registro del libro original no devuelto*/
}
fclose(fp);
fclose(fp2);
fp=fopen("record.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&student[i],sizeof(struct Student),1,fp2)!= 0 ;i++)
{
fwrite(&student[i],sizeof(struct Student),1,fp /*Vuelve a escribir la información del registro de préstamo*/
}
fclose(fp);
fclose(fp2);
fopen("libro.txt","w"); *Borrar registros de archivos temporales*/
fclose(fp2
fp=fopen("book.txt","r");
fp2 = fopen("bookl.txt","w");
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++) / *Escribir registros contables en archivos temporales para evitar que los registros anteriores se destruyan modificando la información*/
{
if(i==n)
{
book[i].turefalse=1;
fwrite(&book[i],sizeof(struct book),1,fp2); El estado está establecido en sin marcar*/
continue;
}
fwrite(&book[i],sizeof(struct book),1,fp2) ;
}
fclose(fp);
fclose(fp2);
fp=fopen("libro.txt", " w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&book[i],sizeof(struct book ),1,fp2)!=0;i++)
{
fwrite(&
amp;book[i],sizeof(struct book),1,fp /*Escribe el archivo temporal*/
}
fclose(fp); >
fclose(fp2);
fopen("bookl.txt","w"); /*Borrar archivos temporales*/
fclose(fp2); p> p>
printf("Devolución del libro completada, presione cualquier tecla para regresar\n");
getch()
return; p>}
}
printf("No tomaste prestado ese libro, no me engañes, presiona cualquier tecla para regresar\n"); */
fclose (fp);
getch();
retorno
}
}
printf(" El sistema no tiene dicha tarjeta. Comuníquese con el administrador y presione cualquier tecla para regresar\n"); /*Mensaje de error*/
fclose(fp) ;
getch();
}
lendcount() /*Puedes entender el resto por tu cuenta. Si no, también puedes contactarnos a través de QQ. : 258032791. Si quieres la versión c++, dímelo. Estoy dispuesto a hacer amigos que estén interesados en la programación. No tengo tiempo después de graduarme y estoy ocupado buscando trabajo. Algunos módulos no se han escrito. problemas, los corregiré yo mismo */
{
FILE *fp
int i ,n=0; fp=fopen("record.txt","r");
for(i=0;fread(&student[i],sizeof(struct estudiante),1,fp)!=0;i++ )
{
printf("Número de tarjeta: %d Libros prestados: %s \n",estudiante[i] .carnum,estudiante[i].lendbook
); p>
n=n+1;
}
fclose(fp);
printf("Actualmente*** hay %d libros en préstamo\n",n);
printf("Presione cualquier tecla\n");
getch() ;
}
chabook()
{
char ch5;
do
{
printf(" ---------------¡Bienvenido al sistema de consulta de libros! ---------------\n");
printf(" 1:
printf (" 2:
printf(" 0:
printf("Por favor, ingrese 0-- 2, ¡otra entrada es ilegal! \n");
scanf("%s",&ch5);
switch(ch5)
{ p>
case '1':findbook();getch();break;
case '2':printf("Busca por autor, escribe de nuevo cuando tengas tiempo\n"); getch(); break;
case '0':break;
default:printf("No existe tal operación\n");getch();break;
}
}mientras(ch5!='0');
}
lendbook()
{ p>
ARCHIVO *fp,*
fp2;
int i,n;
int carnum;
printf("Ingrese su número de tarjeta\n"); >scanf("%d",&carnum);
fp=fopen("car.txt","r");
for(i=0;fread(&car [ i],sizeof(struct car),1,fp)!=0;i++)
{
if(car[i].carnum==carnum)
{
n=i;
fclose(fp);
printf("Ingrese el nombre del libro que desea pedir prestado\n " );
scanf("%s",estudiante[n].lendbook);
fp=fopen("book.txt","r");
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if( strcmp (libro[i].nombre del libro,estudiante[n].lendbook)==0)
{
if(libro[i].turefalse==0) {printf( " Lo sentimos, este libro ha sido prestado, por favor pida prestado otro libro\n");fclose(fp);getch();return;}
else
fclose(fp);
fp=fopen("record.txt","a+");
estudiante[n].carnum=carnum
fwrite(&estudiante[n; ] ,sizeof(struct estudiante),1,fp);
fclose(fp)
fp=fopen("book.txt","r"); >
fp2=fopen("bookl.txt","w");
for(i=0;fread(&book[i],sizeof(struct book),1,fp)! = 0;i++)
{
if(strcmp(libro[i].nombredellibro,estudiante[n].lendbook)==0)
{
libro[i].turefalse=0;
fwrite(&book[i],sizeof(struct book),1,fp2
continuar;
}
fwrite(&book[i],sizeof(struct book),1,fp2
}
fclose(); fp );
fclose(fp2);
fp=fopen("libro.txt","w");
fp2=fopen("librol"); txt","r");
for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++)
{
fwrite(&book[i],sizeof(struct book),1,fp
}
fclose(fp); p >
fclose(fp2);
fopen("libro.txt","
w");
fclose(fp2);
printf("Después de pedir prestado el libro, presione cualquier tecla para regresar\n");
getch(
return;
}
}
printf("No existe tal libro, cualquier clave devuelve\n");
fclose(fp);
getch();
retorno
}
}
p >
printf("Su número de tarjeta no existe, solicite una nueva tarjeta, presione cualquier tecla para regresar\n"); >getch();
}
carcount()
{
ARCHIVO *fp
int; i,n=0 ;
fp=fopen("car.txt","r");
for(i=0;fread(&car[i],sizeof( struct car),1 ,fp)!=0;i++)
{
printf("Tarjeta %d
n=n+1;
}
fclose(fp);
printf("Actualmente *** hay %d libros\n",n); cualquier clave\n ");
getch();
}
delcar()
{
ARCHIVO *fp ,*fp2;
int i;
int carnum;
char elección
fp=fopen(" car.txt" ,"r");
fp2=fopen("bookl.txt","w");
printf("Por favor, introduzca el número de tarjeta que desea eliminar\n");
printf("¡Si el número de tarjeta que ingresó existe, el sistema eliminará automáticamente la información! Si no existe, el sistema no realizará ningún cambio\n");
scanf("%d" ,&carnum);
for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0 ;i++)
{ p>
if(car[i].carnum!=carnum)
{
fwrite(&car[i ],sizeof(struct car),1,fp2
}
}
fclose(fp); fp2);
printf("¿Realmente deseas eliminar la tarjeta? Después de la eliminación, no se restaurará toda la información del libro "Y/N"\n");
scanf("%s",&choice);
if(choice= =' y'||choice=='Y')
{
fp=fopen("car.txt","w"); fp2= fopen("bookl.txt","r");
for(i=0;fread(&car[i],sizeof(struct car),1,fp2)!=0;i++ )
{
fwrite(&c
ar[i],sizeof(struct car),1,fp);
}
fclose(fp);
fclose(fp2); p>
p>
fp2=fopen("bookl.txt","w");
fclose(fp2);
printf("Presione cualquier tecla para regresar\n") ;
getch();
return;
}
else
{
printf("Presione cualquier tecla para regresar\n");
getch()
regresar
}
}
addcar()
{
ARCHIVO *fp
int i=0 ; p>
fp= fopen("car.txt","a+");
printf("Ingrese el número de tarjeta\n"); %d",&car[i] .carnum);
printf("Por favor ingrese el nombre del estudiante\n");
scanf("%s",car[i] .studentname);
printf("Por favor, ingresa tu clase\n");
scanf("%d",&car[i].studentclass); p>fwrite(&car[i] ,sizeof(struct car),1,fp);
fclose(fp);
printf("Después de la entrada, cualquier tecla devuelve\n ");
getch();
}
changemploy()
{
ARCHIVO *fp ,*fp2;
char nombre de empleo[10],elección;
int i
fp=fopen("employ.txt","r") ;
fp2=fopen("bookl.txt","w");
printf("Ingrese el nombre del empleado que desea modificar\n"); /p>
scanf(" %s",employname);
for(i=0;fread(&employ[i],sizeof(struct emplea),1,fp)!=0; i++)
{
if(strcmp(employ[i].employname,employname)==0)
{
printf ("La información del empleado que desea modificar como se muestra a continuación, seleccione el contenido que desea modificar\n");
printf("
printf("1: Modificar número de empleado\n");
printf("2: Modificar nombre de empleado\n ");
printf(" 3: Modificar edad del empleado\n");
printf("4: Modificar salario del empleado\n");
printf("5: Modificar educación del empleado\n");
printf("Ingrese 1-
5:");
scanf("%s",&choice);
cambiar(opción)
{
caso ' 1':
{
printf("Ingrese el nuevo número de empleado\n");
scanf("%d",&employ[i] .employnum);
fwrite(&employ[i],sizeof(struct emplea),1,fp2
}break; :
{
printf("Ingrese el nuevo nombre del empleado\n");
scanf("%s",employ[i].employname);
fwrite(&employ[i],sizeof(struct emplea),1,fp2
}break
case '3'); /p>
{
printf("Ingrese la nueva era\n");
scanf("%d",&employ[i].employage); /p>
fwrite(&employ[i],sizeof(struct emplea),1,fp2
}break
caso '4':
;{
printf("Ingrese el salario del nuevo empleado\n");
scanf("%d",&employ[i].employtage
fwrite(&employ[i],sizeof(struct emplea),1,fp2
}break
caso '5':
{
printf("Ingrese las calificaciones académicas del nuevo empleado\n");
scanf("%s",employ[i].employleve
);fwrite(&employ[i],sizeof(struct emplea),1,fp2);
}
defaut:printf("No existe tal operación");break; /p>
}
continuar;
}
fwrite(&employ[i],sizeof(struct emplea),1,fp2); /p>
}
fclose(fp);
fclose(fp2)
fp=fopen("employ.txt","w); ");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&employ[i],sizeof(estructura emplear) ,1,fp2)!=0;i++)
{
fwrite(&employ[i],sizeof(struct emplea),1,fp); >}
fclose(fp);
fclose(fp2);
fp2=fopen("libro.txt","w"); p>
fclose(fp2); p>
fclose(fp2);
printf("Presione cualquier tecla para regresar\n"); ;
regresar
}
es
lemploy()
{
ARCHIVO *fp,*fp2;
int i;
char nombre de empleo[10],elección;
fp=fopen("employ.txt","r");
fp2=fopen("libro.txt","w"); >printf("Ingrese el nombre del empleado que desea eliminar\n");
printf("Si el empleado que ingresó existe, el sistema eliminará automáticamente la información. Si no existe , el sistema no realizará ningún cambio\ n");
scanf("%s",employname);
for(i=0;fread(&employ[i], sizeof(struct emplea),1,fp )!=0;i++)
{
if(strcmp(employname,employ[i].employname)!=0) p>
{
fwrite(&employ[i],sizeof(struct emplea),1,fp2
}
}
fclose(fp);
fclose(fp2);
printf("¿Realmente desea eliminar la información de este empleado? No se restaurará toda la información eliminada "Y /N"\n");
scanf("%s",&choice
if(choice=='y'||choice=='Y')
{ p>
fp=fopen("employ.txt","w");
fp2=fopen("libro.txt","r")
for (i=0;fread(&employ[i],sizeof(struct emplea),1,fp2)!=0;i++)
{
fwrite(&employ[i], sizeof(struct emplea),1,fp>}
fclose(fp);
fclose(fp2);
fp2=fopen("bookl.txt","w");
fclose(fp2);
printf("Presione cualquier tecla para return\n");
getch();
return;
}
else
{
printf(" Presione cualquier tecla para regresar\n");
getch()
regresar
}
p>
}
employcount()
{
ARCHIVO *fp
int i,n=0; /p>
fp=fopen(" emplear.txt","r");
for(i=0;fread(&employ[i],sizeof(struct emplear),1,fp )!=0;i++)
{
printf("La información del empleado %d es la siguiente:\n
ployleve,employ[i].employtage);
n++;
}
fclose(fp);
printf("Actualmente ***Hay %d empleados\n",n);
printf("Presione cualquier tecla para regresar");
}
addemploy( )
{
ARCHIVO *fp;
char elección='y';
fp=fopen("employ.txt","a+");
mientras(choice=='y'||choice=='Y')
{
printf("Ingrese el número de empleado\n");
scanf("%d",&employ[i].employnum); ( "Ingrese el nombre del empleado\n");
scanf("%s",employ[i].employname);
printf("Ingrese la edad del empleado\ n" );
scanf("%d",&employ[i].employage);
printf("Por favor, ingresa tu género\n");
scanf("%s",employ[i].employsex);
printf("Ingrese el nivel académico del empleado\n"); " ,employ[i].employleve);
printf("Ingrese el salario del empleado\n");
scanf("%d",&employ[i].employtage )
fwrite(&employ[i],sizeof(struct emplea),1,fp>printf("¿Quiere ingresar la siguiente información del empleado?\n"
scanf("%s",&choice);
}
printf("Presione cualquier tecla para regresar\n"); >
fclose(fp);
}
addbook()
{
ARCHIVO *fp;
int i=0;
char elección='y';
fp=fopen("libro.txt","a+"); > while(choice =='y'||choice=='Y')
{
printf("Ingrese el número de serie del %d libro\n", i+1)
scanf("%d",&book[i].booknum);
printf("Ingrese el título del libro\n"); >
scanf("%s",libro[i].bookname);
printf("Ingrese el autor del libro\n"); "%s", book[i].bookcreat);
printf("Establezcalo en 1 o 0. 1 significa que nadie ha tomado prestado el libro y 0 significa que el libro ha sido prestado.
scanf("%d",&book[i].turefalse)
fwrite(&book[i],sizeof(struct book),1,fp> pr
intf("¿Quieres ingresar el siguiente libro\n");
scanf("%s",&choice
}
fclose( fp)
}
cuentadelibros()
{
ARCHIVO *fp
int i, n= 0;
fp=fopen("book.txt","r");
for(i=0;fread(&book[i],sizeof(estructura libro ), 1,fp)!=0;i++)
{
if(libro[i].booknum!=0&&strlen(libro[i].nombre del libro)!=0&&strlen( libro[ i].bookcreat)!=0)
{
printf("Libro %d
n=n+1 ;
}
}
fclose(fp);
printf("Actualmente *** hay %d libros\n ",n);
printf("Presione cualquier tecla\n");
}
findbook()
{
ARCHIVO *fp;
char nombre del libro[10];
int tura,i
fp=fopen("libro.txt ","r");
printf("Ingrese el título del libro que está buscando\n");
scanf("%s",bookname);
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if( strcmp(nombredellibro,libro[i].nombredellibro)==0)
{
if(libro[i].turefalse==1)
{
printf("Los detalles de este libro son: %d %s %s Este libro no está marcado actualmente\n",libro[i].booknum,libro[i].bookname,libro [ i].bookcreat);
}
else {printf("Este libro ha sido prestado\n");fclose(fp);return;}
fclose(fp);
return;
}
}
printf("No hay ningún libro que desee consultar \ n");
fclose(fp);
return;
}
delbook()
{
ARCHIVO *fp,*fp2;
int i;
char nombre del libro[10],elección
fp= fopen ("book.txt","r");
fp2=fopen("bookl.txt","w");
printf("Por favor, introduzca el texto que desea desea eliminar el título del libro\n");
printf("Si el título del libro que ingresó existe, ¡el sistema eliminará automáticamente la información! como
Si no existe, el sistema no realizará ningún cambio\n");
scanf("%s",bookname);
for(i=0;fread( &libro[i] ,sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(bookname,book[i].bookname)! =0)
{
fwrite(&book[i],sizeof(struct book),1,fp2
}
}
} p>
fclose(fp);
fclose(fp2);
printf("¿Realmente deseas eliminar este libro?
scanf("%s",&choice);
if(choice) =='y'||choice=='Y' )
{
fp=fopen("book.txt","w"); >fp2=fopen("bookl.txt","r ");
for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0; i++)
{
fwrite(&book[i],sizeof(struct book),1,fp
}
; fclose(fp);
fclose (fp2);
fp2=fopen("libro.txt","w");
fclose(fp2)
printf("Presione cualquier tecla return\n");
getch()
return
}
p>
else
{
printf("Presione cualquier tecla para regresar\n");
getch(); p>retorno;
}
p>
}
cambio()
{
ARCHIVO *fp,*fp2;
char nombre del libro[10], elección;
int i; r");
fp2=fopen("bookl.txt ","w");
printf("Ingrese el nombre del libro que desea modificar\n"
scanf("%s",nombre del libro);
for(i=0;fread(&book[i],sizeof(struct book),1,fp)! =0;i++)
{
if(strcmp(libro[i].nombredellibro,nombredellibro)==0)
{
printf("La información del libro que desea modificar es la siguiente, seleccione el que desea modificar Contenido\n");
printf("Número de serie: 〈%d〉 Libro título: 〈%s〉 Autor: 〈%s〉 \n",libro[i].booknum,libro[i] .bookname,libro[i].bookcreat);
printf("1: Modificar el número de serie del libro\n");
printf("2: Modificar el nombre del libro\n" );
printf("3: Modificar autor\n");
printf("Por favor, introduzca 1-3:"
scanf("%s",&choice);
cambiar(opción)
{
caso '1':
{
printf("Ingrese un nuevo número de serie\n");
scanf("%d",&book[i].booknum)
fwrite(&book[i],sizeof(struct book),1,fp2
}break
case '2':
p >
{
printf("Ingrese un nuevo nombre de libro\n");
scanf("%s",libro[i].bookname); /p> p>
fwrite(&book[i],sizeof(struct book),1,fp2
}break
case '3':
p>{
printf("Ingrese un nuevo autor\n");
scanf("%s",libro[i].bookcreat ); p>
fwrite(&book[i],sizeof(struct book),1,fp2
}break
defaut:printf("No existe tal operación") ;romper ;
}
continuar;
}
fwrite(&book[i],sizeof(struct book),1, fp2) ;
}
fclose(fp);
fclose(fp2); ", "w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&book[i],sizeof (libro de estructuras),1,fp2)!=0;i++)
{
fwrite(&book[i],sizeof(libro de estructuras),1,fp); p>
}
fclose(fp);
fclose(fp2)
fp2=fopen("libro.txt","w"
fclose(fp2);
printf("Presione cualquier tecla para regresar\n"); p>retorno ;
}
principal()
{
char ch1,ch2,ch3,ch4,ch5
p>do
{
clrscr();
printf("***************Bienvenido al programa de gestión de bibliotecas de libros chinos! ****************\n");
printf("~~~~~~~~~~\t\t\t~~~ ~~~~~~~~~\n");
printf("Productor: Jiang Yong\tClase: Optoelectrónica 0603\tID de estudiante: s05064110\n");
printf("Dirección de contacto: Universidad de Correos y Telecomunicaciones de Xi'an 10#242\n"
printf("%%%%%%%%%%%%%%%%%%); %%%%%%%\n");
printf("\t\tPor favor seleccione el tipo de operación:\n");
printf(" 1:
printf(" 2:
printf(" 3:
printf(" 4:
printf(" 0:
scanf("%s",&ch1
switch(ch1)
{
caso '1':chabook();romper;
caso '2':lendbook();;romper
caso '3':{
hacer
{
clrscr();
printf("------------- -¡Bienvenido al sistema de gestión! --------------\n");
printf(" 1:
printf(" 2:
printf(" 3:
printf(" 5:
printf(" 6:
printf(" 0:
printf("¡Ingrese 0--6, otras entradas son ilegales!\n"
scanf("%s",&ch2);
cambiar(ch2)
{
caso '1': addbook( );
caso '3':cambiar(); /p >
caso '4':bookcount();getch();break;
caso '5':{do
{
clrscr( );
printf("---------------¡Bienvenido al sistema de gestión de empleados!-------------- \n" );
printf(" 1:
printf(" 2:
printf(" 3:
printf(" 4:
printf("Ingrese 0--4, ¡otras entradas son ilegales! \n");
scanf("%s",&ch3);
cambiar(ch3)
{
caso ' 1':addemploy();getch();break;
caso '2':deemploy();break;
caso '3':changemploy();break
caso '4':employcount();getch();romper;
caso '0':romper
defa;
ult:printf("No existe tal operación\n");getch();break;
}
} while(ch3!='0');}break
} p>
} p>
caso '6':{do
{
clrscr();
printf("--- ------ ------Bienvenido al sistema de gestión de estudiantes --------------\n");
printf(" 1: < Solicite una nueva tarjeta>\n ");
printf(" 2:
printf(" 3:
printf(" 4:
printf(" 0:
printf("¡Ingrese 0 --4, otra entrada es ilegal! \n");
scanf("%s",&ch4
switch() ch4)
{
caso '1':addcar();romper;
caso '2':delcar();romper
caso '3':lendcount() ;romper;
caso '4':carcount();romper
caso '0':romper
default:printf("No existe tal operación \n");getch();break
}
} while(ch4!='0');}break; ;
case '0 ':break;
default:printf("No existe tal operación\n");getch();break
}
}mientras(ch2! ='0');}romper;
caso '4':huanbook();romper
caso '0': break;
predeterminado: printf("No existe tal operación\n");getch();break;
}
} while(ch1!=' 0');
}