[Data Structure] Net. Data Structure (ตัวอย่าง)

โจทย์ จงจัดเก็บข้อมูลนิสิตได้แก่ รหัสนิสิต, ชื่อนิสิต, คะแนนสอบกลางภาค, คะแนนสอบปลายภาค, คะแนนควิช, คะแนน Project และ คะแนนเข้าห้องเรียง โดยใช้ ArrayIndexList จาก Library ของ Net. Data Structure

การออกแบบ และสิ่งที่ต้องรู้

  •  ArrayIndexList คือ โครงสร้างข้อมูล List หรือ Queue ซึ่งมีการจัดการข้อมูลแบบ FIFO (First In First Out) ง่ายๆเลย คือ ใครมาก่อนได้ก่อนนั้นเอง ตัวอย่างเช่น การเข้าแถวซื้ออาหาร
  • Class ListTestNet เป็น Main ทำหน้าที่ทดสอบการใช้งาน โดยมีหน้าที่ต่างๆ ได้แก่
    • เพิ่มข้อมูล
    • ดึงข้อมูลออก
    • ตรวจสอบว่า List ว่าง หรือไม่
    • ลบข้อมูล
    • แก้ไขข้อมูล
    • แสดงขนาดของ List
    • ออกจากโปรแกรม
  • Class Student เป็น Data Class ไว้จัดเก็บข้อมูลนิสิต

โปรแกรมที่เขียนออกมา(ดูความอธิบายเพิ่มเติมตาม comment ได้เลย)

  • Class ListTestNet
import javax.swing.*;
import net.datastructures.*;
class ListTestNet {
  public static void main(String[] args) {
    //ประกาศ loop ให้มีชนิดข้อมูลแบบ booloean เพื่อตรวจสถานะการวนloop
    boolean loop = true;
    //ประกาศ curIdx ให้มีชนิดข้อมูลเป็น Integer
    int curIdx = 0;
    //สร้าง instance ของ Class ArrayIndexList มีชื่อว่า list
    ArrayIndexList list = new ArrayIndexList();
    try {
      while (loop) {
        //ขึ้นหน้าจอแสดงตัวเลือกพร้อมทำการรับค่า
        int pick = Integer.parseInt(JOptionPane.showInputDialog(null, "Enter your choice:\n1.Add\n2.Get\n3.IsEmpty\n4.Remove" + "\n5.Set update\n6.Size\n7.quit"));

        //ถ้าตรวจสอบได้ค่า 1
        if (pick == 1) {
          //ทำการใส่ข้อมูลเข้าไป โดยดึงมาจาก method getData
          list.add(curIdx, getData());
          curIdx++;
          //ขึ้นข้อความแสดงการทำงานเสร็จสิ้น
          JOptionPane.showMessageDialog(null, "Add data success");
        } else if (pick == 2) {
          if (curIdx & gt; 0)
            curIdx--;
          //ทำการดึงข้อมูลออกมาแสดง
          Student temp = (Student) list.get(curIdx);
          //ใช้ method display เพื่อทำการแสดงข้อมูล
          display(temp);
        } else if (pick == 3) {
          //ตรวจสอบว่า list ว่างหรือไม่
          if (list.isEmpty()) {
            //ขึ้นข้อความแสดงการทำงาน
            JOptionPane.showMessageDialog(null, "list is empty");
          }
        } else if (pick == 4) {
          if (curIdx & gt; 0)
            curIdx--;
          //System.out.println(curIdx);
          //ทำการลบข้อมูล
          list.remove(curIdx);
          //ขึ้นข้อความแสดงการทำงานเสร็จสิ้น
          JOptionPane.showMessageDialog(null, "remove data success");
        } else if (pick == 5) {
          //ให้ตัว update ข้อมูล
          list.set(curIdx, getData());
          //ขึ้นข้อความแสดงการทำงานเสร็จสิ้น
          JOptionPane.showMessageDialog(null, "Now at first node");
        } else if (pick == 6) {
          //ทำหาขนาด
          int s = list.size();
          //ขึ้นข้อความแสดงการทำงานเสร็จสิ้น
          JOptionPane.showMessageDialog(null, "Size: " + s);
        } else if (pick == 7) {
          //ให่ค่า loop มีค่าเป็น false
          loop = false;
          //ขึ้นข้อความแสดงการทำงานเสร็จสิ้น
          JOptionPane.showMessageDialog(null, "quit");
        }
      }
    } catch (Exception e) {
      JOptionPane.showMessageDialog(null, e.getMessage());
      e.printStackTrace();
    }
  }
  public static Student getData() {
    //ประกาศตัวแปร id, name เป็น String
    String id, name;
    //ประกาศตัวแปร midScore, finalScore, quizScore, proScore, attentScore เป็น integer
    int midScore, finalScore, quizScore, proScore, attentScore;

    //รับข้อมูลเข้ามาผ่านทาง JOptionPane
    id = JOptionPane.showInputDialog(null, "Input Id:");
    name = JOptionPane.showInputDialog(null, "Input Name:");
    midScore = Integer.parseInt(JOptionPane.showInputDialog(null, "Input Midterm Score:"));
    finalScore = Integer.parseInt(JOptionPane.showInputDialog(null, "Input Final Score:"));
    quizScore = Integer.parseInt(JOptionPane.showInputDialog(null, "Input Quiz Score:"));
    proScore = Integer.parseInt(JOptionPane.showInputDialog(null, "Input Project Score:"));
    attentScore = Integer.parseInt(JOptionPane.showInputDialog(null, "Input Attentdant Score:"));
    //ประกาศตัวแปร Student ชื่อ std
    Student std = new Student(id, name, midScore, finalScore, quizScore, proScore, attentScore);
    return std;
  }

  public static void display(Student std) {
    //แสดงข้อมูลที่ได้ออกมา
    System.out.println("id: " + std.getId());
    System.out.println("name: " + std.getName());
    System.out.println("midterm: " + std.getMid());
    System.out.println("final: " + std.getFinal());
    System.out.println("quiz: " + std.getQuiz());
    System.out.println("project: " + std.getPro());
    System.out.println("attentdant: " + std.getAttent());
    System.out.println("total: " + std.getTotal());
    System.out.println("-------------------------------------------");
  }
}
  • Class Student
class Student {
  //Data Member
  private String name, id;
  private int midScore, finalScore, quizScore, proScore, attentScore;

  public Student(String id, String name, int midScore, int finalScore, int quizScore, int proScore, int attentScore) {
    this.name = name;
    this.id = id;
    this.midScore = midScore;
    this.finalScore = finalScore;
    this.quizScore = quizScore;
    this.proScore = proScore;
    this.attentScore = attentScore;
  }
  //id
  public String getId() {
    return id;
  }
  //name
  public String getName() {
    return name;
  }
  //mid
  public int getMid() {
    return midScore;
  }
  //final
  public int getFinal() {
    return finalScore;
  }
  //quiz
  public int getQuiz() {
    return quizScore;
  }
  //pro
  public int getPro() {
    return proScore;
  }
  //attent
  public int getAttent() {
    return attentScore;
  }
  public int getTotal() {
    return midScore + finalScore + quizScore + proScore + attentScore;
  }
}

Reference


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.