relatório final - clinica de estética em java

Post on 31-Jul-2015

362 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

MONIQUE KELLEN FERREIRA MACHADO

RENATA MORETTI PAULINO

GERENCIAMENTO DE UMA CLÍNICA DE ESTÉTICA

Relatório apresentado à Universidade Federal do ABC como parte dos requisitos para aprovação na disciplina BC 505 - Processamento da Informação do Curso de Bacharelado em Ciência e Tecnologia.

Professores: Prof. Luiz Rozante

Prof. Franscisco de Assis Zampirolli

Santo André - SP

2012

SUMÁRIO

1 Introdução........................................................................................................................3

2 Algoritmos........................................................................................................................4

2.1 Menu Principal................................................................................................................................4

2.2 Cadastrar.........................................................................................................................................4

2.3 Marcar horário................................................................................................................................5

2.4 Exibir tabela de horários................................................................................................................5

2.5 Exibir extrato final..........................................................................................................................6

2.6 Limpar a matriz...............................................................................................................................7

3 Implementação do projeto..............................................................................................8

3.1 LISTA E DESCRIÇÃO DOS ARQUIVOS DO CÓDIGO FONTE............................................8

3.2 FUNCIONAMENTO DO SISTEMA...........................................................................................11

3.3 TABELA DE ALGORITMOS......................................................................................................21

4 Código Fonte..................................................................................................................22

5 Conclusões......................................................................................................................42

6 Referências Bibliográficas...............................................................................................43

3

1 Introdução

Torna-se cada vez mais importante a necessidade de se criar meios que

facilitem o trabalho, e que tornem cada vez menos manuais as tarefas, diminuindo

assim, o tempo decorrido para a execução das mesmas.

Dentre diversos sistemas possíveis, foi escolhido o de uma clínica de

estética, pois é um setor que trabalha com diversos serviços, na qual notamos a

necessidade em se criar um cadastro de clientes modernizado, em que cada um

possui um número de identificação. Esse número proporciona uma maior eficiência e

agilidade no atendimento pois, por meio deste, temos acesso a todas as

informações relacionadas ao cliente.

Sendo assim, o nosso programa aborda de forma simplificada o

gerenciamento de uma clínica de estética. Nosso sistema disponibilizará de

cinco funções básicas, que consistem no cadastro de clientes, marcação de

horários, exibição da tabela de horários disponíveis, exibição de um extrato final, que

gera o valor total dos serviços escolhidos para cada cliente juntamente com a forma

de pagamento a ser utilizada e por ultimo, a ferramenta para limpeza de agenda,

deixando todos os horários como disponíveis novamente.

Após realizar o cadastro, o cliente tem a opção de marcar horário em

diversos serviços como cabeleireiro, esteticista e manicure/pedicure. Na forma de

pagamento, o cliente pode optar por dinheiro, cartão de crédito ou débito, sendo que

nas opções de cartão de débito e dinheiro, é fornecido um desconto ao cliente.

Com este projeto visa-se aplicar os conhecimentos adquiridos nas aulas

práticas e teóricas da disciplina de Processamento da Informação, assim como,

propor um programa simples, de fácil manuseio para uma clínica de estética.

4

2 Algoritmos

2.1 Menu Principal

- *Bem vindo a Clínica Beleza Urbana*

- Escolher uma opção

1. Cadastrar Cliente

2. Marcar Horário

3. Exibir tabela de horários

4. Exibir extrato final

5. Apagar a Agenda

6. sair

- Direcionar a opção escolhida para o respectivo módulo.

Se opção igual a 1, leve ao módulo Cadastro( );

Se opção igual a 2, leve ao módulo marca_horario( );

Se opção igual a 3, leve ao módulo tabela( );

Se opção igual a 4, leve ao módulo extrato( );

Se opção igual a 5, leve ao módulo limpa_matriz( );

Se opção igual a 6, leve ao módulo saia do programa.

2.2 Cadastrar

- Verifique se contador é menor que a dimensão do vetor (2000)

- Caso seja, então:

Digite o Nome

Digite o Telefone

Digite o RG

Mostre o número de identificação do cliente

Os dados que inseridos e o número de identificação são passados para os

atributos da classe Clientes e então gravados no vetor de clientes como um objeto

da classe Clientes.

- Caso não seja, mostre “Capacidade de registros esgotados".

5

2.3 Marcar horário

Enquanto a opção é igual a 2, repita os passos abaixo:

- Mostre os profissionais a serem escolhidos

1. Cabeleireiro

2. Manicure/Pedicure

3. Esteticista

- Escolha um dos profissionais.

Insira o número de cadastro (ID) do cliente. Se for um número existente,

continue o agendamento:

Escolha um dia da semana

Escolha um horário, caso esteja disponível, continue o agendamento:

Escolha o tratamento desejado

Pergunte se deseja fazer mais algum agendamento. Caso sim,

retorne para a escolha do profissional.

Caso contrário, volte para o menu inicial.

Caso contrario, mostre “Horário indisponível, por favor escolha outro

horário”

caso contrário mostre a mensagem "Cliente não cadastrado no sistema".

2.4 Exibir tabela de horários

- Criar uma tabela com 11 linhas e 7 colunas.

- Tabela recebe a matriz_horarios que foi preenchida do módulo

marca_horario.

