Introdução à Programação



Documentos relacionados
Engenharia Informática Engenharia Electrotécnica e Computadores Programação Orientada por Objectos Projecto PlayCards

COMPUTAÇÃO e PROGRAMAÇÃO

Descrição da aplicação

Introdução à Programação B Licenciatura em Engenharia Informática. Enunciado do trabalho prático. Quem quer ser milionário? 20 de Dezembro de 2007

Facturação Guia do Utilizador

Arquimedes e Controle de Obra

Manual de Utilizador Plataforma de Estágios TIC.

Apresentação do VisualA

Bem-vindo ao nosso mundo virtual! Guia do Portal de Ensino à Distância da Get Training 1

II. Elementos a Apresentar

PROGRAMAÇÃO DE MICROPROCESSADORES 2011 / 2012

1. Condições netticket

RENT versão web. Manual de Utilizador para empresa Versão 2.0.0

Índice. Como aceder ao serviço de Certificação PME? Como efectuar uma operação de renovação da certificação?

Introdução ª Parte - Acesso à Aplicação Avaliação Online... 4 I Aceder à Aplicação Inscrição Acesso à Aplicação...

Ajuda do software OBELISK top2 V3.0

Enunciado do Projecto

Departamento de Engenharia de Electrónica e Telecomunicações e de Computadores Licenciatura em Engenharia Informática e de Computadores

XPontos. Manual de Instruções

Instruções para o participante no Curso de e-learning. Esquizofrenia Questões Aprofundadas

Relatório SHST

GESTÃO DE INFORMAÇÃO PESSOAL OUTLOOK (1)

JURINFOR JURIGEST Facturação e Mapas

GUIA DE PREENCHIMENTO DO FORMULÁRIO. GESTÃO DA MEDIDA 511 Assistência Técnica FEADER

Programação 2ºSemestre MEEC /2011. Programação 2º Semestre 2010/2011 Enunciado do projecto

Manual do Gestor da Informação do Sistema

UNIDADE 1 TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO

DotNetNuke. Gestão de Conteúdos. Módulos - II. Inserção de conteúdos nos módulos. Módulo de Text/HTML. Módulo de Sre-Notícias. Módulo de Sre-Formação

CANDIDATURAS PÓS-GRADUAÇÃO (2º CICLO, 3º CICLO, CFA) Mestrados, Doutoramentos, Especializações

Trabalhos Práticos. Programação II Curso: Engª Electrotécnica - Electrónica e Computadores

Curriculum DeGóis Guia de preenchimento do Curriculum Vitae (Informação mínima necessária)

MANTENHA-SE INFORMADO

Avaliação do Desempenho do. Pessoal Docente. Manual de Utilizador

Departamento de Informática

Interacção Humano-Computador 2012/2013-2º Semestre. Trabalho Prático nº2: Projecto e Desenvolvimento de uma Aplicação Interactiva

Manual do Utilizador. Manual do Utilizador Modelo10 no sisgep. Data última versão: Versão : 1.2. Data criação:

REGULAMENTO SOBRE INSCRIÇÕES, AVALIAÇÃO E PASSAGEM DE ANO (RIAPA)

8. Perguntas e Respostas

COMPUTAÇÃO e PROGRAMAÇÃO

MANUAL DE PROCEDIMENTOS PLATAFORMA DE INSCRIÇÕES ONLINE

Base de dados I. Uma base de dados é um simples repositório de informação relacionado com um determinado assunto ou finalidade

Catálogo Nacional de Compras Públicas. Manual de Fornecedores

Guia de Utilização Gestão de Mensagens Fornecedor Janeiro 2010 PLATAFORMA ELECTRÓNICA VORTAL

2ºCiclo (5º e 6º Anos de escolaridade) 3ºCiclo (7º e 8º Anos de escolaridade)

Manual Web.Newhotel Configuração NewHotel

Instruções de utilização do portal Web da Sony

Akropole Catequista. Todos os Ficheiros no Akropole Catequista trabalham com uma simples barra de edição, com 4 botões:

