Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-02-2013, 14:04   #1
Albsss
Junior Member
 
Iscritto dal: Nov 2012
Messaggi: 12
ricerca combinata in java

salve ragazzi...ho bisogno di un aiutino nella programmazione java...allora io ho fatto un programma per la gestione di una segreteria scolastica e funziona abbastanza correttamente...il fatto è che la vorrei fare un pò più "elaborata"....mi spiego meglio...quando vado a ricercare nei file il nome o il cognome o la matricola dello studente il programma mi stampa a video tutte le informazioni possibili...quello che io vorrei fare è una ricerca combinata,cioè ricercare dati nome e cognome oppure cognome e matricola oppure altre combinazioni,tutto ciò che si sa sullo studente...spero che qualcuno mi possa aiutare a modificare il programma...grazie
Albsss è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2013, 16:51   #2
clockover
Senior Member
 
L'Avatar di clockover
 
Iscritto dal: Oct 2004
Messaggi: 1945
Dovresti mostrarci almeno la struttura dati che hai implementato
clockover è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2013, 19:34   #3
Albsss
Junior Member
 
Iscritto dal: Nov 2012
Messaggi: 12
si è vero...sorry questo è il programma che ho fatto:
CLASSE ESAMI:
import java.io.PrintStream;
import java.util.Scanner;


public class Esami {

private Esami(String nomeProf, String cognomeProf, String titoloEsame,String codiceEsame) {
this.nomeProf = nomeProf;
this.cognomeProf = cognomeProf;
this.titoloEsame = titoloEsame;
this.codiceEsame = codiceEsame;
}

public String getNomeProf() {
return nomeProf;
}
public void setNomeProf(String nomeProf) {
this.nomeProf = nomeProf;
}
public String getCognomeProf() {
return cognomeProf;
}
public void setCognomeProf(String cognomeProf) {
this.cognomeProf = cognomeProf;
}
public String getTitoloEsame() {
return titoloEsame;
}
public void setTitoloEsame(String titoloEsame) {
this.titoloEsame = titoloEsame;
}
public String getCodiceEsame() {
return codiceEsame;
}
public void setCodiceEsame(String codiceEsame) {
this.codiceEsame = codiceEsame;
}

@Override
public String toString() {
return "Esami [nomeProf=" + nomeProf + ", cognomeProf=" + cognomeProf
+ ", titoloEsame=" + titoloEsame + ", codiceEsame="
+ codiceEsame + "]";
}

public static Esami read(Scanner sc){

if(!sc.hasNext())return null;
String nomeProf = sc.nextLine();
if(!sc.hasNext())return null;
String cognomeProf = sc.nextLine();
if(!sc.hasNext())return null;
String titoloEsame = sc.nextLine();
if(!sc.hasNext())return null;
String codiceEsame = sc.nextLine();

return new Esami(nomeProf,cognomeProf,titoloEsame,codiceEsame);
}

public void print(PrintStream ps){
ps.println(nomeProf);
ps.println(cognomeProf);
ps.println(titoloEsame);
ps.println(codiceEsame);
}

private String nomeProf,cognomeProf,titoloEsame,codiceEsame;
}
CLASSE ESAMI SVOLTI:
import java.io.PrintStream;
import java.util.Scanner;


public class EsamiSvolti {

private EsamiSvolti(String matricola, String codiceEsame, String data, String voto) {
super();
this.matricola = matricola;
this.codiceEsame = codiceEsame;
this.data = data;
this.voto = voto;
}

public String getMatricola() {
return matricola;
}

public void setMatricola(String matricola) {
this.matricola = matricola;
}

public String getCodiceEsame() {
return codiceEsame;
}

public void setCodiceEsame(String codiceEsame) {
this.codiceEsame = codiceEsame;
}

public String getData() {
return data;
}

public void setData(String data) {
this.data = data;
}

public String getVoto() {
return voto;
}

public void setVoto(String voto) {
this.voto = voto;
}

@Override
public String toString() {
return "EsamiSvolti [matricola=" + matricola + ", codiceEsame="
+ codiceEsame + ", data=" + data + ", voto=" + voto + "]";
}

public static EsamiSvolti read(Scanner sc){

if(!sc.hasNext())return null;
String matricola = sc.nextLine();
if(!sc.hasNext())return null;
String codiceEsame = sc.nextLine();
if(!sc.hasNext())return null;
String data = sc.nextLine();
if(!sc.hasNext())return null;
String voto = sc.nextLine();

return new EsamiSvolti(matricola,codiceEsame,data,voto);
}

public void print(PrintStream ps){
ps.println(matricola);
ps.println(codiceEsame);
ps.println(data);
ps.println(voto);
}

private String matricola,codiceEsame,data,voto;
}
CLASSE STUDENTE:
import java.io.PrintStream;
import java.util.Scanner;


