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
1Introdução.....................................................................................................................................3 Algoritmos .....................................................................................................................................4
Menu Principal...................................................................................................................................................4 Cadastrar.............................................................................................................................................................4 Marcar horário...................................................................................................................................................5 Exibir tabela de horários...................................................................................................................................5 Exibir extrato final.............................................................................................................................................6 Limpar a matriz..................................................................................................................................................7

Implementação do projeto............................................................................................................8
LISTA E DESCRIÇÃO DOS ARQUIVOS DO CÓDIGO FONTE.............................................................8 FUNCIONAMENTO DO SISTEMA.............................................................................................................11 TABELA DE ALGORITMOS........................................................................................................................21

Código Fonte.................................................................................................................................22 Conclusões....................................................................................................................................42 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

Algoritmos

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.

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

setVisibe(true) para deixar a tabela visível. retorne para a escolha do profissional. Enquanto a tabela estiver visível. Cabeleireiro 2. volte para o menu inicial. Manicure/Pedicure 3. Se for um número existente. Caso sim. por favor escolha outro horário” caso contrário mostre a mensagem "Cliente não cadastrado no sistema". Tabela recebe a matriz_horarios que foi preenchida do módulo marca_horario. Insira o número de cadastro (ID) do cliente. Caso contrario. Exibir tabela de horários Criar uma tabela com 11 linhas e 7 colunas.5 Marcar horário Enquanto a opção é igual a 2. repita os passos abaixo: Mostre os profissionais a serem escolhidos 1. continue o agendamento: Escolha o tratamento desejado Pergunte se deseja fazer mais algum agendamento. Esteticista Escolha um dos profissionais. Usar a função tabela. Caso contrário. mostre “Horário indisponível. . caso esteja disponível. continue o agendamento: Escolha um dia da semana Escolha um horário. as outras opções do programa são ocultadas.

85 para se obter o valor com 15% de desconto. o valor total é Se a opção for 4 vezes.  Se a opção é dinheiro: O valor total é multiplicado por 0. O valor final com o desconto é exibido. o valor total é dividido em 2 e o valor de cada parcela é exibido. débito e dinheiro. Se a opção é o débito: . são oferecidas 2 opções: parcelamento em 2. dividido em 3 e o valor de cada parcela é exibido. dividido em 4 e o valor de cada parcela é exibido.  O vetor v[x] fornece o nome. o valor total é Se a opção for 3 vezes. 3 ou 4 vezes.9 para se obter o valor com 10% de desconto  O valor final com o desconto é exibido Se a opção for 2 vezes. o RG e o valor a ser pago pelo cliente associado ao ID digitado. São oferecidas três formas para o pagamento: crédito. .O valor total é multiplicado por 0.6 Exibir extrato final   Insira o código de identificação (ID).  Se a opção é o crédito. A variável x recebe esse código de identificação e a posição v[x] do vetor é acessada.   Essas informações são impressas.

acrescenta-se uma unidade em i.7 Limpar a matriz Inicia-se um contador i com 0 e um contador j também com zero. • Enquanto o contador i. acrescenta-se uma unidade em j.1 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. que representa as colunas da matriz. o Sendo as duas sentenças acima verdadeiras. . • Enquanto o contador j. for menor que 6.txt) • Os dados de agendamento de horários do módulo marca_horario são gravados em um outro arquivo de texto (horários. for menor que 10. 1.txt) É usado o comando System. a posição correspondente [i][j] da matriz é preenchida com a palavra “disp”. que representa as linhas da matriz.exit(0) para sair do programa.

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.  saida. 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.  matriz_horarios[ ][ ]: Matriz 10x6 que relaciona os dias da semana com os horários de funcionamento da clínica. cada cliente ocupa uma posição (i) do vetor que não será substituída.  Vtotal[ ]: Vetor com os valor total a ser pago por cada cliente ao final dos agendamentos. Serve para que o código de identificação (ID) de cada cliente seja válido pois ao sair do programa. prof[2] = Esteticista. prof[1] = Manicure/Pedicure. Para não ter que criar um vetor cada elemento do cadastro (Nome.  precos_esteticista[ ][ ]: Matriz 2x3 que relaciona os preços com cada tratamento de Esteticista.  precos_manicure[ ][ ]: Matriz 2x3 que relaciona os preços com cada tratamento de manicure/pedicure.  precos_cabeleireiro[ ][ ]: Matriz 2x3 que relaciona os preços com cada tratamento de cabeleireiro.txt: Arquivo em que o programa grava as informações dos clientes cadastrados. Telefone).  horarios. Esse valor se refere a soma dos tratamentos marcados pelo cliente na clínica Beleza Urbana. RG.8 Implementação do projeto LISTA E DESCRIÇÃO DOS ARQUIVOS DO CÓDIGO FONTE Atributos   Clientes v[ ]: vetor que armazenará objetos (instancias) da classe Clientes. .

