COMPUTAÇÃO e PROGRAMAÇÃO Projecto (em C++) Ano lectivo 2008/2009 MEMec e LEAN Data e hora limite de entrega: 19 de Dezembro de 2008, até às 16h30m Local da entrega: Secretaria da Área Científica de Controlo, Automação e Informática Industrial, do DEM, Pav Mec III sala 35 (piso de entrada, 1ª porta à direita para quem entra no pavilhão) 1 Introdução O projecto consiste em desenvolver uma aplicação informática destinada ao apoio à gestão de uma empresa concessionária de auto-estradas, denominada CICLONE A aplicação deve proporcionar um conjunto de operações necessárias à utilização/facturação dos clientes da empresa Os dados são guardados em três ficheiros ASCII, denominados: clientesdat, ocorrenciasdat e facturacaodat 2 Requisitos da aplicação informática a desenvolver 2a) Interface e comportamento da aplicação A aplicação a desenvolver deve ser iniciada com um menu com as seguintes opções: 1) Menu de clientes 2) Menu de registo de ocorrencias 3) Menu de facturacao 4) Terminar programa 1) Menu de clientes Após seleccionar esta opção o programa deve apresentar um menu com as seguintes opções: 1) Adicionar novo cliente 2) Apresentar dados de um cliente 3) Remover cliente 4) Voltar ao menu anterior 11) Menu de clientes - Adicionar novo cliente Após seleccionar esta opção o programa deve pedir ao utilizador o nome do novo cliente, a sua morada, a matrícula do veículo, a classe do veículo, e atribuir automaticamente um novo número de cliente (imediatamente posterior ao do último cliente registado) o qual ficará associado ao dispositivo identificador do veículo Em seguida deve gravar os dados no respectivo ficheiro 1
12) Menu de clientes - Apresentar dados de um cliente Após seleccionar esta opção o programa deve pedir ao utilizador o número de cliente, e todos os seus dados devem ser apresentados no monitor 13) Menu de clientes - Remover cliente Após seleccionar esta opção o programa deve pedir ao utilizador o número de cliente, e se, e apenas se, os seus dados relativos à utilização (ocorrências) estiverem a zero, o cliente deve ser removido (sem alterar a numeração/identificador dos restantes clientes) De seguida, o respectivo ficheiro de dados deve ser gravado, com esta alteração (remoção) 14) Menu de clientes - Voltar ao menu anterior Após seleccionar esta opção o programa deve voltar ao menu anterior 2) Menu de registo de ocorrencias Após seleccionar esta opção o programa deve apresentar um menu com as seguintes opções: 1) Adicionar novo registo de ocorrencia 1 2) Apresentar registos de ocorrencias 3) Voltar ao menu anterior 21) Menu de registo de ocorrencias - Adicionar novo registo de ocorrencia Após seleccionar esta opção o programa deve pedir ao utilizador o número do cliente (ou seja, o número associado ao identificador), verificando se este é válido, o local de entrada da viagem, o local de saída da viagem, e a data/hora da ocorrência do registo A data/hora de ocorrência deve ser introduzida do seguinte modo: [ano][mês][dia][horas][minutos] Exemplo: 200811051900 (data/hora do início do 1º teste de Computação e Programação) A ocorrência apenas é válida se data/hora introduzida for mais recente do que a última data/hora presente no ficheiro de ocorrências De seguida, devem ser gravados os dados no respectivo ficheiro 22) Menu de registo de ocorrencias - Apresentar registos de ocorrencias Após seleccionar esta opção o programa deve apresentar todos os registos de ocorrências que surgem no respectivo ficheiro Os registos devem ser apresentados por ordem crescente do número de cliente 23) Menu de registo de ocorrencias - Voltar ao menu anterior Após seleccionar esta opção o programa deve voltar ao menu anterior 1 Na prática o ficheiro associado a este menu seria alterado com base na utilização (passagem nas portagens) dos clientes Esta opção permite simular essa utilização 2
3) Menu de facturacao Após seleccionar esta opção o programa deve apresentar um menu com as seguintes opções: 1) Emitir facturas 2) Voltar ao menu anterior 31) Menu de facturacao - Emitir facturas Após seleccionar esta opção o programa deve pedir a data de fim de facturação ao utilizador, que deve ser introduzida no formato atrás descrito Em seguida devem ser lidos os ficheiros de clientes e de ocorrências para se poderem fazer os cálculos respeitantes à facturação O programa deve então gerar um novo ficheiro de facturação obedecendo ao formato que é descrito mais adiante neste enunciado Após a emissão das facturas (ou seja, após a criação do respectivo ficheiro) o ficheiro de ocorrências deve ser actualizado, removendo-se dele as ocorrências que acabaram de ser processadas e mantendo apenas as que têm data posterior à data de fim de facturação 33) Menu de facturacao Voltar ao menu anterior Após seleccionar esta opção o programa deve voltar ao menu anterior 4) Terminar programa Após seleccionar esta opção o programa deve questionar o utilizador se realmente pretende terminar a aplicação Se for o caso, a aplicação deve ser terminada, caso contrário o menu inicial deve ser apresentado 2b) Formato dos ficheiros de dados Ficheiro clientesdat [Nome do cliente 1] [Morada do cliente 1] [Número do cliente 1][espaço][Matrícula][espaço][Classe do veículo] [linha em branco] [Nome do cliente 2] [Morada do cliente 2] [Número do cliente 2][espaço][Matrícula][espaço][Classe do veículo] [linha em branco] [Nome do cliente k] [Morada do cliente k] [Número do cliente k][espaço][matrícula][espaço][classe do veículo] 3
Ficheiro ocorrenciasdat [Número de cliente][espaço][local de entrada][espaço][local de saída][espaço][data/hora] [Número de cliente][espaço][local de entrada][espaço][local de saída][espaço][data/hora] Ficheiro facturacaodat CICLONE Nome: [Nome do cliente 1] Morada: [Morada do cliente 1] Identificador: [número do cliente 1] Matricula do veiculo: [Matrícula] Factura detalhada: Entrada Saída Data e hora Custo (euros) [local de entrada 1] [local de saída 1] [Ano-Mês-dia horas:minutos] xxxxx [local de entrada n] [local de saída n] [Ano-Mês-dia horas:minutos] xxxxx Total a pagar: xxxxxxx CICLONE Nome: [Nome do cliente 2] Morada: [Morada do cliente 2] Identificador: [número do cliente 2] Matricula do veiculo: [Matrícula] Factura detalhada: Entrada Saída Data e hora Custo (euros) [local de entrada 1] [local de saída 1] [Ano-Mês-dia horas:minutos] xxxxx [local de entrada k] [local de saída k] [Ano-Mês-dia horas:minutos] xxxxx Total a pagar: xxxxxxx 2c) Informações complementares Custo da portagem de veículos da classe 1 (euros/km): 006 Custo da portagem de veículos da classe 2 (euros/km): 012 Custo da portagem de veículos da classe 3 (euros/km): 014 Custo da portagem de veículos da classe 4 (euros/km): 016 4
Distâncias entre entradas/saídas: [Km] Aveiro Braga Coimbra Evora Faro Lisboa Porto Aveiro 0 121 58 302 502 244 68 Braga 121 0 170 424 624 366 53 Coimbra 58 170 0 254 454 196 117 Evora 302 424 254 0 213 150 371 Faro 502 624 454 213 0 299 571 Lisboa 244 366 196 150 299 0 313 Porto 68 53 117 371 571 313 0 3 Indicações gerais O trabalho deve ser efectuado em C++ A implementação do trabalho deve incluir classes 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 4 Documentação do trabalho A documentação deve ser dividida em 3 partes: a) Documentação para utilizadores; b) Documentação técnica; c) CD A documentação para utilizadores deve apresentar o seguinte: 1 Descrição do que o programa faz e a sua área de aplicação; 2 Descrição da informação necessária à utilização do programa e da informação que fornece; 3 Descrição do comportamento e utilização do programa (a utilização do comando print screen ajuda a apresentar os vários menus e operações que podem ser efectuadas); 4 Descrição das limitações do programa A documentação técnica deve apresentar o seguinte: 1 Descrição da(s) classe(s) definida(s) pelo(s) programador(es) Descrevendo os seus atributos e métodos, e o porquê dessa escolha; 2 Descrição de outras estruturas de dados fundamentais do programa; 3 Descrição da estrutura dos ficheiros de dados utilizados pelo programa; 4 Descrição do algoritmo da função principal (main()) do programa; 5
5 Apresentação de um exemplo de operações efectuadas, mostrando os menus e escolhas feitas, bem como a alteração nos ficheiros (utilizar o comando print screen); 6 listagem do código (devidamente comentado) O CD (devidamente identificado) deve conter o seguinte: 1 O ficheiro com a documentação para utilizadores (pdf); 2 O ficheiro com a documentação técnica (pdf); 3 Os ficheiros de código; 4 Os ficheiros de dados; 5 O ficheiro executável (exe), versão release Os dois ficheiros de documentação devem estar separados e cada um deve ter um índice para maior facilidade de leitura Além disso devem estar formatados de modo a serem facilmente legíveis 5 Entrega do trabalho A documentação para utilizadores e a documentação técnica devem ser encadernadas separadamente e devidamente identificadas (nº do grupo, nome e número dos alunos) O CD também deve ser devidamente identificado A entrega deverá ser feita até ao dia 19 de Dezembro de 2008, até às 16h30 O local da entrega é na Secretaria da Secção da Área Científica de Controlo, Automação, e Informática Industrial, do Departamento de Engenharia Mecânica, Pavilhão de Engenharia Mecânica III, sala 35 Para a entrega dos trabalhos, lembra-se que a Secretaria está aberta das 9h às 12h e das 14h às 16h30m 6 Critérios de avaliação A classificação do projecto será baseada nos seguintes itens: Execução correcta 50% Documentação técnica 25% Estilo de programação 15% Documentação de utilização 10% 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 projecto apresentado 6