- Usar a função tabela.setVisibe(true) para deixar a tabela visível.

- Enquanto a tabela estiver visível, as outras opções do programa são

ocultadas.

6

2.5 Exibir extrato final

Insira o código de identificação (ID);

A variável x recebe esse código de identificação e a posição v[x] do

vetor é acessada.

O vetor v[x] fornece o nome, o RG e o valor a ser pago pelo cliente

associado ao ID digitado.

Essas informações são impressas.

São oferecidas três formas para o pagamento: crédito, débito e

dinheiro.

Se a opção é o crédito, são oferecidas 2 opções: parcelamento em 2, 3

ou 4 vezes.

- Se a opção for 2 vezes, o valor total é dividido em 2 e o

valor de cada parcela é exibido.

- Se a opção for 3 vezes, o valor total é dividido em 3 e o

valor de cada parcela é exibido.

- Se a opção for 4 vezes, o valor total é dividido em 4 e o

valor de cada parcela é exibido.

Se a opção é o débito:

- O valor total é multiplicado por 0,9 para se obter o valor com

10% de desconto

- O valor final com o desconto é exibido

Se a opção é dinheiro:

- O valor total é multiplicado por 0,85 para se obter o

valor com 15% de desconto.

- O valor final com o desconto é exibido.

7

2.6 Limpar a matriz

Inicia-se um contador i com 0 e um contador j também com zero.

Enquanto o contador i, que representa as colunas da matriz, for menor que

10, acrescenta-se uma unidade em i.

Enquanto o contador j, que representa as linhas da matriz, for menor que 6,

acrescenta-se uma unidade em j.

o Sendo as duas sentenças acima verdadeiras, a posição

correspondente [i][j] da matriz é preenchida com a palavra “disp”.

2.7 Sair do Programa

Quando a opção 6 é selecionada

Os dados dos clientes que haviam sido inseridos no módulo cadastro são

gravados num arquivo de texto (saida.txt)

Os dados de agendamento de horários do módulo marca_horario são

gravados em um outro arquivo de texto (horários.txt)

É usado o comando System.exit(0) para sair do programa.

8

3 Implementação do projeto

3.1 LISTA E DESCRIÇÃO DOS ARQUIVOS DO CÓDIGO FONTE

Atributos

Clientes v[ ]: vetor que armazenará objetos (instancias) da classe Clientes.

Para não ter que criar um vetor cada elemento do cadastro (Nome, RG,

Telefone), uma classe de Clientes foi criada e a partir dessa classe eu

armazeno todas as informações em atributos de um mesmo objeto e então

gravo esse objeto no vetor de clientes

prof[ ]: vetor de profissionais em que prof[0] = cabeleireito; prof[1] =

Manicure/Pedicure; prof[2] = Esteticista.

precos_cabeleireiro[ ][ ]: Matriz 2x3 que relaciona os preços com cada

tratamento de cabeleireiro.

precos_manicure[ ][ ]: Matriz 2x3 que relaciona os preços com cada

tratamento de manicure/pedicure.

precos_esteticista[ ][ ]: Matriz 2x3 que relaciona os preços com cada

tratamento de Esteticista.

matriz_horarios[ ][ ]: Matriz 10x6 que relaciona os dias da semana com os

horários de funcionamento da clínica.

Vtotal[ ]: Vetor com os valor total a ser pago por cada cliente ao final dos

agendamentos. Esse valor se refere a soma dos tratamentos marcados pelo

cliente na clínica Beleza Urbana.

saida.txt: Arquivo em que o programa grava as informações dos clientes

cadastrados. Serve para que o código de identificação (ID) de cada cliente

seja válido pois ao sair do programa, cada cliente ocupa uma posição (i) do

vetor que não será substituída.

horarios.txt: Arquivo em que o programa grava a matriz_horarios[ ] [ ]. Serve

para assegurar que as posições já utilizadas da matriz não voltem a ser

consideradas como “disponível” ao reiniciar o programa.

9

Métodos e Classes

Cadastro( ): Módulo responsável pelo cadastro dos clientes na clinica. Não

possui nenhum valor de retorno.

marca_horario( ): Módulo responsável pela marcação de horário. É nesse

módulo que o atendente define o profissional desejado pelo cliente, o

tratamento escolhido e também agenda o dia e o horário para que o cliente vá

a clinica. Não retorna nenhum valor.

tabela( ): Módulo responsável por exibir a tabela. Não retorna nenhum valor.

extrato( ): Módulo que relaciona o cliente com todos os tratamentos feitos

por ele, e então calcula a quantia a ser paga por ele. É neste mesmo módulo

onde se define a forma de pagamento, que pode ser em dinheiro, cartão de

débito ou crédito. Caso a forma de pagamento escolhida seja dinheiro ou

cartão de débito, o cliente recebe um desconto de 15% e 10%,

respectivamente. Não retorna nenhum valor.

Limpa_matriz( ): Módulo responsável por fazer com que a matriz fique com

todas as posições “disponíveis” novamente. Não retorna nenhum valor.

preços_cabe( ): Módulo que retorna o preço para o tratamento de

cabeleireiro escolhido pelo cliente. Não retorna nenhum valor.

preços_mani( ): Módulo que retorna o preço para o tratamento de

Manicure/Pedicure escolhido pelo cliente. Não retorna nenhum valor.

