Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

MRMC

Sistema de bilhetes de cinema

Mensagens Recomendadas

MRMC

Boa noite,

tenho um projecto para realizar sobre um sistema de bilhetes de cinema, e gostava de saber se me podem dar dicas para o realizar, e corrigir alguns erros que eu não consiga detectar.

I. Requisitos Funcionais Base

O sistema a desenvolver deve permitir gerir a seguinte informação: Ficha de Sala, incluindo o nome, o número, a descrição, o número de filas e o número de lugares por cada fila; Ficha de Espectáculo, incluindo o nome, o número, a descrição, a data inicial, a sessão (manhã, tarde, noite) e a data final; Ficha de Espectador, incluindo, o nome, a identificação e o contacto; Ficha da gestão das reservas, incluindo o espectáculo, a data, a sala, a sessão, o estado (Livre ou Reservado), a fila, o número do lugar, o espectador.

Deve assim permitir: a criação de salas, espectáculos, reservas e espectadores; a remoção de salas, espectáculos, reservas e espectadores; a alteração de salas, espectáculos, reservas e espectadores; listar salas, espectáculos, reservas e espectadores;

O sistema deve permitir ainda fazer as seguintes consultas: Pesquisar salas por nome e número; Pesquisar espectáculos por nome e número;

Pesquisar os espectáculos e salas que um dado espectador reservou numa determinada data; Pesquisar os espectáculos de uma dada sala ou sessão numa determinada data; Pesquisar filas e lugares livres de uma dada sala, sessão e/ou espectáculo numa determinada data; Pesquisar número de lugares vagos de uma dada sala, sessão e espectáculo numa determinada data.

Atenção: Todos os dados terão que ser guardados de forma permanente em ficheiros, de forma que duas execuções do programa não impliquem perda de informação. O programa deve ler informação desses ficheiros no inicio da sua execução e salvaguardar todos os dados quando termina. Durante a execução os dados devem estar obrigatoriamente guardados em memória sob a forma de vectores de estruturas.

I. Requisitos Funcionais Avançados

Os requisitos técnicos avançados incluem os seguintes: A garantia da consistência das referências entre os vários tipos de ficha. Por exemplo: garantir que a sala de um espectáculo existe efectivamente e arranjar mecânismos para resolver o impacto da remoção de um dado espectador nas restantes fichas; Garantir a consistência das calendarizações. Por exemplo: não permitir sobreposição de espectáculos para a mesma sala e sessão, não permitir violações relativamente às datas dos espectáculos, entre outros itens; Reservas de grupos; Concretizar as Reservas em Vendas.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
MRMC

Sim, isso eu sei. Estava-me a referir à organização do programa, o que utilizar em alguns casos, e o que devo utilizar em outros.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Localhost

Acho que isso se divide em salas e espectadores, li o enunciado por alto. Tens de dividir o teu programa nisso e começar a pensar. A parte de pesquisas, adição de dados, remoção é simples. Depois vem a parte das reservas em que deves ter alguns pormenores como por exemplo, se passar a data da reserva tens de retirar a reserva, etc.

Eu dividia isso em duas estruturas, uma para as salas e outra para os espectadores, isto para as funções básicas. Terias ainda um sistema de reservas, podia por exemplo, dentro da estrutura teres uma variável que indicava se era uma reserva ou não. E depois verificavas datas e tudo. Mas tens de começar a fazer alguma coisa senão nunca vais sair de suposições.


here since 2009

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
MRMC

o projecto tem de ser entregue em junho (final do mês), mas o mais tardar esta semana vou começar a fazer, já que vou estar livre de frequências.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Triton
Durante a execução os dados devem estar obrigatoriamente guardados em memória sob a forma de vectores de estruturas.

Bem, primeiro cria uma estrutura diferente para cada tipo que eles querem (Sala, Espectador, etc). Depois usas vectores para guardar as estruturas. Depois é só criares meia dúzia de funções que peguem em cada estrutura para ler ou escrever a informação num ficheiro.


