Você está na página 1de 43

MONIQUE KELLEN FERREIRA MACHADO RENATA MORETTI PAULINO

GERENCIAMENTO DE UMA CLNICA DE ESTTICA

Relatrio apresentado Universidade Federal do ABC como parte dos requisitos para aprovao na disciplina BC 505 - Processamento da Informao do Curso de Bacharelado em Cincia e Tecnologia.

Professores: Prof. Luiz Rozante Prof. Franscisco de Assis Zampirolli

Santo Andr - SP 2012

SUMRIO
1Introduo.....................................................................................................................................3 Algoritmos .....................................................................................................................................4
Menu Principal...................................................................................................................................................4 Cadastrar.............................................................................................................................................................4 Marcar horrio...................................................................................................................................................5 Exibir tabela de horrios...................................................................................................................................5 Exibir extrato final.............................................................................................................................................6 Limpar a matriz..................................................................................................................................................7

Implementao do projeto............................................................................................................8
LISTA E DESCRIO DOS ARQUIVOS DO CDIGO FONTE.............................................................8 FUNCIONAMENTO DO SISTEMA.............................................................................................................11 TABELA DE ALGORITMOS........................................................................................................................21

Cdigo Fonte.................................................................................................................................22 Concluses....................................................................................................................................42 Referncias Bibliogrficas..........................................................................................................43

1 Introduo
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 execuo das mesmas. Dentre diversos sistemas possveis, foi escolhido o de uma clnica de esttica, pois um setor que trabalha com diversos servios, na qual notamos a necessidade em se criar um cadastro de clientes modernizado, em que cada um possui um nmero de identificao. Esse nmero proporciona uma maior eficincia e agilidade no atendimento pois, por meio deste, temos acesso a todas as informaes relacionadas ao cliente. Sendo assim, o nosso programa aborda de forma simplificada o gerenciamento de uma clnica de esttica. Nosso sistema disponibilizar de cinco funes bsicas, que consistem no cadastro de clientes, marcao de horrios, exibio da tabela de horrios disponveis, exibio de um extrato final, que gera o valor total dos servios 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 horrios como disponveis novamente. Aps realizar o cadastro, o cliente tem a opo de marcar horrio em diversos servios como cabeleireiro, esteticista e manicure/pedicure. Na forma de pagamento, o cliente pode optar por dinheiro, carto de crdito ou dbito, sendo que nas opes de carto de dbito e dinheiro, fornecido um desconto ao cliente. Com este projeto visa-se aplicar os conhecimentos adquiridos nas aulas prticas e tericas da disciplina de Processamento da Informao, assim como, propor um programa simples, de fcil manuseio para uma clnica de esttica.

Algoritmos

Menu Principal
*Bem vindo a Clnica Beleza Urbana* Escolher uma opo 1. Cadastrar Cliente 2. Marcar Horrio 3. Exibir tabela de horrios 4. Exibir extrato final 5. Apagar a Agenda 6. sair Direcionar a opo escolhida para o respectivo mdulo. Se opo igual a 1, leve ao mdulo Cadastro( ); Se opo igual a 2, leve ao mdulo marca_horario( ); Se opo igual a 3, leve ao mdulo tabela( ); Se opo igual a 4, leve ao mdulo extrato( ); Se opo igual a 5, leve ao mdulo limpa_matriz( ); Se opo igual a 6, leve ao mdulo saia do programa.

Cadastrar
-Verifique se contador menor que a dimenso do vetor (2000) -Caso seja, ento: Digite o Nome Digite o Telefone Digite o RG Mostre o nmero de identificao do cliente Os dados que inseridos e o nmero de identificao so passados para os atributos da classe Clientes e ento gravados no vetor de clientes como um objeto da classe Clientes. -Caso no seja, mostre Capacidade de registros esgotados".

Marcar horrio
Enquanto a opo 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 nmero de cadastro (ID) do cliente. Se for um nmero existente, continue o agendamento: Escolha um dia da semana Escolha um horrio, caso esteja disponvel, continue o agendamento: Escolha o tratamento desejado Pergunte se deseja fazer mais algum agendamento. Caso sim, retorne para a escolha do profissional. Caso contrrio, volte para o menu inicial. Caso contrario, mostre Horrio indisponvel, por favor escolha outro horrio caso contrrio mostre a mensagem "Cliente no cadastrado no sistema".

Exibir tabela de horrios


Criar uma tabela com 11 linhas e 7 colunas. Tabela recebe a matriz_horarios que foi preenchida do mdulo