preços_est ( ): Módulo que retorna o preço para o tratamento de estética

escolhido pelo cliente. Não retorna nenhum valor.

Escrita ( ): Módulo que grava os cliente cadastrados em um arquivo .txt

chamado “saida.txt”.

Leitura ( ): Módulo que lê o arquivo “saida.txt” para reconhecer as

informações já salvas e então reconhecer os clientes já cadastrados e suas

respectivas informações.

gravaMatriz ( ): Módulo que grava a matriz de horários em outro arquivo .txt

chamado de “horarios.txt”

leMatriz ( ): Módulo responsável por ler a matriz de horários salva no arquivo

“horários.txt” e então reconhecer as posições da matriz que ainda se

encontram como “disponíveis” para marcação.

10

Class Clientes: Classe Clientes que possui como atributos NOME,

TELEFONE, RG, e um contador (i) responsável por gerar um código de

identificação único para cada cliente.

Class Tabela: Classe que extende JFrame, que possui como componente

uma JTable. A classe tabela possui um método recebematriz, que recebe,

por parâmetro, uma matriz do método main.

Recebematriz( ): Método responsável por receber, por parâmetro, a matriz

de horários do método main.

11

3.2 FUNCIONAMENTO DO SISTEMA

Quando o programa é rodado, é exibida a tela de boas vindas da Clínica de

Estética para dar início ao programa.

Logo em seguida é exibida esta tela, que exibe as cinco funções do

programa, que são o “cadastro de clientes”, a “marcação de horários”, a “exibição da

tabela de horários”, a “exibição do extrato final” e a função de “apagar a agenda”.

Primeiramente selecionamos a primeira opção para cadastrar um cliente, o que nos

leva a uma sequência de três janelas onde o cliente deve inserir seus dados

pessoais.

12

Logo após serem inseridos os dados, aqui tomamos como exemplo a

cliente Monique, o sistema irá gerar um número de identificação (ID) para o cliente,

através do qual um funcionário da clínica de estética poderá marcar o horário para

este cliente em visitas futuras, sem ter que inserir todos os seus dados novamente,

pois os dados do cliente ficarão armazenados no sistema da clínica.

Em seguida, o programa irá retornar para a sua página principal, onde

iremos marcar um horário para a cliente Monique que foi cadastrada.

13

Após selecionada a opção “marcação de horário”, a o programa irá exibir uma janela

informando que deverá ser feita a escolha do tipo de profissional. Neste exemplo, o

profissional cabeleireiro foi escolhido.

Após esta escolha, o programa irá pedir para que o usuário informe o seu

número de identificação, para que assim ele possa acessar suas informações sem

ter que pedir todos os dados.

Em seguida o programa exibe o nome do cliente para confirmar se

aquele número de cadastro está correto e pergunta se pode ser confirmada a

marcação, neste caso, para a cliente Monique.

14

Feita essa confirmação, o programa irá exibir uma janela com os dias

de funcionamento da clínica, para que o cliente escolha em qual dia da semana quer

marcar seu tratamento.

Neste caso, como exemplo, foi selecionada a opção 3, para quinta-feira. Em

seguida, é exibida uma janela com os horários de funcionamento da clínica para que

o cliente possa selecionar o horário que deseja marcar seu tratamento. Se o dia e o

horário já estiverem preenchidos, o programa irá exibir uma mensagem informando

que o horário está indisponível e solicitando que seja feita uma nova seleção de dias

e horários.

15

Aqui, como exemplo, foi selecionado o horário das 9 horas, que estava

disponível, portanto está mensagem de horário indisponível não foi exibida. Ao invés

disto, é exibida uma mensagem para que o cliente selecione o tipo de tratamento

que irá realizar com o profissional que ele havia escolhido nos passos anteriores.

Nesta janela de seleção do tratamento são exibidos todos os tratamentos

disponíveis para o profissional em questão juntamente com os valores de cada tipo

de tratamento/serviço. Neste exemplo, foi escolhido um corte, que tem o valor de R$

50,00. Em seguida o programa exibe uma janela informando que o tratamento foi

marcado com sucesso e, além disto, pergunta se o usuário deseja fazer outra

marcação.

16

Para efeito de exemplo, foi feito um segundo cadastro, da cliente Renata,

seguindo os mesmos primeiros passos para a opção “1”, de cadastro de clientes.

Em seguida, tomou-se como exemplo que esta cliente efetuou duas marcações de

horário. A primeira com o profissional esteticista, para terça feira, às 13 horas, para

fazer um tratamento de drenagem. A segunda marcação, com o profissional

manicure/pedicure, sexta feira às 10 horas, para fazer o tratamento de mão e pé. Os

passos seguem em resumo abaixo:

Quando o programa perguntar se o usuário deseja fazer outra marcação,

neste exemplo escolheu-se a opção sim, e o programa volta para a janela de

escolha do profissional desejado, perguntando em seguida o número de cadastro do

cliente. A partir desde ponto os passos são análogos e é feita a marcação do

tratamento de mão e pé para a cliente Renata.

A seguir, o programa volta para sua página inicial, onde selecionamos a

opção de exibir a tabela de horários.

17

Nesta tabela, a maioria dos horários está escrito “disp” o que significa que o

horário está disponível. Os três horários ocupados, que são terça-feira as 13 horas,

quinta feira as 09 horas e sexta-feira as 10 horas estão ocupados com um nome e

