Zebugamadruga Posted December 9, 2009 at 03:16 PM Report Share #299482 Posted December 9, 2009 at 03:16 PM Boas Antes de mais este é o meu primeiro post, por isso peço desculpa se cometer alguma calinada. Vinha por este meio a apelar a paciência de alguma alma caridosa(visto que estamos perto do Natal) a ceder uma ajuda a este trabalho final de semestre que tenho de concluir. O que se passa é que não sei por onde começar e gostaria se possivel que alguem me desse umas dicas ATENÇÃO-Não estou a pedir que me façam o trabalho!!!. Deixo aqui o que me foi pedido para fazer e agradecia que comentassem com críticas construtivas e/ou dicas em como devo fazer o trabalho(Quantas variáveis serão precisas, os métodos a utilizar[if's, Do's ... etc]) em vez da resposta normal -"Começa do ínicio" Agradeço desde já o vosso tempo e disponibilidade. 😄 TRABALHO Pretende-se que realize uma aplicação em VB.Net que faça a gestão de um Parque de Estacionamento. O trabalho a realizar apresenta-se dividido em cinco fases de desenvolvimento, totalmente independentes. Tenha sempre presente no desenvolvimento da aplicação o aspecto gráfico. Assume-se no projecto que o programa é iniciado apenas uma vez e nunca sofre interrupções. Fase 1 (10 valores) 1 - Admita que o parque tem uma capacidade para 100 lugares e que sempre que entra um veículo no parque é acrescentado ao número de carros que deram entrada no parque, através de um clique em um botão. 2 - O programa deve calcular o valor a pagar pelo utente, após a indicação do número de horas e minutos de utilização do parque, de acordo com as seguintes condições: a) Preço hora – 1 €. b) A unidade mínima de facturação são 15 minutos. Exemplo 1h e 10 m, deve ser taxado como 1h e 15m. c) Após as primeiras 24 horas, é sempre taxado o valor por um dia de utilização, no valor de 5 Euros/dia. Exemplo : 50 horas de utilização, deve pagar: 1º dia – 24 Euros 2º dia - 5 Euros 3º dia – 5 Euros d) Os residentes devem pagar apenas 50% dos valores apresentados acima. e) Aos veículos pesados é acrescentada uma taxa fixa de 1 euro, após o cálculo, de acordo com as regras anteriores. 3 - Implemente um sistema de ajuda, para o utilizador do programa. 4 - Incremente automaticamente o número de veículos que utilizaram o parque. 5- Implemente a funcionalidade, que apenas permite utilizar a aplicação mediante a apresentação de um login e de uma senha. 6- Admita que periodicamente uma câmara de vigilância coloca uma imagem de nome: “foto.jpg” no directório “/imagens”. Implemente a funcionalidade que permite visualizar a referida imagem actualizada. Fase 2 (3 valores) Após o cálculo do montante a pagar e indicado o valor que o utente entregou para pagamento, o programa deve: 1 - Indicar o troco a entregar. 2 - Admitindo que existe um número ilimitado de notas e moedas na caixa, indicar as moedas e notas a entregar, respeitando o critério que devem ser entregues sempre o menor número de moedas e notas. 3 - Apresente o troco a entregar de forma gráfica, com recurso a imagens de moedas e notas. Nota – Considere que o valor máximo de pagamento nunca excede os 50 euros. Fase 3 (3 valores) 1- Se o utente pretender recibo deve: a) Pedir o nome, número de contribuinte e data. b) Gravar e imprimir o respectivo recibo, com os dados necessários. Deve estar presente no recibo, informação relativa às taxas aplicadas no parque. c) Incrementar o número do recibo automaticamente. 2- Deve ser possível, em cada momento, saber o valor já facturado. Fase 4 (2 valores) 1- Torne possível a alteração da capacidade do parque e o número de carros presentes em cada momento no parque. 2- Calcule o número de carros presente em cada momento no parque, tenha em atenção os valores calculados em1) e 4) da fase 1. 3- Sempre que é atingida a capacidade máxima do parque deve ser emitido um sinal sonoro e uma mensagem no écran. O botão que faz a gestão da entrada dos carros deve passar a “disable” sempre que for atingida a lotação do parque ou a “enable” sempre que a capacidade do parque não esteja lotada. Fase 5 (2 valores) 1- Implemente uma rotina que mediante a indicação da data/hora inicial e a data/hora final, permita calcular o número de horas e minutos do ponto 2 da fase 1. 2- Acrescente funcionalidades que julgue melhorar a aplicação. Link to comment Share on other sites More sharing options...
legd1991 Posted December 12, 2009 at 04:28 PM Report Share #300038 Posted December 12, 2009 at 04:28 PM boas se colocasses o topico na parte de VB.Net iras ter mais respostas certamente.. ja agora o projecto envolve base de dados? Link to comment Share on other sites More sharing options...
FreiNando Posted December 13, 2009 at 12:33 AM Report Share #300115 Posted December 13, 2009 at 12:33 AM Olá. Desculpa parecer intrometido mas, se falas em trabalho de semestre estás tendo, ou tiveste formação em programação, e por isso deverias ter conhecimentos para pelo menos estruturares o teu programa. No entanto, caso tenhas alguma dúvida mais especifica, certamente algum membro deste forum te ajudará. Só que nada garante que alguém te dirá quantas instruções e variaveis terás de utilizar. Nota: Não percebo porque te pedem a fase 2. Será para utilizadores imigrados de fora da zona Euro?! O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles Link to comment Share on other sites More sharing options...
ribeiro55 Posted December 13, 2009 at 12:22 PM Report Share #300137 Posted December 13, 2009 at 12:22 PM Nota: Não percebo porque te pedem a fase 2. Será para utilizadores imigrados de fora da zona Euro?! São fases do projecto. O que tem uma coisa a haver com outra? 😉 Zebugamadruga, existem, sem exagerar, talvez centenas de abordagens diferentes para este problema. É muito difícil fazer um levantamento do que é necessário, até porque eu posso ver as coisas de uma maneira que não entendes, e vice-versa. Acho que vou mesmo sugerir o que pediste para não sugerir: "Começa do início"... já tentaste fazer um levantamento do que precisas? Do que parece ser necessário? Começa a escrevinhar no papel. Esquematiza o que te pedem. As coisas por extenso parecem sempre maiores. Se te serve de alguma coisa, o que me parece que precisas de considerar logo de imediato é a individualização de cada carro. Parece-me que cada carro terá de ser um objecto consciente de onde está, quando entrou e o que é. Outra abordagem implicaria o mesmo conceito mas a consciência global estaria centralizada noutro sítio que não cada carro. Pode parecer pouco, mas o que oferecemos aqui é ajuda. Se nesta fase te dessem algo, estariam na verdade a fazer-te o trabalho. Sérgio Ribeiro "Great coders aren't born. They're compiled and released""Expert coders do not need a keyboard. They just throw magnets at the RAM chips" Link to comment Share on other sites More sharing options...
Zebugamadruga Posted December 14, 2009 at 04:15 AM Author Report Share #300241 Posted December 14, 2009 at 04:15 AM Agradeço desde já a vossa resposta mas acho que quem percebeu mais ou menos o que eu queria foi o ribeiro55. De facto pode parecer que quero o trabalho feito mas volto a dizer-lhes que estão enganados. De facto estou com problemas em começar.Não consigo "partir" o problema de forma a resolve-lo. Outra coisa, e agora para o utilizador FreiNando ao contrário do que se pensa desde o processo de Bolonha entrou em vigor o trabalho dos professores ficou facilitado agora é mais a base do "ñ sabes vai a procura".Muito do que é pedido para este programa não foi dado na aula( Isto é um programa da cadeira de Programação I). Vou comprar um livro de programação amanhã a ver se me ajuda em algo. Visto que querem que faça uma pergunta concreta, aqui vai: - Como implemento a funcionalidade, que apenas permite utilizar a aplicação mediante a apresentação de um login e de uma senha? ? Já que estou com dificuldades em começar deveria criar uma esquematização do que me é pedido? Link to comment Share on other sites More sharing options...
kazzx Posted December 14, 2009 at 09:05 AM Report Share #300248 Posted December 14, 2009 at 09:05 AM acho que o problema principal aqui é quereres fazer tudo de uma vez em vez de começares por problemas pequenos. faz o top-down do teu programa, divide-o em partes e começa a tratar de cada parte. isto com a ajuda de uma descrição do problema (em texto corrido), é capaz de ajudar. começas por escrever que tens de desenvolver uma aplicação tal e para isso precisas de fazer 'isto e aquilo', tens de começar por este passo e depois passar para outro. estás a perceber onde quero chegar com isto? parecem demagogias mas acho que entendes onde quero chegar. acho que assim consegues iniciar por algum lado e à medida que avanças vais ver o teu programa resolvido. já agora, a questão relacionada com o login encontras certamente aqui http://www.macoratti.net/vbn_log1.htm cumps Link to comment Share on other sites More sharing options...
softklin Posted December 14, 2009 at 10:00 AM Report Share #300258 Posted December 14, 2009 at 10:00 AM Bem, acho que o login não terá de ser tão complicado, no enunciado não fala em bases de dados. Podes criar um novo formulário com duas textbox, e um botão, que irá validar o input. Os dados de acesso que irás comparar podem estar dentro do programa, sob forma de variáveis, por exemplo, a função clique do teu botão de validar: Dim theUser as String = "username" Dim thePass as String = "password" if txtUser.text = theUser and txtPass.text = thePass then ' abrir o formulário com a capacidade do parque, etc else ' não acertou na pass, dar uma simples mensagem de erro. end if Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post. Link to comment Share on other sites More sharing options...
paulo silva Posted December 14, 2009 at 10:24 AM Report Share #300266 Posted December 14, 2009 at 10:24 AM Se queres um trabalho mais rico, devias iniciar por estruturar uma base de dados, o que te daria pontos, essa base de dados pode te guardar todos os registos e assim podes fazer estatísticas, tipo a que horas tem mais entradas etc... depois pode começar por fazer um caminho de quem entra no estacionamento, e assim vais estruturando o teu trabalho. Cumps Paulo Silva Link to comment Share on other sites More sharing options...
Zebugamadruga Posted December 14, 2009 at 03:27 PM Author Report Share #300333 Posted December 14, 2009 at 03:27 PM Gostaria de agradecer a todos pelas dicas que me deram foram mais do que uteis; vou começar então por estruturar o trabalho em papel e ver o que preciso fazer para resolver os problemas passo a passo. O programa neste semestre, não se deve usar bases de dados pois será usado no programa do semestre seguinte(mas agradeço a mesma a ideia).Vou fazer o melhor que posso e se tiver alguma dúvida espero que possam ajudar-me a mesma. Mais uma vez extremamente agradecido pelo vosso tempo e ajuda. Link to comment Share on other sites More sharing options...
Zebugamadruga Posted December 15, 2009 at 10:00 PM Author Report Share #300608 Posted December 15, 2009 at 10:00 PM Dim theUser as String = "username" Dim thePass as String = "password" if txtUser.text = theUser and txtPass.text = thePass then ' abrir o formulário com a capacidade do parque, etc - Nesta parte criei um novo formulario que sera o menu.Chamei a form de Menu e nesta parte meti apenas Menu.Show, mas da me erro.O que se passa? else ' não acertou na pass, dar uma simples mensagem de erro. end if Link to comment Share on other sites More sharing options...
softklin Posted December 16, 2009 at 07:47 AM Report Share #300657 Posted December 16, 2009 at 07:47 AM E que erro te dá? Certifica-te que deste mesmo o nome "Menu" ao formulário na janela de propriedades. Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post. Link to comment Share on other sites More sharing options...
Zebugamadruga Posted December 16, 2009 at 10:39 PM Author Report Share #300926 Posted December 16, 2009 at 10:39 PM Olá outra vez. Procurei aqui no fórum e acabei por usar outro código que resultou melhor ainda e fiquei todo contente Public Class Form1 Dim r As Integer Dim Password As String Dim Username As String Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Username = InputBox("Login") If Username = "Morador" Then MsgBox("Nome correcto") Else MsgBox("Nome incorrecto") End End If Password = InputBox("Password") If Password = "123" Then r = MsgBox("Abrir", vbYesNo) If r = vbNo Then End ElseIf r = vbYes Then MsgBox("Seja Bemvindo") End If Else MsgBox("Password incorrecta") End End If End Sub End Class Ficou melhor do que eu pensei. Agora estou a trabalhar no menu, a tentar decifrar quantos botões vou precisar. Mais uma vez obrigado pela ajdua. Link to comment Share on other sites More sharing options...
Zebugamadruga Posted December 16, 2009 at 11:16 PM Author Report Share #300937 Posted December 16, 2009 at 11:16 PM Peço desculpa por ser chato mas já encravei outra vez nos seguintes pontos: 2 - O programa deve calcular o valor a pagar pelo utente, após a indicação do número de horas e minutos de utilização do parque, de acordo com as seguintes condições: a) Preço hora – 1 €. b) A unidade mínima de facturação são 15 minutos. Exemplo 1h e 10 m, deve ser taxado como 1h e 15m. c) Após as primeiras 24 horas, é sempre taxado o valor por um dia de utilização, no valor de 5 Euros/dia. Exemplo : 50 horas de utilização, deve pagar: 1º dia – 24 Euros 2º dia - 5 Euros 3º dia – 5 Euros d) Os residentes devem pagar apenas 50% dos valores apresentados acima. e) Aos veículos pesados é acrescentada uma taxa fixa de 1 euro, após o cálculo, de acordo com as regras anteriores. A parte de facturar 15m está me a deixar cheio de dúvidas. Eu só consegui chegar a isto vtempo = txtempo.Text vhoras = vtempo \ 60 vmin = vtempo Mod 60 Sendo que vtempo é variavel que vai controlar o tempo e as outras 2 as horas e os minutos respectivamente como faço para ele aceitar me os 15m? Alguém pode me ajudar? Link to comment Share on other sites More sharing options...
softklin Posted December 17, 2009 at 10:04 AM Report Share #300997 Posted December 17, 2009 at 10:04 AM A questão dos minutos podes fazer assim: divides o tempo total em parcelas de 15 minutos, isto é, divides o número total de minutos por 15. Como uma regra do parque é, se estiver 5 minutos paga como se estivesse 15, se estiver 22, já paga como 30, podes arredondar o resultado da divisão sempre por excesso. Por exemplo: 5 minutos 5 / 15 = 0.33333333 -> arredondar por excesso, fica 1, logo 1 * 0.25 = 0.25 16 / 15 = 1.46666667 -> arrendador por excesso, fica 2, logo 2 * 0.25 = 0.50 Notas: - Os 0.25 correspondem a 1/4 de euro, tal como 15 minutos correspondem a 1/4 de hora - Podes usar a função Math.Ceiling para arredondar por excesso Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post. Link to comment Share on other sites More sharing options...
Zeant Posted December 17, 2009 at 12:38 PM Report Share #301050 Posted December 17, 2009 at 12:38 PM Para calculares o pagamento por dias e utilizado o mesmo esquema do softclean Podes fazer assim: Ao nº de horas que o carro permaneceu no parque retiras logo a partida 24 horas depois divides as horas que te sobra por 24 e fazes o tal arredondamento por excesso e por fim somas 24 assim dá o valor do carro com mais de 24 horas no parque. Exemplo: Carro com 50 horas 50 – 24 = 26 26/24 =1.08333 arredondar por execsso (2) 2*5+24 =34 c) Após as primeiras 24 horas, é sempre taxado o valor por um dia de utilização, no valor de 5 Euros/dia. Exemplo : 50 horas de utilização, deve pagar: 1º dia – 24 Euros 2º dia - 5 Euros 3º dia – 5 Euros Link to comment Share on other sites More sharing options...
Pwyll Posted December 17, 2009 at 01:22 PM Report Share #301054 Posted December 17, 2009 at 01:22 PM Conforme ja foi dito, antes de te lancares a programar comeca por uma analise do problema, podes inclusive utilizares um pseudo-codigo para te ajudar na tua analise, o que muitas das vezes permite um melhor entendimento da estrura do programa. Assim muio de repente e lendo um pouco na diagonal: Objectos Parque - Capacidade Carro - Entrada Saida Morador Pesado Veiculos no Parque, sao todos os objectos veiculos cuja data de saida esta a <null> Procedimento - Entrada de Veiculos (botao) Se numero de veiculos no parque = capacidade, nao permite entrada Adiciona o veiculo ao parque, e marca a hora de entrada do veiculo Procedimento - Saida de veiculos ( Caixa ) Saber o veiculo que vai sair (normalmente e entregue um ticket na entrada) Marcar a hora de Saida Hora da Saida menos a Hora de entrada = tempo de utilizacao do parque Valor a Pagar = Efectuar calculo do valor a pagar(tempo de utilizacao do parque) Function - Calculo de valor a pagar de acordo com as regras (utilizar a ajuda que ja foi concedida em posts anteriores). E morador dimiuir o valor calculado em 50% E pesado aumentar 1€ ao valor calculado ...... Link to comment Share on other sites More sharing options...
Zebugamadruga Posted December 18, 2009 at 05:13 PM Author Report Share #301317 Posted December 18, 2009 at 05:13 PM Antes de mais muito obrigado a todos pela ajuda e em especial ao Pwyll, softclean e ao Zeant. Estou a perceber mais ou menos o que querem dizer. Portanto preciso de 2 objectos(carros e parque) e 2 procedimentos. A minha questão é a seguinte na aula foi usado um "contador" penso que isso poderia ser aplicado aqui na contagem dos carros.Ou estou errado? Neste momento no Menu estou com um NumericUpDown para o utilizador por o nº de carros no parque e um botão "Adicionar viatura", se bem que ao ultrapassar o nº máximo de capacidade do parque, aparece uma messagebox a dizer que excedeu o nº. vcont = 0 If Lotação.Value > 100 Then MsgBox("A lotação deste parque é apenas de 100 lugares", vbYes) End If Do vcont = vcont + 1 If vcont > 100 Then MsgBox("Lotação Cheia") btadicionar.Visible = False End If Loop Until vcont = 100 End Sub Funciona, e faz o que é pedido no trabalho(se bem) que não fala nada em NumericUpDown.Vou utilizar o que o Pwyll disse e ver o que dá, se alguém tiver mais alguma sugestão agradeço. Um Muito Obrigado a todos. Link to comment Share on other sites More sharing options...
Zebugamadruga Posted December 18, 2009 at 05:32 PM Author Report Share #301321 Posted December 18, 2009 at 05:32 PM Antes de mais perdoa a minha ignorancia softclean mas nunca usei essa função Math.Ceiling seria possivel dares me um exemplo por favor? Desculpa a minha insistência! Link to comment Share on other sites More sharing options...
softklin Posted December 18, 2009 at 05:38 PM Report Share #301323 Posted December 18, 2009 at 05:38 PM Isso depende se o interesse é adicionar carros automaticamente, ou a pedido (ao clicar num botão). Acho que o interesse é ser a pedido, por isso acho que esse código não serve. De forma básica, a cada pedido de entrada no parque efectuado com sucesso, incrementas esse tal contador, mas só nessa situação, e apenas uma vez (não precisas de usar o while, mas os ifs necessitas sempre para verificar se já excedeu o limite ou não. Recomendo-te ainda a utilizar uma variável global para o limite, em vez de indicares explicitamente 100, porque segundo o que li do teu enunciado, numa fase posterior vai ser possível aumentar ou diminuir este limite, por isso numa variável vai-te facilitar o trabalho no futuro. Para já, podes definir essa variável a começar em 100. Nas fases seguintes, só terás de a alterar. Quanto ao ceiling, vê a secção de exemplos desta página: http://msdn.microsoft.com/en-us/library/zx4t0t48.aspx Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post. Link to comment Share on other sites More sharing options...
Zebugamadruga Posted December 18, 2009 at 05:56 PM Author Report Share #301328 Posted December 18, 2009 at 05:56 PM Portanto neste caso vou utilizar Dim a As Double Dim returnValue As Double returnValue = Math.Ceiling(a) Sendo que "a" é a minha variável "valor" e em vez de Double fica Integer? Quando ao Do tive a rever e acho que tens razão pois só deve ser com If's porque tenho que controlar tudo. Mais uma questão em relação ao procedimento de entrada estava a pensar o utilizador ao clicar no botão "adicionar viatura" poderia aparecer um msgbox a perguntar logo se era, morador, pesado ou normal. Como crio uma msgbox assim? Sei que sim ou não é apenas vbYesNo, mas se eu quiser fazer uma com 3 botões como descrevi em cima? Private Sub btadicionar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btadicionar.Click 'MsgBox("Qual o tipo de viatura?"vb????????) vcont = 0 vcont = vcont + 1 vcapacidade = 100 vlimite = Lotação.Value If Lotação.Value > 100 Then MsgBox("A lotação deste parque é apenas de 100 lugares", vbYes) End If If vcarro = vlimite Then MsgBox("Lotação Cheia") btadicionar.Visible = False End If End Sub Tenho que usar 3 variaveis para cada tipo de carro? Sendo assim a alinea If vcarro = vlimite Then Estará mal? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now