txt”. o cliente recebe um desconto de 15% e 10%. cartão de débito ou crédito.  Limpa_matriz( ): Módulo responsável por fazer com que a matriz fique com todas as posições “disponíveis” novamente.  Leitura ( ): Módulo que lê o arquivo “saida. Não retorna nenhum valor. Não retorna nenhum valor.  marca_horario( ): Módulo responsável pela marcação de horário.  preços_cabe( ): Módulo que retorna o preço para o tratamento de cabeleireiro escolhido pelo cliente.   tabela( ): Módulo responsável por exibir a tabela.txt” para reconhecer as informações já salvas e então reconhecer os clientes já cadastrados e suas respectivas informações. .txt chamado de “horarios. 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 possui nenhum valor de retorno. Não retorna nenhum valor.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.txt chamado “saida.  preços_mani( ): Módulo que retorna o preço para o tratamento de Manicure/Pedicure escolhido pelo cliente.9 Métodos e Classes  Cadastro( ): Módulo responsável pelo cadastro dos clientes na clinica. Não retorna nenhum valor. respectivamente. o tratamento escolhido e também agenda o dia e o horário para que o cliente vá a clinica.  gravaMatriz ( ): Módulo que grava a matriz de horários em outro arquivo . e então calcula a quantia a ser paga por ele. Não retorna nenhum valor. Caso a forma de pagamento escolhida seja dinheiro ou cartão de débito. É nesse módulo que o atendente define o profissional desejado pelo cliente. extrato( ): Módulo que relaciona o cliente com todos os tratamentos feitos por ele. Não retorna nenhum valor.  Escrita ( ): Módulo que grava os cliente cadastrados em um arquivo . que pode ser em dinheiro. É neste mesmo módulo onde se define a forma de pagamento.

por parâmetro. que recebe.10  Class Clientes: Classe Clientes que possui como atributos NOME. TELEFONE. . RG. a matriz de horários do método main.  Class Tabela: Classe que extende JFrame.  Recebematriz( ): Método responsável por receber. que possui como componente uma JTable. e um contador (i) responsável por gerar um código de identificação único para cada cliente. A classe tabela possui um método recebematriz. uma matriz do método main. por parâmetro.

11 FUNCIONAMENTO DO SISTEMA Quando o programa é rodado. a “exibição do extrato final” e a função de “apagar a agenda”. a “marcação de horários”. que exibe as cinco funções do programa. Logo em seguida é exibida esta tela. 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. é exibida a tela de boas vindas da Clínica de Estética para dar início ao programa. . que são o “cadastro de clientes”. a “exibição da tabela de horários”.

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. pois os dados do cliente ficarão armazenados no sistema da clínica. aqui tomamos como exemplo a cliente Monique. o sistema irá gerar um número de identificação (ID) para o cliente. sem ter que inserir todos os seus dados novamente. através do qual um funcionário da clínica de estética poderá marcar o horário para este cliente em visitas futuras.12 Logo após serem inseridos os dados. .

. o profissional cabeleireiro foi escolhido. 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. para que assim ele possa acessar suas informações sem ter que pedir todos os dados. Após esta escolha. o programa irá pedir para que o usuário informe o seu número de identificação. para a cliente Monique. neste caso. Neste exemplo. a o programa irá exibir uma janela informando que deverá ser feita a escolha do tipo de profissional.13 Após selecionada a opção “marcação de horário”.

