Você está na página 1de 21

INSTITUTO SUPERIOR DE COMUNICACAO E IMAGEM DE MOCAMBIQUE

Paradigmas da Programação

Paradigma Orientado à Objetos: Java

Informatica de Sistemas

Segundo Ano

II Semestre

Relatório de: Mohammad Nazir Lorgat

Elementos do Grupo:

Osvaldo Silva

Chilton Nhabanga

Docente: Eng. Momad Naushad

Maputo, Novembro de 2015


Índice
Introdução..................................................................................................................................................4
Descrição:...................................................................................................................................................5
Prazo: 12/11//15......................................................................................................................................6
Limitacoes: 0..........................................................................................................................................6
Pseudocodigo:............................................................................................................................................6
Fluxograma................................................................................................................................................9
Código......................................................................................................................................................10
Conclusão.................................................................................................................................................22
Bibliografia..............................................................................................................................................23

2
Introdução
A orientação à objectos é um modelo de análise, projeto e programação de sistemas de software
baseado na composição e interação entre diversas unidades de software chamadas de objetos.

Na Programação orientada à objectos, implementa’se um conjunto de classes que definem os


objectos presentes no sistema de software. Cada classe determina o comportamento (definido nos
métodos) e estados possíveis (atributos) de seus objectos, assim como o relacionamento com
outros objectos.

Java é uma linguagem que se enquadra no paradigma Orientado à objectos.

O trabalho fala sobre um sistema de gestão de um parque de estacionamento, implementado na


linguagem Java

O presente trabalho faz parte da cadeira de Paradigmas de Programação, do segundo Semestre,


do Segundo Ano, do curso de Informática de Sistemas, do ISCIM, como extra.

3
Descrição:
Um sistema simples para gerenciamento de um parque de estacionamento. No sistema temos 2
entidades, o gerente e o cliente. O cliente so tem direito a ver a tabela de precos. Para evitar
fraudes e como o sistema nao permite leitura de um “read card”, o gerente e que calcula o preco
a pagar pelo cliente.

Ao aceder o sistema, temos um menu para selecao de usuario (Cliente e Gerente). O gerente tem
direito a adicionar um cliente, apagar um cliente, modificar algum dado do cliente , listar todos
cliente e calcular preco a pagar pelo cliente.

Ao adicionar um cliente, deve preencher os seguintes atributos: Numero do cliente


(identificardor, Nao pode repetir), Nome, Marca do Automovel, Matricula do Automovel e o
Numero do Lugar de estacionamento.y

Devido a algumas limitacoes do Sistema, o nome obedece o seguinte formato: “nome_apelido”,


o mesmo aplica-se a marca do automovel: marca_modelo.

Para apagar ou alterar algum dado do cliente e Necessario ter o Numero do cliente.

A tabela de precos a pagar e a seguinte:

- 1 hora – 100 mt
- 2 horas -180 mt
- 3 horas- 270mt
- Apartir de 4 horas- 80 mt por hora.
- Os minutos extras sao arredondados para horas, mas o gerente pode descontar se quiser.

NB: o calculo das horas nao e feito no Sistema, e o preco a pagar nao vem associado a lista
dos clientes.

Prazo: 12/11//15
Limitacoes: 0.

4
Pseudocodigo:
Inicio

Selecionar Usuario

Se 1 entao MenuCliente

Selecionar accao

Se 1 entao Ver tabela de precos

Se nao sair

Se 2 entao MenuGerente

Selecionar Accao

Se 1 entao Adicionar Cliente

Digitar Numero

Digitar Nome_Apelido

Digitar Marca_Modelo

Digitar Matricula

Digitar Lugar

Guardar Cliente

Se 2 entao Apagar Cliente

Digitar numero

Apaga cliente

Se 3 entao Modificar dado

Selecionar dado a modificar

Se 1 entao modificar nome

Digitar numero

Digitar novo nome

Alterar nome

5
Se 2 entao modificar marca

Digitar numero

Digitar nova marca

Alterar marca

Se 3 entao modificar matricula

Digitar numero

Digitar nova matricula

Alterar matricula

Se 4 entao modificar lugar

Digitar numero

Digitar novo lugar

Alterar lugar

Se nao modificar cliente

Se 4 entao Ver lista de clients

Listar clientes

Se 5 entao Calcular preco a pagar