public class Studente {
public Studente(String nome,String cognome,String matricola){
this.nome = nome;
this.cognome = cognome;
this.matricola = matricola;
}

public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCognome() {
return cognome;
}
public void setCognome(String cognome) {
this.cognome = cognome;
}
public String getMatricola() {
return matricola;
}
public void setMatricola(String matricola) {
this.matricola = matricola;
}

@Override
public String toString() {
return "Studente [nome=" + nome + ", cognome=" + cognome
+ ", matricola=" + matricola + "]";
}

public static Studente read(Scanner sc){

if(!sc.hasNext())return null;
String nome = sc.nextLine();
if(!sc.hasNext())return null;
String cognome = sc.nextLine();
if(!sc.hasNext())return null;
String matricola = sc.nextLine();

return new Studente(nome,cognome,matricola);
}

public void print(PrintStream ps){
ps.println(nome);
ps.println(cognome);
ps.println(matricola);
}
private String nome,cognome,matricola;
}
GESTORE:
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Scanner;


public class Gestore {
public Gestore(Scanner stud,Scanner esa,Scanner esaSvo){
studente = new ArrayList<Studente>();
Studente s = Studente.read(stud);
while(s != null){
studente.add(s);
s = Studente.read(stud);
}
esami = new ArrayList<Esami>();
Esami e = Esami.read(esa);
while(e != null){
esami.add(e);
e = Esami.read(esa);
}
esamiSvolti = new ArrayList<EsamiSvolti>();
EsamiSvolti es = EsamiSvolti.read(esaSvo);
while(es != null){
esamiSvolti.add(es);
es = EsamiSvolti.read(esaSvo);
}
}

public void printSegreteria(PrintStream ps){
ps.println("SEGRETERIA STUDENTI");
for(Studente a : studente){
a.print(ps);
ps.println("---");
}
for(Esami a : esami){
a.print(ps);
ps.println("---");
}
for(EsamiSvolti a : esamiSvolti){
a.print(ps);
ps.println("---");
}
}

public void cercaPerNome(PrintStream ps){
ps.println("Immettere nome o cognome studente:");
Scanner i = new Scanner(System.in);
String s = i.nextLine();
for(Studente a : studente){
if(a.getNome().equalsIgnoreCase(s) || a.getCognome().equalsIgnoreCase(s)){
ps.println(a.toString());
}
}
}

public void cercaPerMatricola(PrintStream ps){
ps.println("Immettere matricola studente:");
Scanner i = new Scanner(System.in);
String s = i.nextLine();
for(Studente a : studente){
if(a.getMatricola().equalsIgnoreCase(s)){
ps.println(a.toString());
}
}
for(EsamiSvolti b : esamiSvolti){
if(b.getMatricola().equalsIgnoreCase(s)){
ps.println(b.toString());
}
}
}

public void cercaPerCodiceEsame(PrintStream ps){
ps.println("Immettere codice esame:");
Scanner i = new Scanner(System.in);
String s = i.nextLine();
for(Esami a : esami){
if(a.getCodiceEsame().equalsIgnoreCase(s)){
ps.println(a.toString());
}
}
}

private ArrayList<Studente>studente;
private ArrayList<Esami>esami;
private ArrayList<EsamiSvolti>esamiSvolti;
}
TESTER:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintStream;
import java.util.Scanner;


public class Tester {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
boolean uscita = true;
PrintStream ps = new PrintStream(System.out);
Scanner stud = null;
Scanner es = null;
Scanner esSvo = null;
Scanner in = null;

try{
stud = new Scanner(new File("studenti.txt"));
es = new Scanner(new File("esami.txt"));
esSvo = new Scanner(new File("esamiSvolti.txt"));
}
catch(FileNotFoundException e){
ps.println("file non trovato");
}

Gestore g = new Gestore(stud,es,esSvo);
in = new Scanner(System.in);
while(uscita){
menu(ps);
int n = in.nextInt();
if(n < 1 || n > 4){
ps.println("errore");
}
switch(n){
case 1 : g.cercaPerNome(ps);
break;
case 2 : g.cercaPerMatricola(ps);
break;
case 3 : g.cercaPerCodiceEsame(ps);
break;
case 4 : uscita = false;
}
}
}
public static void menu(PrintStream ps){
ps.println("Ricerca:");
ps.println("1) nome o cognome");
ps.println("2) matricola");
ps.println("3) codice esame");
ps.println("4) uscita dal programma");
}
}


scusatemi è tantissimo codice però non sapevo cosa postare in specifico allora ho postato tutto...
Albsss è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2013, 21:03   #4
clockover
Senior Member
 
L'Avatar di clockover
 
Iscritto dal: Oct 2004
Messaggi: 1945
Per piacere la prossima volta indenta il codice.

Allora tu cosa vorresti fare? Invece di farti stampare tutte le info di tutti, alcune info o tutte le info solo di qualcuno?
Quello che ti consiglio è un po diverso da quello che ti aspetti. Diciamo che c'è un po di progettazione del software in quello che ti serve se non vuoi usare un database.

