Compito Sistemi in Java

di il
38 risposte

38 Risposte - Pagina 2

  • Re: Compito Sistemi in Java

    Andbin non so se ti sarò d'aiuto ma io da quello che mi ha detto il prof devo implementare i 4 punti compreso il metodo main (-Infine realizzare il metodo main, simulando che il numero di pazienti sia 100 e il numero di medici sia 4.) e non devo dare molto peso ala prima parte. Io devo supporre solo che il paziente vada allo sportello ( lo so che è molto generico...), si prenoti in base alla sua priorità e vada nella sala d'attesa per poi essere chiamato dal medico. E in base a questa situazione devo implementare i 4 punti. Nella prima parte devo scrivere un codice con il quale il paziente si metta in coda (ricevendo il codice di priorità)
  • Re: Compito Sistemi in Java

    Kirito ha scritto:


    Te l'ho detto non so come implementarlo.
    Puoi provare ad "abbozzare" qualcosa a livello di codice? ... così almeno vediamo se/quali dubbi o problematiche incontri.

    L'architettura a livello tecnico (dove mettere le classi e il main) può essere fatta in vari modi.
  • Re: Compito Sistemi in Java

    Allora andbin io ho scritto questo codice nella classe ProntoSoccorso. Ma sono sicuro al 100% che non come lo chiede l'esercizio.


    import java.io.*;
    import java.util.Vector;

    public class extends Thread ProntoSoccorso {

    private Vector<Paziente> pazienti = new Vector<Paziente>();
    int rossi = 0,gialli = 0,bianchi = 0;

    public void addPaziente(String nominativo, char priorita){
    paziente paz = new paziente(nominativo, priorita);

    if(priorita == 'R'){
    pazienti.insertElementAt(paz, rossi);
    rossi++;
    }else if(priorita == 'G'){
    pazienti.insertElementAt(paz, rossi+gialli);
    gialli++;
    }else if(priorita == 'B'){
    pazienti.insertElementAt(paz, rossi+gialli+bianchi);
    bianchi++;
    }
    }

    public paziente recuperoNominativoMaxUrgenza(){
    paziente paz = (paziente)pazienti.elementAt(0);
    if(paz.getPriorita() == 'R'){
    rossi--;
    }else if(paz.getPriorita() == 'G'){
    gialli--;
    }else if(paz.getPriorita() == 'B'){
    bianchi--;
    }
    pazienti.removeElementAt(0);
    return paz;
    }

    public void numPazienti(){
    System.out.println(rossi + " " + gialli + " " + bianchi);
    }

    public void eliminaPaziente(String nominativo){
    for(int i = 0; i < pazienti.size(); i++){
    paziente paz = (paziente)pazienti.elementAt(i);
    if(paz.getNominativo() == nominativo){
    pazienti.removeElementAt(i);
    break;
    }
    }
    }

    public void vediLista(){
    for(int i = 0; i < pazienti.size(); i++){
    System.out.println(pazienti.elementAt(i).toString());
    }
    }

    public void salva() throws java.io.IOException{
    ObjectOutputStream stream = new ObjectOutputStream(new FileOutputStream("pazienti.bin"));
    stream.writeObject(pazienti);
    stream.writeObject(rossi);
    stream.writeObject(gialli);
    stream.writeObject(bianchi);
    stream.close();
    }

    public void carica() throws java.io.IOException{
    ObjectInputStream stream = new ObjectInputStream(new FileInputStream("pazienti.bin"));
    try{
    pazienti = (Vector)stream.readObject();
    rossi = (int)stream.readObject();
    gialli = (int)stream.readObject();
    bianchi = (int)stream.readObject();
    }
    catch(Exception ex){

    }

    stream.close();
    }

    public static void main(String[] args) throws java.io.IOException{
    int opz = 0;


    InputStreamReader input = new InputStreamReader(System.in);
    BufferedReader Tastiera = new BufferedReader(input);


    ProntoSoccorso osp = new ProntoSoccorso();

    while(opz != 8 ){
    System.out.println("1) Inserisci");
    System.out.println("2) Recupero urgenza massima");
    System.out.println("3) Numero Pazienti");
    System.out.println("4) Elimina Paziente");
    System.out.println("5) Visualizza");
    System.out.println("6) Salva");
    System.out.println("7) Carica");
    System.out.println("8) Esci");

    try{
    opz = Integer.parseInt(Tastiera.readLine());
    }
    catch(IOException exception) {
    System.out.print("Errore lettura intero");
    }


    switch(opz){
    case 1:
    String nome;
    char priorita;
    System.out.println();
    System.out.println();
    System.out.println("Inserisci");

    nome = Tastiera.readLine();
    priorita = Tastiera.readLine().charAt(0);

    if(nome != ""){
    osp.addPaziente(nome, priorita);
    }else{
    System.out.println("Un campo vuoto.");
    }
    System.out.println();
    break;
    case 2:
    try{
    paziente paz = osp.recuperoNominativoMaxUrgenza();
    System.out.println("Prossimo paziente: " + paz.getNominativo());
    }
    catch(Exception ex){
    System.out.println("Lista finita.");
    }
    break;
    case 3:
    osp.numPazienti();
    break;
    case 4:
    7
    String nome2;

    nome2 = Tastiera.readLine();

    osp.eliminaPaziente(nome2);
    break;
    case 5:
    osp.vediLista();
    break;
    case 6:
    osp.salva();
    break;
    case 7:
    osp.carica();
    break;
    }
    }
  • Re: Compito Sistemi in Java

    Invece nella classe Sportello ho scritto questo:

    import java.io.*;
    import javax.swing.JOptionPane;

    public class Prenotazione {

    private String nomePersona;
    private int priorità;

    //metodi pubblici
    public Prenotazione(String nome, int numero) {
    nomePersona = nome;
    priorità = numero;
    }

    public String persona() {
    return nomePersona;
    }

    public int numero() {
    return priorità;
    }

    public String toString() {
    return priorità + ": " + nomePersona;
    }
    }
  • Re: Compito Sistemi in Java

    Non so come fare la classe medico e la classe paziente in Thread con il metodo run() come scritto nella traccia
    Ah dimenticavo...nella classe ProntoSoccorso che ti ho mandato...le priorità le ho fatte con il colore e non con numeri per scrivere meglio il codice...poi naturalmente li cambio con il numero
  • Re: Compito Sistemi in Java

    Kirito ha scritto:


    Allora andbin io ho scritto questo codice nella classe ProntoSoccorso. Ma sono sicuro al 100% che non come lo chiede l'esercizio.
    public class extends Thread ProntoSoccorso {
    Già questo scritto così è sintatticamente sbagliato (il nome della classe va tra class e extends).
    Ma in ogni caso, per tutto quanto detto, NON mi pare che ProntoSoccorso debba essere un thread!

    E comunque cosa sono tutti quei metodi per salvataggio/caricamento? NON hai parlato finora di gestione di una "persistenza".
    E NON hai neanche parlato finora di una "interazione" con l'utente tramite tastiera ....

    Quindi di che stiamo parlando??
  • Re: Compito Sistemi in Java

    E' un codice che abbiamo scritto io e un mio collega...come ti ho già detto non avevamo idea di come fare sto compito cosi abbiamo scritto il codice a modo nostro...poi ho chiesto aiuto su questo forum.
    Noi abbiamo tenuto in considerazione che il paziente deve prenotarsi allo sportello con l'inserimento da tastiera (cosa che nel compito non è specificato)
    Non puoi fare nulla?
    Puoi anche lasciar perdere il codice...come ti ho detto non è proprio al 100% come lo vuole il compito
  • Re: Compito Sistemi in Java

    Devo sperare ancora in un tuo aiuto oppure no?
    Anche perché non voglio crearti ulteriori problemi e non voglio farti perdere ulteriore tempo.
  • Re: Compito Sistemi in Java

    Se riesci a implementarmi anche solo i 4 punti compreso il main mi farai un grande favore.
    Grazie in anticipo
  • Re: Compito Sistemi in Java

    Kirito ha scritto:


    Devo sperare ancora in un tuo aiuto oppure no?
    Sono sempre ben disponibile, tempo permettendo, a dare un supporto a chi lo chiede in maniera appropriata.
    Però quel tuo codice di prima, oltre a non essere funzionante (ci sono diversi errori, di sintassi e concettuali), quasi sicuramente è "fuori" dal contesto dell'esercizio.

    Scrivo qualche riga per farti capire come lo vedrei io .. giusto abbozzato.
  • Re: Compito Sistemi in Java

    Scrivo qualche riga per farti capire come lo vedrei io .. giusto abbozzato.

    Grazie mille!
  • Re: Compito Sistemi in Java

    Sono sempre ben disponibile, tempo permettendo, a dare un supporto a chi lo chiede in maniera appropriata.
    Però quel tuo codice di prima, oltre a non essere funzionante (ci sono diversi errori, di sintassi e concettuali), quasi sicuramente è "fuori" dal contesto dell'esercizio.

    Non volevo essere scortese...lo dico sul serio! Volevo semplicemente sapere se volevi ancora darmi una mano o no tutto qui.
  • Re: Compito Sistemi in Java

    Abbozzato (e ovviamente non funzionante e da valutare meglio):
    public class EsercizioProntoSoccorso {
        public static void main(String[] args) {
            ProntoSoccorso prontoSoccorso = new ProntoSoccorso();
    
            // genera 100 oggetti Paziente e li avvia
            // genera 4 oggetti Medico e li avvia
    
            // eventuale attesa della terminazione dei thread
        }
    }
    
    class Paziente extends Thread {
        private ProntoSoccorso prontoSoccorso;
    
        public Paziente(String nome, ProntoSoccorso prontoSoccorso) {
            super(nome);
            this.prontoSoccorso = prontoSoccorso;
        }
    
        public void run() {
            // .....
        }
    }
    
    class Medico extends Thread {
        private ProntoSoccorso prontoSoccorso;
    
        public Medico(String nome, ProntoSoccorso prontoSoccorso) {
            super(nome);
            this.prontoSoccorso = prontoSoccorso;
        }
    
        public void run() {
            // .....
        }
    }
    
    class ProntoSoccorso {
        private Sportello sportello;
        // QUI andrebbe anche tenuta la "coda" a priorità
    
        public ProntoSoccorso() {
            sportello = new Sportello();
        }
    
        public Sportello getSportello() {
            return sportello;
        }
    
        public void salaAttesa(Prenotazione prenotazione) {
            // .....
        }
    
        public void avantiAltro() {
            // .....
        }
    }
    
    class Sportello {
        public Prenotazione accettazione() {
            // .....
        }
    
        // .....
    }
    
    class Prenotazione {
        private final int codiceUrgenza;
    
        public Prenotazione(int codiceUrgenza) {
            this.codiceUrgenza = codiceUrgenza;
        }
    
        // .....
    }
  • Re: Compito Sistemi in Java

    Prendendo spunto dal tuo codice provo a scrivere le parti mancanti...
  • Re: Compito Sistemi in Java

    public class EsercizioProntoSoccorso {
        public static void main(String[] args) {
          Sportello s = new Sportello();
            ProntoSoccorso ps = new ProntoSoccorso();
            // genera 100 oggetti Paziente e li avvia
            for (int i=0, i<=100, i++){
              Paziente p = new Paziente(i,s,ps);
              p.static();
            }
            // genera 4 oggetti Medico e li avvia
       for (int =0,i<=4, i++){
         Medico m = new Medico(i,s,ps);
         m.static();
       }
      }
    }
    
    class Paziente extends Thread {
      private ProntoSoccorso ps;
      private Sportello s;
      private int Id;
    
      public Paziente (String nome,int Id, Sportello s, ProntoSoccorso ps) {
          super(nome);
          this.Id=Id;
          this.ps=ps;
          this.s=s;
        }
    
        public void run() {
         while (true){
           s.Accettazione();
           ps.SalaAttesa();
           s.Statistiche();
        }
      }
    }
    
    class Medico extends Thread {
        private ProntoSoccorso ps;
        private Sportello s;
        private int Id; //Credo che abbia bisogno di int se tu hai scritto "super(nome)" in "public Medico". Dimmi se toglierlo
    
        public Medico(String nome,int Id, Sportello s, ProntoSoccorso ps) {
            super(nome);
            this.Id=Id;
            this.ps=ps;
            this.s=s;
        }
    
        public void run() {
          while(numeroPazienti > 0){
          ps.avantiAltro();
          sleep(int)((Math.random()* 60000 * 20) + (60000 * 60));
          if (numeroPazienti==0){
            sleep (60000 * s);
        }
    }
    
    class ProntoSoccorso {
        private Sportello sportello;
        // QUI andrebbe anche tenuta la "coda" a priorità
    
        /* non so come fare questa parte */
    
        public ProntoSoccorso() {
            sportello = new Sportello();
        }
    
        public Sportello getSportello() {
            return sportello;
        }
    
        public void salaAttesa(Prenotazione prenotazione) {
            // ..... Non so fare neanche qui
        }
    
        public void avantiAltro() {
            // ..... Non so fare neanche qui
        }
    }
    
    class Sportello {
        public Prenotazione accettazione() {
            // ..... Non so fare neanche qui
        }
    
        // ..... Non so fare neanche qui
    }
    
    class Prenotazione {
        private final int codiceUrgenza;
    
        public Prenotazione(int codiceUrgenza) {
            this.codiceUrgenza = codiceUrgenza;
        }
    
        // cosa devo scrivere qui?
    }
    
    Andbin ecco il codice. Non so come fare la classe prenotazione (è la stessa cosa con la classe Sportello?) e non riesco a fare la classe ProntoSoccorso
Devi accedere o registrarti per scrivere nel forum
38 risposte