Jump to content

Gestor de BI's


nDray_Dz

Recommended Posts

Boas tardes.

Ora portanto, eu preciso de ajuda num trabalho de C, para final do semestre.

Até aqui tudo normal, não fosse eu e o resto do meu grupo percebermos pouco ou nada da linguagem em questão. Normalmente eu  até nem viria pedir ajuda, mas a verdade é que o tempo não é propriamente muito e as frequências abundam. 😉

Passando ao problema em questão:

(enunciado)

• aceitar um pedido de emissão de novo BI;

• aceitar um pedido de renovação de um BI;

• executar um pedido – neste caso, deverá:

            1. escolher o pedido mais antigo;

            2. se for nova emissão: validar (numa lista de cidadãos com BI) que não existe ninguém

          registado com o mesmo nome e data de nascimento. Em caso afirmativo, deve emitir

          uma mensagem de erro adequada. Caso contrário, o sistema indicará novo número de

          BI e efectuará o registo do ”novo cidadão”na sua lista;

            3. se for uma renovação: o sistema irá verificar se, de facto, já existe BI e, em caso afirmativo,

          deve registar (mais) uma renovação de BI; caso não exista, deve assinalar o erro e

          pedir para efectuar nova emissão de BI;

• listar os pedidos pendentes ordenados do mais recente para o mais antigo;

• contar quantos pedidos estão pendentes e qual a data do mais antigo;

• permitir a alteração da fila de pedidos com um pedido urgente;

• . . .

  As listas (de pedidos e de cidadãos já registados) deverão ser implementadas usando estruturas

dinâmicas de dados adequadas e serão, na abertura de cada dia, recolhidas de ficheiros FIXOS e,

no final de cada dia, armazenadas nesses mesmos ficheiros.

  Deverá ser disponibilizado um menu interactivo para efectuar (pelo menos) as operações acima

descritas e não esquecer que o programa deve apresentar testes de correcção (validação) dos dados

com mensagens de erro adequadas.

  As listas deverão ser implementadas usando estruturas dinâmicas de dados adequadas.

O problema aqui é mesmo a falta de tempo e ninguém ter a menor ideia de por onde pegar para começar o programa. Como é obvio não estou a pedir que façam o trabalho por nós. Só queremos assim um empurrãozinho pelo que vos peço era se me podiam ajudar a definir uma estratégia ou "pseudo-código" para o programa de forma a que pelo menos nos possamos orientar.  ?

Obrigado

Link to comment
Share on other sites

Se eu tivesse de fazer esse trabalho começava por definir o tipo abstracto de dados (ADT) que precisava para guardar a informação. Depois adicionava-lhe a funcionalidade de escrever e ler a estrutura de memória para ficheiro.

Depois disso era sempre a andar.

Para este caso parece-me que um ADT de 1ª ordem é o ideal, ou seja um ADT que seja possível criar várias instâncias, já que vão precisar de um para os BI's já emitidos e outro para os pedidos pendentes de emissão e renovação de BI. E talvez outro para os pedidos urgentes, embora isto dependa da estratégia, já que podem estar todos misturados.

Para a implementação do ADT usava uma lista duplamente ligada, já que parece ser o ideal, porque da logo para todas as operações sem complicar muito.

Se não souberem como se fazem essas estruturas de dados há muita informação por ai, de qualquer forma deixo um link para uns acetatos que podem ajudar.

http://web.ist.utl.pt/fabio.ferreira/material/iaed/acetatos.pdf

Boa sorte.

Por TheDark: não percebi porque não colocaste o link normalmente

Link to comment
Share on other sites

Para a fila acho que um vector ou adicionar um id (um int que ia sendo incrementado ao longo dos pedidos todos) já resolvia o problema da data (acho que com uma função existente na biblioteca time.h também dá mas não me recordo da função) e da ordem crescente de pedidos.

A fila ser alterada era mostrando uma lista dos pedidos e ter a possiblidade de alterar esse tal id.

Saber se existe já pessoal com esse nome era fazer um

case(se já existi-se) não deixava registar; else: deixava registar ||||  Para saber se já existia era fazer uma pesquisa no ficheiro caso usem ficheiros ou no programa caso sejam dados voláteis.

Para a renovaçao de BI's acho que quando fosses a inserir um BI novo podias acrescentar à mão a data do BI logo quando fosse a renovar era só alterar essa data.

Épá ... Eu não sei nem soube explicar muito bem mas pergunta que eu ajudo.

Link to comment
Share on other sites

Boas.

Primeira dúvida: Já conseguimos criar diferentes estruturas. Uma para os bi's que já existem e outra para os pedidos. Agora os problemas...

Como fazer para distinguir entre pedidos de emissao e renovaçao de bi's?

E já agora, como fazer com que o programa copie os dados de uma estrutura para a outra?

Mais para a frente iremos ter outro problema, mas vou colocá-lo já aqui para ficar tratado. A nossa professora ainda não nos falou em como manipular ficheiros, pelo gostaríamos que nos pudessem indicar como fazer para carregar os dados para a memória ao abrir o programa e gravar as alterações ao fechá-lo...isto se for possível.

cumps 😄

p.s.: Vimos os acetatos sobre as listas duplamente ligadas, mas sinceramente não conseguimos perceber muito bem  😄

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.