B2S SISTEMAS DE INFORMAÇÃO, LDA. RUA ARTILHARIA UM, Nº 67 3º FRT LISBOA TEL: FAX: B2S@B2S.

Engenharia de Software. Enunciado da Primeira Parte do Projecto

Módulo de registo de eventos. guia de utilização

CENTRO UNIVERSITÁRIO DE ENSINO SUPERIOR DO AMAZONAS - CIESA CENTRO DE PROCESSAMENTO DE DADOS CPD MANUAL DE UTILIZAÇÃO DO MOODLE 2.

Critérios Gerais de Avaliação

Sistema de formação e certificação de competências

Acessando o SVN. Soluções em Vendas Ninfa 2

REGULAMENTO DO ARQUIVO MUNICIPAL DE GOUVEIA. Capítulo 1. Constituição e Funções do Arquivo Municipal. Artigo 1º. Artigo 2º. Capítulo II Da Recolha

PAINEL DE ADMINISTRADOR

Manual de Transição TWT Sítio de Disciplina para Moodle 2.6

Manual de candidatura por via electrónica

Actualizaç ões e novas funcionalidades. Inoxnet. Versã o (c) EBASE Lda.

COORDENAÇÃO DE EAD MANUAL DE UTILIZAÇÃO DO MOODLE 2.6 PERFIL ALUNO. Versão 1.0

Rock In Rio - Lisboa

Introdução à Informática

CATÁLOGO DE APLICAÇÕES Apontamento Web

Guia do Utilizador. Cartão BPI Gold Empresas

Folha de Cálculo Introdução à Folha de Cálculo

Controle e execute tudo o que está relacionado com Pessoal e Salários com um software eficaz e preparado para completar todas as tarefas nesta área

exercícios - cap Construa uma máquina de estados que ilustre os requisitos de uma máquina multibanco (levantamento de dinheiro)

Guia rápido de criação e gestão de um espaço no SAPO Campus

Simulado Informática Concurso Correios - IDEAL INFO

O que esperar do SVE KIT INFORMATIVO PARTE 1 O QUE ESPERAR DO SVE. Programa Juventude em Acção

MIT072 Manual de Operação do Portal - Professores

GUIA PRÁTICO SUBSÍDIO DE DESEMPREGO - MONTANTE ÚNICO

MANUAL DE INSTRUÇÕES

Algoritmo. Iniciação do Sistema e Estimativa do consumo. Perfil do utilizador. Recolha de dados

CONTRATO a TERMO RESOLUTIVO Manual do Candidato

MANUAL DE UTILIZAÇÃO. EcclesiaSoft v.01

Capítulo 6 Movimentos

GIAE ONLINE GIAE ONLINE. J.P.M & Abreu, Lda.

Como produzir e publicar uma apresentação online dinâmica (Prezi)

4.1. UML Diagramas de casos de uso

Formador: Carlos Maia

Expansão de Imagem #2

BREVE INTRODUÇÃO AO SISTEMA DA GESTÃO DE DOCUMENTOS DA CÂMARA MUNICIPAL DE MACAU PROVISÓRIA

Manual do InCD Reader

Resolução de avarias de MPEG

Manual do utilizador da aplicação. MaisCondominio

Observação das aulas Algumas indicações para observar as aulas

Guia de Candidatura. Av. Duque D Ávila, Lisboa PORTUGAL Tel: Fax:

REGULAMENTO CONCURSO DE IDEIAS PARA LOGÓTIPO DA ASSOCIAÇAO DE ESTUDANTES DA ESCOLA SUPERIOR DE ENFERMAGEM S.JOÃO DE DEUS UNIVERSIDADE DE ÉVORA

Gestor de ligações Manual do Utilizador

CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO

Documento para Instituições Aderentes

Transcrição:

