15
Linguagem de Programação – Prof. Samuel Antonio Vieira Projeto Estacionamento A empresa de Estacionamento “Da Hora” contratou os serviços de um consultor para desenvolver o software para controlar a entrada e saída de carros. No início do dia, o operador atualiza o valor hora do estacionamento. Este valor hora é cheio para carros, 15% de desconto para moto e adição de 15% para utilitários. Ao entrar um carro, o operador digitará a placa, marca, modelo e hora entrada do carro, o sistema deverá propor a hora de entrada como a hora atual, mas pode ser mudada. Ao sair, o operador digita a placa, consulta, o sistema deverá devolver os dados do carro, caso exista e propor a hora atual como hora saída. O operador também pode verificar o faturamento por tipo de carro e total do estacionamento. Diagrama de Use Case 1 - É proibida a reprodução deste material sem a autorização do autor.

Projeto de Estacionamento Java

Embed Size (px)

DESCRIPTION

projeto de um estacionamento em linguagem de programação java

Citation preview

Linguagem de Programação – Prof. Samuel Antonio Vieira

Projeto Estacionamento

A empresa de Estacionamento “Da Hora” contratou os serviços de um consultor para desenvolver o software para controlar a entrada e saída de carros.

No início do dia, o operador atualiza o valor hora do estacionamento. Este valor hora é cheio para carros, 15% de desconto para moto e adição de 15% para utilitários.

Ao entrar um carro, o operador digitará a placa, marca, modelo e hora entrada do carro, o sistema deverá propor a hora de entrada como a hora atual, mas pode ser mudada.

Ao sair, o operador digita a placa, consulta, o sistema deverá devolver os dados do carro, caso exista e propor a hora atual como hora saída.

O operador também pode verificar o faturamento por tipo de carro e total do estacionamento.

Diagrama de Use Case

1 - É proibida a reprodução deste material sem a autorização do autor.

Linguagem de Programação – Prof. Samuel Antonio Vieira

Diagrama de Classe

2 - É proibida a reprodução deste material sem a autorização do autor.

Linguagem de Programação – Prof. Samuel Antonio Vieira

Diagrama de Sequência

3 - É proibida a reprodução deste material sem a autorização do autor.

Linguagem de Programação – Prof. Samuel Antonio Vieira

Implementando o Diagrama de Classe:

Classe Veiculo

1. package projeto.beans;2.3. public class Veiculo {4.5. private double fatorEstacionameto;6. private String placa;7. private String modelo;8. private String marca;9. private String horaEntrada;10. private String horaSaida;11. private double totalEstacionamento;12.13. public void calcularValor(double valorHora){14. String[] tE;15. String[] tS;16. double he,me,hs,ms;17.18. tE = getHoraEntrada().split(":");19. tS = getHoraSaida().split(":");20.21. he = Double.parseDouble(tE[0]);22. me = Double.parseDouble(tE[1]);23. hs = Double.parseDouble(tS[0]);24. ms = Double.parseDouble(tS[1]);25.26. totalEstacionamento =((((hs*60)+ms)-

((he*60)+me))/60)*(valorHora*getFatorEstacionameto());27. }28.29. public double getFatorEstacionameto() {30. return fatorEstacionameto;31. }32.33. public void setFatorEstacionameto(double fatorEstacionameto)

{34. this.fatorEstacionameto = fatorEstacionameto;35. }36.37. public String getPlaca() {38. return placa;39. }40.41. public void setPlaca(String placa) {42. this.placa = placa;43. }44.45. public String getModelo() {46. return modelo;47. }48.49. public void setModelo(String modelo) {50. this.modelo = modelo;51. }52.

4 - É proibida a reprodução deste material sem a autorização do autor.

Linguagem de Programação – Prof. Samuel Antonio Vieira

53. public String getMarca() {54. return marca;55. }56.57. public void setMarca(String marca) {58. this.marca = marca;59. }60.61. public String getHoraEntrada() {62. return horaEntrada;63. }64.65. public void setHoraEntrada(String horaEntrada) {66. this.horaEntrada = horaEntrada;67. }68.69. public String getHoraSaida() {70. return horaSaida;71. }72.73. public void setHoraSaida(String horaSaida) {74. this.horaSaida = horaSaida;75. }76.77. public double getTotalEstacionamento() {78. return totalEstacionamento;79. }80. }

