Aplicacao Java Netbeans

7 respostas
A

Boas pessoal. Passei por este forum e ja vi que tem muita coisa interessante. Estou a fazer um trabalho no netbeans e gostava que voces pudessem dar umas dicas.
Ja realizei os atributos e classes socio evento e inscricao. Agora faltam os menus mas nao sei como começar. Se alguem quiser ajudar em particular, sera pago. Obrigado.
A aplicação a desenvolver deverá registar e manipular a informação relativa às
entidades sócios, eventos e inscrições nos eventos. A informação que deverá
ser armazenada para cada uma das entidades é a seguinte:

?

sócio: código numérico, nome, morada, telemóvel, ano de pagamento

da última quota, profissão e estado (activo/inactivo);

?

evento: código numérico, descrição, data de realização e custo de

inscrição sócios;

?

inscrição: código numérico do evento, código do sócio inscrito nesse

evento e número de acompanhantes.

A aplicação deverá permitir as seguintes acções, as quais deverão ser acedidas

pelo utilizador através de menus apropriados:

Criação e eliminação de sócios.
Para a realização dessas operações deverá ter em conta que:

-cada sócio tem um número de código único;

1

-na operação eliminação de sócio deverá ser efectuada uma
pesquisa por pelo código ou pelo número de telemóvel;
-a eliminação de um sócio implica a colocação do estado em inactivo.

  1. Criação, alteração, cancelamento de eventos e pesquisa de eventos.
    Para a realização dessas operações deverá ter em consideração que:
    -cada evento tem um número de código único;
    -todos os campos podem ser alterados com a excepção do código;
    -o cancelamento de um evento implica a colocação na data de

realização de um valor definido para o efeito;
-a pesquisa de eventos deverá ser efectuada por código, data de
realização ou por descrição.

Inscrição dos sócios nos eventos.
Um sócio só se pode inscrever se tiver as quotas em dia e num evento
que não foi cancelado.

Listagens de:
a) Todos os sócios activos e inactivos
b) Todos os eventos que um determinado sócio se inscreveu.
5.
Estatísticas, onde a aplicação deve informar:
a) A percentagem de sócios que têm as quotas em dia.
b) O número de eventos realizados em cada ano.
Ao iniciar-se a aplicação os dados guardados nos ficheiros, relativos a cada
uma das entidades, deverão ser copiados para estruturas apropriadas.
Ao encerrar-se a aplicação a informação dos ficheiros deverá ser actualizada.

7 Respostas

Jemerson

alvaro123 ,
pelo que li na especificação, trata-se de algo simples.Claro que para quem está começando pode até parecer um bicho
de sete cabeças,mas comece a desenvolver e poste suas dúvidas que a galera poderá lhe dar ideias,corrigir algum eventual
erro e ,conseguentemente, você irá aprender muito com essas trocas de experiências.

Quanto ao menu, qual exatamente a dúvida?
Veja um exemplo simples:

public static void main(String[] args) {
		Scanner ler = new Scanner(System.in);

		int op = 0;

		do {
			System.out.println("1.Cadastro 2.Consulta 3.Sair");
			op = ler.nextInt();

			if (op == 1) {
				System.out.println("Você escolheu opção 1");

			}
			if (op == 2) {
				System.out.println("VocÊ escolheu opção 2");
			}

		} while (op != 3);

	}

Poste suas dúvidas e, se for possível, deixe pedaços do seu código para entendermos melhor.
Abraços.

A

Boas de novo e obrigado pela informação. A minha duvida é o facto de realizar um menu principal, e sub menus dentro do mesmo como indica o enunciado.
Ja comecei algo assim com a sua ajuda…