Engenharia Informática Engenharia Electrónica e Computadores Introdução à Programação I. Introdução O objectivo deste trabalho é desenvolver um programa para a gestão de marcações de bilhetes de avião na linguagem de programação JAVA. II. Descrição genérica O programa a desenvolver deve permitir adicionar, anular voos e listar todos os voos disponíveis. Cada voo é identificado por um código e pelos campos origem, destino, data (dia, mês e ano), hora de partida, duração, tipo do avião e capacidade (número máximo de passageiros). Além disso cada voo têm associado uma lista de marcações. Cada marcação é definida pelo número do lugar, primeiro e último nome e um número de telefone de contacto do passageiro. O programa deve permitir a marcação de passagens num determinado voo. O utilizador deve ter acesso às operações disponíveis através de uma sequência estruturada de menus.

III. Especificações do projecto Depois da descrição genérica do programa apresentam-se as especificações que o vosso projecto têm de obrigatoriamente cumprir. As especificações foram divididas em menús e ficheiros. Toda a formatação dos menús e diálogos a realizar com o utilizador deverá ter lugar em modo de texto simples. É proibida a utilização de interfaces gráficas. Os ficheiros podem ser gerados utilizando um editor de texto (p.e. notepad) ou o próprio programa. A. Menu Principal O programa deve possuir um menu principal com o seguinte formato: 1. Ajuda 2. Gestão de voos 3. Marcação de passagens 4. Saída do programa Introduza a opção pretendida: A opção 1 deverá listar no monitor um ficheiro de texto ajuda.txt com o manual de utilização do programa. Este manual de utilização deverá conter a seguinte informação: Objectivos Como utilizar o programa (incluindo o arranque) Descrição da saída dos resultados do programa Visita guiada das funcionalidades do programa B. Menu Gestão de Voos Quando o utilizador seleccionar a opção 2 deverá ser visualizado o seguinte menu: 1. Listagens dos voos existentes 2. Criação de voo 3. Anulação de voo 4. Menu Principal Introduza a opção pretendida:

A opção 1 deverá permitir a listagem de todos os voos existentes. Para cada voo o programa deverá imprimir no écran o código do voo, a origem e o destino em letras maiúsculas, a data de partida (no formato dia/mês/ano), a hora de partida e a duração do voo (no formato hora:minutos), o tipo de avião e a capacidade. Os voos devem estar ordenados pelo dia e hora de partida. Por exemplo: TP123 LIS MAD 23/11/2000 14:15 2:50 B737 160 TP123B LIS MAD 23/11/2000 14:30 5:20 B737 160 AF943 ORY JFK 27/12/2000 11:00 10:00 A340 250 A opção 2 deverá permitir a criação de um voo. Neste caso deve ser pedido ao utilizador todas as informações relativas ao voo em causa, nomeadamente: Código Origem Destino Data de partida (dia, mês e ano) Hora de partida Duração do voo Capacidade O código de voo deverá ser sempre diferente. É da responsabilidade do programa garantir que o código do voo é sempre diferente, isto é, caso o código de voo já exista o programa deverá pedir um novo código de voo. Para a origem e destino do voo deverão ser utilizados códigos de três letras (para alguns exemplos ver o anexo 1). Para a data, o programa deverá pedir ao utilizador separadamente o dia, mês e ano. Para a hora de partida e para a duração o programa deverá pedir ao utilizador separadamente a hora e os minutos. Todos os dados introduzidos pelo utilizador devem ser verificados se são válidos ou não. Caso não o sejam o programa deve pedir ao utilizador que introduza os dados errados novamente. Por exemplo, se o utilizador escrever 24 quando o programa pedir o mês, o programa deverá indicar que o mês não é válido e pedir o mês novamente.