um tratamento. No caso o nome das clientes Monique e Renata e seus respectivos

tratamentos escolhidos anteriormente neste exemplo.

Quando esta tabela é fechada o programa volta para sua tela inicial

novamente, onde é selecionada a opção de “exibir extrato final”.

18

O programa solicita o código do cliente, que neste exemplo é 1 para a cliente

Monique e 2 para a cliente Renata. Fazendo os dois exemplos e obtemos o extrato

final de cada uma das clientes, que para a cliente Monique ficou:

E para a cliente Renata, que fez dois tipos diferentes de tratamento:

Em seguida o programa exibe uma janela perguntando qual será a forma de

pagamento. As 3 opções aceitas pela clínica são dinheiro e cartões de crédito e

débito. Aqui também faremos duas simulações sobre a forma de pagamento a ser

feita.

19

Primeiro seguimos com o exemplo da cliente Monique, que seleciona a forma

de pagamento no cartão de débito. O programa calcula o valor total do tratamento, e

aplica um desconto de 10% sobre este valor, pois a clínica oferece um desconto de

10% para pagamentos feitos com cartão de débito.

O segundo exemplo, da cliente Renata, é feito com a opção de pagamento

em dinheiro. E o programa calcula o valor total do pagamento com 15% de

desconto, pois esta é a porcentagem de desconto para pagamentos feitos em

dinheiro.

A opção de pagamento no cartão de crédito não oferece nenhum tipo de

desconto, porém oferece a opção de pagamento em 2, 3 ou 4 vezes sem juros.

20

Para finalizar, o programa conta com uma última função, a de apagar agenda,

que consiste em zerar a agenda, deixando todos os horários com a legenda “disp”,

ou seja, disponíveis para a marcação de horários. Como a agenda do programa é

semanal, este função torna-se necessária para uso no final da semana, ou mais

precisamente no domingo, dia em que não há marcação de horários e a clínica fica

fechada, podendo ser iniciada a agenda nova para a semana seguinte.

Ao final da utilização do programa, o usuário DEVE se lembrar de utilizar a

última opção “6 – Sair”, por razões técnicas, para que todos os procedimentos de

cadastro e marcação de horários sejam salvos e estejam disponíveis para uso da

próxima vez que o programa for iniciado.

21

3.3 TABELA DE ALGORITMOS

Tabela 1: Lista dos Algoritmos

ALGORITMO NOME DO ALUNO RESPONSÁVELMenu principal Monique Machado e Renata Moretti

Cadastrar Monique Machado e Renata Moretti

Marcar horário Monique Machado e Renata Moretti

Exibir tabela de horários Monique Machado e Renata Moretti

Exibir extrato final Monique Machado e Renata Moretti

Limpar a agenda Monique Machado e Renata Moretti

Sair do programa Monique Machado e Renata MorettiEscrita Monique Machado e Renata MorettiLeitura Monique Machado e Renata Moretti

gravaMatriz Monique Machado e Renata MorettileMatriz Monique Machado e Renata Moretti

Class Clientes Monique Machado e Renata MorettiClass Tabela Monique Machado e Renata Moretti

22

4 Código Fonte

/ * * UFABC – BC&T – BC0505 * ALGORITMO: Menu Principal * * Responsável: Monique Machado e Renata Moretti * * Data: 21/04/2012 * */

JOptionPane.showMessageDialog(null, "**Bem Vindo à Clinica Beleza Urbana**");

while (opcao != 6) { opcao = Integer.parseInt(JOptionPane.showInputDialog(null, "1 - Cadastrar Cliente \n 2 - Marcar Horário \n 3 - Exibir tabela de horários \n 4 - Exibir extrato final \n 5 - Apagar a Agenda \n 6 - sair")); if (opcao == 1) { Cadastro(cont); } if (opcao == 2) { marca_horario(); } if (opcao == 3) { tabela(); } if (opcao == 4) { extrato(); } if (opcao == 5) { limpa_matriz(); } if (opcao == 6) { System.exit(0); } } escrita("saida.txt"); gravaMatriz("horarios.txt"); }

23

/ * * UFABC – BC&T – BC0505 * ALGORITMO: Cadastrar * * Responsável: Monique Machado e Renata Moretti * * Data: 11/04/2012 * */

static void Cadastro(int i) { try {

if (i <= v.length) { String nome = JOptionPane.showInputDialog("Digite o Nome"); String telefone = JOptionPane.showInputDialog("Digite o Telefone"); String rg = JOptionPane.showInputDialog("Digite o Rg"); JOptionPane.showMessageDialog(null, "O seu número de identificação (ID) é: " + i); Clientes x = new Clientes(nome, telefone, rg, i); v[i] = x; cont++; }

} catch (ArrayIndexOutOfBoundsException e) { JOptionPane.showMessageDialog(null, "Capacidade de registros esgotados"); } }

24

/ * * UFABC – BC&T – BC0505 * ALGORITMO: Marcar Horário * * Responsável: Monique Machado e Renata Moretti * * Data: 21/04/2012 * */