L'entità principale di tutto è sicuramente lo Studente. Questo studente ha sicuramente una matricola, un nome, ecc... Perchè è fondamentale lo studente... perchè senza uno studente, un esame non può esistere, o meglio, un EsameSvolto non può esistere. Ora per semplificare di più le cose potresti procedere in questo modo:
1) ti crei una classe studente (campi che scegli tu)
2) ti crei una classe esame (idem)

All'interno della classe Studente, oltre ai campi classici (matricola, ecc..), avrai una struttura dati (un ArrayList, LinkedList, ecc...) che rappresenterà tutti gli esami svolti. Ad esempio
Codice:
ArrayList<Esame> esamiSvolti;
In questo modo accedendo alla classe Studente avrai accesso anche a tutti gli esami svolti da quello studente, con le relative informazioni.

Ricapitolando
Codice:
class Studente{
    campi...
    List<Esame> esamiSvolti;
    metodi()
}
class Esame{
    campi
    metodi()
}
Meglio spendere del tempo a progettare una buona struttura dati prima
clockover è offline   Rispondi citando il messaggio o parte di esso
Old 02-02-2013, 08:55   #5
Albsss
Junior Member
 
Iscritto dal: Nov 2012
Messaggi: 12
grazie della risposta però non era proprio quello che io cercavo....con i database non ci so ancora lavorare...in particolarequello che richiede la traccia è:
Scrivere un programma di prova che,ricevuti in ingresso nome e cognome di un docente ed un numero intero N, stampi l'elenco di tutti gli studenti che
hanno superato un esame con tale docente riportando un voto maggiore o uguale ad N. L'elenco dovrà contenere: Nome, Cognome e Numero di Matricola dello Studente, Titolo dell'Esame, Voto Riportato e Data in cui l'esame è stato sostenuto.
Era questo a cui mi riferivo quando parlavo di ricerca combinata....

Ultima modifica di Albsss : 02-02-2013 alle 09:31. Motivo: avevo sbagliato a scrivere
Albsss è offline   Rispondi citando il messaggio o parte di esso
Old 02-02-2013, 11:14   #6
clockover
Senior Member
 
L'Avatar di clockover
 
Iscritto dal: Oct 2004
Messaggi: 1945
Quote:
Originariamente inviato da clockover Guarda i messaggi
Meglio spendere del tempo a progettare una buona struttura dati prima
Ma la struttura dati l'hai creata tu o ti è stata data in questo modo?

Ad ogni modo, ad una prima occhiata al tuo codice dovresti fare una cosa del genere:
1) Ti scorri tutta la lista degli Esami e inserisci in una lista temporanea (LinkedList, ArrayList, ecc..) tutti gli esami di quel docente
Codice:
List<Esame> selDocente = new List....
for(Esame e:tuttiGliEsami)
    selDocente.add(e) if e.getDocente == Docente interessato
2) Scorrendoti la lista che ti sei creato qui sopra la confronti con quella degli EsamiSvolti e selezioni solo gli esami svolti con quel particolare vincolo di voto. Il risultato conviene memorizzarselo in un'altra lista temporanea.
Codice:
List<EsameSvolto> selVoto = new List...
for(EsameSvolto e:tuttiGliEsamiSvolti)
    selVoto.add(e) if e.getVoto >= N && e.getCodice() è presente nella lista selDocente
3) Confronti quest'ultima lista temporanea con la lista dei tuoi studenti e stampi le loro informazioni
Codice:
for(Studente s:tuttiGliStudenti)
    stampi info se s.getMatricola è presente nella lista selVoto
Ovviamente per fare alcune operazioni ti conviene crearti dei metodi ausiliari tipo per cercare se la matricola dello studente è presente all'interno della lista del punto 2 selVoto
Codice:
private boolean matricolaInListaEsamiSvolti(int matricola, List<EsameSvolto> esa){
    for(EsameSvolto e:esa)
        return true if e.getMatricola == matricola
    return false;
}
clockover è offline   Rispondi citando il messaggio o parte di esso
Old 05-02-2013, 20:48   #7
Albsss
Junior Member
 
Iscritto dal: Nov 2012
Messaggi: 12
mmmm ok adesso provo...grazie
Albsss è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Denza Z9S: la berlina elettrica con il r...
Valve abilita i driver e il supporto all...
Terafab, il progetto di Musk finisce in ...
Il meglio di Amazon in 42 articoli: sono...
ECOVACS WINBOT W2 PRO OMNI a 349€: ecco ...
Samsung Gallery Cloud Sync introduce il ...
Dyson V8 Cyclone a 249€: scopa elettrica...
Rifiuti elettronici, l'altra faccia dell...
Meta prepara Luna, i nuovi occhiali smar...
SSD NVMe Gen4 2TB in offerta: Acer Preda...
Perché i backup non bastano pi&ug...
Maserati, si concretizza la pista cinese...
Corea del Sud preoccupata: le cinesi YMT...
Se ne vendono 3000 al mese su Amazon: Sm...
Sedie gaming ergonomiche su Amazon: SONG...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 10:57.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v