A opção 3 deverá pedir ao utilizador o código do voo e eliminá-lo da lista de voos correspondentes. A opção 4 deverá retornar ao menu principal. C. Menu Gestão de Marcações Quando o utilizador seleccionar a opção 3 no menu principal deverá ser visualizado o seguinte menu: 1. Efectuar uma marcação 2. Listar todas as marcações de um dado voo 3. Anular uma marcação (implementação opcional) 4. Menu principal Introduza a opção pretendida: Para efectuar uma marcação (opção 1), o programa deverá pedir ao utilizador a origem, destino e data do voo. De seguida o programa, deverá listar todos os voos que correspondam ao trajecto especificado. Caso exista o trajecto pretendido, o utilizador deverá então seleccionar o voo pela introdução do código (de voo). Se este voo se encontrar com todos os lugares preenchidos (lotação esgotada) o programa deverá pedir ao utilizador que seleccione outro voo. De seguida, o programa deve pedir ao utilizador: Primeiro Nome Apelido Número de telefone Número do lugar pretendido Caso o lugar já esteja ocupado, o programa deverá informar esse facto ao utilizador e pedir outro numero de lugar. Quando o utilizador seleccionar a opção 2, o programa deverá pedir o código do voo e listar todos os passageiros (lugar, primeiro nome, apelido e n.º de telefone) que tenham feito uma marcação nesse voo. A lista de passageiros deve estar ordenada pelo número de lugar que ocupam. Por exemplo:

Marcações do voo TP123: 010 João Ascenso 211000000 020 Luís Esteves 212000000 024 António Gonçalves 213000000 100 Alpeshkumar Ranchordas 214000000 101 José Braz 215000000 110 Carlos Santos 217000000 130 Paula Miranda 218000000 A opção 4 deverá retornar ao menu principal. Implementação opcional (obrigatória para notas superiores a 17) Além de todas as especificações já descritas, o programa deverá ser capaz de anular marcações de voos. Para implementar esta opção o programa, após a marcação de um voo, deverá fornecer ao utilizador um código de reserva único (o código deverá ser único no conjunto de todos os voos). Este código poderá ser utilizado posteriormente para se poder realizar a anulação de uma reserva. Nota: Devem modificar os formatos dos ficheiros para realizar esta opção. As opções que tomarem para realizar esta funcionalidade deverão estar bem documentadas. IV. Ficheiros Deverão existir dois ficheiros, um com a lista de voos e outro com a lista de passageiros. O ficheiro de voos deverá ter o nome "voos.txt". Cada voo será representado por uma linha do ficheiro com o formato descrito na Figura 1. <ficheiro>::=<linhas> <linhas>::=<linha> <linha><linhas> <linha>::=<código><espaço><origem><espaço><destino><espaço><dia><espaço> <mês><espaço><ano><espaço><horas><doispontos><minutos><espaço><horas>

<doispontos><minutos><espaço><tipo><espaço><capacidade> <código_voo>::=<letra> <letra><código_voo> <origem>::=<letragr><letragr><letragr> <destino>::=<letragr><letragr><letragr> <dia>::= <digito3><digito> <mês>::= <digito1><digito> <ano>::= <digito><digito><digito><digito> <horas>::=<digito1><digito> <minutos>::=<digito5><digito> <tipo>::=<letra><digito><digito><digito> <capacidade>::= <digito><digito><digito> <digito>::=0 1 2 3 4 5 6 7 8 9 <digito5>::=0 1 2 3 4 5 <digito3>::=0 1 2 3 <digito1>::=0 1 <espaço>::= BRANCO <doispontos>::= : <letra>::=<letrag> a b c d e f g h i j k l m n o p q r s t u x y z <letrag>::= A B C D E F G H I J K L M N O P Q R S T U X Y Z Figura 1 - BNF do ficheiro voos.txt Nota: EOL representa o caracter de fim de linha; BRANCO representa o caracter com o código ASCII número 32 (decimal). O ficheiro de marcações deverá ter o nome "marca.txt" e deverá seguir a especificação BNF da Figura 2. <ficheiro>::=<linhas> <linhas>::=<linha> <linha><linhas> <linha>::=<código_voo>eol<numero_do_lugar><eol><telefone><espaço> <último-nome><espaço><primeiro-nome> <numero_do_lugar>::=<digito><digito><digito> <último-nome >::=<letra> <letra><último-nome> <primeiro-nome >::=<letra> <letra><primeiro-nome>

