Projecto de Laboratório de Computadores 2016-2017 Hélder P. Oliveira, Luís Torgo, Rogério Reis DCC@FCUP 1 Introdução O objetivo deste projeto é o desenvolvimento de um sistema de controlo de um supermercado, incluindo gestão de stocks, listas de utilizadores, listas de compras, bem como estatisticas relativamente a cada utilizador do supermercado, tendo por base 2 programas em separado (Servidor e Clientes). Através dos programas a desenvolver, deverá permitir a gestão de vários utilizadores, com funcionalidades diferentes, incluíndo o gestor do supermercado e os vários clientes que podem gerir as suas listas de compras e estatísticas relacionadas com as compras efetuadas. O primeiro dos programas é o Servidor (supermercado). Este programa gere todo o serviço de stocks, contas de utilizadores e acesso a estatisticas individuais e globais. O segundo programa que deverá ser construído é o Cliente (clientes). Este programa é executado por cada utilizador para iniciar a sua sessão, e aceder às funcionalidades como clientes do supermercado. 2 Modo de Funcionamento do Sistema Todo o sistema deverá ser executado num só computador, podendo ter vários utilizadores logados ao sistema (gestores e clientes). E devem ser garantidos os seguintes requisitos: • Um produto só poderá ser comprado caso exista em stock; • Não pode haver stock negativo no armazem; • O cliente deverá ser alertado adequadamente caso o seu saldo não permita fazer uma determinada compra; • O sistema deve lidar de forma adequada com a concorrência entre dois ou mais utilizadores (p.ex. tentarem comprar "ao mesmo" tempo um produto); 1 2.1 Login Em cada um dos programas existirá um menu de login para entrada no sistema. Cada utilizador poderá aceder ao sistema se possuir um login e password. NOTA: para o programa Servidor, admita que já existe um utilizador gestor do sistema. Após a validação do utilizador em cada um dos programas, aparecerá um menu com as funcionalidades do sistema. $ SUPServidor **Menu** 1) Criar Novo Utilizador 2) Gerir Stocks 3) Ver Estatisticas 4) Logout $ SUPCliente **Menu** 1) Gerir Saldo 2) Gerir Lista de Compras 3) Ver Estatisticas 4) Logout 2.2 Funcionalidades Servidor O Servidor apresenta as seguinte funcionalidades: • Criar Novo Utilizador • Gerir Stocks • Ver Estatísticas • Logout 2.2.1 Criar novo utilizador Nesta funcionalidade, deverá ser pedido o Nome, contato, username e password do utilizador. 2.2.2 Gerir Stocks Nesta funcionalidade, o gestor do supermercado poderá incluir um novo produto, especificando o codigo (que deverá ser sequencial), descrição, quantidade, custo (compra) por unidade e o preço (venda) por unidade. Poderá também alterar a quantidade, custo e preço de um produto existente, bem como eliminar um produto do sistema. 2 2.2.3 Ver Estatísticas Nesta funcionalidade, o gestor do supermercado poderá ver estatisticas relacionadas com os produtos e clientes, como por exemplo: • Quantidade de produtos vendidos no total; • Quantidade vendida de um determinado produto; • Lucro de um determinado produto; • Analisar os produtos comprados por um determinado cliente; • ... 2.2.4 Logout Sair do Sistema. 2.3 Funcionalidades Cliente O Cliente apresenta as seguinte funcionalidades: • Gerir Saldo • Gerir Listas de Compras • Ver Estatísticas • Logout 2.3.1 Gerir Saldo Nesta funcionalidade, o cliente poderá consultar o seu saldo e acrescentar saldo à sua conta. 2.3.2 Gerir Listas de Compras Nesta funcionalidade, poderá criar uma lista de compras baseada nos produtos existentes no supermercado e fazer a compra da mesma. 2.3.3 Ver Estatísticas Nesta funcionalidade, o cliente poderá ver estatisticas relacionadas com as suas compras, como por exemplo: • Quantidade total de produtos comprados; • Quantidade comprada de um determinado produto; • Valor total gasto num determinado produto; • ... 3 2.3.4 Logout Sair do Sistema. 3 O Que É Preciso Entregar A entrega do trabalho deverá ser feita via email para o docente da aula respetiva. A entrega deverá ser um ficheiro em formato ZIP com o nome (primeiro e último) dos membros do grupo de trabalho, p.ex. "JoanaRamosCarlosSilva.ZIP". O ficheiro ZIP deverá conter: 1. Os executáveis dos programas servidor e cliente 2. O código fonte, bem como qualquer dependência necessária para a compliação dos dois programas. 3. Um ficheiro "README" com instruções sobre como obter os executáveis bem como qualquer outra informação que achem útil sobre a execução dos programas. Este ficheiro deverá começar com a identificação clara dos constituintes do grupo (primeiro E último nomes, email, e no mecanográfico) 4 4 Critérios de Avaliação Os critérios de sucesso para um bom trabalho são: 1. O programa implementa a especificação definida. 2. O programa compila. 3. O programa funciona como esperado. 4. O código fonte está bem documentado. 5. O ficheiro de "README" juntamente com o material de apoio estão completos. 1: Medíocre Implementação A maioria das especificações não estão implementadas, ou estão de forma incorreta. O programa produz muitos resultados inesperados. O programa não compila. O código fonte é difícil de ler. Documentação A documentação não é clara. A maioria do material de apoio é irrelevante ou impreciso. 2: Suficiente Algumas especificações fundamentais não estão implementadas. O programa produz alguns resultados inesperados, mas geralmente corretos. O programa compila mas com muitos ‘warnings’. O código fonte é claro em algumas secções e difícil de ler noutras. A documentação é pouco clara em algum dos seus pontos. Algum do material de apoio é impreciso ou irrelevante. 5 3: Bom A maioria de especificações estão implementadas. O programa funciona corretamente, com poucos resultados inesperados. O programa compila com poucos ‘warnings’. O código fonte está bem organizado. 4: Excelente Todas as especificações estão implementadas. O programa funciona como esperado em todos os casos. O programa compila sem erros ou ‘warnings’. O código fonte é claro, fácil de ler e bem organizado. A documentação é maioritariamente clara e relevante. A quantidade de material de apoio é correta, e as pequenas imprecisões que contém não interferem com a utilização do trabalho. A documentação é clara, precisa e relevante. O material de apoio contém muita informação, correta e com detalhes. 5 5.1 Prazos e Outras Informações Úteis Prazo de Entrega Os trabalhos deverão ser entregues por email para o docente da turma associada ao grupo de trabalho, fazendo através de um ficheiro ZIP até ao final da penultima semana de aulas (14 de maio de 2017). 5.2 Entrega dos Trabalhos Durante as aulas da última semana, ou seja depois da entrega por email do trabalho, cada grupo irá defender junto do respetivo professor, o seu trabalho. Esta defesa passará por responder às questões que o professor entender relativamente ao trabalho entregue, bem como pela demostração, nos computadores da sala de aulas, da execução do trabalho, na presença do professor. 5.3 Grupos de Trabalho Os trabalhos deverão ser feitos em grupos de dois elementos. A definição dos grupos deverá ser feita na aula da semana do dia 27 de março de 2017 em conjunto com o professor. 5.4 Tecnologias O trabalho deverá ser realizado na linguagem de programação C. Será valorizada a implementação da funcionalidades não descritas neste documento. 5.5 Fraudes Os trabalhos devem ser feitos pelos membros do grupo. O código dos trabalhos entregues será verificado por software de deteção de cópias. Os alunos poderão ser chamados a defender o seu trabalho e explicar partes do mesmo. 6