Pessoal precisava de ajudar para resolver este problema
A ESTSetúbal pretende implementar um sistema de cartões de débito na escola. Estes
cartões substituirão o dinheiro dentro das instalações, facilitando as várias transacções que
se efectuam diariamente nos diferentes locais: bar, refeitório, livraria, reprografia, etc.
Os cartões terão, a qualquer instante, um saldo como se de um cartão de telemóvel se
tratasse, podendo ser efectuados carregamentos, débitos e até transferência de créditos
para outros cartões.
Com o objectivo de testar os cartões de débito, e demonstrar a aplicabilidade dos mesmos,
deve ser desenvolvido um protótipo para apresentar aos órgãos de gestão da ESTSetúbal.
Este protótipo simulará o funcionamento da versão final, excepto a validação dos
utilizadores do programa. O manuseamento do programa é feito pelos funcionários afectos
ao Kiosk@EST, ou seja, as pessoas que gerem os cartões e os funcionários dos diversos locais
de utilização dos mesmos.
Descrevem-se de seguida os requisitos funcionais da aplicação. A implementação deverá
respeitar escrupulosamente os nomes das classes e interfaces definidas na secção Classes e
Interfaces da Aplicação. Os projectos que não respeitem esses requisitos de
implementação, não serão aceites, visto não poderem ser submetidos à bateria de testes
automáticos, pela qual todos os projectos serão avaliados.
Informação do Cartão
Cada cartão terá um conjunto de informações associado. Estas informações incluem
informação do utente, últimas transacções e saldo. Assim, para cada cartão deve existir no
sistema a seguinte informação:
Informação Tipo de Dados Exemplo
N.º Cartão Inteiro 145
Nome Utente Cadeia de caracteres (Max:
255)
?Bruno Silva?
Tipo Utente Enumerado {?Aluno?,
?Funcionario?, ?Docente? }
?Docente?
Data Emissão Data 05/12/2008
Saldo (Euros) Real 24,55
Últimas Transacções TRANSACCAO (Ver tabela seguinte)
Página 1 de 6
Enunciado de Projecto Final de IPOO ? Kiosk@EST
Detalhes:
Os números dos cartões deverão ser automáticos e atribuídos de forma sequencial.
Este protótipo apenas necessita guardar as últimas 20 transacções efectuadas.
Os valores monetários devem ter sempre duas casas decimais (e.g. 99,99). As datas
deverão aparecer no formato dd/mm/aaaa (e.g. 03/02/2008).
Informação de Transacção
Por transacção considera-se qualquer utilização do cartão, seja ela um carregamento, um
débito ou uma transferência. A informação que deve constar relativa a cada transacção é a
seguinte:
Informação Tipo de Dados Exemplo
Nº Transacção Inteiro 348
Data Data 06/12/2008
Tipo Enumerado {?CRG?, ?DBT?, ?TRF?} ?DBT?
Montante (Euros) Real -0,35
Novo Saldo (Euros) Real 24,20
Observações String {?Bar?, ?Livraria?, ?Refeitório?,
?Reprografia?, ?Outro?,
?Cartão_?}
?Bar?
Detalhes:
Os números das transacções deverão ser automáticos e atribuídos, de forma sequencial,
por cartão.
O montante deverá ser negativo sempre que sair dinheiro da conta.
O novo saldo guarda o saldo resultante da transacção.
Em caso de carregamento (?CRG?) as observações devem conter ?Outro?.
Em caso de transferência (?TRF?) as observações devem conter
?Cartão_<NumCartão>?, onde NumCartão é o do destinatário.
Após cada transacção o saldo do cartão deverá ser actualizado!
Os valores monetários devem ter sempre duas casas decimais (e.g. 99,99). ). As datas
deverão aparecer no formato dd/mm/aaaa (e.g. 03/02/2008).
Operações sobre Cartões
O programa deverá permitir as seguintes operações:
Criar Cartão ? Sendo preenchidos os dados do cartão (são sempre obrigatórios o
Nome e Tipo de Utente, não sendo possível utentes com nome idêntico).
Anular Cartão ? Indicando o número do cartão.
Alterar Dados de Cartão ? Indicando o número do cartão e actualizando os dados do
mesmo, excepto a data de emissão.
Informação de Cartão ? Após indicação do número de cartão, a informação do
mesmo deverá ser mostrada, assim como as últimas transacções.
Realizar transacções:
Carregamento ? Indicando a quantia que será creditada e o número do cartão.
Débito ? Se o saldo não permitir um débito, a operação não deverá ser
efectuada.
Transferência ? Indicando o número de cartão de origem e destino. Se a conta
de origem não tiver saldo suficiente para a transferência, a operação não
deverá ser efectuada.
Página 2 de 6
Enunciado de Projecto Final de IPOO ? Kiosk@EST
Listagens
O programa deverá permitir gerar algumas listagens, tais como:
- Listagem de Cartões ? Deverão ser listados todos os cartões do sistema, indicando o
saldo mínimo e o saldo máximo de todas as contas existentes. - Estatísticos de Transacções ? Para cada um dos cartões do sistema, deverão ser
listados a média e o desvio padrão do valor das respectivas transacções. - Listagens Ordenada de Cartões ? Os modos de ordenação para esta listagem são os
seguintes:
a. Nome;
b. Data Emissão, Nome;
c. Tipo Utente, Saldo, Nome.
Por exemplo, no segundo modo os cartões deverão ser ordenados pela sua data
de emissão. Caso existam mais cartões com a mesma data de emissão, esses
devem ser ordenados pelo nome. - Listagem de Movimentos ? Para um número de cartão deverá ser criado um ficheiro
de texto contendo a informação do cartão e os últimos três movimentos
efectuados, ordenados por número de transacção. O nome do ficheiro deverá ser
?Cartao_<N.ºCartão>.txt?. - Transferências entre Cartões ? Para um número de cartão deverá ser criado um
ficheiro de texto contendo a informação do cartão, as transferências efectuadas e a
informação sobre os cartões envolvidos nas transferências. O nome do ficheiro
deverá ser ?Transferencias_Cartao_<N.ºCartão>.txt?.
