La Red de Conocimientos Pedagógicos - Currículum vitae - Programación en lenguaje C

Programación en lenguaje C

¿Está bien C++?

Espera un momento, pedir un menú significa admitir MFC.

Si no te importa, prueba esto primero, este es el único que tienes a mano.

#include //Archivo de encabezado de cadena

#include //Archivo de encabezado de archivo

#include //Sí Se refiere al archivo de encabezado de los flujos de entrada y salida en la biblioteca estándar usando namespace std; //Usar namespace std

const int BMAX=50 //Número máximo de libros

/ /Módulo de gestión de libros

//Libro de clase

libro de clase

{

público:

int no ; // Número del libro

char name[20]; // Nombre del libro

int b_flag //1 está en el estante, 2 está en préstamo

int b_del; //1 significa existencia, 2 significa eliminación

public:

book(){} //Constructor

void setno(int n)

{

no=n; //Valor del número del libro

}

int getno()

{

return no; //Devuelve el valor del número del libro

}

void setname(char na[])

{

strcpy(nombre, na); //Copia de cadena

}

char* getname()

{

return name; //Devuelve el nombre del libro

}

void borbook()

{

b_flag=2 ; //Pedir prestado un libro Bandera

}

void delbook()

{

b_del=2; /p>

}

void addbook(int no,char na[]) //Agregar función de libro

{

setno(no);

setname(na);

b_flag=1;

b_del=1;

}

}

//Clase de base de datos de libros

clase bdatabase

{

público:

libro btarray[BMAX] ; //Colección de libros

int top;

public:

bdatabase()

{

libro b;

top=-1;

fstream file("book.txt",ios::in); //Abre el archivo

while ( 1)

{

file.read((char *)&b,sizeof(b));

if (!file) break

top++;

btarray[top] = b;

}

file.close() //Cerrar el archivo

}

~bdatabase() //Destructor, escribe btarray[] en el archivo book.txt

{

fstream file("book.txt",ios::out) <; /p>

for (int i=0;i<=top;i++)

{

if (btarray[i].b_del==1)

file.write((char *)&btarray[i],sizeof(btarray[i]));

}

file.close(); >

}

void addbooks() //Agregar libros a la base de datos de libros

{

book bk;

int no;

char bname[20];

cout<<"Por favor, introduzca el ISBN: ";

cin>>no;

cout<

cin>>bname;

cout<

bk. b_flag=1;

bk.addbook(no, bname);

top++;

btarray[top]=bk;

return;

}

int findbooks(int suffix) //Buscar libros, esta función se usa para pedir prestado libros, el sufijo es el subíndice de la matriz

{

int no;

cout<<"Por favor, introduzca el número del libro: ";

cin>>no;

para (int i=0; i<=top; i++)

{

if(btarray[i].no==no && btarray[i].b_del==1)

{

devuelve i;

}

}

devuelve -1;

}

int findbooks() //Buscar libros, esta función se utiliza para el mantenimiento de libros

{

int no;

valor char [6];

cout<<"Por favor, introduzca el número del libro: ";

cin>>no;

for(int i= 0; yo<= a

p; i++)

{

if(btarray[i].no==no && btarray[i].b_del==1)

{

if(btarray[i].b_flag==1) strcpy(valor,"en el estante");

if(btarray[i].b_flag==2) strcpy(valor ,"Préstamo");

cout<<"Número de libro: "<

devuelve i;

}

}

devuelve -1;

}

void editbooks() //Editar libros

{

int cur

cur = findbooks(); /p>

if (cur==-1)

{ cout<<"No existe tal libro"<

return;

}

cout<<"Número de libro: "<

cout<<"Por favor modifique los datos:"<

cout<

cin>>btarray[ cur]. nombre;

return ;

}

void delbooks() //Eliminar libros

{

int cur;

cur = buscarlibros();

if (cur==-1)

{

return;

}

if(btarray[cur].b_flag==2) // Determina si el libro se toma prestado al eliminar

{

cout< <"El libro ha sido prestado, devuélvalo antes de eliminarlo.

"<

retorno;

}

btarray[cur].b_del=2;

retorno;

}

void listbooks() //Mostrar todos los libros

{

char value[6];

for (int i=0; i<=top; i++)

{

if(btarray[i].b_del==1)

{ p>

if(btarray[i].b_flag==1) strcpy(valor,"en el estante");

if(btarray[i].b_flag==2) strcpy( valor, "Préstamo");

cout<<"Número de libro: "<

}

}

retorno;

}

}

