Thuta Learning
ရှာဖွေရန်
ProjectsProgrammingbeginner

Student Manager Project - Part 2: Grade Calculation

စိတ်လျှော့ပါ။ ဒီခန်းကို စာအုပ်လိုမဟုတ်ဘဲ စကားပြောသလိုပဲ၊ နားလည်လွယ်အောင် ရှင်းပါမယ်။

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • Student Manager Project - Part 2: Grade Calculation ကို လက်တွေ့ project ထဲမှာ အသုံးချတတ်မယ်
  • ကိုယ်တိုင် code ရေးပြီး run ကြည့်တတ်မယ်
  • Project တစ်ခုလုံးကို အဆင့်လိုက် ဆောက်တတ်မယ်

ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်

ဒီ Part မှာတော့ Part 1 က ဆောက်ထားတဲ့ Student class ကို core feature ထည့်ပြီး တိုးချဲ့ပါမယ်။ HashMap ကို subject-score pair သိမ်းဖို့ အသုံးပြုပြီး၊ loop နဲ့ values() ကို ဖြတ်သန်းပြီး average ကို တွက်ချက်ပါမယ်။ if-else chain သုံးပြီး average score အလိုက် grade letter (A, B, C, F) ကို ဆုံးဖြတ်တဲ့ method ရေးပါမယ်။ Method တစ်ခုက value ကို return ပြန်ပေးတဲ့ pattern ကို ဒီနေရာမှာ practice ဖြစ်သွားမှာပါ။

လက်တွေ့ ဆောက်ကြည့်မယ်

Student class ထဲမှာ addScore(String subject, int score) method ထည့်ပြီး subjectScores.put() ကိုသုံးပါ။ calculateAverage() method တစ်ခု ရေးပြီး subjectScores.values() ကို loop ဖြတ်ပြီး total ပေါင်းကာ size နဲ့ စားပြီး double အနေနဲ့ average ကို return ပါ (map empty ဆို 0 return ပါ)။ getGrade() method ထဲမှာ calculateAverage() ရလဒ်ကို if-else conditions (>=90 ဆို A, >=75 ဆို B, >=50 ဆို C, မဟုတ်ရင် F) နဲ့ စစ်ပြီး String grade ကို return ပါ။ main method ထဲမှာ student တစ်ဦးအတွက် subject 3 ခု score ထည့်ပြီး average နဲ့ grade ကို print ထုတ်ကြည့်ပါ။

Code နမူနာ

java
class Student {
    private String name;
    private int id;
    private HashMap<String, Integer> subjectScores;

    public Student(String name, int id) {
        this.name = name;
        this.id = id;
        this.subjectScores = new HashMap<>();
    }

    public void addScore(String subject, int score) {
        subjectScores.put(subject, score);
    }

    public double calculateAverage() {
        int total = 0;
        for (int score : subjectScores.values()) {
            total += score;
        }
        return subjectScores.isEmpty() ? 0 : (double) total / subjectScores.size();
    }

    public String getGrade() {
        double avg = calculateAverage();
        if (avg >= 90) {
            return "A";
        } else if (avg >= 75) {
            return "B";
        } else if (avg >= 50) {
            return "C";
        } else {
            return "F";
        }
    }

    public String getName() {
        return name;
    }
}

public class StudentManager {
    public static void main(String[] args) {
        Student s1 = new Student("Aung Aung", 101);
        s1.addScore("Math", 95);
        s1.addScore("English", 82);
        s1.addScore("Science", 88);

        System.out.println(s1.getName() + " - Average: " + s1.calculateAverage()
                + " - Grade: " + s1.getGrade());
    }
}
You should see
Console မှာ Aung Aung - Average: 88.33... - Grade: B ဆိုတဲ့ ပုံစံနဲ့ result ကို print ထုတ်ပေးပါလိမ့်မယ်။

၅ မိနစ် စမ်းကြည့်

Grade boundaries ကို ပြောင်းကြည့်ပါ (ဥပမာ >=80 ဆို A) ပြီး student နှစ်ဦးကို score အမျိုးမျိုးထည့်ကာ grade ကွဲပြားမှုကို 5 minutes စမ်းကြည့်ပါ။

သတိလေးတစ်ချက်

HashMap ရဲ့ values() order က insertion order နဲ့ တူချင်မှတူမှာမို့ average calculation မှာ order အရေးမကြီးပေမယ့် iteration logic ကိုတော့ သေချာစစ်ပါ။

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • int total ကို subjectScores.size() နဲ့ စားတဲ့နေရာမှာ (double) cast မလုပ်ဘဲ integer division အမှားရနိုင်ခြင်း
  • if-else chain ထဲမှာ condition order မှားပြီး (ဥပမာ >=50 ကို အရင်စစ်) grade result မှားနေတတ်ခြင်း

အခု ကိုယ်တိုင် စမ်းကြည့်

Grade boundaries ကို ပြောင်းကြည့်ပါ (ဥပမာ >=80 ဆို A) ပြီး student နှစ်ဦးကို score အမျိုးမျိုးထည့်ကာ grade ကွဲပြားမှုကို 5 minutes စမ်းကြည့်ပါ။

You'll know it worked when: Console မှာ Aung Aung - Average: 88.33... - Grade: B ဆိုတဲ့ ပုံစံနဲ့ result ကို print ထုတ်ပေးပါလိမ့်မယ်။

Student Manager Project - Part 2: Grade Calculation | Thuta Learning