public static void main(String[] args) {
Scanner ler = new Scanner(System.in);

int op1 = ler.nextInt();
do {

System.out.println(“1.Socios”);

System.out.println(“2.Eventos”);

System.out.println(“3.Listagens”);

System.out.println(“4.Estatisticas”);

System.out.println(“5.Sair”);

if (op1 == 1) {

System.out.println ("\n Escolha a sua opcao: ");

System.out.println (“1) Criar socios \n 2) Eliminar socios”);
}  
        if (op1 == 2) {  
            System.out.println ("\n Escolha a sua opcao: ");
            System.out.println ("\n 1) Criar eventos \n 2) Alterar eventos \n 3) Cancelar eventos \n 4) Pesquisar eventos \n 5) Inscricao para eventos");
        }  
         if (op1 == 3) {  
            System.out.println ("\n Escolha a sua opcao: ");
            System.out.println ("1) Listagem de todos os socios activos \n 2) Listagem de todos os socios inactivos \n 3) Listagem dos eventos inscritos");
        }
         if (op1 == 4) {  
            System.out.println ("\n Escolha a sua opcao:\n 1) Percentagem")
         }  
         } while (op1 != 5);

E agora os processos em cada sub menu, os quais nao sei como começar a processar, principalmente o facto de voltar atras em cada sub-menu. Sei que tenho de relacionar com as variaveis previamente declaradas.

Jemerson

Não deixe de usar a tag [code?] seu algoritmo [/code?] para formatar seu código(sem o ponto de interrogação).
Dê uma olhada neste link:
www.guj.com.br/java/50115-voce-e-novo-no-guj-vai-criar-um-topico-e-colar-seu-codigo-fonte-leia-aqui-antes-por-favor

