Grader


คำอธิบาย

  • ปฏิบัติการนี้ต้องการให้เขียนคลาสชื่อ Grader ที่มีไว้ผลิตอ็อบเจกต์ซึ่งทำหน้าที่เก็บข้อมูลคะแนนนักเรียนและให้บริการตัดเกรดด้วย มีข้อมูลประจำอ็อบเจกต์และตัวสร้างดังนี้

      public class Grader {
        Student[] students;       // เก็บข้อมูลของนักเรียน (ลองรายละเอียดของ Studentเอง)
        int size;                 // เก็บจำนวนนักเรียน
        double a, b, c, d;        // เก็บเกณฑ์การตัดเกรด

        public Grader(int n, double a0, double b0, double c0, double d0) {
          students = new Student[n];  // สร้างอาเรย์เตรียมไว้เก็บนักเรียน
          size = 0;                   // เริ่มต้นยังไม่มีนักเรียน จำนวนนักเรียนเป็น 0
          a = a0; b = b0; c = c0; d = d0;
        }
        ...

    คลาสนี้มีตัวสร้างและเมท็อดประจำอ็อบเจกต์ให้บริการดังนี้
    • Grader(int n, double a, double b, double c, double d) 
      ตัวสร้างตัวตรวจที่สร้างที่เก็บคะแนนนักเรียนได้มากสุด n และมีเกณฑ์การตัดเกรดตามที่ระบุในพารามิเตอร์ a, b, c, d (ขอมีแค่ 5 เกรด จากตัวอย่างคือ ถ้าได้คะแนนตั้งแต่ 80 ขึ้นไป ได้ A,  ถ้าได้คะแนนตั้งแต่ 70 แต่ไม่ถึง 80 ได้ B,  ถ้าได้คะแนนตั้งแต่ 60 แต่ไม่ถึง 70 ได้ C,  ถ้าได้คะแนนตั้งแต่ 50 แต่ไม่ถึง 60 ได้ D และถ้าน้อยกว่า 50 ได้ F)
    • String grade(double point)
      คืนเกรดที่คำนวณจากคะแนน point ตามเกณฑ์ที่กำหนดให้ในตัวสร้าง
    • void add(String id, double point) 
      เพิ่มนักเรียนที่มีเลขประจำตัว id และได้คะแนน point
    • double average() 
      คืนค่าเฉลี่ยของคะแนน
    • double stdev()
      คืนค่าเบี่ยงเบนมาตรฐานของคะแนน 
    • void printSortedByID()
      แสดงข้อมูลของนักเรียนทุกคนทางจอภาพ โดยแสดงเรียงตามลำดับของเลขประจำตัวจากน้อยไปมาก
  •  ดูตัวอย่างการใช้งานข้างล่างนี้ประกอบความเข้าใจ

   Grader gd = new Grader(20, 80, 70, 60, 50);
   gd.add("5310012121", 89);
   gd.add("5310214821", 80);
   gd.add("5310312321", 71);
   gd.add("5310391221", 54);
   gd.add("5310442921", 63);
   gd.add("5310437621", 75);
   System.out.println("Average = " + gd.average());
   System.out.println("Stdev   = " + gd.stdev());
   gd.printSortedByID();

  • คลาส Grader ผลิตอ็อบเจกต์ที่ภายในเก็บเกณฑ์การตัดเกรด มีอาเรย์ที่แต่ละช่องเก็บอ็อบเจกต์ Student กับตัวแปรนับจำนวนนักเรียน อาเรย์มีขนาดตามที่ผู้สร้างกำหนด สมมติว่าเราสร้างด้วยคำสั่งข้างล่างนี้

Grader g = new Grader(8,80,70,60,50);

จะได้อ็อบเจกต์ดังรูป


  • อย่าลืมว่า การ new Students[8] ได้แค่อาเรย์ 8 ช่อง ไว้เก็บตัวอ้างอิงอ็อบเจกต์นักเรียน ไม่ได้สร้างอ็อบเจกต์นักเรียนใดๆ เมื่อ add ข้อมูลเพิ่มจึงจะสร้างอ็อบเจกต์นักเรียนเพิ่มในอาเรย์ เช่น หลังทำคำสั่ง
    g.add("153",75) จะได้

  • ให้สังเกตว่า การ add สร้างและเก็บอ็อบเจกต์นักเรียนในช่องที่ 0 ของอาเรย์ ค่าของตัวแปร size ถูกเพิ่มขึ้นอีก 1  ถ้าเพิ่มนักเรียนอีกคนด้วย g.add("346",63) คราวนี้อ็อบเจกต์ใหม่จะถูกเก็บต่อจากตัวหลังสุด โดยตำแหน่งของช่องที่เราจะเก็บก็คือ ค่าของตัวแปร size (ซึ่งตอนนี้เก็บ 1) คือเก็บในช่อง 1 ของอาเรย์  จึงเปลี่ยนดังแสดงข้างล่างนี้ และตัวแปร size ก็เปลี่ยนเป็น 2

คะแนนเต็ม : 5 คะแนน

  • เมื่อต้องการให้ระบบทดสอบและให้คะแนน ให้กดปุ่ม F6  (เมท็อดละ 1 คะแนน)

เวลาปฏิบัติการ : 60 นาที