como exemplo. é 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. foi selecionada a opção 3. para quinta-feira. 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. Em seguida.14 Feita essa confirmação. Neste caso. Se o dia e o horário já estiverem preenchidos. . para que o cliente escolha em qual dia da semana quer marcar seu tratamento. o programa irá exibir uma janela com os dias de funcionamento da clínica.

portanto está mensagem de horário indisponível não foi exibida. foi selecionado o horário das 9 horas. . como exemplo.00. Neste exemplo. 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. além disto. que estava disponível. Em seguida o programa exibe uma janela informando que o tratamento foi marcado com sucesso e.15 Aqui. pergunta se o usuário deseja fazer outra marcação. Ao invés disto. que tem o valor de R$ 50. foi escolhido um corte. é 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.

de cadastro de clientes. tomou-se como exemplo que esta cliente efetuou duas marcações de horário. da cliente Renata. A primeira com o profissional esteticista. foi feito um segundo cadastro. A seguir. seguindo os mesmos primeiros passos para a opção “1”.16 Para efeito de exemplo. Em seguida. perguntando em seguida o número de cadastro do cliente. e o programa volta para a janela de escolha do profissional desejado. sexta feira às 10 horas. neste exemplo escolheu-se a opção sim. para terça feira. o programa volta para sua página inicial. às 13 horas. Os passos seguem em resumo abaixo: Quando o programa perguntar se o usuário deseja fazer outra marcação. . para fazer um tratamento de drenagem. 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. para fazer o tratamento de mão e pé. onde selecionamos a opção de exibir a tabela de horários. com o profissional manicure/pedicure. A segunda marcação.

que são terça-feira as 13 horas. onde é selecionada a opção de “exibir extrato final”.17 Nesta tabela. Os três horários ocupados. Quando esta tabela é fechada o programa volta para sua tela inicial novamente. . No caso o nome das clientes Monique e Renata e seus respectivos tratamentos escolhidos anteriormente neste exemplo. a maioria dos horários está escrito “disp” o que significa que o horário está disponível. quinta feira as 09 horas e sexta-feira as 10 horas estão ocupados com um nome e um tratamento.

Fazendo os dois exemplos e obtemos o extrato final de cada uma das clientes. Aqui também faremos duas simulações sobre a forma de pagamento a ser feita. que para a cliente Monique ficou: E para a cliente Renata. O programa calcula o valor total do tratamento. Primeiro seguimos com o exemplo da cliente Monique.18 O programa solicita o código do cliente. que seleciona a forma de pagamento no cartão de débito. que neste exemplo é 1 para a cliente Monique e 2 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. e .

O segundo exemplo. é feito com a opção de pagamento em dinheiro. o programa conta com uma última função. a de apagar agenda. . Para finalizar. porém oferece a opção de pagamento em 2. deixando todos os horários com a legenda “disp”. 3 ou 4 vezes sem juros. pois esta é a porcentagem de desconto para pagamentos feitos em dinheiro.19 aplica um desconto de 10% sobre este valor. E o programa calcula o valor total do pagamento com 15% de desconto. da cliente Renata. pois a clínica oferece um desconto de 10% para pagamentos feitos com cartão de débito. que consiste em zerar a agenda. A opção de pagamento no cartão de crédito não oferece nenhum tipo de desconto.

disponíveis para a marcação de horários. Como a agenda do programa é semanal.20 ou seja. dia em que não há marcação de horários e a clínica fica fechada. este função torna-se necessária para uso no final da semana. por razões técnicas. o usuário DEVE se lembrar de utilizar a última opção “6 – Sair”. . ou mais precisamente no domingo. podendo ser iniciada a agenda nova para a semana seguinte. 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. Ao final da utilização do programa.

21 TABELA DE ALGORITMOS ALGORITMO Menu principal Cadastrar Marcar horário Exibir tabela de horários Exibir extrato final Limpar a agenda Sair do programa Escrita Leitura gravaMatriz leMatriz Class Clientes Class Tabela Tabela 1: Lista dos Algoritmos NOME DO ALUNO RESPONSÁVEL Monique Machado e Renata Moretti Monique Machado e Renata Moretti Monique Machado e Renata Moretti Monique Machado e Renata Moretti Monique Machado e Renata Moretti Monique Machado e Renata Moretti Monique Machado e Renata Moretti Monique Machado e Renata Moretti Monique Machado e Renata Moretti Monique Machado e Renata Moretti Monique Machado e Renata Moretti Monique Machado e Renata Moretti Monique Machado e Renata Moretti .