Figura 2 BNF do ficheiro marca.txt Nota: Alguns símbolos não terminais indicados na Figura 1 foram previamente definidos na Figura 2. De modo a guardar a informação entre duas execuções do programa, toda a informação (voos e listas de passageiros) deverá ser registada nestes dois ficheiros de texto sempre que o programa termina. De igual modo, no início, o programa deverá ler (caso existam) os dois ficheiros de texto criados anteriormente, de modo a inicializar as estruturas de dados existentes em memória. Os ficheiros não necessitam de estar ordenados. Nota: O vosso programa deve ler qualquer ficheiro que obedeça ao formato anteriormente definido. Programas que escrevam ou leiam ficheiros com formatos diferentes serão penalizados. Durante a avaliação o programa poderá ser testado com ficheiros escritos pelos docentes. V. Fases do Projecto Antes de começar a programação propriamente dita, deve-se primeiro compreender o projecto anteriormente descrito. Caso haja algumas dúvidas, utilize o bom senso para resolver questões em aberto ou dúvidas que tenha sobre o enunciado. Não complique desnecessariamente a solução. Caso tenha dúvidas pertinentes consulte um docente da disciplina ou utilize o e-group para esclarecer a sua dúvida. A segunda fase consiste em estruturar o trabalho, de modo que consiga obter no final um programa bem implementado e a funcionar completamente. Deste modo, aconselhamos os alunos a estruturarem o projecto nas seguintes fases: A. FASE 1 Esta fase consiste na implementação das seguintes funcionalidades, por esta ordem: Visualização do menu principal, de gestão de voos e de marcações (incluindo a selecção das opções) Implementação da opção 1, 2 e 3 do menu de gestão de voos sem a utilização de ficheiros. Implementação da opção de ajuda do Menu Principal.

Após conclusão desta fase, o trabalho deve ser entregue a funcionar ao Prof. da aula de laboratório na semana de 16 a 20 de Dezembro. Os grupos que entreguem o trabalho durante esta semana recebem uma bonificação de 1 valor na nota final. B. FASE 2 Esta fase nunca deve ser implementada sem o funcionamento completo de todas as funcionalidades da fase 1. Nesta fase, deve-se concluir a implementação das seguintes funcionalidades: Leitura e escrita do ficheiro voos.txt Implementação da opção 1, 2 do menu de gestão de marcações. Leitura e escrita do ficheiro marca.txt C. FASE 3 (Implementação opcional) Só quando todas as funcionalidades da fase 1 e 2 estiverem implementadas com sucesso, se deve implementar a opção 3 do menu de gestão de marcações. Esta opção só será considerada para avaliação se as restantes funcionalidades estiverem correctas. Nota: A adopção desta solução não garante uma nota superior a 17. Esta dependerá sempre da qualidade do código, das soluções adoptadas e do resultado da discussão. D. Para todas as fases Antes de implementar qualquer funcionalidade do projecto, devem organizar e estruturar o vosso programa de uma forma adequada ao problema em causa. Nomeadamente que classes devem ser definidas, quais são os métodos que cada uma deve conter e quais são os dados que cada uma delas deve possuir. Nesta fase, também devem ser definidos os algoritmos que permitem realizar cada uma das operações. Só depois deste trabalho realizado é que devem começar a fase de programação propriamente dita. Nota: Apesar de não ser obrigatório cumprirem o que anteriormente foi descrito, se optarem por seguirem esta metodologia o vosso projecto será realizado com ½ do esforço e do tempo necessário!!!

