• Nenhum resultado encontrado

Trabalho

N/A
N/A
Protected

Academic year: 2021

Share "Trabalho"

Copied!
5
0
0

Texto

(1)

Universidade Federal de Ouro Preto

Departamento de Computação e Sistemas – DECSI

CEA 032 – Programação de Computadores II

Prof. Filipe Nunes Ribeiro

Trabalho 1

1.Objetivo

O objetivo deste trabalho é praticar os conceitos aprendidos na disciplina Programação de Computadores II através do desenvolvimento de um aplicativo Orientado a Objetos para o controle de uma operadora de telefonia celular.

2.Orientações

O programa a ser desenvolvido deverá auxiliar no controle de uma locadora. O sistema deverá permitir controle completo sobre as transações importantes de um estabelecimento de locação de filmes como por exemplo: cadastro de clientes, cadastro de filmes, locação de filme, devolução de filme, pagamento de multa. O desenvolvimento será divdido em duas partes, cada uma valendo metade da pontuaçaõ do trabalho.

2.1.

Parte I

A primeira parte do sistema de uma locadora deverá controlar o cadastro de clientes e filmes, as locações e evetuais multas. Para isso, os seguintes dados deverão ser armazenados pelo sistema:

Cliente: codigo(int), nome, cpf, data de nascimento (tipo data), endereço, multa, dependentes (um cliente poderá ter até 3 dependentes) e filmes alugados.

Dependente: nome, cpf, data de nascimento (tipo data), endereço

Filme: nome, ano de lançamento, gênero, quantidade de dvds, quantidade de bluerays, tipo de filme;

Algumas informações importantes precisam ser armazenadas durantes toda a execução do sistema: valor da multa por dia de atraso, quantidade máxima de filmes alugados.

2.1.1.

Parte I – Implementação

Ao acessar o sistema as seguintes opções deverão ser exibidas ao usuário: Cadastro de Filmes, Cadastro de Clientes e Relatórios. Abaixo uma descrição para cada opção escolhida.

Filme:

1 – Cadastro: que permitirá realizar o cadastro de um novo filme.

2 – Busca: os filmes poderão ser buscados de três maneiras: pelo nome, pelo gênero, pela disponibilidade e pelo ano de lançamento. No caso de busca pela disponibilidade deverão ser exibidos apenas os filmes que têm algum dvd ou bluray

(2)

disponível. Quando tiver mais de um resultado para a busca, todos eles deverão ser exibidos na tela numerados para que o usuário escolha um.

Ao selecionar um filme seus dados deverão ser exibidos e deverão ser dadas as seguintes opções: editar, excluir e locar para cliente. Se a última opção for selecionada, o usuário deverá entrar com o nome do cliente para o qual a locação será feita

Clientes:

1 – Cadastro: que permitirá realizar o cadastro de um novo filme.

2 – Busca: os clientes poderão ser buscados de três maneiras: pelo nome, pelo código e pelo dependente. Quando tiver mais de um resultado para a busca, todos eles deverão ser exibidos na tela numerados para que o usuário escolha um. No caso de busca por dependente deverá ser digitado o nome do dependente. Ao selecionar um cliente seus dados deverão ser exibidos e deverão ser dadas as seguintes opções:

- editar que permitirá a edição dos dados cadastrais de um cliente, inclusive adição e remoção de dependentes.

- locar: ao selecionar esta opção o usuário deverá entrar com o nome do filme que o cliente deseja locar para só então confirmar a locação. O usuário também deverá informar ao sistema se o cliente deseja locar um dvd ou um bluray. Caso não se tenha itens para locação disponíveis ela não poderá ser confirmada.

- devolver filme: Antes de devolver o filme o usuário deverá ser questionado se houve atraso na devolução. Caso tenha ocorrido, deverá ser entrada

- pagar multa: Esta opção deverá zerar a multa do usuário. Relatórios:

- Relatório de clientes: deverá exibir todos os clientes cadastrados - Relatório de filmes por gênero:

- Relatório de filmes por ano de lançamento: - Relatório de filmes por nome (ordem alfabética): Configurações:

- Definição do valor da multa

- Definição da quantidade máxima de filmes por cliente

2.2.

Parte II

A segunda parte do sistema deverá controlar a parte financeira da locadora. Para isso deverão ser criadas as seguintes classes:

