2016-07-07 7 views
-2

Ich bin ein Anfänger in Java und SQL-Datenbanken und möchte etwas Hilfe.Wie erstellt man eine Warteschlange in Java mit Zeilen aus einer MySQL-Datenbank?

Ich versuche ein Programm zu machen, das auf gespeicherte Daten von einer phpMyAdmin (MySQL) Datenbanktabelle zugreift. Ich weiß, wie zu SELECT bereits. Die Daten sind eine Liste von Arzneimitteln mit allen Informationen über sie. Die Spaltenüberschriften lauten wie folgt: Name, Tag_der_Woche bis zum Ablaufdatum, Hersteller usw.

Aber ich möchte Queue Abstract Data Structure mit den Zeilen der Tabelle erstellen.

Ich möchte für jede Zeile Nodes erstellen. Ich muss zuerst ein class Node erstellen So für die erste Zeile, wird es ein Node mit den Daten aus jeder Spalte dieser Zeile erstellen. Ich muss dann push und pull Methoden erstellen. (Ich glaube jedoch, dass es bereits eine Java-Bibliothek gibt, die das kann?) Wie kann ich diese Warteschlange erstellen?

Die Warteschlange wird verwendet, um die Reihenfolge der Timings zu speichern. Jedes Objekt Node hat seinen eigenen Wochentag, wenn es auftritt.

z. Nehmen Sie Medizin A am Montag, Medizin B am Dienstag. Die Schlange sollte jedes der Medikamente in der Reihenfolge der Wochentage bestellen.

Bitte fragen Sie nach Informationen, die ich nicht zur Verfügung gestellt habe. Vielen Dank!

EDIT

ich sollte dies deutlich: Sie Die Tage als String gespeichert sind: beispiels wenn ich die Zeichenfolge, die Medizin am Montag nehmen müssen, ist: 1000000. Jede Position in dieser 7-stelligen Zeichenfolge entspricht den Wochentagen. Also wenn ich die Medizin am Samstag und Sonntag einnehmen muss: 0000011. Und so weiter ...

+0

warum nicht verfügbar verwenden Queue in Sammlung Rahmen des Java? – eatSleepCode

+0

@eatSleepCode Worüber reden Sie? Ich weiß nicht, was "Java Collection Framework" ist. Bitte kannst du es erklären? –

+0

Ich hoffe, Sie können die Zeilen aus Db Reihenfolge nach day_of_week_to_take auswählen .. Wenn nicht, wie Sie die Zeilen bekommen? – kaushik

Antwort

0

hier ist die mögliche Lösung. Ich habe versucht, es so allgemein wie möglich zu machen. Ich machte einige Annahmen .. ich. Ich habe die Datenbank nicht gesetzt. Ich füll das Node-Klassenobjekt über Konstruktor. In Ihrem Fall erstellen Sie das Node-Klassenobjekt nach der Datenbankzeile. Jede Zeile in der Datenbank entspricht einem Objekt der Node-Klasse.

public class Node { 

    private String mediName; 
    private String dayOfWeek; 
    private String expiry; 
    private String manufacturer; 


    public Node(String mediName,String dayOfWeek,String expiry,String manufacturer) 
    { 
     this.mediName=mediName; 
     this.dayOfWeek=dayOfWeek; 
     this.expiry=expiry; 
     this.manufacturer=manufacturer; 
    } 


    public String getMediName() { 
     return mediName; 
    } 
    public void setMediName(String mediName) { 
     this.mediName = mediName; 
    } 
    public String getDayOfWeek() { 
     return dayOfWeek; 
    } 
    public void setDayOfWeek(String dayOfWeek) { 
     this.dayOfWeek = dayOfWeek; 
    } 
    public String getExpiry() { 
     return expiry; 
    } 
    public void setExpiry(String expiry) { 
     this.expiry = expiry; 
    } 
    public String getManufacturer() { 
     return manufacturer; 
    } 
    public void setManufacturer(String manufacturer) { 
     this.manufacturer = manufacturer; 
    } 


} 