//Módulo de gestión de lectores

//Clase de lector

clase de lector

{

público:< / p>

int no;

char name[20];

int r_del; //1 existe, 2 se elimina

int r_bor; // 1 ha pedido prestado un libro, 2 no ha pedido prestado un libro

book brbook;

public:

void addreader(int id, char na[] )//Agregar lectores

{

no = id;

strcpy(name, na);

r_del=1; /p>

}

void setbrbook(book bt) //Establecer la marca de préstamo de libros

{

brbook = bt;

}

libro getbrbook()

{

return brbook; //Devolver información de préstamo de libro

}

};

//Clase de base de datos del lector

clase rdatabase

{

pública:

lector rdarray[BMAX] ;

int top;

public:

rdatabase()

{

lector rd;

p>

top=-1;

fstream file("reader.txt",ios::in //Abrir archivo

while (1)

{

file.read((char *)&rd,sizeof(rd)); ) romper;

arriba++

rdarray[a]

p]=rd;

}

file.close(); //Cerrar el archivo

}

~rdatabase() //Destructor

{

fstream file("reader.txt",ios::out

for (int i=0;i< =); top;i++)

{

if (rdarray[i].r_del==1)

file.write((char *)&rdarray[i ] ,sizeof(rdarray[i]));

}

file.close();

}

void addreaders(); //Agregar lector

{

lector rd;

int no;

char rname[20];

cout<<"Por favor, introduce tu número de estudiante: ";

cin>>no;

cout<

cin>>rname;

cout<

rd.addreader(no, rname);

rd.r_bor=2;

top++;

rdarray[top]=rd;

return;

}

int findreaders( int suffix) //Buscar al lector Esta función se utiliza para pedir prestado y devolver libros.

El sufijo del parámetro es el subíndice de la matriz

{

int no;

cout<<"Ingrese el número de estudiante: ";

cin >>no;

for(int i=0; i<=top; i++)

{

if(rdarray[i] .no== no && rdarray[i].r_del==1)

{

return i;

}

}

return -1;

}

int findreaders() //Buscar lectores, esta función se utiliza para operaciones de mantenimiento del lector

{

int no;

char value[3];

cout<<"Ingrese su número de estudiante: ";

cin>>no;

for(int i=0; i<=top; i++)

{

if(rdarray[i].no= =no && rdarray[i ].r_del==1)

{

if(rdarray[i].r_bor==1) strcpy(valor,"pedir prestado");

if(rdarray[i].r_bor==2) strcpy(value,"Ninguno");

cout<<"Número de estudiante: "<

return i;

}

}

return -1;

}

void editreaders() //Editar información del lector

{

int cur;

cur = findreaders();

if (cur==-1)

{ cout<<"Allí no existe tal estudiante"<

return;

}

cout<<"Por favor modifique los datos:"<

cout<

cin>>rdarray[cur].nombre;

return ;

}

void delreaders() //Eliminar lectores Si los lectores toman prestados libros, deben devolverlos antes de que puedan eliminarse

{

int cur

p>

cur = findreaders();

if (cur==-1)

{

return;

> }

if(rdarray[cur].r_bor==1)

{

cout<<"Este usuario ha pedido prestado un libro, por favor devuélvalo antes de devolverlo. Eliminar"<

return;

}

rdarray[cur].r_del=2;

return;

p>

}

void listreaders() //Mostrar todos los lectores

{

char value[3];

for(int i=0; i<=top; i++)

{

if(rdarray[i].r_del==1)

{

if(rdarray[i].r_bor==1) strcpy(valor,"pedir prestado");

if(rdarray[i].r_bor== 2) strcpy(valor, "Ninguno");

cout<<"Número de estudiante: "<

}

}

return;

}

}

void bookjiemain() //Submenú de mantenimiento de libros

{

cout<<"|--------- ------ ------|"<

cout<<"| Mantenimiento de libros|"<

cout<<"| (1) Agregar|" <

cout<<"| (2)Cambiar|"<

cout<<"| <

cout<<"| (4) Buscar |"<

cout<<"| (5) Mostrar|"<

cout <<"| (6) Volver al nivel anterior|"<

cout<<"|-------------- ------- |"<

}

void Readerjiemian() //Submenú de mantenimiento del lector