marca_horario. Usar a funo tabela.setVisibe(true) para deixar a tabela visvel. Enquanto a tabela estiver visvel, as outras opes do programa so ocultadas.

Exibir extrato final


Insira o cdigo de identificao (ID); A varivel x recebe esse cdigo de identificao e a posio 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 informaes so impressas. So oferecidas trs formas para o pagamento: crdito, dbito e dinheiro. Se a opo o crdito, so oferecidas 2 opes: parcelamento em 2, 3 ou 4 vezes. Se a opo o dbito: - 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 opo for 2 vezes, o valor total Se a opo for 3 vezes, o valor total Se a opo for 4 vezes, o valor total dividido em 2 e o valor de cada parcela exibido. dividido em 3 e o valor de cada parcela exibido. dividido em 4 e o valor de cada parcela exibido.

Se a opo dinheiro: O valor total multiplicado por 0,85 para se obter o

valor com 15% de desconto. O valor final com o desconto exibido.

Limpar a matriz
Inicia-se um contador i com 0 e um contador j tambm 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 sentenas acima verdadeiras, a posio correspondente [i][j] da matriz preenchida com a palavra disp.

1.1 Sair do Programa


Quando a opo 6 selecionada Os dados dos clientes que haviam sido inseridos no mdulo cadastro so gravados num arquivo de texto (saida.txt) Os dados de agendamento de horrios do mdulo marca_horario so gravados em um outro arquivo de texto (horrios.txt) usado o comando System.exit(0) para sair do programa.

Implementao do projeto

LISTA E DESCRIO DOS ARQUIVOS DO CDIGO FONTE

Atributos Clientes v[ ]: vetor que armazenar objetos (instancias) da classe Clientes. Para no 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 informaes em atributos de um mesmo objeto e ento 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 preos com cada tratamento de cabeleireiro. precos_manicure[ ][ ]: Matriz 2x3 que relaciona os preos com cada tratamento de manicure/pedicure. precos_esteticista[ ][ ]: Matriz 2x3 que relaciona os preos com cada tratamento de Esteticista. matriz_horarios[ ][ ]: Matriz 10x6 que relaciona os dias da semana com os horrios de funcionamento da clnica. 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 clnica Beleza Urbana. saida.txt: Arquivo em que o programa grava as informaes dos clientes cadastrados. Serve para que o cdigo de identificao (ID) de cada cliente seja vlido pois ao sair do programa, cada cliente ocupa uma posio (i) do vetor que no ser substituda. horarios.txt: Arquivo em que o programa grava a matriz_horarios[ ] [ ]. Serve para assegurar que as posies j utilizadas da matriz no voltem a ser consideradas como disponvel ao reiniciar o programa.

9 Mtodos e Classes Cadastro( ): Mdulo responsvel pelo cadastro dos clientes na clinica. No possui nenhum valor de retorno. marca_horario( ): Mdulo responsvel pela marcao de horrio. nesse mdulo que o atendente define o profissional desejado pelo cliente, o tratamento escolhido e tambm agenda o dia e o horrio para que o cliente v a clinica. No retorna nenhum valor. tabela( ): Mdulo responsvel por exibir a tabela. No retorna nenhum valor. extrato( ): Mdulo que relaciona o cliente com todos os tratamentos feitos por ele, e ento calcula a quantia a ser paga por ele. neste mesmo mdulo onde se define a forma de pagamento, que pode ser em dinheiro, carto de dbito ou crdito. Caso a forma de pagamento escolhida seja dinheiro ou carto de dbito, o cliente recebe um desconto de 15% e 10%, respectivamente. No retorna nenhum valor. Limpa_matriz( ): Mdulo responsvel por fazer com que a matriz fique com todas as posies disponveis novamente. No retorna nenhum valor. preos_cabe( ): Mdulo que retorna o preo para o tratamento de cabeleireiro escolhido pelo cliente. No retorna nenhum valor. preos_mani( ): Mdulo que retorna o preo para o tratamento de Manicure/Pedicure escolhido pelo cliente. No retorna nenhum valor. preos_est ( ): Mdulo que retorna o preo para o tratamento de esttica escolhido pelo cliente. No retorna nenhum valor. Escrita ( ): Mdulo que grava os cliente cadastrados em um arquivo .txt chamado saida.txt. Leitura ( ): Mdulo que l o arquivo saida.txt para reconhecer as informaes j salvas e ento reconhecer os clientes j cadastrados e suas respectivas informaes. gravaMatriz ( ): Mdulo que grava a matriz de horrios em outro arquivo .txt chamado de horarios.txt leMatriz ( ): Mdulo responsvel por ler a matriz de horrios salva no arquivo horrios.txt e ento reconhecer as posies da matriz que ainda se encontram como disponveis para marcao.