Digitar horas

Se 1 entao 100

Se 2 entao 180

Se 3 entao 270

Se nao 80*horas

Se nao MenuGerente

Fim

6
Fluxograma

7
Código
//ficheiro cliente.java

package done;

public class Cliente {

public String nome;

public String marca;

public String matricula;

public String numero;

public String codigo;

public Cliente(String codigo,String nome, String marca, String matricula, String numero){

this.nome=nome;

this.marca=marca;

this.matricula=matricula;

this. numero=numero;

this.codigo=codigo;

public Cliente() {

public void setnome(String nome){

this.nome=nome;

8
}

public void setmarca(String marca)

{ this.marca=marca; }

public void matricula(String matricula){

this.matricula=matricula;

public void setnumero_lugar(String numero_lugar){

this.numero=numero_lugar;

public String getnome(){

return this.nome;

public String getmarca()

{ return this.marca;

public String getmatricula(){

return this.matricula;

public String getnumero(){

9
return this.numero;

public String toString(){

return (codigo+" "+nome+" "+marca+" "+numero+" "+matricula);

public String toname(){

return (codigo+" "+nome+" "+marca+" "+matricula+" "+numero);

public void atribuiCodigo(int i){

this.codigo=this.codigo+i;

//ficheiro done.java

package done;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.nio.file.Files;

import java.util.LinkedList;

10
import java.util.StringTokenizer;

import javax.swing.JOptionPane;

public class Done {

// LinkedList<Cliente> cli=new LinkedList<Cliente>();\

static LinkedList<Cliente> listaLida=new LinkedList<Cliente>();

static BufferedWriter b;

static BufferedReader r;

public static void main(String[] args) {

Object[] options = { "Cliente", "Gerente" };

int choice = JOptionPane.showOptionDialog(null,

"Selecione o tipo de utilizador",

"Utilizador",

JOptionPane.YES_NO_OPTION,

JOptionPane.QUESTION_MESSAGE,

null,

options,

options[0]);

// interpret the user's choice

if (choice == JOptionPane.YES_OPTION)

11
{

JOptionPane.showMessageDialog(null,

"1 Hora --- 100MT." +"\n"+

"2 Hora --- 180MT." +"\n"+

"3 Hora --- 350MT." +"\n"+

"Apartir de 4 horas --- 60MT por hora." +"\n","Tabela de


Precos", JOptionPane.INFORMATION_MESSAGE);

else

String nome_cli=(String)JOptionPane.showInputDialog(null, "Introduza o nome


do utilizador","Nome", JOptionPane.INFORMATION_MESSAGE);

String senha=(String)JOptionPane.showInputDialog(null, "introduza a senha de


ulilizador","Senha", JOptionPane.INFORMATION_MESSAGE);

// if(nome_cli.equals("chilton")&&senha.equals("chilton")) {

// JOptionPane.showMessageDialog(null,"Dados Incorrectos","Login",
JOptionPane.INFORMATION_MESSAGE);

//}

Object[] colours = {"Adicionar", "Apagar", "Modificar", "Listar todos"};

12
int n = JOptionPane.showOptionDialog(null,

"Escolha uma opcao?",

"Menu Principal",

JOptionPane.DEFAULT_OPTION,

JOptionPane.QUESTION_MESSAGE,

null,

colours,

colours[0]);

if(colours[n]=="Adicionar"){

String codigo=(String)JOptionPane.showInputDialog(null, "Introduza o codigo do


utilizador","Codigo", JOptionPane.INFORMATION_MESSAGE);

String nome=(String)JOptionPane.showInputDialog(null, "Introduza o nome do


utilizador","Nome", JOptionPane.INFORMATION_MESSAGE);

String marca=(String)JOptionPane.showInputDialog(null, "Introduza a marca


do carro","Nome", JOptionPane.INFORMATION_MESSAGE);

String matricula=(String)JOptionPane.showInputDialog(null, "Introduza a


matricula do carro","Nome", JOptionPane.INFORMATION_MESSAGE);

String numero=(String)JOptionPane.showInputDialog(null, "Introduza o


numero do local de estacionamento","Nome", JOptionPane.INFORMATION_MESSAGE);

JOptionPane.showMessageDialog(null,"Cliente registado com


sucesso" ,"Registo", JOptionPane.INFORMATION_MESSAGE);

Cliente cliente = new Cliente(codigo,nome,marca,matricula,numero);

13
// System.out.println(cliente.getnome());

LinkedList<Cliente> cli=new LinkedList<Cliente>();

cli.addFirst(cliente);

try {

AbreEscrita("output.txt");

} catch (IOException e1) {System.out.println(" falha para abrir


escrita");}

try {

AbreEscrita("output.txt");

EscreveObjecto(cli);

} catch (IOException e1) {}}

else

if (colours[n]=="Apagar"){

String apagar=(String)JOptionPane.showInputDialog(null, "Introduza o numero


do cliente para apagar","Apagar Cliente", JOptionPane.INFORMATION_MESSAGE,null,null,"10");

try {

abreFicheiro("output.txt");

} catch (IOException e1) {

System.out.println(" erro na abertura do ficheiro");

try {

14
LinkedList<Cliente> a = LerCliente();

String va=pesquisa(a,apagar);

System.out.println(va);

fecha();

} catch (IOException e1) {

System.out.println(" erro na leitura");

else

if (colours[n]=="Modificar"){

String modificar= JOptionPane.showInputDialog(null, "Introduza o


numero do cliente para modificar","Apagar Cliente", JOptionPane.INFORMATION_MESSAGE);

else

if (colours[n]=="Listar todos"){

//Cliente r=new Cliente();

try {

abreFicheiro("output.txt");

} catch (IOException e1) {

15
System.out.println(" erro na
abertura do ficheiro");

try {

String c ="Codigo-Nome-Matricula-
Marca-numero"+"\n";

LinkedList<Cliente> a = LerCliente();

for(int i=0;i<a.size();i++){

c=c+a.get(i).toname()+"\n";

JOptionPane.showMessageDialog(null,c,"Clientes Registados",
JOptionPane.INFORMATION_MESSAGE);

fecha();

} catch (IOException e1) {

System.out.println(" erro na
leitura");

16
public static void AbreEscrita(String s) throws IOException{

b=new BufferedWriter(new FileWriter(s,true));

public static void EscreveObjecto (LinkedList<Cliente> l )throws IOException{

for(int i=0;i<l.size();i++)

{b.write(l.get(i).toString());}

b.newLine();

b.close();

public static void abreFicheiro(String path) throws IOException{

//Cliente r=new Cliente();

try{

r=new BufferedReader( new FileReader(path));}

catch(FileNotFoundException e ){System.out.println("Nao conseguiu aceder ao


ficheiro");}

17
public static String lerLinha() throws IOException{return r.readLine();}

public static LinkedList<Cliente> LerCliente() throws IOException{

String s;

try{ do{

s=lerLinha();

if(s!=null){

StringTokenizer st= new StringTokenizer(s);

String nome,marca,matricula,numero,codigo;

codigo=st.nextToken();

nome=st.nextToken(); // sem problema

marca=st.nextToken();// sem problema

matricula=st.nextToken();// sem problema

numero=st.nextToken();// sem problema

Cliente e =new Cliente(codigo,nome,marca,matricula,numero);

//e.setcodigo(cd);

18
//e.setgenero(sexo);

//e.setData_Nascimento(Data_Nascimento);

//e.setclassificacao(classificacao);//bloco anterior sem problema

listaLida.addFirst(e);

System.out.println(listaLida.get(0).marca);

}}while( s!=null );}

catch(Exception e){System.out.println("houve problema na leitura do ficheiro "+"


"+e.getMessage()+e.getCause()+e.getLocalizedMessage());}

return listaLida;

public static String pesquisa(LinkedList<Cliente> l, String apagar){

String valor ="";

for(int i=0;i<l.size();i++){

if(l.get(i).codigo==apagar )

valor=apagar; }

return valor;

19
public static void fecha(){try {

r.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}}

Conclusão
Não Participei na parte prática do trabalho, como tinha me responsabilizado de fazer os outros trabalhos,
o colega Chilton Nhabanga responsabilizou-se por fazer esse trabalho.

A nota que me dou por apenas ter dado dicas de como fazer esse sistema, ter explicado a lógica do
sistema, é 11.

Quanto a nota que dou ao colega Chilton é 17 pelo excelente trabalho que fez.

20
Bibliografia
- Apontamentos e Anotações das Aulas de Programação I e II.

21

Você também pode gostar