Die folgende Klasse ist so konzipiert, dass sie als Warteschlangendatenstruktur funktioniert.

public class QueueNode { 

    private int front=-1; 
    private int rear=-1; 
    private int capacity; 
    private Node[] arr; 

    public QueueNode(int capacity) 
    { 
     this.capacity=capacity; 
     arr=new Node[capacity]; 
    } 

    private boolean isEmpty() 
    { 
     return front==-1; 
    } 

    private boolean isFull() 
    { 
     return (rear+1)%capacity==front; 
    } 

    public void push(Node data) throws Exception 
    { 
     if(isFull()) 
      throw new Exception("Queue is Full"); 
     else 
     { 
      rear=(rear+1)%capacity; 
      arr[rear]=data; 
      if(front==-1) 
       front=rear; 
     } 

    } 

    public Node pull() throws Exception 
    { 
     Node data=null; 
     if(isEmpty()) 
     { 
      throw new Exception("Queue is Empty"); 
     }else 
     { 
      data=arr[front]; 
      if(front==rear) 
       front=rear-1; 
      else 
      { 
       front=(front+1)%capacity; 
      } 
     } 

     return data; 
    } 
} 

die Funktion der folgenden Klasse Knoten und QueueNode Klasse zu testen ..

public class MainClassForQueue { 

     public static void main(String[] args) throws Exception { 

      Node n1=new Node("A","1000000","2017-02-16","ABC"); 
      Node n2=new Node("B","1100000","2017-02-16","ABC"); 
      Node n3=new Node("C","0100000","2017-02-16","ABC"); 
      Node n4=new Node("D","0010000","2017-02-16","ABC"); 
      Node n5=new Node("F","1010000","2017-02-16","ABC"); 
      Node n6=new Node("G","0000001","2017-02-16","ABC"); 
      Node n7=new Node("H","0000011","2017-02-16","ABC"); 
      Node n8=new Node("I","0001000","2017-02-16","ABC"); 
      Node n9=new Node("J","0000100","2017-02-16","ABC"); 
      Node n10=new Node("K","0000010","2017-02-16","ABC"); 
      Node n11=new Node("L","1010101","2017-02-16","ABC"); 
      Node n12=new Node("M","1001011","2017-02-16","ABC"); 
      Node n13=new Node("N","1111111","2017-02-16","ABC"); 

      List<Node> listNode=new ArrayList<Node>(); 
      listNode.add(n1); 
      listNode.add(n2); 
      listNode.add(n3); 
      listNode.add(n4); 
      listNode.add(n5); 
      listNode.add(n6); 
      listNode.add(n7); 
      listNode.add(n8); 
      listNode.add(n9); 
      listNode.add(n10); 
      listNode.add(n11); 
      listNode.add(n12); 
      listNode.add(n13); 

      int size=listNode.size(); 
      QueueNode queue=new QueueNode(7*size); 

      for(int j=0;j<7;j++) 
      { 
       for (int i = 0; i < listNode.size(); i++) { 

        Node data=listNode.get(i); 
        String day=data.getDayOfWeek(); 
        if(day.charAt(j)=='1') 
         queue.push(data); 
       } 

      } 

      System.out.println(queue.pull().getMediName()); 
      System.out.println(queue.pull().getMediName()); 
      System.out.println(queue.pull().getMediName()); 
      System.out.println(queue.pull().getMediName()); 
      System.out.println(queue.pull().getMediName()); 
      System.out.println(queue.pull().getMediName()); 
      System.out.println(queue.pull().getMediName()); 
      System.out.println(queue.pull().getMediName()); 
      System.out.println(queue.pull().getMediName()); 
      System.out.println(queue.pull().getMediName()); 
      System.out.println(queue.pull().getMediName()); 
      System.out.println(queue.pull().getMediName()); 


     } 

    } 
Verwandte Themen