10 Class Clientes: Classe Clientes que possui como atributos NOME, TELEFONE, RG, e um contador (i) responsvel por gerar um cdigo de identificao nico para cada cliente. Class Tabela: Classe que extende JFrame, que possui como componente uma JTable. A classe tabela possui um mtodo recebematriz, que recebe, por parmetro, uma matriz do mtodo main. Recebematriz( ): Mtodo responsvel por receber, por parmetro, a matriz de horrios do mtodo main.

11 FUNCIONAMENTO DO SISTEMA

Quando o programa rodado, exibida a tela de boas vindas da Clnica de Esttica para dar incio ao programa.

Logo em seguida exibida esta tela, que exibe as cinco funes do programa, que so o cadastro de clientes, a marcao de horrios, a exibio da tabela de horrios, a exibio do extrato final e a funo de apagar a agenda. Primeiramente selecionamos a primeira opo para cadastrar um cliente, o que nos leva a uma sequncia de trs janelas onde o cliente deve inserir seus dados pessoais.

12

Logo aps serem inseridos os dados, aqui tomamos como exemplo a cliente Monique, o sistema ir gerar um nmero de identificao (ID) para o cliente, atravs do qual um funcionrio da clnica de esttica poder marcar o horrio para este cliente em visitas futuras, sem ter que inserir todos os seus dados novamente, pois os dados do cliente ficaro armazenados no sistema da clnica.

Em seguida, o programa ir retornar para a sua pgina principal, onde iremos marcar um horrio para a cliente Monique que foi cadastrada.

13 Aps selecionada a opo marcao de horrio, 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.

Aps esta escolha, o programa ir pedir para que o usurio informe o seu nmero de identificao, para que assim ele possa acessar suas informaes sem ter que pedir todos os dados.

Em seguida o programa exibe o nome do cliente para confirmar se aquele nmero de cadastro est correto e pergunta se pode ser confirmada a marcao, neste caso, para a cliente Monique.

14 Feita essa confirmao, o programa ir exibir uma janela com os dias de funcionamento da clnica, para que o cliente escolha em qual dia da semana quer marcar seu tratamento.

Neste caso, como exemplo, foi selecionada a opo 3, para quinta-feira. Em seguida, exibida uma janela com os horrios de funcionamento da clnica para que o cliente possa selecionar o horrio que deseja marcar seu tratamento. Se o dia e o horrio j estiverem preenchidos, o programa ir exibir uma mensagem informando que o horrio est indisponvel e solicitando que seja feita uma nova seleo de dias e horrios.

15

Aqui, como exemplo, foi selecionado o horrio das 9 horas, que estava disponvel, portanto est mensagem de horrio indisponvel no foi exibida. Ao invs 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 seleo do tratamento so exibidos todos os tratamentos disponveis para o profissional em questo juntamente com os valores de cada tipo de tratamento/servio. 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, alm disto, pergunta se o usurio deseja fazer outra marcao.

16 Para efeito de exemplo, foi feito um segundo cadastro, da cliente Renata, seguindo os mesmos primeiros passos para a opo 1, de cadastro de clientes. Em seguida, tomou-se como exemplo que esta cliente efetuou duas marcaes de horrio. A primeira com o profissional esteticista, para tera feira, s 13 horas, para fazer um tratamento de drenagem. A segunda marcao, com o profissional manicure/pedicure, sexta feira s 10 horas, para fazer o tratamento de mo e p. Os passos seguem em resumo abaixo:

Quando o programa perguntar se o usurio deseja fazer outra marcao, neste exemplo escolheu-se a opo sim, e o programa volta para a janela de escolha do profissional desejado, perguntando em seguida o nmero de cadastro do cliente. A partir desde ponto os passos so anlogos e feita a marcao do tratamento de mo e p para a cliente Renata. A seguir, o programa volta para sua pgina inicial, onde selecionamos a opo de exibir a tabela de horrios.

17

Nesta tabela, a maioria dos horrios est escrito disp o que significa que o horrio est disponvel. Os trs horrios ocupados, que so tera-feira as 13 horas, quinta feira as 09 horas e sexta-feira as 10 horas esto 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 opo de exibir extrato final.

18 O programa solicita o cdigo 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 opes aceitas pela clnica so dinheiro e cartes de crdito e dbito. Aqui tambm faremos duas simulaes sobre a forma de pagamento a ser feita.