VI. Entrega do projecto Os projectos são realizados por grupos de dois alunos. Para realizarem o projecto têm de entregar a ficha de projecto preenchida a um docente da disciplina. O prazo para entrega da ficha do projecto é uma semana após a divulgação do enunciado do projecto. A entrega do trabalho deverá incluir uma listagem (comentada) em papel e um relatório. Deverá ainda ser entregue uma diskette ou CD incluindo estes elementos (o relatório em Microsoft Word) e os ficheiros de teste eventualmente necessários ao teste do programa. O relatório, deverá ter no máximo cinco páginas A4 e deverá limitar-se a incluir informação ou comentários que sejam considerados úteis para a avaliação do trabalho, nomeadamente: i) Descrição genérica do trabalho realizado, nomeadamente se cumpriram todas as especificações e se existem algumas limitações. ii) Algoritmo geral do programa iii) Descrição das classes usadas iv) Algoritmos relevantes A disquete ou CD deverá ser entregue conjuntamente com o relatório do projecto e a listagem do programa (que deverão ser agrafados ou encadernados) e inseridos dentro de uma capa plástica. A data de entrega, os nomes e números e turma dos autores do projecto, devem estar claramente visíveis na capa do projecto. Projectos entregues sem ser nestas condições serão penalizados com um desconto de até 2 valores. A data de entrega do projecto deverá ser confirmada por um dos docentes da disciplina, mediante a respectiva assinatura. VII. Avaliação A data de entrega final do projecto é 13 de Janeiro de 2003. Atrasos na entrega dos projectos serão penalizados com 1 valor por cada dia de atraso. Projectos entregues após as 17:00 do dia 18 de Janeiro serão classificados com zero. As orais realizar-se-ão nos dias 21 e 22 de Janeiro. Cada aluno será avaliado durante 15 minutos por um júri constituído por dois docentes. A falta à oral ou o atraso, injustificados, implicam a anulação do projecto. As discussões individuais dos projecto não incidirão apenas sobre o programa apresentado. Pretende-se sobretudo apurar a

capacidade do aluno produzir o tipo de código que apresentou no projecto. Caso seja detectada uma inconsistência neste aspecto, a nota atribuída será necessariamente zero. Os projectos não terão datas alternativas de entrega em 2ª época. Todos os projectos serão sujeitos a um controlo rigoroso: projectos semelhantes, ainda que não iguais, serão classificados com zero. Em relação ao código produzido, sugere-se que se baseiem no GUIA PARA CODIFICAÇÃO EM JAVA. Serão penalizados os desvios às regras de codificação indicadas no guia, sendo de salientar os seguintes aspectos: Nomes de variáveis pouco sugestivos, Paragrafação incorrecta, Falta de comentários, quando necessário. As cotações para avaliação do projecto serão distribuídas da seguinte forma: Avaliação do programa (70%) o Funcionalidades implementadas com sucesso o Funcionalidades implementadas sem sucesso o Leitura e escrita dos ficheiros (obedecem à sintaxe BNF definida?) o Ordenação dos dados o Qualidade da interface textual de menus o Qualidade da apresentação dos resultados no ecrã e ficheiro o Introdução de dados via teclado o Estruturas para armazenamento de dados Avaliação do relatório (20%) Avaliação geral do projecto (10%)

VIII. Apêndice A - Exemplos de códigos de partidas/chegadas Cidade, País Atenas, Grécia Auckland, Nova Zelândia Bankok, Tailândia Bruxelas, Belgica Budapeste, Hungria Chicago, EUA Copenhaga, Dinamarca Estocolmo, Suécia Estugarda, Alemanha Faro, Portugal Florença, Itália Frankfurt, Alemanha Funchal, Madeira Genebra, Suiça Hamburgo, Alemanha Hong Kong Instanbul, Turquia Joanesburgo, África do Sul Lanzarote, Spain Lisboa, Portugal Londres(Heathrow), Inglaterra Manchester, Inglaterra Milão, Itália Munique, Alemanha Nova York, EUA Paris, França Porto, Portugal Roma, Itália Código ATH AKL BKK BRU BUD ORD CPH STO STR FAO FLR FRA FNC GVA HAM HKG IST JNB ACE LIS LHR MAN LIN MUC JFK ORY OPO FCO

Tel Aviv, Israel Toronto, Canada Vancouver, Canada Veneza, Itália Viena, Áustria Zurique, Suiça TLV YYZ YVR VCE VIE ZRH