Alguem que me diga se as estruturas que eu defeni estao bem
Pretende-se desenvolver uma aplicação para auxiliar um funcionário na gestão de uma agência de viagens. A aplicação deverá manter informação sobre os clientes e as suas viagens. A agência possui uma determinada oferta de viagens (lista de destinos e data) e cada cliente pode adquirir uma (ou mais) viagem, sendo-lhe atribuído um lugar na mesma, ou colocar-se em fila de espera, caso não haja lugares disponíveis nesse momento. Dados do cliente a guardar: nome, n.º de cartão de cidadão, viagens adquiridas, e viagens para as quais está em fila de espera. A aplicação deve permitir realizar de forma interativa, as seguintes operações: • adquirir uma viagem – o cliente é colocado numa lista de clientes que adquiriram essa viagem (de acordo com a data e hora de compra); • colocar em fila de espera para uma viagem – o cliente é colocado numa fila de espera para viagem de acordo com a data e hora do pedido (a colocação em fila de espera também poderá ser feita de forma automática, se ao adquirir uma viagem não houver lugares livres); • cancelar uma viagem – eliminar um cliente de uma viagem (deverá ser promovido para a lista de clientes que adquiriram a viagem o primeiro cliente em fila de espera para essa viagem); • cancelar pedido em fila de espera – retirar um cliente em fila de espera para uma viagem. • para um dado destino, listar todas as viagens – listar todas as viagens para um dado destino (podem haver várias datas) – as mais recentes primeiro; • para um dado cliente, listar todas as viagens adquiridas – as mais antigas primeiro; • listar clientes – listar todos os clientes que adquiriram ou estão em espera para viagens, sem repetições;
codigo
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <string.h>
#define max 50
#define MAX_STACK 100
typedef struct{
int lugares;
int hora;
int dia;
int mes;
int ano;
char *destino[max];
}Viagem;
typedef struct{
char *nome[max];
int cc;
int lugar;
Viagem aq;
Viagem es;
}Cliente;
typedef struct lnode *List;
typedef struct lnode{
Cliente info;
List next;
}List_node;
typedef struct node_type {
Cliente info;
struct node_type *next;
}NODE_TYPE;
typedef NODE_TYPE *NODE_PTR;
typedef struct {
NODE_TYPE *rear;
NODE_TYPE *front;
}Q_TYPE;
void create_queue(void);
void putin_queue(void);
void dequeue(void);
void ListarViagensCliente(void);
void ListarViagensDest(void);
void ListarClientes(void);
void AdquirViagem(void);
void ColocarFilaEspera(void);
void CancelarViagem(void);
void CancelarFilaEspera(void);
void Sair(void);
int main()
{
int opcao;
do{
system("cls");
printf(" Agencia de viagens \n");
printf("[1] - Listar todas as viagens por cliente\n\n");
printf("[2] - Listar todas as viagens por destino\n\n");
printf("[3] - Listar todos os clientes\n\n");
printf("[4] - Adquirir uma viagem\n\n");
printf("[5] - Colocar em fila de espera\n\n");
printf("[6] - Cancelar uma viagem\n\n");
printf("[7] - Cancelar pedido em fila de espera\n\n");
printf("[8] - Sair\n\n");
printf("Qual opcao deseja: ");
setbuf(stdin,NULL);
scanf("%d",&opcao);
switch(opcao){
case 1:
system("cls");
break;
case 2:
system("cls");
break;
case 3:
system("cls");
break;
case 4:
system("cls");
AdquirViagem();
break;
case 5:
system ("cls");
break;
case 6:
system("cls");
break;
case 7:
system("cls");
break;
case 8:
system("cls");
//Sair();
break;
default :
printf("\n\n\t\t\tOpção inválida O.o \n \t\t\tTente novamente...");
}
} while((opcao !=8));
void insert_last_lista(List lista,Cliente n){
List no=(List)malloc(sizeof(List_node));
while(lista->next!=NULL){
lista=lista->next;
}
assert(no);
no->info=n;
no->next=lista->next;
lista->next=no;
}
void enqueue(Q_TYPE *queue,Cliente n){
NODE_PTR temp_ptr;
temp_ptr = (NODE_PTR) malloc (sizeof (NODE_TYPE));
if (temp_ptr != NULL){
temp_ptr->info = n;
temp_ptr->next = NULL;
if (empty_queue (queue) == 1)
queue->front = temp_ptr;
else queue->rear->next = temp_ptr;
queue->rear = temp_ptr;
}
}
void AdquirViagem(void){
char cod[max];
printf("\nDigite o destino da viagem : ");
scanf("%s",cod);
setbuf(stdin,NULL);
printf("\nDestino da viagem\n");
scanf("%s",&Viagem.destino);
setbuf(stdin,NULL);
printf("\nnome do cliente \n");
gets( Cliente.nome);
getch();
}
Pretende-se desenvolver uma aplicação para auxiliar um funcionário na gestão de uma agência de viagens. A aplicação deverá manter informação sobre os clientes e as suas viagens. A agência possui uma determinada oferta de viagens (lista de destinos e data) e cada cliente pode adquirir uma (ou mais) viagem, sendo-lhe atribuído um lugar na mesma, ou colocar-se em fila de espera, caso não haja lugares disponíveis nesse momento. Dados do cliente a guardar: nome, n.º de cartão de cidadão, viagens adquiridas, e viagens para as quais está em fila de espera. A aplicação deve permitir realizar de forma interativa, as seguintes operações: • adquirir uma viagem – o cliente é colocado numa lista de clientes que adquiriram essa viagem (de acordo com a data e hora de compra); • colocar em fila de espera para uma viagem – o cliente é colocado numa fila de espera para viagem de acordo com a data e hora do pedido (a colocação em fila de espera também poderá ser feita de forma automática, se ao adquirir uma viagem não houver lugares livres); • cancelar uma viagem – eliminar um cliente de uma viagem (deverá ser promovido para a lista de clientes que adquiriram a viagem o primeiro cliente em fila de espera para essa viagem); • cancelar pedido em fila de espera – retirar um cliente em fila de espera para uma viagem. • para um dado destino, listar todas as viagens – listar todas as viagens para um dado destino (podem haver várias datas) – as mais recentes primeiro; • para um dado cliente, listar todas as viagens adquiridas – as mais antigas primeiro; • listar clientes – listar todos os clientes que adquiriram ou estão em espera para viagens, sem repetições;
codigo
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <string.h>
#define max 50
#define MAX_STACK 100
typedef struct{
int lugares;
int hora;
int dia;
int mes;
int ano;
char *destino[max];
}Viagem;
typedef struct{
char *nome[max];
int cc;
int lugar;
Viagem aq;
Viagem es;
}Cliente;
typedef struct lnode *List;
typedef struct lnode{
Cliente info;
List next;
}List_node;
typedef struct node_type {
Cliente info;
struct node_type *next;
}NODE_TYPE;
typedef NODE_TYPE *NODE_PTR;
typedef struct {
NODE_TYPE *rear;
NODE_TYPE *front;
}Q_TYPE;
void create_queue(void);
void putin_queue(void);
void dequeue(void);
void ListarViagensCliente(void);
void ListarViagensDest(void);
void ListarClientes(void);
void AdquirViagem(void);
void ColocarFilaEspera(void);
void CancelarViagem(void);
void CancelarFilaEspera(void);
void Sair(void);
int main()
{
int opcao;
do{
system("cls");
printf(" Agencia de viagens \n");
printf("[1] - Listar todas as viagens por cliente\n\n");
printf("[2] - Listar todas as viagens por destino\n\n");
printf("[3] - Listar todos os clientes\n\n");
printf("[4] - Adquirir uma viagem\n\n");
printf("[5] - Colocar em fila de espera\n\n");
printf("[6] - Cancelar uma viagem\n\n");
printf("[7] - Cancelar pedido em fila de espera\n\n");
printf("[8] - Sair\n\n");
printf("Qual opcao deseja: ");
setbuf(stdin,NULL);
scanf("%d",&opcao);
switch(opcao){
case 1:
system("cls");
break;
case 2:
system("cls");
break;
case 3:
system("cls");
break;
case 4:
system("cls");
AdquirViagem();
break;
case 5:
system ("cls");
break;
case 6:
system("cls");
break;
case 7:
system("cls");
break;
case 8:
system("cls");
//Sair();
break;
default :
printf("\n\n\t\t\tOpção inválida O.o \n \t\t\tTente novamente...");
}
} while((opcao !=8));
void insert_last_lista(List lista,Cliente n){
List no=(List)malloc(sizeof(List_node));
while(lista->next!=NULL){
lista=lista->next;
}
assert(no);
no->info=n;
no->next=lista->next;
lista->next=no;
}
void enqueue(Q_TYPE *queue,Cliente n){
NODE_PTR temp_ptr;
temp_ptr = (NODE_PTR) malloc (sizeof (NODE_TYPE));
if (temp_ptr != NULL){
temp_ptr->info = n;
temp_ptr->next = NULL;
if (empty_queue (queue) == 1)
queue->front = temp_ptr;
else queue->rear->next = temp_ptr;
queue->rear = temp_ptr;
}
}
void AdquirViagem(void){
char cod[max];
printf("\nDigite o destino da viagem : ");
scanf("%s",cod);
setbuf(stdin,NULL);
printf("\nDestino da viagem\n");
scanf("%s",&Viagem.destino);
setbuf(stdin,NULL);
printf("\nnome do cliente \n");
gets( Cliente.nome);
getch();
}