...collaborate on

Trabalho Prático III

TPs: Gestor Bibliográfico; Agência Matrimonial.

Objectivos e Organização

Este trabalho prático tem como principais objectivos:

  • familiarização com tipos de dados dinâmicos;
  • armazenamento de informação em memória secundária;
  • incrementar os cuidados na validação dos dados introduzidos pelo utilizador;
  • introduzir o aluno ao desenvolvimento de sistemas de informação.

Dos vários enunciados apresentados deverá escolher apenas um que deverá resolver e defender. Se tiver tempo, invista na qualidade melhorando e acrescentando funcionalidades extra à sua aplicação (use a imaginação).

O relatório a elaborar, deve ser claro e sucinto e, além do respectivo enunciado e da descrição do problema, deverá conter exemplos de utilização e o código do programa.

Como foi dito, o relatório terá de ser escrito em LaTeX? sugerindo-se que adoptem o esqueleto proposto que pode ser descarregado a partir da página principal dos trabalhos práticos.


Enunciados

Gestor Bibliográfico

Neste projecto, pretende-se que o aluno desenvolva uma plataforma de suporte a uma base de dados bibliográfica tipo BibTeX? , ou seja, o sistema de informação será composto por uma lista de registos. Um registo destes pode ser de um de vários tipos. Os vários tipos e a respectiva estrutura descrevem-se a seguir.

article
artigo publicado em revista; tem os seguintes campos obrigatórios: lista de autores, título, nome da revista e ano; e tem os seguintes campos opcionais: volume, número, páginas, mês e nota descritiva.
book
campos obrigatótios: lista de autores ou de editores, título, editora, ano; campos opcionais: volume ou número, série, edição, mês e nota descritiva.
inbook
capítulo de um livro; campos obrigatórios: lista de autores ou de editores, título, capítulo ou páginas, editora, ano; campos opcionais: volume ou número, série, edição, mês e nota descritiva.
inproceedings
artigo publicado nas actas de uma conferência; campos obrigatórios: lista de autores, título, título das actas, ano; campos opcionais: editor, volume ou número, série, páginas, edição, mês e nota descritiva.
masterthesis
tese de mestrado; campos obrigatórios: autor, título, instituição, ano; campos opcionais: mês e nota descritiva.
misc
Este tipo deverá ser usado para todas as entradas que não sejam classificáveis num dos outros tipos, por exemplo referências da Internet; campos obrigatórios: nenhum; campos opcionais: lista de autores, título, meio de publicação, mês, ano e nota descritiva.
phdthesis
tese de doutoramento; campos obrigatórios: autor, título, instituição, ano; campos opcionais: mês e nota descritiva.
proceedings
Actas de Conferência; campos obrigatórios: título e ano; campos opcionais: lista de editores, volume ou número, série, editora, nota descritiva, mês e organização.
techreport
Relatório Técnico; campos obrigatórios: lista de autores, título, instituição e ano; campos opcionais: número, mês e nota descritiva.

A aplicação a desenvolver deverá ter os seguintes requisitos:

  • No incício de uma sessão, o programa deverá carregar os registos bibliográficos de um ficheiro chamado "BIB.DAT".
  • No fim da sessão, os registos deverão ser gravados no mesmo ficheiro para que o estado da plicação seja preservado entre sessões.
  • A aplicação deverá disponibilizar as seguintes operações ao utilizador:
    1. Inserção de um registo.
    2. Consulta de um registo (por chave de citação)
    3. Remoção de um registo (por chave de citação), a aplicação deverá mostrar o registo e pedir uma confirmação ao utilizador antes do registo ser removido.
    4. Listagem (por ordem alfabética de título).
    5. Listagem (por ordem alfabética de autor), para cada autor apresenta a sua lista de publicações ordenadas alfabeticamente por título (esta operação é um extra).
    6. Listagem (por ordem alfabética de título em que estes estão agrupados por tipo).
    7. Gravar, em qualquer momento o utilizador poderá solicitar a gravação dos dados em memória para um determinado ficheiro (diferente do "BIB.DAT").
    8. Carregar, permite recuperar um estado anterior da aplicação (de um ficheiro qualquer fornecido pelo utilizador mas que obedeça à estrutura estabelecida para o repositório).
    9. Outras operações que a sua imaginação puder fornecer...

Sugere-se que comece por desenvolver a aplicação nestas etapas:

  1. Decidir quais as estruturas de dados que irão suportar a informação em memória central (listas ligadas, esquemas de ordenação ...).
  2. Definição dos tipos de dados
  3. Implementação das funções para manipulação das estruturas de dados
  4. Implementação das funções de IO (apresentação e interacção com o utilizador)

