Documento de prueba del sistema de gestión de dormitorios de estudiantes
¡Tengo dos aquí! Espero poder ayudarte.
El primer VC
#include "stdafx.h"
. #include "stdio.h"
#include "iostream.h"
#include "string.h"
#define ERROR 0
p>
#define OK 1
#define MAXSIZE 2500
#define EQ(a,b) ((a)==(b)) p>
typedef int Status;
int N=4;//Variable global para almacenar el número ingresado
struct Student
{ p >
//Tipo de estructura de datos;
char name[10];
int num
int room; > };
/*-------------------------------- ---- ----------------------------------*/
Entrada de estado( )
p>{
//Entrada de datos;
int i=0
int flag=1; >
char ch;
ARCHIVO * fpdata;
estudiante[MAXSIZE]
if((fpdata=fopen("studata.txt" ,"wb") )==NULL)
{
printf("¡No se puede abrir el archivo studata.c!"); p>
}
while(flag)
{
printf("Si continuar ingresando (S/N):"
p>cin >>ch
if(ch=='y'||ch=='Y')
{
scanf ("%s%d %d",stu[i].nombre,&stu[i].num,&stu[i].habitación
fwrite(&stu[i],sizeof(struct Student); ),1,fpdata)
i++;
}
else flag=0
}
N=i;
fclose(fpdata);
printf("¡Introducción de datos completada! \n");
return OK;
}
Estado Imprimir(char *nombre de archivo)
{
//Datos de salida;
FILE * fpdata;
student st;
int i=0; ( fpdata=fopen(filename,"rb"))==NULL)
{
printf("¡No se puede abrir el archivo studata.c!"); > devolver ERROR;
}
mientras(i { fread(&st,tamaño of(struct estudiante),1,fpdata); printf("%s %d %d\n",st.nombre,st.num,st.room i++; } fclose(fpdata); regresar } /* ******** ******** ********* ********* ********** ******* ** ********* */ /* ******** ******** ********** *** ****** ********* ********* ********* */ Estado NameSort() { //Clasificación de nombres; int i,j; ARCHIVO * fpdata ARCHIVO * fpnamesort; estudiante[MAXSIZE]; if((fpdata=fopen("studata.txt","rb"))==NULL) { printf("¡No se puede abrir el archivo data.c!"); devuelve ERROR } for(i=1). ;i<=N;i++) { fread(&stu[i],sizeof(struct Student),1,fpdata } fclose(fpdata); if((fpnamesort=fopen("namesort.txt","wb"))==NULL) { p> printf("no se puede abrir nsort.c"); devuelve ERROR } for(i=2;i<= N;i++) { if(strcmp(stu[i].nombre,stu[i-1].nombre)<0) { strcpy(stu[0].nombre,stu[i].nombre); stu[0].num=stu[i].num; p>stu[0].room=stu[i].room; strcpy(stu[i].nombre,stu[i-1].nombre); [i].num=stu[i-1].num; stu[i].habitación=stu[i-1].habitación for(j=i; -2;(strcmp(stu[0].nombre,stu[j].nombre))<0;j--) { strcpy(stu[j+1 ].nombre,stu[j].nombre); stu[j+1].num=stu[j].num stu[j+1].habitación; =stu[j].habitación; } strcpy(stu[j+1].nombre,stu[0].nombre); [j+1].num=stu[0].num; stu[j+1].habitación=stu[0].habitación } } para(i=1;i<=N;i++) { fwrite(&stu[i],sizeof(struct Student),1,fpnamesort } fclose(); fpnamesort); return OK } /* ******** ******** **** ***** ********* ********* ********** ********* */ /* ******** ******** ********* ********** ********** ***** **** ********* */ Status NumSort() { //Clasificación por número de estudiante ; p > int i,j; ARCHIVO * fpdata; ARCHIVO * fpnumsort; estudiante[MAXSIZE]; p >if((fpdata=fopen("studata.txt","rb"))==NULL) { printf("¡No se puede abrir el archivo data.c!" ) devuelve ERROR; } para(i=1;i<=N;i++) { p > fread(&stu[i],sizeof(struct estudiante),1,fpdata } fclose(fpdata ); if ((fpnumsort=fopen("numsort.txt","wb"))==NULL) { printf("no se puede abrir nsort.c"); p > devuelve ERROR; } for(i=2;i<=N;i++) { if(stu[i].num { strcpy(stu[0].nombre,stu[i].nombre) stu[0].num=stu[i].num; stu[0].room=stu[i].room; strcpy (stu[i].nombre,stu[i-1].nombre); stu[i].num=stu[i-1].num stu; [ i].room=stu[i-1].room for(j=i-2;stu[0].num { strcpy(stu[j+1].nombre,stu[j].nombre stu[j+1].num=stu[); j ].num; stu[j+1].habitación=stu[j].habitación } strcpy(stu[j+1; ] .nombre,stu[0].nombre); stu[j+1].num=stu[0].num stu[j+1].habitación; = stu[0].room; } } for(i=1;i<=N;i++) { fwrite(&stu[i],sizeof(struct t estudiante),1,fpnumsort); } fclose(fpnumsort); return OK; > /* ******** ******** ********** ********** ********** * ******** ********* */ /* ******** ********** ****** *** ********* ********* ********* ********* */ Estado Ordenar habitación () { //Clasificación del número de habitación; int i,j ARCHIVO * fpdata; ARCHIVO * fproomsort; estudiante estudiante[MAXSIZE]; if((fpdata=fopen("studata.txt","rb"))==NULL) { printf("¡No se puede abrir el archivo data.c!"); devuelve ERROR; p>for(i=1;i<=N;i++) { fread(&stu[i],sizeof(struct Student),1,fpdata ); p> p> } fclose(fpdata); if((fproomsort=fopen("roomsort.txt","wb"))==NULL) { printf("no se puede abrir nsort.c"); devuelve ERROR; for( i=2;i<=N;i++) { if(stu[i].habitación { strcpy(stu[0].nombre,stu[i].nombre stu[0].num=stu[i].num; /p > stu[0].room=stu[i].room; strcpy(stu[i].nombre,stu[i-1].nombre stu[i].num=stu[i-1].num; stu[i].habitación=stu[i-1].habitación para; (j =i-2;stu[0].habitación { strcpy(stu[j+1].nombre ,stu[j].nombre); stu[j+1].num=stu[j].num stu[j+1].habitación=stu[; j] .room; } strcpy(stu[j+1].nombre,stu[0].nombre); 1] .num=stu[0].num; stu[j+1].room=stu[0].room } } for(i=1;i<=N;i++) { fwrite(&stu[i],sizeof(struct Student),1 , fproomsort } p>fclose(fproomsort); return OK } /* ******** ******** ********* ********** ********* ********* ********** */ /* ******** ******** ********** ********** ********** * ******** ********* */ Estado NameSearch(char * namekey) { // Consultar por nombre; //Buscar en orden int i; FILE * f estudiante[MAXSIZE]; if((f=fopen("namesort.txt","rb"))==NULL) { printf("no se puede abrir namesort .txt!"); devuelve ERROR; } for(i=1;i<=N;i++) { fread(&stu[i],sizeof(struct Student),1,f } int low=1; p > int alto=N; //int medio; int flag=0 int m=N; //char nombreclave; //int t; strcpy(stu[0].nombre,nombreclave for(m=); N ;m>0;--m) { if(!strcmp(stu[m].nombre,nombrekey)) printf(" % s %d %d\n",stu[m].nombre,stu[m].num,stu[m].habitación); } return m; fclose(f); if(bandera>0) { printf("%s %d %d\ n ",stu[bandera].nombre,stu[bandera].num,stu[bandera].habitación); } else printf("Lo sentimos, no se encontró ningún registro coincidente \n"); regresar OK; } /* ******** ******** * * ******* ********** ********* ********** ********* */ /* ******** ******** ********** ********** ********** ** * ****** ********* */ Estado NumSearch(int key) { //Aprendiendo Número consulta; int i; ARCHIVO * f; estudiante[MAXSIZE] if((f=fopen ( "numsort.txt","rb"))==NULL) { printf("¡no se puede abrir el archivo namesort.txt!"); devuelve ERROR; } for(i=1;i<=N;i++) { fread(&stu[i],sizeof(struct Student),1,f } int low=1 int high; =N; int medio; int flag=0 mientras(bajo<=alto) { medio=(bajo+alto)/2 if(stu[medio].num==clave) { flag= medio; romper; } else { si(stu[medio].num >clave) alto=medio-1 else bajo=medio+1 } } fclose(f); if(bandera>0) { printf("%s %d %d\n",stu[bandera].nombre,stu[bandera].num,stu[bandera].habitación); } else printf("Lo siento, no Registro coincidente encontrado\n"); volver OK; } /* ******** ***** ** * ********* ********* ********* ********** ********* */ p> /* ******** ******** ********** ********** ******* ** ********* ********* */ Estado RoomSearch(tecla int) { // Consulta por número de habitación; int i; FILE * f; estudiante[MAXSIZE] if( (f) =fopen("roomsort.txt","rb"))==NULL) { printf("¡no se puede abrir el archivo roomsort.txt!"); { printf("¡no se puede abrir el archivo roomsort.txt!"); { p> return ERROR; p> for(i=1;i<=N;i++) { fread(&stu[i],sizeof(struct Student),1,f) ; } int bajo=1; int alto=N //int medio; p>int bandera=0; int t; stu[0].room=clave for(t=N;t>0; --t) {if(stu[t].room==clave) printf ("%s %d %d\n",stu[t].nombre ,stu[t].num,stu[t].room); } return t; if(bandera>0) { printf("%s % d %d\n",stu[bandera].nombre,stu[bandera].num,stu[bandera].habitación); } else printf("Lo siento, No se encontró ningún registro coincidente\n"); return OK; } /* ******** **** ** ** ********* ********* ********* ********** ********* * / /* ******** ******** ********** principal() ********* *** ** **** ********* */ /* ******** ******** ******** * * ******** ********* ********* ********* */ void main() p> { int num; int habitación; int bandera, bandera1, bandera2 char cha; char name[10]; cout<<" ******** Sistema de gestión de dormitorios de estudiantes*******"< printf(" ------Desarrollado por GUOXIAOJIE\n"); printf("--------------- -- -------------------------------\n"); cout <<"¿Necesita ingresar la información del estudiante? (Y/N)"< char cha1; cin>>cha1 if. (cha1=='Y'||cha1=='y') {printf("---------------------- - -------------------------------\n"); printf("Por favor, introduce el alojamiento Entrada de información del estudiante (nombre, número de estudiante, número de salón)\n"); Input(); NameSort(); NumSort(); NumSort(); Entrada(); p> Habitación(); } mientras(bandera) {printf("----------- ---------------------------- ----------------------\n"); p> cout<<"************ **** Sistema de gestión de dormitorios de estudiantes****************"< printf("----------- ------------------------------- ------------- -\n"); printf("Seleccione una operación:\n"); printf("A. Buscar por nombre\n"); printf("B. Buscar por número de estudiante\n"); printf("C. Buscar por número de salón\n"); Salir\n"); cout<<"Nota: Por favor ingrese letras mayúsculas..."< cin >>cha; cambiar(cha) { ca se 'A' : bandera1=1 mientras(bandera1) {printf("------------ ------------------------------------------\n"); printf("A. Ingrese el nombre a consultar\n"); printf("B. Salida todo por nombre\n"); " C. Return\n"); printf("Nota: Introduzca letras mayúsculas...\n"); cin>>cha; p> switch(cha) { caso 'A': scanf("%s",nombre ); printf( "El resultado de la consulta es:\n"); printf("--------------------- ------ ------------------------\n"); BuscarNombre(nombre); printf( "------------------------------------------- ----- -----\n"); descanso; caso 'B': Imprimir("namesort.txt" romper; caso 'C': flag1=0; predeterminado: printf("-------------------------------------- ------- -----------\n"); printf("!!!!!!!! El comando que ingresó no es válido. Nota: ¡¡¡Ingrese las letras de comando en mayúsculas!!!!!!!!!!!\n"); } } break; romper; p> caso 'B' : mientras(bandera2) {printf("-- ---------------- ---------------------------------- --\n"); printf( "A. Ingrese el número de estudiante a consultar\n"); printf("B. Generar todo por número de estudiante\n "); printf("C. Return\ n"); printf("Nota: Por favor ingrese letras mayúsculas...\n"); cin>>cha; cambiar(cha) { caso 'A': scanf("%d ",&num); printf("El resultado de la consulta es :\n"); printf("--------------- ------------------- --------------------\n"); NumSearch(num); romper; caso 'B': Imprimir("numsort.txt"); romper; caso 'C': flag2=0 romper predeterminado: printf("---------------- ------------------------------- ------\n"); printf("!!!!!!!! El comando que ingresó no es válido. Nota: ¡¡¡Ingrese las letras de comando en mayúsculas!!!!!!!!!!!\n"); } } break; romper; p> caso 'C' : bandera1=1 mientras(bandera1) p> {printf("------- ---------------------------------- ----------------\n" ); printf("A. Ingrese el número de dormitorio a consultar\n"); printf("B. Generar todo por número de dormitorio\n"); printf("C.Return\n"); printf("Nota: ingrese mayúsculas letras...\n"); cin>>cha; interruptor(cha) { caso 'A ': scanf("%d",&room); caso 'A': scanf("%d",&room); p> p> printf("El resultado de la consulta es:\n"); printf("----------------- ------ ----------------------------------\n"); BuscarHabitación(habitación); BuscarHabitación(habitación); p> printf("---------------- ----------------------- ------------\n"); ruptura; caso 'B': Imprimir("roomsort. txt"); ruptura; 'C': flag1=0; romper; predeterminado: printf("------- ----------------------------------------- --------- ---------\n"); printf("!!!!!!!! El comando que ingresó no es válido. Nota: Comando ¡¡¡Por favor ingrese letras mayúsculas!!!! !!!!!!!\n"); } } romper; caso 'D' : bandera=0; romper; predeterminado: printf("---- -------- ------------------------------------------ \n"); printf("!!!!!!!! El comando que ingresó no es válido. Nota: ¡¡¡Ingrese las letras de comando en mayúsculas!!!!!!!!!!!\n"); } } } La segunda clase C++ #include #include clase estudiante//clase estudiante { público: char nombre_estudiante[10]; int número_aula; int número_estudiante; int estudiante_sc }; estudiante información_estudiante[16]; int número=0; > ////////////////////////////////////////////////// //// /////////////////////// void input()//Función de entrada { cout<<"Ingrese el número de estudiantes:" cin>>número if(número<=16) { for(int i=0;i { cout<<"Ingrese el número de estudiante:" cin> >student_info[i].student_number; cout<<"Ingrese el nombre del estudiante:" cin>>student_info[i].student_name student_info [i].student_sc=i+1; cout<<"Ingrese el número de habitación:" cin>>student_info[i].room_number; } cout<<"Entrada completada. "< } else{cout<<"El número de personas supera la capacidad máxima. "< } ///////////////////////////// / ///////////////////////////////////////////////// / p> void show()//Función de visualización { cout<<"Nombre"<<" "<<"ID de estudiante"<<" "<< "Número de serie"<<" "<<"Habitación"< for(int i=0;i { p> cout< cout< cout<< información_estudiante[i] .student_sc<<" "; cout< } } ////////////////////////////////////////////// //////// ///////////////////////// void del()//Función de eliminación p> { cout<<"Ingrese el número de estudiante que desea eliminar:"< int temp=0 cin; >>temp; for(int i=0;i { if(student_info[i].student_number==temp ) { for(int j=i;(j+1) { información_estudiante[ j].student_number=student_info[j+1 ].student_number; student_info[j].student_sc=student_info[j+1].student_sc student_info[j].room_number; =información_estudiante[j+1].número_habitación; strcpy(información_estudiante[j].nombre_estudiante,info_estudiante[j+1].nombre_estudiante } información_estudiante[número].número_estudiante=0; información_estudiante[número].student_sc=0 información_estudiante[número].número_habitación=0 strcpy; (información_estudiante[número].nombre_estudiante,"" } } } ///////); ////////// //////////////////////////////////////// ////////////// ///////// vacío change()//Función de intercambio { cout<<"Ingrese el número de estudiante a intercambiar:" char temp_name[10]; /p> cout<<" p> int temp_number=0; int temp_sc=0; int temp_room=0; int i,j; cin>>i>>j; i--; temp_number=student_info[j].student_number; temp_sc=student_info[j].student_sc; temp_room=student_info[j].room_number strcpy( temp_name,student_info[j].student_name); student_info[j].student_number=student_info[i].student_number student_info[j].student_sc=student_info[i]. estudiante_sc; información_estudiante [j].número_habitación=info_estudiante[i].número_habitación; strcpy(información_estudiante[j].nombre_estudiante,info_estudiante[i].nombre_estudiante información_estudiante[i].número_estudiante = número_temp; info_estudiante[i].student_sc=temp_sc info_estudiante[i].número_habitación=habitación_temp strcpy(student_info[i].student_name ,temp_name); } ///////////////////// //////////// /////////////////////////////////////// /////// void search_sc()//Buscar número de serie { int temp=0 cout<<"Ingrese el número de serie a consultar:"; cin>>temp int i=0 while(student_info[i; ].student_sc!=(temp)) i++; cout< cout< cout< cout< //////// ////////////////////////////////// ///////////////////// //////////////// >void search_name()//Buscar nombre { char temp[10] cout<<"Ingrese el nombre a consultar:" cin>>temp; int i=0 mientras(strcmp(student_info[i].student_name,temp)) i++; p> cout< cout< cout<< información_estudiante[ i].student_sc<<" "; cout< } //// // ///////////////////////////////////////////////// ///// ///////////////// void search_number()//Buscar número de estudiante { int temp =0; cout<<"Ingrese el número de estudiante a consultar:" cin>>temp int; i=0; mientras(información_estudiante[i].número_estudiante!=(temp)) i++ cout< cout< cout< cout<< información_estudiante[i].número_habitación< } ///////////////////////// //////// /////////////////////////////////////////// // void win()//Función de interfaz { while(1) { cout< cout<<"1. Modificar submenú"< int server=0; cout<<"Tipo de submenú de entrada:" ; cin>>server; if(servidor ==1) { cout<<"1. Ingrese: "< cout<<"3. Intercambiar"< cout<<"4. ;endl; cout<<"5. Fin"< cout<<"Seleccionar submenú:" int temp=0 ; cin>>temp; interruptor(temp) { caso 1: entrada ( );romper; caso 2: del();romper; caso 3: cambiar();romper ; caso 4: show();break; caso 5: salir(0); p>} } else if(server==2) { cout<<"1. Consulta por nombre"< cout<<"2. Buscar por número de estudiante"< cout<<"3. Buscar por número de serie"< int temp; cin>>temp switch(temp) { caso 1: nombre_búsqueda();romper; caso 2: número_búsqueda();romper caso 3: search_sc();romper; } } } } //////////////////////////////////////////// / ///////////////////////////////// void main()//función principal { ganar(); }