{

cout<<" |---------------------|"<

cout<<"| Mantenimiento del lector

|"<

cout<<"| (1) Agregar|"<

cout<<"| (2) Cambiar|"<

cout<<"| (3) Eliminar|"<

cout<<"| (4) Buscar|"<

cout<<"| (5) Mostrar|"<

cout<<"| (6) Volver al nivel anterior|"<

cout < <"|---------------------|"<

}

void mainjiemian() / /Interfaz principal

{

cout<<"*************************** *** *******************"<

cout<<"* Sistema de gestión de biblioteca*"<

cout<<"* *"<

cout<<"* (1) Préstamo de libros*"<

cout<<" * *" <

cout<<"* (2) Devolver el libro*"<

cout<<"* *"<

cout<<"* (3) Gestión de biblioteca*"<

cout<<"* *"<

cout<< "* (4 ) Gestión de usuarios*"<

cout<<"* *"<

cout<<"* (0) Salir*"<

cout&l

t;<"************************************************ *"<

}

void lendtoreturn(char br)

//Función de préstamo y devolución de libros. El parámetro br se utiliza para determinar si "pedir prestado" "Libro" o "Devolver el libro". 1 es "pedir prestado el libro", 2 es "devolver el libro"

{

int rdid=0;

int bkid =0;

int rsuffix, bsuffix;

bdatabase t_bd;

rdatabase t_rd;

si (br=='1' ) //Pedir prestado libros

{

rsuffix=t_rd.findreaders(rdid);

bsuffix=t_bd.findbooks(bkid );

if (rsuffix==-1 || bsuffix==-1)

return;

if(t_bd.btarray[bsuffix].b_flag ==2)

{

cout<<"El libro ha sido prestado, seleccione otro libro"<

regresar;

}

if(t_rd.rdarray[rsuffix].r_bor==1)

{

cout<<"Ya has pedido prestado libros, devuélvalos primero antes de pedir prestados otros libros "<

return;

}

t_bd.btarray[bsuffix].b_flag=2;

t_rd.rdarray [rsuffix].r_bor=1;

t_rd.rdarray[rsuffix].brbook=t_bd.btarray[bsuffix];

retorno;

}

if(br=='2')

{

rsuffix=t_rd.findreaders(rdid);

bsuffix=t_bd.findbooks (bkid);

if (rsuffix==-1 || bsuffix==-1 )

return;

if(t_rd.rdarray[rsuffix] .brbook.no==t_bd.btarray[bsuffix].no)

{

t_bd.btarray[bsuffix].b_flag=1 ;

t_rd.rdarray[rsuffix].r_bor=2;

t_rd.rdarray[rsuffix].brbook=t_bd.btarray[bsuffix];

}

else

{

cout<<"Vuelva a ingresar, el número del libro prestado por el lector es incorrecto"<

regresar;

}

regresar;

}

}

void booksmange()

{

char in

bdatabase bd;

hacer{

bookjiemain();

cin>>in;

cambiar (in)

{

caso '1':

bd.addbooks();

descanso;

caso '2':

bd.editbooks();

pausa;

caso '3':

bd.delbooks();

ruptura;

caso '4':

bd.findbooks();

ruptura;

caso '5':

bd.listbooks();

ruptura;

caso '6':

ruptura;

predeterminado :cout<<"Error de entrada, vuelva a ingresar."<

}

} while(in!='6');

return;

}

void lectoresmange()

{

char in;

rdatabase bd

hacer{

lectorjiemian();

cin>>en;

cambiar (en)

{

caso '1':

bd.addreaders();

descanso;

caso '2':

bd.editreaders();

descanso;

caso '3':

bd.delreaders();

ruptura;

caso '4':

bd.findreaders();

ruptura;

caso '5':

bd.listreaders();

ruptura;

caso '6':

ruptura;

default :cout<<"Error de entrada, vuelva a ingresar.

"<

}

}mientras(en!='6');

retorno;

}

int main(int argc, char* argv[])

{ char in;

do{

mainjiemian();

cin>>en;

cambiar (en)

{

caso '1':

prestamoreturn( en);

ruptura;

caso '2':

prestadotoreturn(en);

ruptura;

caso '3':

booksmange();

descanso;

caso '4':

lectoresmange();

break;

case '0':

break;

default:cout<<"Error de entrada, vuelva a ingresar . "<

}

}mientras(en!='0');

devuelve 0;

}