Classe Carro

1. package projeto.beans;2.3. public class Carro extends Veiculo {4.5. public Carro() {6. setFatorEstacionameto(1);7. }8.9. }

Classe Utilitário

1. package projeto.beans;2.3. public class Utilitario extends Veiculo {4.5. public Utilitario() {6. setFatorEstacionameto(1.15);7. }8.9. }

5 - É proibida a reprodução deste material sem a autorização do autor.

Linguagem de Programação – Prof. Samuel Antonio Vieira

Classe Moto

1. package projeto.beans;2.3. public class Moto extends Veiculo {4.5. public Moto() {6. setFatorEstacionameto(0.85);7. }8. }

Classe Estacionamento

1. package projeto.beans;2.3. import java.util.*;4.5. public class Estacionamento {6.7. private double valorHora;8. private double totalFaturamentoCarro;9. private double totalFaturamentoMoto;10. private double totalFaturamentoUtilitario;11. private double totalFaturamento;12. private ArrayList<Veiculo> veiculos;13.14. public Estacionamento() {15. veiculos = new ArrayList<Veiculo>();16. }17.18. public Veiculo procurarVeiculo(String placa) {19.20. for(Veiculo v: this.veiculos){21. if(v.getPlaca().equals(placa)){22. return v;23. }24.25. }26. return null;27. }28.29. public void darEntrada(Veiculo veiculo) {30. this.veiculos.add(veiculo);31.32. }33.34. public void darSaida(Veiculo veiculo){35.36. if(veiculo instanceof Moto)37. totalFaturamentoMoto +=

veiculo.getTotalEstacionamento();38. else if (veiculo instanceof Carro)39. totalFaturamentoCarro +=

veiculo.getTotalEstacionamento();40. else41. totalFaturamentoUtilitario +=

veiculo.getTotalEstacionamento();

6 - É proibida a reprodução deste material sem a autorização do autor.

Linguagem de Programação – Prof. Samuel Antonio Vieira

42.43. totalFaturamento += veiculo.getTotalEstacionamento();44.45. this.veiculos.remove(veiculo);

46.47. }48.49. public double getValorHora() {50. return valorHora;51. }52.53. public void setValorHora(double valorHora) {54. this.valorHora = valorHora;55. }56.57. public double getTotalFaturamentoCarro() {58. return totalFaturamentoCarro;59. }60.61. public double getTotalFaturamentoMoto() {62. return totalFaturamentoMoto;63. }64.65. public double getTotalFaturamentoUtilitario() {66. return totalFaturamentoUtilitario;67. }68.69. public double getTotalFaturamento() {70. return totalFaturamento;71. }72.73.74. }

A interface com usuário

7 - É proibida a reprodução deste material sem a autorização do autor.

Linguagem de Programação – Prof. Samuel Antonio Vieira

Implementando a interface

Classe JFormEstacionamento

1. package projeto.gui;2.3. import java.awt.*;4. import java.awt.event.*;5. import java.text.*;6.7. import javax.swing.*;8.9. import projeto.beans.*;10.11. public class JFormEstacionamento extends JFrame implements