Entrada: nome, descrição, valor, data da entrada. Saída: nome, descrição, valor, data da saída.

(3)

Algumas entradas deverão ser automaticamente geradas pelo sistema como por exemplo o pagamento de locação e o pagamento de multas por atraso. Cada devolução de filme gerará uma nova entrada contendo dados como os do exemplo a seguir:

nome - “Locação de Filme”; descrição - “cliente: Filipe Nunes Ribeiro – Filme: A fantásica fábrica de chocolate“ - valor: 5,00 – data de entrada: 10/10/2014

Outras entradas e saídas que não são geradas automaticamente poderão ser inseridas através do próprio sistema.

2.2.1.

Parte II - Implementação

O sistema deverá sofrer algumas modificações para se adequar às novas necessidades. Primeiramente, deverá ser adicionada uma nova entrada no menu principal cujo título será balancete. Ao selecionar esta opção as seguintes alternativas deverão ser exibidas:

- Cadastro de entrada: que permitirá a criação de novas entradas como por exemplo: venda de filmes antigos,

- Cadastro de saída: permitirá a criação de saídas como por exemplo: aluguel, compra de filmes, pagamento de funcionários.

- Busca de movimentações: deverá permitir a busca em movimentações pelo nome. A mesma tática de exibição das buscas anteriores deverá ser utilizada, ou seja, caso exista mais de um resultado para a busca todos deverão ser exibidos. Ao selecionar a movimentação ela poderá ser editada ou excluída.

- Balancete por mês: perguntará ao usuário qual mês deve ser exibido o - Balancete por ano: perguntará ao usuário o ano para

O balancete deverá exibir com detalhes todas as entradas e saídas do período especificado e mostrar qual é o saldo. Por exemplo, se no mês de julho as entradas totalizaram R$ 2500,00 e as saídas R$1950,00, o saldo do mês será de R$550,00 reais.

2.3.

Herança e Polimorfismo

Perceba que em algumas classes propostas acima deverá ser utilizada a herança para reaproveitamento de código. Organize suas classes de maneira a aplicar os conceitos de herança. Aplique também os conceitos de Polimorfismo especialmente na parte de balancete. O polimorfismo deverá ser usado na Parte II na implementação das entradas e saídas. Crie uma classe abstrata Movimentacao que agrupe as informações comuns às Entradas e Saídas. A classe de controle deverá ter um array com objetos do tipo Movimentacao.

2.4.

Separação entre classes de entrada e saída e de

regras de negócio

É extremamente importante separar as classes de regras de negócio da entrada de saída de dados (System.out.println e Scanner). Ver sugestão de implementação disponibilizado no site.

(4)

2.5.

Relatório

Como parte do desenvolvimento do trabalho está o desenvolvimento de um relatório de no máximo duas páginas. No relatório deverão estar descritas as principais dificuldades encontradas durante o desenvolvimento e como o problema foi solucionado. O relatório também deverá conter eventuais informações úteis no momento da execução.

2.6.

Pontos extras

Tente ao máximo separar a parte de entrada e saída de dados (interface gráfica) das regras de negócio implementadas na aplicação. Para isso, crie uma classe (Controle) que armazene as informações importantes para a execução da aplicação (lista de filmes, clientes, etc). Defina também as operações a serem realizadas sobre os dados (busca, adição de um novo cliente ou novo filme, etc). Nessa classe evite a utilização de métodos de entrada e saída (System.out.println e métodos da classe SCAN). Para esses métodos crie uma classe (EntradaSaida) que tenha funções como leDadosCliente que retorna um objeto já instanciado.

Tal método de desenvolvimento irá facilitar a inserção de interface gráfica. Caso você deseje mudar a forma de entrada de dados do modo console para janelas, o código desenvolvido poderá ser aproveitado.

O desenvolvimento com entrada no modo console é obrigatório. Caso seja desenvolvida a aplicação com interface gráfica de janelas utilizando a técnica de desenvolvimento mencionada acima (separando entrada e saída das regras de negócios), o trabalho poderá ganhar até 5 pontos extras. Caso seja desenvolvida interface gráfica sem utilizar a técnica, ou seja, desenvolvimento de praticamente dois trabalhos diferentes, o trabalho ganhará até 2,5 pontos extras.

2.7.

Observações

