Estructura de datos del sistema de reserva de billetes de avión Estructura de datos del sistema de reserva de billetes de avión

1. Diseño del curso de estructura de datos - Sistema de emisión de billetes de avión (lenguaje C) 2. Estructura de datos Reserva de pasajeros de aerolíneas Las actividades comerciales incluyen 3. Estructura de datos Prácticas Lenguaje C Sistema de emisión de billetes de avión Estructura de datos Diseño del curso - Reserva de billetes de avión sistema (lenguaje C

1. Tarea: Las actividades comerciales de reserva de boletos de pasajeros aéreos incluyen: consultar rutas, reservar boletos y manejar reembolsos, etc. Intente diseñar un sistema de reserva de boletos de pasajeros aéreos para permitir lo anterior. el negocio se puede completar con la ayuda de computadoras 2. Requisitos funcionales: 1. Entrada: se puede ingresar el estado del vuelo (los datos se pueden almacenar en un archivo de datos, la estructura de datos y los datos específicos se pueden personalizar) 2. Consulta: el. Se puede consultar el estado de una determinada ruta (por ejemplo, ingrese el número de vuelo, verifique la hora de salida y llegada, la ciudad de salida y llegada, la tarifa del vuelo, el descuento de tarifa, determine si el vuelo está lleno; puede ingresar la ciudad de salida y llegada para verificar el estado del vuelo; 3. Reserva: (El estado de la reserva se puede almacenar en un archivo de datos, puede reservar boletos configurando su propia estructura. Si no hay boletos para el vuelo, puede proporcionar vuelos opcionales relevantes; 4. Reembolso: el boleto se puede reembolsar y el archivo de datos relevante se puede modificar después del reembolso 5. Información del cliente: nombre, número de identificación, cantidad de reserva y estado del vuelo, el pedido debe tener un número 6 Modificar la información del vuelo: cuando la información del vuelo; cambios, el archivo de datos de vuelo se puede modificar.

3. Debe haber una buena interfaz ~~~~~~~~~~~~~~~~~~~~~~~~~~ 4. Análisis de requisitos requisitos del sistema (condiciones específicas de las funciones requeridas por el sistema 5. Análisis resumido del sistema de diseño (analice la función del sistema y la división del proceso del sistema de módulos específicos (código detallado del programa del diagrama de flujo del sistema:

Estructura de datos que incluyen las actividades comerciales de reserva de pasajeros aéreos

#includestdio .h

#includestring.h

#includeconio.h

#includectype.h

#includestdlib.h

#includemalloc.h

#includemath.h//overflow

#defineok1

typedefstructYidingkehu{//lista enlazada individualmente

charname[15];//Nombre del cliente que ha reservado los billetes

intdingpiaoshu;//Cantidad de billetes reservados

structYidingkehu*next1;//

}Yidingkehu,*Enlace;

typedefstructWeidingkehu{//Equipo de cadena única

charname[15];//Nombre del cliente que reservó el billete

intyudingpiao;//Para reservar Número de entradas

structWeidingkehu*next2;//Puntero de nodo del equipo de la cadena siguiente

}Weidingkehu,*Qptr;

typedefstruct{

Qptrfront;//Nodo principal del equipo de cadena única

Qptrrear;//Nodo de cola del equipo de cadena única

}linkQueue;

typedefstructHangxian{//Crear una estructura que contiene seis datos

charhangbanhao[15];//Número de vuelo-

charfeijihao[15];//Número de avión

intfeixingriqi; //Hora de salida

intchenkerenshu;//Número de asientos

intyupiao;//Billetes restantes

charzhongdianzhai[15]; //Ciudad de aterrizaje

structHangxian*next;//Puntero al siguiente punto de enlace

structYidingkehu*yiding;//Defina un puntero al nodo principal del cliente que ha reservado el ticket

structWeidingkehu *yudingqueue;

}Hangxian,*Linklist;

structHangxian*L=NULL;//

structYidingkehu*H ;//Es la cadena de clientes que han reservado boletos Equipo para solicitar espacio

linkQueueQ;//tipo de linkQueue para solicitar espacio

LinklistInitLinklist(;//01

intInsertLinklist(Linklisthead1;//02

p>

voidhbhchaxun(;//Consulta por número de vuelo

voidmddchaxun(;//Consulta por destino

voidlurugongneng(;//Inicializar la función de entrada

voidchaxungongnen(;//Función de consulta

voiddingpiaogongnen(;//Función de reserva

voidtuipiaogongnen(;/ /Función de reembolso

voidmain(

{

H=(s

tructYidingkehu*malloc(sizeof(Yidingkehu;

Q.front=Q.rear=(Qptrmalloc(sizeof(Weidingkehu;

InitLinklist(;

intn;

do{//Imprimir la interfaz principal

printf("tBienvenido al sistema de reserva de pasajeros aéreosn";

printf("t+++++ +++++ +++++++++++++++++n";

printf("t==1.Función de entrada==n";

printf("t==2. Función de consulta==n";

printf("t==3. Función de reserva de entradas==n";

printf("t= =4.Función de reembolso==n";

printf("t==5.Exit==n";

printf("t++ ++++++++ +++++++++++++++++n";

printf("Por favor seleccione:";

scanf("%d",n ;printf("n";

switch(n

{

case1:lurugongneng(;// Función de entrada

break;

case2:chaxungongnen(;//Función de consulta

break;

case3:dingpiaogongnen(;// Función de reserva

break;

case4:tuipiaogongnen(;//Función de reembolso

break;

default:exit(0; //Salir

}

}mientras(n==1||n==2||n==3||n==4;

}

voidlurugongneng(/ /Lista enlazada individualmente inicializada************************************ *********** ***********Función de entrada

{

intj=1,m;

do{

if(!InsertLinklist((LinklistL//Agregarle información de vuelo

{

printf("La memoria está llena" ;exit(OVERFLOW;

}/ /Agregar un nodo a la lista vinculada

printf("t¿Desea ingresar el siguiente registro de ruta? n";

printf("Si t es sí, ingrese 1n" ;

printf("Si t es no, ingrese 2nt";

scanf("%d",m;//Confíe en las personas aquí para decidir si desea ingresar al siguiente registro de ruta

} while(m==1;

}

LinklistInitLinklist({//01

L=(Linklistmalloc( sizeof(Hangxian;

if(!Lexit(OVERFLOW;

L-next=NULL;//Crear una lista enlazada individualmente con un nodo principal

return (L;

}

intInsertLinklist(LinklistL//02 Agregar un nuevo nodo a la lista de rutas

{

Linklistp;

//intm,n;

p=(Linklistmalloc(sizeof(Hangxian;//Asignar espacio para un nuevo nodo

if(!pexit(OVERFLOW;

printf("tIngrese el siguiente contenido en secuencia

: nn";//Las entradas aquí se ingresan una por una para evitar el fenómeno de asignación aleatoria

printf("Número de vuelo n";

gets(p-hangbanhao;/ /Las dos llegadas aquí se deben principalmente a la entrada de la tecla Enter, la primera de las cuales es recibir la última tecla Enter

gets(p-hangbanhao;

printf (" Número de avión n";

gets(p-feijihao;

printf("Terminal n";

gets(p-zhongdianzhai;

p>

printf("Fecha del vuelo n";

scanf("%d",p-feixingriqi;

printf("Número total de pasajeros n";

scanf("%d",p-chenkerenshu;

printf("Número de votos restantes n";

scanf("%d",p -yupiao;

p-yiding=(structYidingkehu*malloc(sizeof(Yidingkehu;//Aplicar espacio para ello

p-yudingqueue=Q.front=Q.rear=(Qptrmalloc (sizeof(Weidingkehu;/ /Aplicar espacio para ello

p-next=L-next;//

L-next=p;//Estas dos oraciones son la inserción principal método en la lista vinculada para insertar un nodo Haga clic en

return(ok;

}

voidchaxungongnen(//********* ************* ************************************* ***********Función de consulta

{

intn;

printf("tBuscar información de rutan";

printf("t++++++ +++++++++++++++++++++++++n";

printf("t==1. Consulta por destino==n";

printf("t==2. Consulta por número de vuelo==n";

printf("t++++++++++++++++ +++++++++ +++++n";

printf("Por favor seleccione:";

scanf("%d",n;

printf("n ";//Formateando

switch(n

{

case1:mddchaxun(;

break;

caso2:hbhchaxun(;

romper;

default:romper;

}

}

voidmddchaxun (//Consulta por destino

{

charc[15];

intm;

Linklistp=L;

printf("tIngrese el destino a consultar:";

gets(c;

gets(c;//El motivo es el mismo que el anterior

hacer{

p=p-next;

if(p

{

m=strcmpi((* p.zhongdianzhai,c;//Si ==, entonces m=0;

if(m==0

{

printf("tinformación de vuelo :n";

printf("número de vuelo:%sn",p-hangbanhao;

printf("número de vuelo:%sn",p-feijihao;

printf("no vuela

Hora: semana%dn",p-feixingriqi;

printf("t votos restantes:%dn",p-yupiao;

}

}

else

{//Si no coincide, hazlo

printf("Lo sentimos, no hay ningún destino que estés buscando: nn"; m =0 ;

}

} while(m!=0;

}

voidhbhchaxun(//Consulta por destino

{

charc[15];

intm;

Linklistp=L;

printf("tPor favor, introduzca Número de vuelo a consultar: ";

gets(c;gets(c;printf("n";

do{

p=p-next ;

if(p

{

m=strcmpi((*p.hangbanhao,c;//Si ==, entonces m=0; aquí (*p. tiene el mismo efecto que p-

if(m==0

{

printf("tflight information:n" ;

printf("número de vuelo:%sn",p-hangbanhao;

printf("número de vuelo:%sn",p-feijihao;

printf(" t tiempo de vuelo: semana %dn",p-feixingriqi;

printf("t boletos restantes: %dnn",p-yupiao;

}

}

else

{//Si no coincide, hazlo

printf("Lo sentimos, no tenemos el número de vuelo en el que estás buscando :n";m=0;

}

}mientras(m!=0;

}

voiddingpiaogongnen. (// ************************************************* **** *************Función de reserva de entradas

{

Linklistp=L;//L de tipo Linklist apunta al encabezado de la lista enlazada

Yidingkehu*h=H,*h1;//Yidingkehu define el nodo del cliente para facilitar la inserción y eliminación

linkQueueq=Q;//tipo linkQueue para facilitar la inserción y eliminación

charc[15];

intm=1,piao,ydpiao=0,yd=0,n;//

gets(c;

printf("Ingrese el nombre del terminal:";gets(c;printf("n";

p=L-next;

if(p {

do{//Comprueba si este vuelo está disponible

if(!p

{

printf("Lo siento, hay no hay nada que estés buscando Vuelo: nn";

gotoloop1;

}

m=strcmpi(p-zhongdianzhai,c;

if(m= =0

{

printf("Información de vuelo: n";

printf("Número de vuelo: %sn",p -hangbanhao;

printf("Número de avión: %sn",p-feijihao;

printf("Tiempo de vuelo: semana %dn",p-feixingriqi;

printf(" Votos restantes:%dn",p-yupiao;}

elsep=p-next;

} while(m!=0;

si(m==

0

{

do{

printf("nIngrese la cantidad de boletos que desea ordenar:";scanf("%d",piao;

p>

if(piao=p-yupiao

{

h=p-yiding;

if(h

{

h1=h;

h=h-next1;

h=(structYidingkehu*malloc(sizeof(Yidingkehu;

printf("Por favor ingrese su nombre:";

gets(h-name;gets(h-name;

h-dingpiaoshu=piao;

h-next1=h1-next1;

h1-next1=h;

p-yupiao=p-yupiao-piao;

printf( "Reserva exitosa: n";m=2;

}

}

else

{printf("Votos restantes: % dn ",p-yupiao;

printf("Lo sentimos, no quedan suficientes %d entradas para completar la reserva nn",p-yupiao;

printf("¿Tienes ¿Quieres volver a reservar?n";

printf("Si es necesario, ingresa 1; de lo contrario, presiona 2 para reservar, ingresa 3:";

scanf( "%d",m;

printf("n";

if(m==3gotoloop3;

}

} while(m==1;

}

}

elseif(!p{

loop3:structWeidingkehu*q3;

printf("Lo sentimos, los boletos de avión se han agotado";

q.front=p-yudingqueue;

if(q.front==q .rearprintf("Nadie ha reservado boletos, ¿quieres reservar? n";

elseif(q.front!=q.rearprintf("Alguien ha reservado un boleto, ¿quieres reservar? n";

printf("Por favor ingrese 1 para reservar De lo contrario ingrese 2:";

scanf("%d",n;

printf(" n";

if(n==1

p>

{

q3=(Qptrmalloc(sizeof(Weidingkehu;

printf ("Ingrese su nombre";gets(q3-name;gets(q3-name ;//q3 no puede señalar el nombre

printf("Ingrese el número de boletos para reservar";scanf(" %d",q3-yudingpiao;

q3-next2=NULL;

p>

q.rear-next2=q3;

q.rear=q3 ;

printf("¡Has reservado!n";

}

}

loop1:;

}

voidtuipiaogongnen(//************ ************************* ************************** **Función de reembolso

{

Linklistp=L;

Yidingkehu*h=H,*h1,*h2;

linkQueueq =Q;

charc[15],nombre1[15];

intm=1,piao,n;//

gets(c;

p>

printf("Ingrese el número de vuelo:

";gets(c;

p=L;//-next;

if(p

{

hacer{/ /Utiliza do while para saber si este vuelo está disponible

if(!p

{//Si llegas al final de la tabla y no hay ninguna coincidencia, ve a y luego ingresa el número de vuelo

printf("nLo sentimos, no hay ningún vuelo que esté buscando: n";

gotoloop1;

}

m=strcmpi(p-hangbanhao, c;//Si coincide, m=0

if(m==0

{

printf(" t información de vuelo: n";

printf("Número de vuelo: %sn",p-hangbanhao;

printf("Número de vuelo: %sn",p-feijihao;

printf( "Tiempo de vuelo: Semana %dn",p-feixingriqi;

printf("Billetes restantes: %dn",p-yupiao;}

elsep=p-next;

} while(m!=0;

if(m==0

{//Si lo encuentras, ven y reembolsarle

do{

h=p-yiding;

if(h

{

printf("Ingrese su nombre:";

gets(name1;//gets(name1;

printf("Ingrese la cantidad de boletos que solicitó:";

scanf(" %d",piao;

printf("n";

h1=h;

h=h-next1 ;

if(strcmpi(h-name,name1==0h-dingpiaoshu==piao//Si el nombre es igual al número de boletos reservados, cancele la reserva por él

{

p -yupiao+=h-dingpiaoshu;

h2=h;

h1-next1=h-next1;

free(h2;

printf("Has cancelado la reserva correctamente: nn";

structWeidingkehu*q3;

q.front=p-yudingqueue;

if(q. front==q.rear{printf("Nadie reservó entradas: n";gotoloop1;}

if((p-yupiao=(q.front- next2-yudingpiao

{

h2=(structYidingkehu*malloc(sizeof(Yidingkehu;

strcpy(h2-name,q.front-next2-name;

h2-dingpiaoshu =q.front-next2-yudingpiao;

n=p-yupiao-q.front-next2-yudingpiao;

p-yupiao =n;

q3=Q.front-next2;//

q.front-next2=q3-next2;//Estas dos declaraciones se utilizan para eliminar el nodo

if(q.rear== q3q.rear=q.front;

free(q3;//Liberar espacio

printf("El equipo de la cadena fue eliminado exitosamente n";

h2- next1=h-next1;

h-next1=h2;//Insértalo en la lista de clientes reservados

printf( "Billetes reservados correctamente para el cliente reservado n" ;

}

else

printf("¡No quedan suficientes boletos para reservar boletos para los clientes que reservan! n";

}

else

{//Si no se encuentra, el sistema No hay información sobre esta persona, le pregunta si desea buscar nuevamente

printf("Lo sentimos, nadie ha reservado un boleto para este vuelo o usted no ha reservado un boleto para este vuelo";

printf( "¿Quieres buscar nuevamente y cancelar la reserva? n";

printf("Si es necesario, ingresa 1, de lo contrario presiona 2";

scanf("%d",m;

printf("n";

}

}

}mientras(m ==1;

}

}

loop1:;

}

Prácticas en estructura de datos lenguaje C sistema de emisión de boletos aéreos

El código es el siguiente: (Pero no es exactamente el mismo que su requisito, ¡cámbielo!

#includestdio.h

#includestring.h

#includestdlib. h

#defineNAME_MAX100//El número más largo de caracteres en el nombre del libro

#defineWRITER_MAX100//El número más largo de el nombre del autor

#definePUB_MAX100//El número más largo de unidades de publicación Nombre

#defineTIME100//Tiempo de publicación

typedefstructbooks

{

intloading;

charname[NAME_MAX] ;

charwriter[WRITER_MAX];

intidentify;

charpub [PUB_MAX];

chartime[TIME];

intprice;

structbooks*next;

}libro;

//El nodo principal no almacena información

voidInit( book*head

{

head-next=NULL;

}

//Imprime algunas palabras de bienvenida y cosas por el estilo.

voidwelcome(

{

printf("******Bienvenido a la biblioteca @@@@, jaja****** * *n";

printf("nn";

printf("1: Función de entrada de información del libro n";

printf("2: Información del libro La función de navegación muestra toda la información del libro";

printf("3: Función de consulta de información del libro: consulta por título del libro y consulta por nombre del autor";

printf ("4 : Para modificar y eliminar información del libro, se pueden modificar y eliminar los datos correspondientes";

}

//Mostrar información sobre un libro

voidprint_the_book(book *p1

{

printf("número de carga:%dn",p1-carga;

printf("nombre:";

puts(p1-nombre;

printf("n";

printf("escritor:";

puts(p1-escritor;

printf("n";

printf("identificar:%d***n",p1-identificar;

printf("n ";

printf("pub:";

puts(p1-pub;

printf("n";

printf ("hora:" ;

puts(p1-time;

printf("n";

printf("precio:%d***n ",p1-precio ;

}

intchongfu(libro*cabeza,libro*p

{

libro*p1=cabeza -siguiente;

inta=0;

mientras(p1!=NULL

{

if(strcmp(p1-nombre, p-nombre== 0

{

if(strcmp(p1-escritor,p-escritor==0