Divirta-se ...


Agência Matrimonial

Neste projecto, pretende-se que o aluno desenvolva uma aplicação para gerir uma agência matrimonial/encontros. A aplicação irá tentar usar uma função de semelhança parametrizada pelo utilizador para encontrar uma pessoa ou lista de pessoas compatíveis com um determinado perfil. Para isso, é necessário criar uma base de dados de indívíduos onde ficará registado o perfil de cada indivíduo. O sistema terá dois modos de funcionamento: um para o administrador e outro para o utilizador normal. Mais à frente será descrito em mais pormenor o comportamento de cada um.

Um indivíduo é registado na base de dados com os seguintes campos de informação:

Código
o sistema deverá atribuir automaticamente um código a cada indivíduo que se regista; este código serve para identificar univocamente o indivíduo noutras operações.
Nome
o indivíduo é registado com o seu nome verdadeiro, opcionalmente poderá adoptar um pseudónimo que será visualizado pelo utilizador em vez do seu nome.
Sexo
Masculino ou Feminino. Data de Nascimento: data em formato ANSI: aaaa-mm-dd (a validação é um extra). Lista de Contactos: morada, email, telefone, telemóvel, ... São todos opcionais tendo, no entanto, que ser preenchido pelo menos um (a lista não pode ser vazia).
Profissão
lista de actividades que desenvolve profissionalmente.
Habilitações
lista de cursos e graus que detem. Lista de Preferências/Hábitos: actividades desportivas, hábitos tabágicos, hábitos culturais (música, leitura, teatro, cinema, ...), hábitos noturnos (pub, disco, ...), hábitos televisivos (informação, filmes, telenovelas, concursos, ...).
Objectivos
Procura um Amigo, Encontro, Compromisso com vista a casamento, ...

No acto do registo, o utente deverá ter a possibilidade de indicar, para cada item de informação, se este é visível para todos os utilizadores ou apenas para o administrador.

A aplicação a desenvolver deverá disponibilizar duas interfaces: a do administrador e a do utente.

Na interface do administrador deverão estar disponíveis as seguintes operações:

  1. Inserção de um indivíduo - o administrador poderá inserir indivíduos, por exemplo, durante as consultas.
  2. Remoção de um indivíduo (por código) - só o administrador poderá fazer remoções; esta operação deverá mostrar o registo que irá ser apagado e solicitar a confirmação, só então procederá à remoção efectiva.
  3. Consulta dos dados relativos a um indivíduo (por código) - esta operação deverá mostrar a informação completa de um registo.
  4. Listagem por ordem alfabética de nome - esta operação deverá apresentar o código, o nome e respectivo pseudónimo (se existir) de todos os indivíduos.
  5. Listagem por ordem cronológica de nascimento - esta operação deverá apresentar o código, o nome e a idade respectiva de cada indivíduo.
  6. Procurar perfil compatível - esta operação recebe como argumento o código de um indivíduo e, baseada numa outra função que entra em linha de conta com pesos e desvios dos vários parâmetros, dá uma lista de indivíduos ordenada do mais compatível para o menos compatível.
  7. Procurar perfil - esta operação é semelhante à anterior só a função que determina a semelhança é definida pelo utilizador; é apresentada uma interface que permite definir domínios de valores e pesos para cada parâmetro.
  8. Gravar - esta operação grava em ficheiro, "AGENCIA.DAT", o estado actual da Base de Dados.
  9. Carregar - esta operação permite num determinado momento carregar uma Base de Dados previamente gravado em ficheiro; antes de carregar a nova informação o utilizador deverá ser interrogado sobre se quer limpar a informação que existe em memória ou se quer fazer o "merge" da informação (esta funcionalidade é um extra).

Na interface do utilizador normal estão disponíveis as mesmas operações, à excepção da remoção, só que apenas serão mostrados os dados marcados como não confidenciais.

Se o utilizador da aplicação, administrador ou utente, nada indicar, a aplicação deverá sempre carregar a informação de "AGENCIA.DAT" no início e gravar a informação em "AGENCIA.DAT" antes de terminar.

Não tente fazer nenhum destes enunciados de uma só vez, faça-o incrementalmente e comece por definir as estruturas de dados e a operação de inserção.

Divirta-se

r2 - 02 May 2004 - 11:00:00 - JoseCarlosRamalho
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback
Syndicate this site RSSATOM