Relatório Final - clinica de estética em java
-
Upload
renata-moretti-paulino -
Category
Documents
-
view
363 -
download
0
Transcript of 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
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.