<3 life

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
anagrama

Li na diagonal, mas cria uma estrutura para sala, espectador, etc, obedecendo aos campos que te indicam. Sobre eles, deverão estar preparadas operações de inserção, eliminação, consulta, ordenação, listagem. Terás de trabalhar com ficheiros para te guardarem permanentemente a informação e arrays para manipulares essa informação, armazená-la em memória e poder tranferi-la, posteriormente para ficheiros que criaste.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
MRMC

Obrigado pela ajuda. Ainda não comecei o projecto porque tive uns percalços positivos que me fizeram atrasar o inicio do programa. Na próxima semana, direi algo em principio.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
MRMC

Tenho uma dúvida. Eu criei já várias estruturas, mas agora tenho algumas dúvidas em como posso criar uma ligação entre uma variável, em 2 estruturas diferentes.

Deixo aqui um exemplo:

struct dados{
char nome[50];
int bi;
};

struct dados_copia{
int bi;
int abc;
};

Como podem ver, a variável "bi" está repetida nas 2 estruturas. O objectivo é que a variável "bi" que está na estrutura "dados_copia", tome todos os valores da variável da estrutura "dados". Alguém me pode ajudar?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Localhost

As estruturas são diferentes, não podes copiar dados de tipos diferentes, ou seja, não podes fazer uma "cópia" de coisas diferentes.


here since 2009

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
MRMC

As estruturas são diferentes, não podes copiar dados de tipos diferentes, ou seja, não podes fazer uma "cópia" de coisas diferentes.

Mesmo sendo as várias do mesmo tipo (neste caso, "int")?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Localhost

Não percebi bem.

Tu tens de perceber que se tens numa estrutura uma string não podes simplesmente "copiar" essa string para um inteiro.


here since 2009

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
MRMC

Não percebi bem.

Tu tens de perceber que se tens numa estrutura uma string não podes simplesmente "copiar" essa string para um inteiro.

O que eu tava a tentar dizer era que recebendo um número do utilizador para a variável "bi" da estrutura dados, se eu conseguia depois copiar esse tal número para a variável "bi", mas da estrutura dados_copia, sendo as variáveis do mesmo tipo, mas de estruturas diferentes. Não existe maneira de associar esses dados um ao outro?

Indo buscar um exemplo de outro programa, como se fosse uma chave externa (Acess).

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
TheDark

Também não sei se percebi bem qual é a dúvida, mas pela última frase, diria que a melhor solução, em vez de teres um campo bi na estrutura dados_copia, seria teres um apontador para a estrutura dados correspondente.


Desaparecido.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
MRMC

Também não sei se percebi bem qual é a dúvida, mas pela última frase, diria que a melhor solução, em vez de teres um campo bi na estrutura dados_copia, seria teres um apontador para a estrutura dados correspondente.

struct dados_pessoais Dados_Pessoais;

Assim?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Localhost

Dentro da estrutura "original" terias um ponteiro para a sua cópia.

Ou seja:

struct Original {
  int blah;
  int blabla;
  struct copia *pt;
}orig;

Segundo o que percebi a tua dúvida era algo como isto, além de que ainda não percebi muito bem o que queres fazer.


here since 2009

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
MRMC

Dentro da estrutura "original" terias um ponteiro para a sua cópia.

Ou seja:

struct Original {
  int blah;
  int blabla;
  struct copia *pt;
}orig;

Segundo o que percebi a tua dúvida era algo como isto, além de que ainda não percebi muito bem o que queres fazer.

Sim era isso. Dei este exemplo geral, e agora é que vou adaptar às estruturas que tenho. Aliás, esta dúvida surgiu porque quando se for fazer uma reserva de bilhetes, aparecerá um número correspondente a cada pessoa, para diferenciar quem realizou as várias reservas.

Onde devo colocar o nome da estrutura cópia nesse apontador?

struct dados_copia *pt

Assim?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.