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

55
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

Upload: renata-moretti-paulino

Post on 31-Jul-2015

362 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Relatório Final - clinica de estética em java

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

Page 2: Relatório Final - clinica de estética em java

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

Page 3: Relatório Final - clinica de estética em java

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.

Page 4: Relatório Final - clinica de estética em java

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".

Page 5: Relatório Final - clinica de estética em java

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.

Page 6: Relatório Final - clinica de estética em java

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.

Page 7: Relatório Final - clinica de estética em java

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.

Page 8: Relatório Final - clinica de estética em java

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.

Page 9: Relatório Final - clinica de estética em java

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.

Page 10: Relatório Final - clinica de estética em java

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.

Page 11: Relatório Final - clinica de estética em java

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.

Page 12: Relatório Final - clinica de estética em java

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.

Page 13: Relatório Final - clinica de estética em java

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.

Page 14: Relatório Final - clinica de estética em java

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.

Page 15: Relatório Final - clinica de estética em java

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.

Page 16: Relatório Final - clinica de estética em java

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.

Page 17: Relatório Final - clinica de estética em java

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”.

Page 18: Relatório Final - clinica de estética em java

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.

Page 19: Relatório Final - clinica de estética em java

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.

Page 20: Relatório Final - clinica de estética em java

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.

Page 21: Relatório Final - clinica de estética em java

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

Page 22: Relatório Final - clinica de estética em java

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"); }

Page 23: Relatório Final - clinica de estética em java

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"); } }

Page 24: Relatório Final - clinica de estética em java

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

Page 25: Relatório Final - clinica de estética em java

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) {

Page 26: Relatório Final - clinica de estética em java

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);

Page 27: Relatório Final - clinica de estética em java

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) {

Page 28: Relatório Final - clinica de estética em java

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;

}

}

Page 29: Relatório Final - clinica de estética em java

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");

Page 30: Relatório Final - clinica de estética em java

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);

Page 31: Relatório Final - clinica de estética em java

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;

}

}

}

}

Page 32: Relatório Final - clinica de estética em java

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;

}

Page 33: Relatório Final - clinica de estética em java

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;

Page 34: Relatório Final - clinica de estética em java

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);

}

}

Page 35: Relatório Final - clinica de estética em java

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");

}

Page 36: Relatório Final - clinica de estética em java

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); } }

Page 37: Relatório Final - clinica de estética em java

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"); }

}

Page 38: Relatório Final - clinica de estética em java

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); } }

Page 39: Relatório Final - clinica de estética em java

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"); }

}

Page 40: Relatório Final - clinica de estética em java

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; }}

Page 41: Relatório Final - clinica de estética em java

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);}

}

Page 42: Relatório Final - clinica de estética em java

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.

Page 43: Relatório Final - clinica de estética em java

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.