COMPUTAÇÃO e PROGRAMAÇÃO 2º Trabalho Ano lectivo 2009/2010 MEMec e LEAN Data e hora limite de entrega: 6 de Janeiro de 2010, até às 23h59m Entrega: Submissão electrónica, via Fénix (ver instruções na secção: MATERIAL DE APOIO / Trabalhos / 2º Trabalho, na página Fénix da disciplina) 1 Introdução Uma pequena empresa de rent a car, denominada ABIS, está a iniciar a sua actividade e necessita de uma aplicação informática para gerir a sua frota de automóveis, os seus clientes e a respectiva facturação Mediante este objectivo, a ABIS decidiu abrir um concurso, restrito aos estudantes de Computação e Programação, para apresentarem uma proposta de software que satisfaça os requisitos especificados no caderno de encargos fornecido pela empresa A proposta vencedora será adquirida pela ABIS, a um preço justo, e ainda será feito um contracto de manutenção da aplicação escolhida!!! 2 Requisitos da aplicação informática a desenvolver (caderno de encargos) A aplicação informática deve ser implementada em MATLAB A aplicação informática deve ser dividida em duas etapas: o Na primeira etapa, a aplicação deve implementar todos os requisitos do caderno de encargos, utilizando como interface com o utilizador a consola (janela de comandos) o A segunda etapa, apenas deve ser implementada quando a primeira for concluída com sucesso Nesta etapa, a aplicação deve possuir uma interface gráfica, que implemente todas as funcionalidades da primeira etapa Para esta interface gráfica a empresa não impõe nenhum requisito, apenas dará valor aos seguintes pontos: simplicidade de utilização, grafismo atractivo, etc A aplicação deve gerir três ficheiros de texto ASCII (ver formatação no ponto 2b)): o Ficheiro de frota: denominado fichfrotatxt (fornecido juntamente com o enunciado) o Ficheiro de clientes: denominado fichclientestxt o Ficheiro de facturação: denominado fichfacturacaotxt 1
O ficheiro principal da aplicação da primeira etapa (script) é obrigatoriamente denominado por ABISconsolam, e todos os ficheiros associados a esta etapa devem ser guardados numa pasta denominada etapa_1 O ficheiro principal da aplicação da segunda etapa (script) é obrigatoriamente denominado por ABISguim, e todos os ficheiros associados a esta etapa devem ser guardados numa pasta denominada etapa_2 2a) Interface da consola e comportamento da aplicação A aplicação a desenvolver deve ser iniciada com um menu principal com as seguintes opções: 1) Listar clientes 2) Adicionar novo cliente 3) Remover cliente 4) Listar viaturas 5) Alugar viatura 6) Entregar viatura 7) Terminar programa NOTA MUITO IMPORTANTE: Na etapa 1, deve implementar as suas funções para os menus Por exemplo, denominada meumenu() que apresenta na linha de comandos as várias opções do menu, e devolve a opção escolhida (ATENÇÃO: NÃO PODE utilizar a função menu, pré-definida no MATLAB ; NÃO PODE utilizar a função pause, pré-definida no MATLAB ) 1) Listar clientes Após seleccionar esta opção o programa deve apresentar no monitor os dados de todos os clientes, ordenados por ordem alfabética do nome Após o utilizador pressionar a tecla [c] seguida de [enter], o menu principal deve continuar disponível 2) Adicionar novo cliente Após seleccionar esta opção o programa deve pedir ao utilizador o nome do novo cliente, a sua morada e o número da carta de condução Caso o cliente não exista no ficheiro de clientes deve ser atribuído automaticamente um novo número de código de cliente (imediatamente posterior ao do último cliente registado) Em seguida deve gravar os dados no respectivo ficheiro Caso o cliente já exista no ficheiro de clientes (o número da carta de condução é único!), deve ser apresentado o seu número de código de cliente Em ambas as situações, Após o utilizador pressionar a tecla [c] seguida de [enter], o menu principal deve continuar disponível 2
3) Remover cliente Ao ser seleccionada esta opção o programa deve pedir ao utilizador o código do cliente a remover, em seguida apresenta os dados respectivos Se o cliente tiver alguma viatura em seu poder o programa deverá dar essa indicação e avisar que o cliente não pode ser removido Se o cliente não tiver nenhuma viatura em seu poder o programa deve pedir confirmação da remoção (teclas [s]/[n] seguida de [enter]), e se for confirmada, o ficheiro de clientes deve ser actualizado Nota: os números dos restantes clientes nunca são modificados Após o utilizador pressionar a tecla [c] seguida de [enter], o menu principal deve continuar disponível 4) Listar viaturas Após seleccionar esta opção o programa deve apresentar no monitor os dados de todas as viaturas existentes (ordenados da gama mais baixa, à gama mais alta) Após o utilizador pressionar a tecla [c] seguida de [enter], o menu principal deve continuar disponível 5) Alugar viatura Após seleccionar esta opção o programa deve pedir ao utilizador o número de cliente, procurar esse número na base de dados e apresentar todos os dados relativos a esse cliente Cada cliente só pode alugar uma viatura de cada vez, pelo que, se tiver alguma viatura em seu poder deve ser apresentada uma mensagem indicando essa situação antes de se voltar ao menu principal (após o utilizador pressionar a tecla [c] seguida de [enter]) Se tal não se verificar, o programa pede a gama da viatura e confirma no ficheiro respectivo se existem viaturas dessa gama disponíveis ou não Se não existirem, o programa deve apresentar uma mensagem adequada e regressar ao menu principal (Após o utilizador pressionar a tecla [c] seguida de [enter]), caso contrário, apresenta os dados das viaturas disponíveis, e concretiza a operação pedindo ao utilizador o código de uma das viaturas disponíveis e a data actual De seguida, actualiza os dados do cliente e da viatura, nos respectivos ficheiros Após o utilizador pressionar a tecla [c] seguida de [enter], o menu principal deve continuar disponível 6) Entregar viatura Em resposta a esta opção, o programa deve começar por pedir ao utilizador o código da viatura e a data de entrega, em seguida deve procurar na base de dados de clientes, os dados do cliente que devolve a viatura, e apresentá-los no ecrã Deve, então, actualizar os dados do cliente e da viatura, nos ficheiros de dados respectivos O ficheiro de facturação também deve ser actualizado com os dados desta entrega, e estes dados devem ser apresentados no ecrã Após o utilizador pressionar a tecla [c] seguida de [enter], o menu principal deve continuar disponível 7) Terminar programa Após seleccionar esta opção o programa deve questionar o utilizador se realmente pretende terminar a aplicação (teclas [s]/[n] seguida de [enter]) Se for o caso, a aplicação deve ser terminada, caso contrário o menu principal deve ser apresentado 3
2b) Formatação dos ficheiros de dados Ficheiro fichclientestxt [Número de código do cliente 1] [Nome do cliente 1] [Morada do cliente 1] [Número da carta de condução do cliente 1] [Código da viatura alugada][espaço][data de início de aluguer] [Número de código do cliente 2] [Nome do cliente 2] [Morada do cliente 2] [Número da carta de condução do cliente 2] [Código da viatura alugada][espaço][data de início de aluguer] [Número de código do cliente k] [Nome do cliente k] [Morada do cliente k] [Número da carta de condução do cliente k] [Código da viatura alugada][espaço][data de início de aluguer] Ficheiro fichfrotatxt [Número de código da viatura 1] [Gama da viatura 1] [Matrícula da viatura 1] [Custo por dia do aluguer da viatura 1] [Código do cliente com a viatura 1 alugada] [Número de código da viatura 2] [Gama da viatura 2] [Matrícula da viatura 2] [Custo por dia do aluguer da viatura 2] [Código do cliente com a viatura 2 alugada] [Número de código da viatura n] [Gama da viatura n] [Matrícula da viatura n] [Custo por dia do aluguer da viatura n] [Código do cliente com a viatura n alugada] 4
Ficheiro fichfacturacaotxt ABIS Nome: [Nome do cliente 1] Morada: [Morada do cliente 1] Carta de condução: [Número da carta de condução do cliente 1] Gama da viatura: [Gama da viatura alugada] Matrícula da viatura: [Matrícula da viatura alugada] Factura: Data Nº dias Custo (euros) Data de início do aluguer: 2009-01-18 Data de fim do aluguer: 2009-01-19 Número de dias do aluguer: 2 Preço sem IVA: IVA (20%): Total a pagar: xxxxx xxxx xxxxxx ABIS Nome: [Nome do cliente 2] Morada: [Morada do cliente 2] Carta de condução: [Número da carta de condução do cliente 2] Gama da viatura: [Gama da viatura alugada] Matrícula da viatura: [Matrícula da viatura alugada] Factura: Data Nº dias Custo (euros) Data de início do aluguer: 2009-11-28 Data de fim do aluguer: 2009-12-01 Número de dias do aluguer: 4 Preço sem IVA: IVA (20%): Total a pagar: xxxxx xxxx xxxxxx etc 2c) Formatação no ecrã das opções do menu principal Opção 1): Listar clientes Nome do cliente: XXXXX XXXXXXXXX XX XXXXXX Número de código do cliente: XXXXXX Morada do cliente: XX XXXXXXX XXXXX XXXXXXXX Número da carta de condução do cliente: XXXXXXXXXXX Código da viat Alugada: XXXXXX (em branco se não existir) Data de início de aluguer: XXXX-XX-XX Gama da viatura: XXXXXXXXXXX (em branco se não existir) Matrícula da viatura: XX-XX-XX (em branco se não existir) Custo por dia do aluguer da viatura: XXXXXX (em branco se não existir) 5
[cliente seguinte] etc Opção 3): Remover cliente Igual a opção 1), mas apenas para um cliente Opção 4): Listar viaturas Gama da viatura: XXXXXXXX Número de código da viatura: XXXXXXXX Matrícula da viatura: XX-XX-XX Custo por dia do aluguer da viatura: xxxxx Código do cliente com a viatura alugada: xxxxxx (em branco se não existir) [viatura seguinte] etc Opção 5): Alugar viatura Igual a opção 1), mas apenas para um cliente Igual a opção 4), mas apenas para viaturas da gama pretendida Opção 6): Entregar viatura Igual a opção 1), mas apenas para um cliente 2d) Informações adicionais Viaturas de gama baixa - Custo diário do aluguer (sem IVA): 33 euros Viaturas de gama média - Custo diário do aluguer (sem IVA): 71 euros Viaturas de gama alta - Custo diário do aluguer (sem IVA): 224 euros 3 Casos de teste Para validar a aplicação informática que desenvolveu realize testes com as sequências de funcionamento que constam do ficheiro de testes testesabistxt (NOTA: este ficheiro será 6
colocado na secção: MATERIAL DE APOIO / Trabalhos / 2º Trabalho, na página Fénix da disciplina) A aplicação deve correr integralmente as referidas sequências, tal como constam no ficheiro testesabistxt 4 Indicações gerais O trabalho deve ser efectuado em MATLAB A implementação do trabalho deve incluir funções e estruturas de dados definidas pelo(s) programador(es) A implementação dos detalhes não mencionados, ou não totalmente esclarecidos na descrição da aplicação é deixada ao critério do(s) programador(es), devendo ser devidamente justificados 5 Entrega do trabalho O trabalho deverá ser entregue até ao dia 6 de Janeiro de 2010, constando de: Ficheiro com a documentação do trabalho (ver ponto 6); Ficheiros com os códigos fonte do programa (ver ponto 6) (Apenas os ficheiros m) O trabalho deverá ser entregue por submissão electrónica, via Fénix: ver instruções na secção MATERIAL DE APOIO / Trabalhos / 2º Trabalho, na página Fénix da disciplina O material a entregar (ver ponto 6), deve ser comprimido num ficheiro (zip ou rar) em que o seu nome deve ser obrigatoriamente: trab2_nº do grupo Exemplo: trab2_005zip ou trab2_005rar 6 Material a entregar 6a) Documentação A documentação do trabalho deverá possuir a seguinte estrutura: Capa com identificação do grupo e dos respectivos alunos; Índice; Metodologia de desenvolvimento do programa, a qual foi apresentada nas aulas teóricas/problemas da disciplina (ATENÇÃO: apresente apenas os pontos que considera essenciais, e de uma forma sumária Este tópico não deve ultrapassar as 10 páginas) Observações sobre o funcionamento do programa (tanto os aspectos positivos, como os negativos); Bibliografia 7
O ficheiro com a documentação deve ser obrigatoriamente do tipo pdf O nome do ficheiro deve ser obrigatoriamente: trab2_ nº do grupo Exemplo: trab2_005pdf 6b) Código Os ficheiros principais (scripts) do trabalho deverá(ão) ser identificado(s), em comentário, com o número do grupo, nome e número dos alunos do grupo O ficheiro principal da aplicação desenvolvida na primeira etapa (script) é obrigatoriamente denominado por ABISconsolam, e todos os ficheiros associados a esta etapa devem ser guardados numa pasta denominada etapa_1 O ficheiro principal da aplicação desenvolvida na segunda etapa (script) é obrigatoriamente denominado por ABISguim, e todos os ficheiros associados a esta etapa devem ser guardados numa pasta denominada etapa_2 7 Critérios de avaliação A nota do trabalho será baseada nos seguintes critérios: Documentação: 10% Programa: Etapa 1: Execução correcta 65% Estilo de programação 10% Etapa 2: Execução correcta 10% Estilo de programação 5% No item Estilo de programação serão avaliados: a estrutura do programa, os nomes das variáveis, os comentários e a indentação NOTA IMPORTANTE: Sempre que acharem conveniente, os docentes reservam-se o direito de convocar todos os alunos de um grupo, a defender em prova oral o trabalho apresentado 8