Primeiro seguimos com o exemplo da cliente Monique, que seleciona a forma de pagamento no carto de dbito. O programa calcula o valor total do tratamento, e

19 aplica um desconto de 10% sobre este valor, pois a clnica oferece um desconto de 10% para pagamentos feitos com carto de dbito.

O segundo exemplo, da cliente Renata, feito com a opo 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 opo de pagamento no carto de crdito no oferece nenhum tipo de desconto, porm oferece a opo de pagamento em 2, 3 ou 4 vezes sem juros.

Para finalizar, o programa conta com uma ltima funo, a de apagar agenda, que consiste em zerar a agenda, deixando todos os horrios com a legenda disp,

20 ou seja, disponveis para a marcao de horrios. Como a agenda do programa semanal, este funo torna-se necessria para uso no final da semana, ou mais precisamente no domingo, dia em que no h marcao de horrios e a clnica fica fechada, podendo ser iniciada a agenda nova para a semana seguinte.

Ao final da utilizao do programa, o usurio DEVE se lembrar de utilizar a ltima opo 6 Sair, por razes tcnicas, para que todos os procedimentos de cadastro e marcao de horrios sejam salvos e estejam disponveis para uso da prxima vez que o programa for iniciado.

21 TABELA DE ALGORITMOS
ALGORITMO Menu principal Cadastrar Marcar horrio Exibir tabela de horrios 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 RESPONSVEL 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

22 Cdigo Fonte /* * UFABC BC&T BC0505 * ALGORITMO: Menu Principal * * Responsvel: Monique Machado e Renata Moretti * * Data: 21/04/2012 * */ JOptionPane.showMessageDialog(null, Urbana**"); "**Bem Vindo Clinica Beleza

while (opcao != 6) { opcao = Integer.parseInt(JOptionPane.showInputDialog(null, "1 Cadastrar Cliente \n 2 - Marcar Horrio \n 3 - Exibir tabela de horrios \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 * * Responsvel: 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 nmero de identificao (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 Horrio * * Responsvel: 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 nmero de cadastro (ID) ")); try { Clientes x = v[codigo]; int i = JOptionPane.showConfirmDialog(null, "Confirmar marcao para cliente " + x.nome + "?", "Ateno", 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 - Tera \n 2 - Quarta \n 3 - Quinta \n 4 - Sexta \n 5 - Sabado ")); int horario = Integer.parseInt(JOptionPane.showInputDialog(null, "Escolha o horrio (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 Indisponvel, por favor escolha outro horrio"); dia = Integer.parseInt(JOptionPane.showInputDialog(null, "Escolha o dia da semana \n 0 - Segunda \n 1 - Tera \n 2 - Quarta \n 3 - Quinta \n 4 - Sexta \n 5 - Sabado ")); horario = Integer.parseInt(JOptionPane.showInputDialog(null, "Escolha o horrio (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"));

25 } JOptionPane.showMessageDialog(null, "ESCOLHA O TRATAMENTO DESEJADO"); int tratamento = Integer.parseInt(JOptionPane.showInputDialog(null, "1 - Hidratao - Colorao 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 marcao " + "?", "Ateno", 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 marcao " + "?", "Ateno", JOptionPane.YES_NO_OPTION); if (novamarcacao == JOptionPane.YES_OPTION) { opcao = 2; } if (novamarcacao == JOptionPane.NO_OPTION) { opcao = 0; R$35,00 \n 2

26 } } 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 marcao " + "?", "Ateno", 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 no cadastrado no sistema"); opcao = 0; } } if (profissional == 2) { int codigo = Integer.parseInt(JOptionPane.showInputDialog("Digite o Nmero de Cadastro (ID) ")); Clientes x = null; try { x = v[codigo]; int i = JOptionPane.showConfirmDialog(null, "Confirmar marcao para Cliente " + x.nome + "?", "Ateno", JOptionPane.YES_NO_OPTION); if (i == JOptionPane.YES_OPTION) {

27 int dia = Integer.parseInt(JOptionPane.showInputDialog(null, "Escolha o dia da semana \n 0 - Segunda \n 1 - Tera \n 2 - Quarta \n 3 - Quinta \n 4 - Sexta \n 5 - Sabado ")); int horario = Integer.parseInt(JOptionPane.showInputDialog(null, "Escolha o horrio (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, "Horrio Indisponivel, por favor escolha outro horrio"); dia = Integer.parseInt(JOptionPane.showInputDialog(null, "Escolha o dia da semana \n 0 - Segunda \n 1 - Tera \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 - Mo P R$14,00 \n 3 - Mo 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 marcao " + "?", "Ateno", JOptionPane.YES_NO_OPTION); if (novamarcacao == JOptionPane.YES_OPTION) { opcao = 2; } if (novamarcacao == JOptionPane.NO_OPTION) { opcao = 0; } } R$12,00 \n 2 -

28 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 marcao " + "?", "Ateno", 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 marcao " + "?", "Atenco", JOptionPane.YES_NO_OPTION); if (novamarcacao == JOptionPane.YES_OPTION) { opcao = 2; } if (novamarcacao == JOptionPane.NO_OPTION) { opcao = 0; } } } } catch (NullPointerException e) {

29 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 marcao para Cliente " + x.nome + "?", "Atenco", 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 - Tera \n 2 - Quarta \n 3 - Quinta \n 4 - Sexta \n 5 - Sbado ")); int horario = Integer.parseInt(JOptionPane.showInputDialog(null, "Escolha o horrio (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"); dia = Integer.parseInt(JOptionPane.showInputDialog(null, "Escolha o dia da semana \n 0-Segunda \n 1- Tera \n 2- Quarta \n 3- Quinta \n 4Sexta \n 5- Sbado ")); 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"));

30 } JOptionPane.showMessageDialog(null, "ESCOLHA O TRATAMENTO DESEJADO"); int tratamento = Integer.parseInt(JOptionPane.showInputDialog(null, "1 - Drenagem 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 marcao " + "?", "Ateno", 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 marcao " + "?", "Ateno", JOptionPane.YES_NO_OPTION); if (novamarcacao == JOptionPane.YES_OPTION) { opcao = 2; } if (novamarcacao == JOptionPane.NO_OPTION) { opcao = 0; R$70,00 \n

31 } } 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 marcao " + "?", "Ateno", 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 no cadastrado no sistema"); opcao = 0; } } } }