static void marca_horario() {

while (opcao == 2) {

JOptionPane.showMessageDialog(null, "ESCOLHA O PROFISSIONAL DESEJADO");

int profissional = Integer.parseInt(JOptionPane.showInputDialog(null, "1 - Cabeleireiro \n 2 - Manicure/Pedicure \n 3 - Esteticista"));

if (profissional == 1) {

int codigo = Integer.parseInt(JOptionPane.showInputDialog("Digite o número de cadastro (ID) "));

try {

Clientes x = v[codigo];

int i = JOptionPane.showConfirmDialog(null, "Confirmar marcação para cliente " + x.nome + "?", "Atenção", JOptionPane.YES_NO_OPTION);

if (i == JOptionPane.YES_OPTION) {

int dia = Integer.parseInt(JOptionPane.showInputDialog(null, "Escolha o dia da semana \n 0 - Segunda \n 1 - Terça \n 2 - Quarta \n 3 - Quinta \n 4 - Sexta \n 5 - Sabado "));

int horario = Integer.parseInt(JOptionPane.showInputDialog(null, "Escolha o horário (hr) : \n 0 - 8h \n 1 - 9h \n 2 - 10h \n 3 - 11h \n 4 - 12h \n 5 - 13h \n 6 - 14h \n 7 - 15h \n 8 - 16h \n 9 - 17h"));

while (!"disp".equals(matriz_horarios[horario][dia])) {

JOptionPane.showMessageDialog(null, "Horario Indisponível, por favor escolha outro horário");

dia = Integer.parseInt(JOptionPane.showInputDialog(null, "Escolha o dia da semana \n 0 - Segunda \n 1 - Terça \n 2 - Quarta \n 3 - Quinta \n 4 - Sexta \n 5 - Sabado "));

horario = Integer.parseInt(JOptionPane.showInputDialog(null, "Escolha o horário (hr) : \n 0 - 8h

25

\n 1 - 9h \n 2 - 10h \n 3 - 11h \n 4 - 12h \n 5 - 13h \n 6 - 14h \n 7 - 15h \n 8 - 16h \n 9 - 17h"));

}

JOptionPane.showMessageDialog(null, "ESCOLHA O TRATAMENTO DESEJADO");

int tratamento = Integer.parseInt(JOptionPane.showInputDialog(null, "1 - Hidratação R$35,00 \n 2 - Coloração R$40,00 \n 3 - Corte R$50,00"));

if (tratamento == 1) {

matriz_horarios[horario][dia] = x.nome + "/" + precos_cabeleireiro[0][0];

JOptionPane.showMessageDialog(null, "Tratamento marcado com sucesso!");

vtotal[codigo] = vtotal[codigo] + Integer.parseInt(precos_cabeleireiro[1][0]);

int novamarcacao = JOptionPane.showConfirmDialog(null, "Efetuar mais uma marcação " + "?", "Atenção", JOptionPane.YES_NO_OPTION);

if (novamarcacao == JOptionPane.YES_OPTION) {

opcao = 2;

}

if (novamarcacao == JOptionPane.NO_OPTION) {

opcao = 0;

}

}

if (tratamento == 2) {

matriz_horarios[horario][dia] = x.nome + "/" + precos_cabeleireiro[0][1];

JOptionPane.showMessageDialog(null, "Tratamento marcado com sucesso!");

vtotal[codigo] = vtotal[codigo] + Integer.parseInt(precos_cabeleireiro[1][1]);

int novamarcacao = JOptionPane.showConfirmDialog(null, "Efetuar mais uma marcação " + "?", "Atenção", JOptionPane.YES_NO_OPTION);

if (novamarcacao == JOptionPane.YES_OPTION) {

opcao = 2;

}

if (novamarcacao == JOptionPane.NO_OPTION) {

26

opcao = 0;

}

}

if (tratamento == 3) {

matriz_horarios[horario][dia] = x.nome + "/" + precos_cabeleireiro[0][2];

JOptionPane.showMessageDialog(null, "Tratamento marcado com sucesso!");

vtotal[codigo] = vtotal[codigo] + Integer.parseInt(precos_cabeleireiro[1][2]);

int novamarcacao = JOptionPane.showConfirmDialog(null, "Efetuar mais uma marcação " + "?", "Atenção", JOptionPane.YES_NO_OPTION);

if (novamarcacao == JOptionPane.YES_OPTION) {

opcao = 2;

}

if (novamarcacao == JOptionPane.NO_OPTION) {

opcao = 0;

}

}

}

} catch (NullPointerException e) {

JOptionPane.showMessageDialog(null, "Cliente não cadastrado no sistema");

opcao = 0;

}

}

if (profissional == 2) {

int codigo = Integer.parseInt(JOptionPane.showInputDialog("Digite o Número de Cadastro (ID) "));

Clientes x = null;

try {

x = v[codigo];

int i = JOptionPane.showConfirmDialog(null, "Confirmar marcação para Cliente " + x.nome + "?", "Atenção", JOptionPane.YES_NO_OPTION);

27

if (i == JOptionPane.YES_OPTION) {

int dia = Integer.parseInt(JOptionPane.showInputDialog(null, "Escolha o dia da semana \n 0 - Segunda \n 1 - Terça \n 2 - Quarta \n 3 - Quinta \n 4 - Sexta \n 5 - Sabado "));

int horario = Integer.parseInt(JOptionPane.showInputDialog(null, "Escolha o horário (hr) : \n 0 - 8h \n 1 - 9h \n 2 - 10h \n 3 - 11h \n 4 - 12h \n 5 - 13h \n 6 - 14h \n 7 - 15h \n 8 - 16h \n 9 - 17h"));

while (!"disp".equals(matriz_horarios[horario][dia])) {

JOptionPane.showMessageDialog(null, "Horário Indisponivel, por favor escolha outro horário");

dia = Integer.parseInt(JOptionPane.showInputDialog(null, "Escolha o dia da semana \n 0 - Segunda \n 1 - Terça \n 2 - Quarta \n 3 - Quinta \n 4 - Sexta \n 5 - Sabado "));

horario = Integer.parseInt(JOptionPane.showInputDialog(null, "Escolha o horario (hr) : \n 0 - 8h \n 1 - 9h \n 2 - 10h \n 3 - 11h \n 4 - 12h \n 5 - 13h \n 6 - 14h \n 7 - 15h \n 8 - 16h \n 9 - 17h"));

}

JOptionPane.showMessageDialog(null, "ESCOLHA O TRATAMENTO DESEJADO");

int tratamento = Integer.parseInt(JOptionPane.showInputDialog(null, "1 - Mão R$12,00 \n 2 - Pé R$14,00 \n 3 - Mão e Pé R$26,00"));

if (tratamento == 1) {

matriz_horarios[horario][dia] = x.nome + "/" + precos_manicure[0][0];

JOptionPane.showMessageDialog(null, "Tratamento marcado com sucesso!");

vtotal[codigo] = vtotal[codigo] + Integer.parseInt(precos_manicure[1][0]);

int novamarcacao = JOptionPane.showConfirmDialog(null, "Efetuar mais uma marcação " + "?", "Atenção", JOptionPane.YES_NO_OPTION);

if (novamarcacao == JOptionPane.YES_OPTION) {

opcao = 2;

}

if (novamarcacao == JOptionPane.NO_OPTION) {

28

opcao = 0;

}

}

if (tratamento == 2) {

matriz_horarios[horario][dia] = x.nome + "/" + precos_manicure[0][1];

JOptionPane.showMessageDialog(null, "Tratamento marcado com sucesso!");

vtotal[codigo] = vtotal[codigo] + Integer.parseInt(precos_manicure[1][1]);

int novamarcacao = JOptionPane.showConfirmDialog(null, "Efetuar mais uma marcação " + "?", "Atenção", JOptionPane.YES_NO_OPTION);

if (novamarcacao == JOptionPane.YES_OPTION) {

opcao = 2;

}

if (novamarcacao == JOptionPane.NO_OPTION) {

opcao = 0;

}

}

if (tratamento == 3) {

matriz_horarios[horario][dia] = x.nome + "/" + precos_manicure[0][2];

JOptionPane.showMessageDialog(null, "Tratamento marcado com sucesso!");

vtotal[codigo] = vtotal[codigo] + Integer.parseInt(precos_manicure[1][2]);

int novamarcacao = JOptionPane.showConfirmDialog(null, "Efetuar mais uma marcação " + "?", "Atencão", JOptionPane.YES_NO_OPTION);

if (novamarcacao == JOptionPane.YES_OPTION) {

opcao = 2;

}

if (novamarcacao == JOptionPane.NO_OPTION) {

opcao = 0;

}

}

29

}

} catch (NullPointerException e) {

JOptionPane.showMessageDialog(null, "Cliente Nao Cadastrado no Sistema");

opcao = 0;

}

}

if (profissional == 3) {

int codigo = Integer.parseInt(JOptionPane.showInputDialog("Digite o Numero de Cadastro (ID) "));

Clientes x = null;

try {

x = v[codigo];

int i = JOptionPane.showConfirmDialog(null, "Confirmar marcação para Cliente " + x.nome + "?", "Atencão", JOptionPane.YES_NO_OPTION);

if (i == JOptionPane.YES_OPTION) {

int dia = Integer.parseInt(JOptionPane.showInputDialog(null, "Escolha o dia da semana \n 0 - Segunda \n 1 - Terça \n 2 - Quarta \n 3 - Quinta \n 4 - Sexta \n 5 - Sábado "));

int horario = Integer.parseInt(JOptionPane.showInputDialog(null, "Escolha o horário (hr) : \n 0 - 8h \n 1 - 9h \n 2 - 10h \n 3 - 11h \n 4 - 12h \n 5 - 13h \n 6 - 14h \n 7 - 15h \n 8 - 16h \n 9 - 17h"));

while (!"disp".equals(matriz_horarios[horario][dia])) {

JOptionPane.showMessageDialog(null, "Horario Indisponivel , por favor escolha outro horario");

30

dia = Integer.parseInt(JOptionPane.showInputDialog(null, "Escolha o dia da semana \n 0-Segunda \n 1- Terça \n 2- Quarta \n 3- Quinta \n 4- Sexta \n 5- Sábado "));

horario = Integer.parseInt(JOptionPane.showInputDialog(null, "Escolha o horario (hr) : \n 0 - 8h \n 1 - 9h \n 2 - 10h \n 3 - 11h \n 4 - 12h \n 5 - 13h \n 6 - 14h \n 7 - 15h \n 8 - 16h \n 9 - 17h"));

}

JOptionPane.showMessageDialog(null, "ESCOLHA O TRATAMENTO DESEJADO");

int tratamento = Integer.parseInt(JOptionPane.showInputDialog(null, "1 - Drenagem R$70,00 \n 2 - Massagem R$50,00 \n 3 - Peeling R$80,00"));

if (tratamento == 1) {

matriz_horarios[horario][dia] = x.nome + "/" + precos_esteticista[0][0];

JOptionPane.showMessageDialog(null, "Tratamento marcado com sucesso!");

vtotal[codigo] = vtotal[codigo] + Integer.parseInt(precos_esteticista[1][0]);

int novamarcacao = JOptionPane.showConfirmDialog(null, "Efetuar mais uma marcação " + "?", "Atenção", JOptionPane.YES_NO_OPTION);

if (novamarcacao == JOptionPane.YES_OPTION) {

opcao = 2;

}

if (novamarcacao == JOptionPane.NO_OPTION) {

opcao = 0;

}

}

if (tratamento == 2) {

matriz_horarios[horario][dia] = x.nome + "/" + precos_esteticista[0][1];

JOptionPane.showMessageDialog(null, "Tratamento marcado com sucesso!");

vtotal[codigo] = vtotal[codigo] + Integer.parseInt(precos_esteticista[1][1]);

int novamarcacao = JOptionPane.showConfirmDialog(null, "Efetuar mais uma marcação " + "?", "Atenção", JOptionPane.YES_NO_OPTION);

31

if (novamarcacao == JOptionPane.YES_OPTION) {

opcao = 2;

}

if (novamarcacao == JOptionPane.NO_OPTION) {

opcao = 0;

}

}

if (tratamento == 3) {

matriz_horarios[horario][dia] = x.nome + "/" + precos_esteticista[0][2];

JOptionPane.showMessageDialog(null, "Tratamento marcado com sucesso!");

vtotal[codigo] = vtotal[codigo] + Integer.parseInt(precos_esteticista[1][2]);

int novamarcacao = JOptionPane.showConfirmDialog(null, "Efetuar mais uma marcação " + "?", "Atenção", JOptionPane.YES_NO_OPTION);

if (novamarcacao == JOptionPane.YES_OPTION) {

opcao = 2;

}

if (novamarcacao == JOptionPane.NO_OPTION) {

opcao = 0;

}

}

}

} catch (NullPointerException e) {

JOptionPane.showMessageDialog(null, "Cliente não cadastrado no sistema");

opcao = 0;

}

}

}

}

32

/ * * UFABC – BC&T – BC0505 * ALGORITMO: Exibir tabela de horários * * Responsável: Monique Machado e Renata Moretti * * Data: 21/04/2012 * */

static void tabela() {

Tabela tabela = new Tabela();

tabela.recebematriz(matriz_horarios);

tabela.setVisible(true);

while (tabela.isVisible()) {

opcao = 6;

}

opcao = 3;

}

33

/ * * UFABC – BC&T – BC0505 * ALGORITMO: Exibir extrato final * * Responsável: Monique Machado e Renata Moretti * * Data: 21/04/2012 * */

static void extrato() {

int x;

double parcela;

x = Integer.parseInt(JOptionPane.showInputDialog("Digite o código de identificação (ID) do cliente"));

JOptionPane.showMessageDialog(null, "Cliente: " + v[x].nome + " \n ID: " + v[x].id + "\nRG: " + v[x].Rg + "\n O valor a ser pago é: " + vtotal[x] + " reais");

int fpag = Integer.parseInt(JOptionPane.showInputDialog("Escolha a forma de pagamento \n 1-Crédito \n 2-Débito \n 3-Dinheiro"));

if (fpag == 1) {

int vezes = Integer.parseInt(JOptionPane.showInputDialog("Em quantas vezes deseja parcelar a quantia de " + vtotal[x] + " reais ? \n 1 - 2x \n 2 - 3x \n 3 - 4x"));

if (vezes == 1) {

parcela = (double) vtotal[x] / 2;

JOptionPane.showMessageDialog(null, "O valor de cada parcela é: " + parcela);

} else if (vezes == 2) {

parcela = (double) vtotal[x] / 3;

JOptionPane.showMessageDialog(null, "O valor de cada parcela é: " + parcela);

} else if (vezes == 3) {

parcela = (double) vtotal[x] / 4;

34

JOptionPane.showMessageDialog(null, "O valor de cada parcela é: " + parcela);

}

}

if (fpag == 2) {

parcela = (double) vtotal[x] * 0.9;

JOptionPane.showMessageDialog(null, "O valor total a ser pago, com 10% de desconto é: " + parcela);

}

if (fpag == 3) {

parcela = (double) vtotal[x] * 0.85;

JOptionPane.showMessageDialog(null, "O valor total a ser pago, com 15% de desconto é: " + parcela);

}

}

35

/ * * UFABC – BC&T – BC0505 * ALGORITMO: Limpar a agenda * * Responsável: Monique Machado e Renata Moretti * * Data: 21/04/2012 * */

static void limpa_matriz() {

for (int i = 0; i < 10; i++) {

for (int j = 0; j < 6; j++) {

matriz_horarios[i][j] = "disp";

}

}

gravaMatriz("horarios.txt");

leMatriz("horarios.txt");

}

36

/ * * UFABC – BC&T – BC0505 * ALGORITMO: Sair do programa * * Responsável: Monique Machado e Renata Moretti * * Data: 21/04/2012 * */

if (opcao == 6) { System.exit(0); }

/ * * UFABC – BC&T – BC0505 * ALGORITMO: Escrita * * Responsável: Monique Machado e Renata Moretti * * Data: 21/04/2012 * */

static void escrita(String nomeArq) { BufferedWriter conexao; try { FileWriter file = new FileWriter("saida.txt", true); conexao = new BufferedWriter(file);

for (int j = cont2; j < cont; j++) { String linha = v[j].nome + ":" + v[j].Telefone + ":" + v[j].Rg + ":" + v[j].id + "\n"; conexao.write(linha);

} conexao.close();

} catch (IOException e) { JOptionPane.showMessageDialog(null, JOptionPane.ERROR_MESSAGE); } }

37

/ * * UFABC – BC&T – BC0505 * ALGORITMO: leitura * * Responsável: Monique Machado e Renata Moretti * * Data: 21/04/2012 * */

static void leitura(String nomeArq) { BufferedReader conexao; try { FileReader ent = new FileReader(nomeArq); conexao = new BufferedReader(ent); String linha; String[] campos = null; linha = conexao.readLine(); while (linha != null) {

campos = linha.split(":"); Clientes y = new Clientes(campos[0], campos[1], campos[2], Integer.parseInt(campos[3])); v[cont] = y; cont++;

linha = conexao.readLine(); } conexao.close(); } catch (IOException e) { System.out.println("Erro ao ler arquivo"); }

}

38

/ * * UFABC – BC&T – BC0505 * ALGORITMO: gravaMatriz * * Responsável: Monique Machado e Renata Moretti * * Data: 21/04/2012 * */

static void gravaMatriz(String nomeArq) { BufferedWriter conexao;

try { conexao = new BufferedWriter(new FileWriter("horarios.txt"));

for (int j = 0; j < 10; j++) { for (int i = 0; i < 6; i++) { String linha = matriz_horarios[j][i] + ":"; conexao.write(linha); } } conexao.close();

} catch (IOException e) { JOptionPane.showMessageDialog(null, JOptionPane.ERROR_MESSAGE); } }

39

/ * * UFABC – BC&T – BC0505 * ALGORITMO: leMatriz * * Responsável: Monique Machado e Renata Moretti * * Data: 21/04/2012 * */

static void leMatriz(String nomeArq) { BufferedReader conexao; try { FileReader ent = new FileReader(nomeArq); conexao = new BufferedReader(ent); String linha; String[] campos = null; linha = conexao.readLine(); while (linha != null) { campos = linha.split(":");

int k = 0; for (int j = 0; j < 10; j++) { for (int i = 0; i < 6; i++) { matriz_horarios[j][i] = campos[k]; k++; } }

linha = conexao.readLine(); } conexao.close(); } catch (IOException e) { System.out.println("Erro ao ler arquivo"); }

}

40

/ * * UFABC – BC&T – BC0505 * ALGORITMO: class Clientes * * Responsável: Monique Machado e Renata Moretti * * Data: 21/04/2012 * */

class Clientes {

String nome; //atributos String Telefone; String Rg; int id;

public Clientes(String nome, String telefone, String rg, int i) { //argumentos this.nome = nome; this.Telefone = telefone; this.Rg = rg; this.id = i; }}

41

/ * * UFABC – BC&T – BC0505 * ALGORITMO: class Tabela * * Responsável: Monique Machado e Renata Moretti * * Data: 21/04/2012 * */

public class Tabela extends javax.swing.JFrame { String mat[][]; void recebematriz(String Matriz[][]){ this.mat = Matriz; } public Tabela() { initComponents(); }

private void formWindowOpened(java.awt.event.WindowEvent evt) { for(int i = 0; i<10;i++){ for(int j=0;j<6;j++){ jTable1.setValueAt(mat[i][j],i,j+1); }}}

private void formWindowClosed(java.awt.event.WindowEvent evt) { this.setVisible(false);}

}

42

5 Conclusões

Com a realização deste projeto foi possível colocar em prática os conteúdos

abrangidos na disciplina de Processamento da Informação, bem como pesquisar

outras formas de programar que não foram discutidas durante o curso.

Ocorreram diversas dificuldades durante a elaboração do projeto, algumas

foram supridas com a ajuda de pessoas da área de programação. Porém, dúvidas

pertinentes acabaram por fazer com que algumas alterações fossem realizadas, pois

em diversos casos, percebeu-se que não era possível seguir perfeitamente o que

havia sido exposto na proposta inicial e, houve assim, a necessidade de algumas

alterações ou mudanças ao longo do projeto.

Com a implementação do projeto é possível expor o trabalho à pessoas leigas

no assunto, explicando detalhadamente o funcionamento do projeto e de que

maneira as informações devem ser introduzidas para o correto funcionamento do

sistema.

Concluí-se assim, que apesar do difícil caminho até o fim do projeto, as

experiências e o aprendizado adquirido foram de grande importância para a nossa

formação e entendimento na área de Processamento da Informação.

43

6 Referências Bibliográficas

DEITEL, Harvey M., DEITEL, Paul J. JAVA: como programar. 6 ed. São Paulo:

Pearson Prentice Hall, 2005.

FORBELLONE, André L. V., EBERSPÄCHER, Henri F. Lógica de

Programação. 3 ed. São Paulo: Pearson Prentice Hall, 2006.

top related