ActionListener{12.13.14. private GridBagConstraints gbc;15.16. private JPanel jpnlCentro;17. private JPanel jpnlSul;18.19. private JLabel rotulo1;20. private JLabel rotulo2;21. private JLabel rotulo3;22. private JLabel rotulo4;23. private JLabel rotulo5;24. private JLabel rotulo6;25. private JLabel rotulo7;26. private JLabel jlblTotal;27.28. private JCheckBox jchkUtilitario;29.30. private JTextField jtxtValorHora;31. private JTextField jtxtPlaca;32. private JTextField jtxtHoraEntrada;33. private JTextField jtxtHoraSaida;34. private JTextField jtxtModelo;35.36. private JComboBox jcmbMarca;37.38. private JButton jbtnLimpar;39. private JButton jbtnEntrada;40. private JButton jbtnSaida;41. private JButton jbtnFaturamento;42. private JButton jbtnSair;43.44. private JButton jbtnAtualizar;45. private JButton jbtnConsultar;46.47. private String[] marcas = { "-- Carros/Utilitários", //048. "AUDI",49. "BMW",50. "CHEVROLET",51. "CITROËN",52. "DODGE",53. "FIAT",

8 - É proibida a reprodução deste material sem a autorização do autor.

Linguagem de Programação – Prof. Samuel Antonio Vieira

54. "FORD",55. "HONDA",56. "HYUNDAI",57. "KIA",58. "LAND ROVER",59. "MERCEDES-BENZ",60. "MITSUBISHI",61. "NISSAN",62. "PEUGEOT",63. "RENAULT",64. "SUZUKI",65. "TOYOTA",66. "VOLKSWAGEN",67. "VOLVO",68. "Outros carros...",69. "-- Motos",//2270. "AGRALE",71. "AMAZONAS",72. "APRILIA",73. "BMW",74. "BUELL",75. "CAGIVA",76. "CALOI",77. "DAFRA",78. "DUCATI",79. "GARINNI",80. "HARLEY-DAVIDSON",81. "HONDA",82. "KASINSKI",83. "KAWASAKI",84. "KTM",85. "PIAGGIO",86. "SUNDOWN",87. "SUZUKI",88. "TRIUMPH",89. "YAMAHA",90. "-- Outras Motos..."91. };92.93. private Estacionamento estacionamento;94.95.96. public JFormEstacionamento() {97.98. super("Estacionamento da Hora");99.100. setLayout(new BorderLayout());101.102. jpnlCentro = new JPanel(new GridBagLayout());103. jpnlSul = new JPanel(new FlowLayout());104.105. rotulo1 = new JLabel("Valor Hora:");106. rotulo2 = new JLabel("Placa:");107. rotulo3 = new JLabel("Hora Entrada:");108. rotulo4 = new JLabel("Hora Saída:");109. rotulo5 = new JLabel("Marca:");110. rotulo6 = new JLabel("Modelo:");

9 - É proibida a reprodução deste material sem a autorização do autor.

Linguagem de Programação – Prof. Samuel Antonio Vieira

111. rotulo7 = new JLabel("Total a pagar:");112.113. jtxtValorHora = new JTextField(10);114. jtxtPlaca = new JTextField(10);115. jtxtHoraEntrada = new JTextField(10);116. jtxtHoraSaida = new JTextField(10);117. jtxtModelo = new JTextField(10);118.119. jcmbMarca = new JComboBox(marcas);120.121. jchkUtilitario = new JCheckBox("Utilitário");122.123. jlblTotal = new JLabel("0,00");124.125. jbtnLimpar = new JButton("Limpar");126. jbtnAtualizar = new JButton("Atualizar");127. jbtnConsultar = new JButton("Consultar");128. jbtnEntrada = new JButton("Dar Entrada");129. jbtnSaida = new JButton("Pagar e Dar a Saída");130. jbtnFaturamento = new JButton("Verificar Faturamento");131. jbtnSair = new JButton("Sair do Sistema");132.133. gbc = new GridBagConstraints();134. gbc.anchor = GridBagConstraints.LINE_START;135. gbc.insets = new Insets(5, 5, 5, 5);136.137. // Adicionando os componentes na coluna zero do grid138. gbc.gridx = 0;139.140. gbc.gridy = 0;141. jpnlCentro.add(rotulo1,gbc);142.143. gbc.gridy = 1;144. jpnlCentro.add(rotulo2,gbc);145.146. gbc.gridy = 2;147. jpnlCentro.add(rotulo3,gbc);148.149. gbc.gridy = 3;150. jpnlCentro.add(rotulo4,gbc);151.152. //Adicionando os componentes a coluna 1 do grid153. gbc.gridx = 1;154.155. gbc.gridy = 0;156. jpnlCentro.add(jtxtValorHora,gbc);157.158. gbc.gridy = 1;159. jpnlCentro.add(jtxtPlaca,gbc);160.161. gbc.gridy = 2;162. jpnlCentro.add(jtxtHoraEntrada,gbc);163.164. gbc.gridy = 3;165. jpnlCentro.add(jtxtHoraSaida,gbc);166.167. //Adicionando os componentes a coluna 2 do grid

10 - É proibida a reprodução deste material sem a autorização do autor.

Linguagem de Programação – Prof. Samuel Antonio Vieira

168. gbc.gridx = 2;169.170. gbc.gridy = 0;171. jpnlCentro.add(jbtnAtualizar,gbc);172.173. gbc.gridy = 1;174. jpnlCentro.add(jbtnConsultar,gbc);175.176. gbc.gridy = 3;177. jpnlCentro.add(rotulo7,gbc);178. rotulo7.setFont(new Font(Font.DIALOG,Font.PLAIN,30));179.180. //Adicionando os componentes a coluna 3 do grid181. gbc.gridx = 3;182.183. gbc.gridy = 0;184. jpnlCentro.add(rotulo5,gbc);185.186. gbc.gridy = 1;187. jpnlCentro.add(rotulo6,gbc);188.189. //Adicionando os componentes a coluna 4 do grid190. gbc.gridx = 4;191.192. gbc.gridy = 0;193. jpnlCentro.add(jcmbMarca,gbc);194.195. gbc.gridy = 1;196. jpnlCentro.add(jtxtModelo,gbc);197.198. gbc.gridy = 2;199. jpnlCentro.add(jchkUtilitario,gbc);200.201. gbc.gridy = 3;202. gbc.anchor = GridBagConstraints.LINE_END;203. jpnlCentro.add(jlblTotal,gbc);204. jlblTotal.setFont(rotulo7.getFont());205.206. estacionamento = new Estacionamento();207.208. jcmbMarca.addActionListener(this);209. jbtnAtualizar.addActionListener(this);210. jbtnConsultar.addActionListener(this);211. jbtnEntrada.addActionListener(this);212. jbtnFaturamento.addActionListener(this);213. jbtnLimpar.addActionListener(this);214. jbtnSaida.addActionListener(this);215. jbtnSair.addActionListener(this);216.217.218. jpnlSul.add(jbtnLimpar);219. jpnlSul.add(jbtnEntrada);220. jpnlSul.add(jbtnSaida);221. jpnlSul.add(jbtnFaturamento);222. jpnlSul.add(jbtnSair);223.224. mudarEstado(true);

11 - É proibida a reprodução deste material sem a autorização do autor.

Linguagem de Programação – Prof. Samuel Antonio Vieira

225.226. add(jpnlCentro, BorderLayout.CENTER);227. add(jpnlSul,BorderLayout.SOUTH);228. setSize(800,250);229. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);230. }231.232. public void actionPerformed(ActionEvent e){233. if(e.getSource() == jcmbMarca){234.235. if(jcmbMarca.getSelectedIndex() > 22){236. jchkUtilitario.setSelected(false);237. jchkUtilitario.setEnabled(false);238. }239. else{240. jchkUtilitario.setEnabled(true);241. }242.243. }244. else if(e.getSource() == jbtnAtualizar){245.246.

estacionamento.setValorHora(Double.parseDouble(jtxtValorHora.getText()));247. JOptionPane.showMessageDialog(null, "Valor hora

atualizado com sucesso!");248.249. }250. else if(e.getSource() == jbtnFaturamento){251.252. JOptionPane.showMessageDialog(null, "Total de

Carros: " + 253. new

DecimalFormat("#,##0.00").format(estacionamento.getTotalFaturamentoCarro()) +

254. "\nTotal de Utilitários: " + 255. new

DecimalFormat("#,##0.00").format(estacionamento.getTotalFaturamentoUtilitario()) +

256. "\nTotal de Motos: " + 257. new

DecimalFormat("#,##0.00").format(estacionamento.getTotalFaturamentoMoto()) +

258. "\nTotal do Estacionamento: " + 259. new

DecimalFormat("#,##0.00").format(estacionamento.getTotalFaturamento())260. );261.262. }263. else if(e.getSource() == jbtnLimpar){264.265. limpaCampos();266. mudarEstado(true);267.268. }269. else if(e.getSource() == jbtnEntrada){270. int opcao = jcmbMarca.getSelectedIndex();

12 - É proibida a reprodução deste material sem a autorização do autor.

Linguagem de Programação – Prof. Samuel Antonio Vieira

271. Veiculo veiculo = null;272.273.274. if(opcao > 0 && opcao < 22){275. if(!jchkUtilitario.isSelected()){276. veiculo = new Carro();277. }278. else{279. veiculo = new Utilitario();280. }281. }282. else if(opcao > 22){283. veiculo = new Moto();284. }285. else{286. JOptionPane.showMessageDialog(null,

"Selecione uma marca válida!");287. }288.289. if(jtxtPlaca.getText().isEmpty() ||

jtxtModelo.getText().isEmpty() || jtxtValorHora.getText().isEmpty() || jtxtHoraEntrada.getText().isEmpty()){

290. JOptionPane.showMessageDialog(null, "Valor Hora/Placa/Modelo/Hora Entrada não podem ser vazios!", "ERRO",JOptionPane.ERROR_MESSAGE);

291. }292. else{293. if(veiculo != null){294.295.

veiculo.setModelo(jtxtModelo.getText());296. veiculo.setPlaca(jtxtPlaca.getText());297.

veiculo.setMarca(jcmbMarca.getSelectedItem().toString());298.

veiculo.setHoraEntrada(jtxtHoraEntrada.getText());299.

veiculo.setHoraSaida(jtxtHoraSaida.getText());300. estacionamento.darEntrada(veiculo);301.302. JOptionPane.showMessageDialog(null,

"Entrada realizada com sucesso!");303.304. limpaCampos();305. mudarEstado(true);

306.307. }308. }309.310. }311. else if(e.getSource() == jbtnConsultar){312.313. String placa = jtxtPlaca.getText();314.315. Veiculo veic =

estacionamento.procurarVeiculo(placa);

13 - É proibida a reprodução deste material sem a autorização do autor.

Linguagem de Programação – Prof. Samuel Antonio Vieira

316.317. if(veic != null){318.319. jtxtModelo.setText(veic.getModelo());320.

jtxtHoraEntrada.setText(veic.getHoraEntrada());321.

jcmbMarca.setSelectedItem((Object)veic.getMarca());322.323. if(veic instanceof Utilitario){324. jchkUtilitario.setSelected(true);325. }326.327. jtxtHoraSaida.setText(new

SimpleDateFormat("HH:mm").format(System.currentTimeMillis()));328. mudarEstado(false);329.330. }331. else{332. JOptionPane.showMessageDialog(null, "Veiculo

não encontrado!");333. jtxtHoraEntrada.setText(new

SimpleDateFormat("HH:mm").format(System.currentTimeMillis()));334. mudarEstado(true);335. }336.337. }338. else if(e.getSource() == jbtnSaida){339.340. String placa = jtxtPlaca.getText();341.342. Veiculo veiculo =

estacionamento.procurarVeiculo(placa);343.344. if(jtxtHoraSaida.getText().isEmpty()){345. JOptionPane.showMessageDialog(null, "Hora

Saída não pode ser vazio!", "ERRO",JOptionPane.ERROR_MESSAGE);346. }347. else{348.

veiculo.setHoraSaida(jtxtHoraSaida.getText());349.350.

veiculo.calcularValor(estacionamento.getValorHora());351.352. if(veiculo.getTotalEstacionamento() >=0 ){353. estacionamento.darSaida(veiculo);354.355. jlblTotal.setText(new

DecimalFormat("#,##0.00").format(veiculo.getTotalEstacionamento()));356.357. JOptionPane.showMessageDialog(null,

"Fechamento efetuado com sucesso!");358.359. mudarEstado(true);360.361. jbtnEntrada.setEnabled(false);

14 - É proibida a reprodução deste material sem a autorização do autor.

Linguagem de Programação – Prof. Samuel Antonio Vieira

362. }363. else{364. JOptionPane.showMessageDialog(null,

"Hora Saída menor que Hora Entrada!", "ERRO",JOptionPane.ERROR_MESSAGE);365. }366.367.368. }369.370. }371. }372.373. private void limpaCampos() {374. jtxtModelo.setText("");375. jcmbMarca.setSelectedIndex(0);376. jtxtHoraEntrada.setText("");377. jtxtHoraSaida.setText("");378. jtxtPlaca.setText("");379. jchkUtilitario.setSelected(false);380. jlblTotal.setText("0,00");381.382. }383.384. private void mudarEstado(boolean estado){385.386. jbtnAtualizar.setEnabled(estado);387. jbtnConsultar.setEnabled(estado);388. jbtnEntrada.setEnabled(estado);389. jbtnSaida.setEnabled(!estado);390.391. jtxtValorHora.setEnabled(estado);392. jtxtHoraEntrada.setEnabled(estado);393. jtxtHoraSaida.setEnabled(!estado);394. jtxtModelo.setEnabled(estado);395. jtxtPlaca.setEnabled(estado);396.397. jcmbMarca.setEnabled(estado);398.399. jchkUtilitario.setEnabled(estado);400.401.402. }403. }

15 - É proibida a reprodução deste material sem a autorização do autor.