/* * UFABC BC&T BC0505 * ALGORITMO: Exibir tabela de horrios * * Responsvel: Monique Machado e Renata Moretti * * Data: 21/04/2012

32 * */ static void tabela() { Tabela tabela = new Tabela(); tabela.recebematriz(matriz_horarios); tabela.setVisible(true); while (tabela.isVisible()) { opcao = 6; } opcao = 3; }

/* * UFABC BC&T BC0505 * ALGORITMO: Exibir extrato final

33 * * Responsvel: Monique Machado e Renata Moretti * * Data: 21/04/2012 * */ static void extrato() { int x; double parcela; x = Integer.parseInt(JOptionPane.showInputDialog("Digite o cdigo de identificao (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-Crdito \n 2-Dbito \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; JOptionPane.showMessageDialog(null, "O valor de cada parcela : " + parcela); } } if (fpag == 2) {

34 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 * * Responsvel: 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 * * Responsvel: Monique Machado e Renata Moretti * * Data: 21/04/2012 * */ if (opcao == 6) { System.exit(0); }

/* * UFABC BC&T BC0505 * ALGORITMO: Escrita * * Responsvel: 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 * * Responsvel: 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 * * Responsvel: 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 * * Responsvel: 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 * * Responsvel: 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 * * Responsvel: 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

Concluses

Com a realizao deste projeto foi possvel colocar em prtica os contedos abrangidos na disciplina de Processamento da Informao, bem como pesquisar outras formas de programar que no foram discutidas durante o curso. Ocorreram diversas dificuldades durante a elaborao do projeto, algumas foram supridas com a ajuda de pessoas da rea de programao. Porm, dvidas pertinentes acabaram por fazer com que algumas alteraes fossem realizadas, pois em diversos casos, percebeu-se que no era possvel seguir perfeitamente o que havia sido exposto na proposta inicial e, houve assim, a necessidade de algumas alteraes ou mudanas ao longo do projeto. Com a implementao do projeto possvel expor o trabalho pessoas leigas no assunto, explicando detalhadamente o funcionamento do projeto e de que maneira as informaes devem ser introduzidas para o correto funcionamento do sistema. Conclu-se assim, que apesar do difcil caminho at o fim do projeto, as experincias e o aprendizado adquirido foram de grande importncia para a nossa formao e entendimento na rea de Processamento da Informao.

43

Referncias Bibliogrficas
DEITEL, Harvey M., DEITEL, Paul J. JAVA: como programar. 6 ed. So Paulo: Pearson Prentice Hall, 2005. FORBELLONE, Andr L. V., EBERSPCHER, Henri F. Lgica de

Programao. 3 ed. So Paulo: Pearson Prentice Hall, 2006.