- Os filmes estarão disponíveis para locação apenas se uma das variáveis quantidade de dvd ou quantidade de blurays for maior do que zero. Caso algum filme não tenha unidade disponível para locação ele não poderá ser locado.

- As configurações de multa, quantidade máxima de filmes alugados e valores de aluguéis deverão ser definidas inicialmente pelo programador mas poderão ser alteradas a qualquer momento pelo usuário. Utilize variáveis estáticas para armazenar estes dados.

- Não deve ser possível cadastrar filmes com mesmo nome.

- O dependente pode alugar um filme mas o registro será feito na conta de usuário. - Existem 3 tipos de filmes na locadora que são: Lançamentos, Novos e Antigos. É importante a definição do tipo de filme para determinar qual será o valor do aluguel. Os filmes Lançamentos são mais caros que os Novos que são mais caros que os Antigos. Crie variáveis estáticas e finais para representar cada um dos tipos.

2.8.

Dicas

- Utilize a classe ArrayList para facilitar a manipulação de arrays.

- Para comparar uma String com outra basta utilizar o método equals, como no exemplo abaixo:

(5)

O código acima irá verificar se o nome do empregado que está na posição i do array é igual à String “José da Silva”. Caso seja igual o retorno será um boolean true, caso contrário o retorno será false.

- Quando o usuário escolher a opção de sair da aplicação chame o seguinte método: System.exit(0). A chamada a este método encerra aplicação Java.

- Salve os dados em disco para que ao finalizar a aplicação não sejam perdidos todos os dados – Pesquisa a utilização de ObjectOutpuStream e ObjectInputStream.

2.9.

Valor Data de entrega

O trabalho valerá 20 pontos (com mais 5 extras) e a data da entrega é 07/12/2014. Cada grupo deverá enviar para o email filiperibeiroufop@gmail.com um arquivo “.zip” contendo a pasta do projeto (não deve ser enviado todo o workspace), cuja nomenclatura deverá ter o seguinte padrão:

<Aluno1_Aluno2>_TP  ao digitar seu nome os sinais ‘<’ e ‘>’ devem ser eliminados. Por exemplo: FilipeR_JoaoA_TP.zip sendo que R, A e T são o último sobrenome de cada um.

Observações:

1 – O trabalho poderá ser desenvolvido em dupla.

2 – A avaliação do trabalho também levará em conta a organização do código-fonte (utilização de OO corretamente, pacotes, etc), organização e criatividade. O grupo é livre para escolher detalhes de interface gráfica caso decida desenvolvê-la.

5 – Entrega de arquivos em formato diferente ou com nomenclatura diferente do especificado ocasionará desconto na pontuação.

6 – O trabalho deve ser enviado apenas para o email destacado acima. Não é necessário encaminhar uma cópia para outro email. Além disso, o email acima é apenas para recebimento de trabalhos.

7 – Qualquer plágio ocasionará perda de pontos, podendo ser zerado o trabalho de todas as duplas envolvidas.

Referências

Documentos relacionados

e) As licitantes que forem empresas distribuidoras deverão juntar, no envelope Proposta, declaração (ões) do fabricante, conforme modelo - Anexo VI, em original ou cópia

e) As licitantes que forem empresas distribuidoras deverão juntar, no envelope Proposta, declaração (ões) do fabricante, conforme modelo - Anexo VI, em original ou cópia

A licitante deverá apresentar, na sessão do Pregão, como amostra 01(Hum) unidade de cada item (Itens 01 a 10), em embalagem original de comercialização, para análise pelos

Biocontaminantes em amostras de água Água deionisada Água deinoisada Comentários &gt; 0,24 e &lt; 3 &gt; 3 e &lt; 30 Endotoxinas EU/m 3 12 35 Número total de viáveis UFC/m

É perceptível, desta forma, o constante aumento do aprofundamento dos personagens: os “príncipes” têm agora não só nome e falas, mas personalidades bem desenvolvidas,

1.16 a Atos complementares de terapêutica realizados nos hospitais, por distribuição geográfica (NUTS I/II) e tipo de hospital, segundo o tipo de ato complementar de terapêutica

A partir dessa constatação, o presente trabalho tem por objetivo realizar um inventário das palavras que se realizam com vogais nasais em ambientes não nasais que

This warranty shall not apply to defects or damage (latent or otherwise) caused by the use of or effect of using batteries other than those of the technical specification and