showMessageDialog(null.sair")). if (opcao == 1) { Cadastro(cont).Apagar a Agenda \n 6 .showInputDialog(null.txt"). "1 Cadastrar Cliente \n 2 . } .Marcar Horário \n 3 . } if (opcao == 4) { extrato().parseInt(JOptionPane. "**Bem Vindo à Clinica Beleza while (opcao != 6) { opcao = Integer.22 Código Fonte /* * UFABC – BC&T – BC0505 * ALGORITMO: Menu Principal * * Responsável: Monique Machado e Renata Moretti * * Data: 21/04/2012 * */ JOptionPane.Exibir tabela de horários \n 4 Exibir extrato final \n 5 . gravaMatriz("horarios. } if (opcao == 3) { tabela(). } if (opcao == 6) { System.exit(0). } if (opcao == 2) { marca_horario(). Urbana**").txt"). } } escrita("saida. } if (opcao == 5) { limpa_matriz().

showInputDialog("Digite o Nome"). String telefone = JOptionPane. Clientes x = new Clientes(nome.length) { String nome = JOptionPane. v[i] = x. } } /* . i).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. "O seu número de identificação (ID) é: " + i). "Capacidade de registros esgotados").showInputDialog("Digite o Rg"). JOptionPane. cont++. String rg = JOptionPane. rg. telefone. } } catch (ArrayIndexOutOfBoundsException e) { JOptionPane.showMessageDialog(null.showInputDialog("Digite o Telefone").showMessageDialog(null.

"Atenção". if (i == JOptionPane. .Sabado ")).13h \n 6 .parseInt(JOptionPane. "Confirmar marcação para cliente " + x. "Escolha o dia da semana \n 0 .11h \n 4 . if (profissional == 1) { int codigo = Integer.12h \n 5 .Sabado ")). "Escolha o horário (hr) : \n 0 .Quinta \n 4 .equals(matriz_horarios[horario][dia])) { JOptionPane.Sexta \n 5 . horario = Integer.9h \n 2 . dia = Integer.showMessageDialog(null.16h \n 9 . JOptionPane. por favor escolha outro horário").nome + "?".YES_OPTION) { int dia = Integer. try { Clientes x = v[codigo].17h")).Terça \n 2 . int i = JOptionPane.Quarta \n 3 . "1 .parseInt(JOptionPane.9h \n 2 .15h \n 8 .showInputDialog(null.10h \n 3 .Cabeleireiro \n 2 .showInputDialog(null.YES_NO_OPTION).showInputDialog(null.14h \n 7 .parseInt(JOptionPane.showMessageDialog(null.16h \n 9 .12h \n 5 .Esteticista")).15h \n 8 .14h \n 7 . "Horario Indisponível.showInputDialog(null.Segunda \n 1 .13h \n 6 .10h \n 3 .Quarta \n 3 .parseInt(JOptionPane.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. "Escolha o dia da semana \n 0 . "ESCOLHA O PROFISSIONAL DESEJADO").11h \n 4 . while (!"disp".showConfirmDialog(null.8h \n 1 .parseInt(JOptionPane.Sexta \n 5 .showInputDialog(null.parseInt(JOptionPane.8h \n 1 .showInputDialog("Digite o número de cadastro (ID) ")).Manicure/Pedicure \n 3 . int horario = Integer.17h")).Segunda \n 1 . int profissional = Integer.Terça \n 2 .Quinta \n 4 . "Escolha o horário (hr) : \n 0 .

parseInt(precos_cabeleireiro[1][0]). if (novamarcacao == JOptionPane.YES_OPTION) { opcao = 2.00 \n 2 . "ESCOLHA O TRATAMENTO DESEJADO").00 \n 3 . } if (novamarcacao == JOptionPane.showMessageDialog(null.Coloração R$40. JOptionPane.NO_OPTION) { opcao = 0. "Atenção". } if (novamarcacao == JOptionPane.25 } JOptionPane. int tratamento = Integer. "Efetuar mais uma marcação " + "?".nome + "/" + precos_cabeleireiro[0][1].YES_OPTION) { opcao = 2. int novamarcacao = JOptionPane.Corte R$50.showMessageDialog(null.showMessageDialog(null. if (tratamento == 1) { matriz_horarios[horario][dia] = x.NO_OPTION) { opcao = 0.parseInt(JOptionPane. "1 .showInputDialog(null.showConfirmDialog(null. JOptionPane. R$35.showConfirmDialog(null. if (novamarcacao == JOptionPane.nome + "/" + precos_cabeleireiro[0][0]. vtotal[codigo] = vtotal[codigo] + Integer.YES_NO_OPTION). } } if (tratamento == 2) { matriz_horarios[horario][dia] = x. vtotal[codigo] = vtotal[codigo] + Integer. "Efetuar mais uma marcação " + "?". int novamarcacao = JOptionPane. "Atenção". "Tratamento marcado com sucesso!"). JOptionPane.Hidratação .00")). JOptionPane.parseInt(precos_cabeleireiro[1][1]). "Tratamento marcado com sucesso!").YES_NO_OPTION).

YES_OPTION) { . int novamarcacao = JOptionPane.26 } } if (tratamento == 3) { matriz_horarios[horario][dia] = x.parseInt(precos_cabeleireiro[1][2]).showMessageDialog(null. "Cliente não cadastrado no sistema"). Clientes x = null. "Efetuar mais uma marcação " + "?". } } } } catch (NullPointerException e) { JOptionPane. if (novamarcacao == JOptionPane.NO_OPTION) { opcao = 0. "Tratamento marcado com sucesso!").showConfirmDialog(null. JOptionPane. int i = JOptionPane. } if (novamarcacao == JOptionPane.nome + "/" + precos_cabeleireiro[0][2].YES_NO_OPTION). vtotal[codigo] = vtotal[codigo] + Integer. } } if (profissional == 2) { int codigo = Integer. "Confirmar marcação para Cliente " + x. opcao = 0. "Atenção".showInputDialog("Digite o Número de Cadastro (ID) ")).YES_OPTION) { opcao = 2.YES_NO_OPTION).nome + "?". try { x = v[codigo]. if (i == JOptionPane.showConfirmDialog(null. "Atenção".showMessageDialog(null.parseInt(JOptionPane. JOptionPane. JOptionPane.

12h \n 5 . dia = Integer. } if (novamarcacao == JOptionPane.12h \n 5 .Quinta \n 4 . int tratamento = Integer. vtotal[codigo] = vtotal[codigo] + Integer. "Escolha o dia da semana \n 0 .Sabado ")). while (!"disp".YES_OPTION) { opcao = 2. JOptionPane.parseInt(JOptionPane.Quarta \n 3 .parseInt(JOptionPane.parseInt(precos_manicure[1][0]). "Efetuar mais uma marcação " + "?".27 int dia = Integer. int horario = Integer. por favor escolha outro horário").9h \n 2 .00 \n 2 - .YES_NO_OPTION). "Horário Indisponivel.showInputDialog(null.15h \n 8 .showInputDialog(null.Terça \n 2 . "Tratamento marcado com sucesso!").showMessageDialog(null. "Escolha o dia da semana \n 0 . "1 . } } R$12.11h \n 4 . if (tratamento == 1) { matriz_horarios[horario][dia] = x.10h \n 3 .Quarta \n 3 .equals(matriz_horarios[horario][dia])) { JOptionPane.Sexta \n 5 .Segunda \n 1 .Sabado ")).parseInt(JOptionPane.showMessageDialog(null.Mão Pé R$14.17h")).parseInt(JOptionPane.Sexta \n 5 . "Escolha o horario (hr) : \n 0 .16h \n 9 .15h \n 8 .Segunda \n 1 . if (novamarcacao == JOptionPane.17h")).10h \n 3 .Terça \n 2 .00 \n 3 .13h \n 6 .showInputDialog(null.showInputDialog(null.14h \n 7 . "Escolha o horário (hr) : \n 0 . horario = Integer.showConfirmDialog(null.11h \n 4 .nome + "/" + precos_manicure[0][0].showMessageDialog(null. "Atenção". int novamarcacao = JOptionPane.8h \n 1 .Quinta \n 4 .16h \n 9 . "ESCOLHA O TRATAMENTO DESEJADO").showInputDialog(null.parseInt(JOptionPane.Mão e Pé R$26. } JOptionPane.14h \n 7 .00")).8h \n 1 . JOptionPane.NO_OPTION) { opcao = 0.9h \n 2 .13h \n 6 .

int novamarcacao = JOptionPane.parseInt(precos_manicure[1][2]).nome + "/" + precos_manicure[0][2]. if (novamarcacao == JOptionPane. JOptionPane.showMessageDialog(null. if (novamarcacao == JOptionPane. "Efetuar mais uma marcação " + "?". "Atenção".YES_NO_OPTION).NO_OPTION) { opcao = 0.YES_NO_OPTION).28 if (tratamento == 2) { matriz_horarios[horario][dia] = x. JOptionPane.nome + "/" + precos_manicure[0][1]. } } } } catch (NullPointerException e) { . int novamarcacao = JOptionPane.NO_OPTION) { opcao = 0.showConfirmDialog(null. JOptionPane. vtotal[codigo] = vtotal[codigo] + Integer. "Atencão". } if (novamarcacao == JOptionPane. JOptionPane. "Tratamento marcado com sucesso!"). } } if (tratamento == 3) { matriz_horarios[horario][dia] = x.showConfirmDialog(null.showMessageDialog(null. "Efetuar mais uma marcação " + "?". } if (novamarcacao == JOptionPane.YES_OPTION) { opcao = 2.YES_OPTION) { opcao = 2. vtotal[codigo] = vtotal[codigo] + Integer.parseInt(precos_manicure[1][1]). "Tratamento marcado com sucesso!").

"Escolha o horario (hr) : \n 0 . try { x = v[codigo].15h \n 8 .parseInt(JOptionPane.Terça \n 2 .16h \n 9 . "Horario Indisponivel . opcao = 0. por favor escolha outro horario").Quarta \n 3 .17h")).12h \n 5 .showInputDialog("Digite o Numero de Cadastro (ID) ")). if (i == JOptionPane. Clientes x = null. "Escolha o dia da semana \n 0 . .17h")).9h \n 2 . horario = Integer. int i = JOptionPane. "Confirmar marcação para Cliente " + x.13h \n 6 .Sábado ")).parseInt(JOptionPane.11h \n 4 .10h \n 3 .YES_OPTION) { int dia = Integer.Quarta \n 3.Sexta \n 5 . "Cliente Nao Cadastrado no Sistema").Quinta \n 4 .showConfirmDialog(null.16h \n 9 .13h \n 6 .showInputDialog(null.8h \n 1 .nome + "?". dia = Integer.14h \n 7 . while (!"disp".29 JOptionPane. JOptionPane.12h \n 5 . "Escolha o dia da semana \n 0-Segunda \n 1. } } if (profissional == 3) { int codigo = Integer. "Atencão".8h \n 1 .15h \n 8 .YES_NO_OPTION).Quinta \n 4Sexta \n 5.showInputDialog(null.Sábado ")).equals(matriz_horarios[horario][dia])) { JOptionPane.14h \n 7 . "Escolha o horário (hr) : \n 0 .showInputDialog(null.parseInt(JOptionPane.showInputDialog(null.Terça \n 2.9h \n 2 .11h \n 4 .parseInt(JOptionPane.10h \n 3 .Segunda \n 1 . int horario = Integer.showMessageDialog(null.parseInt(JOptionPane.showMessageDialog(null.

30 } JOptionPane.showInputDialog(null. "Tratamento marcado com sucesso!"). int novamarcacao = JOptionPane.YES_OPTION) { opcao = 2. "1 .showConfirmDialog(null. } if (novamarcacao == JOptionPane.parseInt(JOptionPane.YES_NO_OPTION).YES_NO_OPTION).Drenagem 2 . "Tratamento marcado com sucesso!").nome + "/" + precos_esteticista[0][0].parseInt(precos_esteticista[1][0]).showMessageDialog(null.00")).YES_OPTION) { opcao = 2.NO_OPTION) { opcao = 0. "Efetuar mais uma marcação " + "?". vtotal[codigo] = vtotal[codigo] + Integer.00 \n 3 .showMessageDialog(null. "ESCOLHA O TRATAMENTO DESEJADO").Massagem R$50. int tratamento = Integer. } } if (tratamento == 2) { matriz_horarios[horario][dia] = x. R$70. if (tratamento == 1) { matriz_horarios[horario][dia] = x.showConfirmDialog(null. "Atenção".showMessageDialog(null. "Atenção".Peeling R$80. "Efetuar mais uma marcação " + "?".00 \n . JOptionPane.NO_OPTION) { opcao = 0.parseInt(precos_esteticista[1][1]). if (novamarcacao == JOptionPane. JOptionPane.nome + "/" + precos_esteticista[0][1]. } if (novamarcacao == JOptionPane. JOptionPane. JOptionPane. if (novamarcacao == JOptionPane. vtotal[codigo] = vtotal[codigo] + Integer. int novamarcacao = JOptionPane.

} } } } catch (NullPointerException e) { JOptionPane.31 } } if (tratamento == 3) { matriz_horarios[horario][dia] = x.YES_OPTION) { opcao = 2. opcao = 0. int novamarcacao = JOptionPane. if (novamarcacao == JOptionPane. "Efetuar mais uma marcação " + "?".nome + "/" + precos_esteticista[0][2].showConfirmDialog(null.parseInt(precos_esteticista[1][2]). "Cliente não cadastrado no sistema").showMessageDialog(null. "Tratamento marcado com sucesso!"). "Atenção". JOptionPane. } if (novamarcacao == JOptionPane. vtotal[codigo] = vtotal[codigo] + Integer. } } } } /* * UFABC – BC&T – BC0505 * ALGORITMO: Exibir tabela de horários * * Responsável: Monique Machado e Renata Moretti * * Data: 21/04/2012 . JOptionPane.showMessageDialog(null.NO_OPTION) { opcao = 0.YES_NO_OPTION).

} /* * UFABC – BC&T – BC0505 * ALGORITMO: Exibir extrato final .32 * */ static void tabela() { Tabela tabela = new Tabela(). tabela. tabela. } opcao = 3.isVisible()) { opcao = 6. while (tabela.setVisible(true).recebematriz(matriz_horarios).

showMessageDialog(null.2x \n 2 3x \n 3 .33 * * Responsável: Monique Machado e Renata Moretti * * Data: 21/04/2012 * */ static void extrato() { int x. } } if (fpag == 2) { . double parcela. "O valor de cada parcela é: " + parcela). } else if (vezes == 3) { parcela = (double) vtotal[x] / 4. "Cliente: " + v[x].showInputDialog("Digite o código de identificação (ID) do cliente")).parseInt(JOptionPane.showMessageDialog(null. if (fpag == 1) { int vezes = Integer. JOptionPane. "O valor de cada parcela é: " + parcela).id + "\nRG: " + v[x]. JOptionPane. "O valor de cada parcela é: " + parcela).showInputDialog("Em quantas vezes deseja parcelar a quantia de " + vtotal[x] + " reais ? \n 1 .parseInt(JOptionPane.4x")). if (vezes == 1) { parcela = (double) vtotal[x] / 2.showInputDialog("Escolha a forma de pagamento \n 1-Crédito \n 2-Débito \n 3-Dinheiro")).parseInt(JOptionPane.Rg + "\n O valor a ser pago é: " + vtotal[x] + " reais").showMessageDialog(null.nome + " \n ID: " + v[x]. x = Integer. int fpag = Integer. JOptionPane.showMessageDialog(null. JOptionPane. } else if (vezes == 2) { parcela = (double) vtotal[x] / 3.

com 10% de desconto é: " + parcela). JOptionPane. JOptionPane. com 15% de desconto é: " + parcela). } } .showMessageDialog(null. "O valor total a ser pago. } if (fpag == 3) { parcela = (double) vtotal[x] * 0.showMessageDialog(null.34 parcela = (double) vtotal[x] * 0.85.9. "O valor total a ser pago.

txt"). j < 6. } } gravaMatriz("horarios.txt"). leMatriz("horarios. i++) { for (int j = 0.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. j++) { matriz_horarios[i][j] = "disp". } . i < 10.

close().txt".id + "\n".showMessageDialog(null.ERROR_MESSAGE).nome + ":" + v[j].write(linha). conexao. j++) { String linha = v[j]. conexao = new BufferedWriter(file). } conexao. } } . JOptionPane.36 /* * UFABC – BC&T – BC0505 * ALGORITMO: Sair do programa * * Responsável: Monique Machado e Renata Moretti * * Data: 21/04/2012 * */ if (opcao == 6) { System. for (int j = cont2.Telefone + ":" + v[j].exit(0). try { FileWriter file = new FileWriter("saida. } /* * UFABC – BC&T – BC0505 * ALGORITMO: Escrita * * Responsável: Monique Machado e Renata Moretti * * Data: 21/04/2012 * */ static void escrita(String nomeArq) { BufferedWriter conexao. } catch (IOException e) { JOptionPane. true).Rg + ":" + v[j]. j < cont.