public static void main(String[] args) { 
	Scanner ler = new Scanner(System.in); 

	//int op1 = ler.nextInt();  a opção de leitura terá de vir dentro do laço de repetição.
	int op1;
	do { 
		System.out.println("1.Socios"); 
		System.out.println("2.Eventos"); 
		System.out.println("3.Listagens"); 
		System.out.println("4.Estatisticas"); 
		System.out.println("5.Sair"); 
		//após exibir o menu, você realiza a leitura para saber a escolha do usuário.
		op1=ler.nextInt();
	//cria uma opção auxiliar
		int op2;
		if (op1 == 1) { 
			System.out.println ("\n Escolha a sua opcao: "); 
			System.out.println ("1) Criar socios \n 2) Eliminar socios"); 
			//leio a nova opção informada
			op2=ler.nextInt();
//agora vou descobrir qual foi a "sub opção" escolhida
			if(op2==1){
				System.out.println("Você escolheu a opção de criar sócios");
                System.out.println("Retornando ao menu principal");
			}
			if(op2==2){
				System.out.println("Você escolheu a opção de eliminar sócios");
                System.out.println("Retornando ao menu principal");
			}


		}	 
		if (op1 == 2) { 
			System.out.println ("\n Escolha a sua opcao: "); 
			System.out.println ("\n 1) Criar eventos \n 2) Alterar eventos \n 3) Cancelar eventos \n 4) Pesquisar eventos \n 5) Inscricao para eventos"); 
		} 
		if (op1 == 3) { 
			System.out.println ("\n Escolha a sua opcao: "); 
			System.out.println ("1) Listagem de todos os socios activos \n 2) Listagem de todos os socios inactivos \n 3) Listagem dos eventos inscritos"); 
		} 
		if (op1 == 4) { 
			System.out.println ("\n Escolha a sua opcao:\n 1) Percentagem") ;
		} 
	} while (op1 != 5);

Depois que você digitar a opção para criar sócios, perceba que ele entrou numa condicional logo abaixo e exibiu a mensagem correspondente e logo
em seguida retornou ao menu principal.

Siga esse exemplo adicionando suas funcionalidades reais.

A

Sim, peço desculpa, sou iniciante neste tipo de linguagem. Desde já obrigado pela atenção Jemerson. Realizei um codigo mais completo e com o switch case. A estrutura funcional acho que está correcta, agora falta é aplicar os processos em cada sub menu, pelos quais não sei por onde começar, pois têm diversas condições em conta como diz no enunciado. As classes Socio, Eventos e Inscrição ja têm os seus atributos, contructores, os gets e os sets. Aqui está o codigo do MainClass:
Mais uma vez, obrigado pela ajuda. Prometo que irá ser compensando, pois este trabalho e muito importante.

package projecto;

import java.util.Scanner;

/**
 *
 * @author Grupo
 */
public class MenuPrincipal {

public static void main(String[] args) {
    
System.out.println ("Associação de Antigos Alunos do DM");
System.out.println ("Escolha a sua opção:");
System.out.println ("1.Sócios"); 
System.out.println ("2.Eventos");
System.out.println ("3.Inscrições nos eventos"); 
System.out.println ("4.Listagens"); 
System.out.println ("5.Estatísticas"); 
System.out.println ("6.Sair"); 
Scanner ler = new Scanner (System.in);

int op = ler.nextInt(); 
        
    if (op == 1) { 
    System.out.println ("Escolha a opção pretendida:"); 
    System.out.println ("1.Adicionar novo sócio");
    System.out.println ("2.Eliminar sócios");
    System.out.println ("3.Anterior");
        int op1 = ler.nextInt();
        switch (op1){
            case 1: 
            case 2:
            case 3:
        }
    } 
    if (op == 2) { 
    System.out.println ("Escolha a opção pretendida:");
    System.out.println ("1.Adicionar Eventos"); 
    System.out.println ("2.Alterar Eventos");
    System.out.println ("3.Cancelar Eventos");
    System.out.println ("4.Pesquisar Eventos");
    System.out.println ("5.Anterior");
        int op2 = ler.nextInt();
        switch (op2){
            case 1: 
            case 2:
            case 3:
            case 4:
            case 5:
        }
    }
    if (op == 3) { 
    System.out.println ("1.Criar nova inscrição");
    System.out.println ("2.Anterior");
        int op3 = ler.nextInt();
        switch (op3){
            case 1: 
            case 2:
                
        }
    }
    if (op == 4) { 
    System.out.println ("Escolha a opção pretendida:");
    System.out.println ("1.Lista de todos os socios activos"); 
    System.out.println ("2.Lista de todos os socios inactivos"); 
    System.out.println ("3.Lista de todos os eventos");
    System.out.println ("4.Anterior");
        int op4 = ler.nextInt();
          switch (op4){
            case 1: 
            case 2:
            case 3:
            case 4:
          }
    }
    if (op == 5) { 
    System.out.println ("Escolha a opção pretendida:");
    System.out.println ("1.Percentagem de sócios que têm cota em dia"); 
    System.out.println ("2.O número de eventos realizados em cada ano");
    System.out.println ("3.Anterior");
        int op5 = ler.nextInt();      
        switch (op5){
            case 1: 
            case 2:
            case 3:
           
        }
    }
    if (op == 6) {
        System.exit(op);
    }

Tive a pesquisar e terei que criar um array ou arraylist para ser possivel as pesquisas certo ?
Como por exemplo, uma agenda de contactos.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Projecto;

/**
 *
 * @author Grupo
 */
import java.util.Scanner;
public class AgendaContactos {

    /**
     * @param args the command line arguments
     */
    static Scanner ler=new Scanner(System.in);
    public static void main(String[] args) {

        //criar um array de contactos com capacidade de guardar 50 contactos
        Contacto[] agenda=new Contacto[50];
        //variável que conta o númro de contactos inseridos
        int conta=0;
        //Inserir 5 contactos
        for(int i=0;i<2;i++){
            agenda[i]=insereContacto();
            ler.nextLine();
            conta++;
        }
        //listar os contactos com telefone móvel
        listarTipo(agenda, conta,true);
        //listar os contactos com telefone móvel
        listarTipo(agenda, conta,false);
        //pesquisar por número de telefone e imprimir para o ecrã o contacto caso exista
        System.out.println("Introduza um nº de telefone");
        int num=ler.nextInt();
        int pos=pesqTelefone(agenda, conta, num);
        if (pos==-1)
            System.out.println("Nao encontrou");
        else
            imprimeContacto(agenda[pos]);

       //pesquisa por nome
        ler.nextLine();
        System.out.println("Int. o nome do contacto a pesquisar");
        String nomePesq=ler.nextLine();
        pos=pesqNome(agenda, conta, nomePesq);
        if (pos!=-1)
            imprimeContacto(agenda[pos]);
        else
            System.out.println("Contacto inexistente!");

        //elimina após a pesquisa por nome
        System.out.println("Int. o nome do contacto a pesquisar");
        nomePesq=ler.nextLine();
        pos=pesqNome(agenda, conta, nomePesq);
        if (pos!=-1)
            conta=eliminaContactov1(agenda, pos,conta);

        else
            System.out.println("Contacto inexistente!");

    }


    private static Contacto insereContacto(){

        String nomeC; int tel; boolean t;
        char op;
        System.out.println("Nome:");
        nomeC=ler.nextLine();
        do{
            System.out.println("Nº Telefone:");
            tel=ler.nextInt();
        }while(tel<100000000||tel>999999999);

        do{
            System.out.println("Tipo (m/f):");
            op=ler.next().charAt(0);

        }while(op!='m'&& op!='M'&& op!='f'&& op!='F');

        if (op=='m'||op=='M')
            t=true;
        else
            t=false;
        return new Contacto(nomeC,tel,t);
    }

    private static void imprimeContacto(Contacto c){
        System.out.println("Nº:"+c.getNumero());
        System.out.println("Nome:"+c.getNome());
        System.out.println("Telefone:"+c.getTelefone());
        if (c.isMovel()==true)
         System.out.println("Móvel");
        else
            System.out.println("Fixo");
    }

    private static int eliminaContactov1(Contacto[] v, int pos, int nElem){

        for (int i=pos;i<nElem-1;i++)
          v[i]=v[i+1];

        return --nElem;
    }

    private static int eliminaContactov2(Contacto[] v, int pos,int nElem){

         v[pos]=v[nElem-1];

        return --nElem;
    }

    private static int pesqTelefone(Contacto[]v, int nElem, int numT){

        int i=0;
        while(i<nElem && numT!=v[i].getTelefone())
            i++;
        if (i<nElem)
            return i;
        else
            return -1;

    }

    private static int pesqNome(Contacto[]v, int nElem, String nomeP){

        int i=0;
        while(i<nElem && !nomeP.equalsIgnoreCase(v[i].getNome()))
            i++;
        
        if (i<nElem)
            return i;
        else
            return -1;

    }

    private static void listarTipo(Contacto [] tab, int nElem, boolean tipo){
      for (int i=0;i<nElem;i++)
          if (tab[i].isMovel()==tipo){
             imprimeContacto(tab[i]);
            }
    }


    }
Jemerson

Vamos usar um exemplo que você poderá seguir:

public class Socio {
	private String nome;
	private int idade;

	public int getIdade() {
		return idade;
	}

	public String getNome() {
		return nome;
	}

	public void setIdade(int idade) {
		this.idade = idade;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

}

Na classe principal ficaria assim:

import java.util.Scanner;

public class Principal {

	public static void main(String[] args) {
		Scanner ler = new Scanner(System.in);

		int op1;
		do {
			System.out.println("1.Socios");
			System.out.println("2.Eventos");
			System.out.println("3.Listagens");
			System.out.println("4.Estatisticas");
			System.out.println("5.Sair");
			// após exibir o menu, você realiza a leitura para saber a escolha
			// do usuário.
			op1 = ler.nextInt();
			// cria uma opção auxiliar
			int op2;
			if (op1 == 1) {
				System.out.println("\n Escolha a sua opcao: ");
				System.out.println("1) Criar socios \n 2) Eliminar socios");
				// leio a nova opção informada
				op2 = ler.nextInt();
				// pretendo cadastrar sócios,logo:
				if (op2 == 1) {
					Socio socio = new Socio();
					System.out.println("Informe o nome do sócio");
					String nome = ler.next();
					System.out.println("Informe a idade do sócio");
					int idade = ler.nextInt();
					// adiciono as informações aos atributos
					socio.setIdade(idade);
					socio.setNome(nome);

				}
			}
		} while (op1 != 5);

	}
}

Agora você precisa adicionar esse sócio dentro de alguma estrutura de dados que você possa armazenar e excluir.
Para isso, tente usar um arrayList ou um LinkedList.
Com o linkedList ficaria assim:

//cria uma lista de sócio
LinkedList<Socio> listaSocio=new LinkedList<Socio>();

Adiciona o socio a lista:

// adiciono as informações aos atributos
					socio.setIdade(idade);
					socio.setNome(nome);
					//adiciono socio a lista.
					listaSocio.add(socio);

Se precisar remover, você pode pesquisar pelo nome:

Socio socio = new Socio();
		socio.setNome("João");
		socio.setIdade(15);
		
		listaSocio.add(socio);
		
		//crio um novo objeto
		Socio s1= new Socio();
		s1.setIdade(15);
		s1.setNome("Jemerson");
		
		//insiro na lista
		listaSocio.add(s1);
		
		//Preciso remover João 
		String nomeRemover="João";
		//pecorro a lista
		for(int i=0;i<listaSocio.size();i++){
			if(nomeRemover.equals(listaSocio.get(i).getNome())){				
				listaSocio.remove();
			}
			
		}
		//imprimo os itens da lista
		for(Socio s : listaSocio)
			System.out.println(s.getNome());

A lista deve ficar declarada depois do objeto ler.

Siga essas idéias para as demais classes que você necessita manipular.

Jemerson

Caso você não tenha conseguido visualizar o codigo anterior:

import java.util.LinkedList;
import java.util.Scanner;

public class Principal {

	public static void main(String[] args) {
		Scanner ler = new Scanner(System.in);
		// crio uma lista de sócios
		LinkedList<Socio> listaSocio = new LinkedList<Socio>();

		int opPrincipal;
		do {
			System.out.println("1.Socios");
			System.out.println("2.Eventos");
			System.out.println("3.Listagens");
			System.out.println("4.Estatisticas");
			System.out.println("5.Imprime lista");
			System.out.println("6.Sair");
			// após exibir o menu, você realiza a leitura para saber a escolha
			// do usuário.
			opPrincipal = ler.nextInt();
			// cria uma opção auxiliar

			if (opPrincipal == 1) {
				int op;
				System.out.println("\n Escolha a sua opcao: ");
				System.out.println("1) Criar socios \n 2) Eliminar socios");
				// leio a nova opção informada
				op = ler.nextInt();
				// pretendo cadastrar sócios
				if (op == 1) {
					Socio socio = new Socio();
					System.out.println("Informe o nome do sócio");
					String nome = ler.next();
					System.out.println("Informe a idade do sócio");
					int idade = ler.nextInt();
					// adiciono as informações aos atributos
					socio.setIdade(idade);
					socio.setNome(nome);
					// adiciono socio a lista.
					listaSocio.add(socio);

				}
				if (op == 2) {
					System.out
							.println("INFORME O NOME DO SOCIO A SER EXCLUIDO");
					String nome = ler.next();
					// você pode criar um método para isso,caso queira
					for (int i = 0; i < listaSocio.size(); i++) {
						if (nome.equals(listaSocio.get(i).getNome())) {
							listaSocio.remove();
						}

					}

				}
			}
			if (opPrincipal == 5) {
				// imprimo os itens da lista
				for (Socio s : listaSocio)
					System.out.println(s.getNome());

			}

		} while (opPrincipal != 6);

	}
}

Dê uma ajeitada( limpeza) no código e siga esse exemplo para fazer o resto.
Agora creio que tenha ficado um pouco mais claro para você.

A

Sim Jemerson, obrigado pelas dicas. Irei começar a desenvolver o codigo, amanha posto de novo. Muito obrigado!

Criado 8 de dezembro de 2011
Ultima resposta 8 de dez. de 2011
Respostas 7
Participantes 2