linha = conexao.parseInt(campos[3])).out. cont++.split(":"). linha = conexao. v[cont] = y.readLine().println("Erro ao ler arquivo"). String[] campos = null. campos[2]. campos[1].readLine(). Integer. Clientes y = new Clientes(campos[0].close(). } catch (IOException e) { System.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. while (linha != null) { campos = linha. String linha. conexao = new BufferedReader(ent). } conexao. } } . try { FileReader ent = new FileReader(nomeArq).

j++) { for (int i = 0. } } conexao.write(linha). for (int j = 0. conexao. } } . } catch (IOException e) { JOptionPane. j < 10.close().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.showMessageDialog(null. i++) { String linha = matriz_horarios[j][i] + ":".txt")).ERROR_MESSAGE). JOptionPane. try { conexao = new BufferedWriter(new FileWriter("horarios. i < 6.

close(). k++.readLine(). while (linha != null) { campos = linha. } catch (IOException e) { System.split(":"). j < 10.println("Erro ao ler arquivo"). } } .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. i++) { matriz_horarios[j][i] = campos[k]. for (int j = 0. i < 6. linha = conexao. String[] campos = null. j++) { for (int i = 0. try { FileReader ent = new FileReader(nomeArq).out. int k = 0. String linha. } conexao.readLine(). conexao = new BufferedReader(ent). } } linha = conexao.

int id. //atributos String Telefone. public Clientes(String nome. String telefone.Rg = rg.nome = nome.id = i.40 /* * UFABC – BC&T – BC0505 * ALGORITMO: class Clientes * * Responsável: Monique Machado e Renata Moretti * * Data: 21/04/2012 * */ class Clientes { String nome. int i) { //argumentos this. } } /* . this. String rg. this.Telefone = telefone. String Rg. this.

event.j++){ jTable1.WindowEvent evt) { for(int i = 0.i++){ for(int j=0.j+1).event.JFrame { String mat[][].swing. } } .setValueAt(mat[i][j]. } private void formWindowOpened(java. i<10.WindowEvent evt) { this.setVisible(false).j<6.awt.awt. } public Tabela() { initComponents().mat = Matriz. void recebematriz(String Matriz[][]){ this. } } } private void formWindowClosed(java.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.

Concluí-se assim. algumas foram supridas com a ajuda de pessoas da área de programação. que apesar do difícil caminho até o fim do projeto. . Ocorreram diversas dificuldades durante a elaboração do projeto. a necessidade de algumas alterações ou mudanças ao longo do projeto.42 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. 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. 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. bem como pesquisar outras formas de programar que não foram discutidas durante o curso. dúvidas pertinentes acabaram por fazer com que algumas alterações fossem realizadas. Porém. houve assim. pois em diversos casos. percebeu-se que não era possível seguir perfeitamente o que havia sido exposto na proposta inicial e.

. FORBELLONE. Paul J. André L.43 Referências Bibliográficas DEITEL. EBERSPÄCHER. Henri F. 2006. 3 ed. 6 ed. São Paulo: Pearson Prentice Hall. São Paulo: Pearson Prentice Hall. Harvey M. DEITEL. V. .. JAVA: como programar. Lógica de Programação. 2005.