0% found this document useful (0 votes)
15 views9 pages

By Group

The document describes a student grade tracker program that allows users to add students and subjects, enter grades, calculate averages, and generate reports. It utilizes classes like Student, Subject, and GradeTracker and includes code examples for each class.

Uploaded by

Ishir Alibasa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views9 pages

By Group

The document describes a student grade tracker program that allows users to add students and subjects, enter grades, calculate averages, and generate reports. It utilizes classes like Student, Subject, and GradeTracker and includes code examples for each class.

Uploaded by

Ishir Alibasa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 9

Student Grade Tracker:

Develop a program to track student’s grades for different subjects.

Allow users to add new student, enter grades for each subject, calculate average grades, and generate
grade reports.

Utilize classes such as student, subject, and grade tracker.

Main.java

import java.util.Scanner;

public class Main {


public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
GradeTracker gradeTracker = new GradeTracker();

System.out.println("Welcome to the Student Grade Tracker Program!");

int choice;
do {
System.out.println("\nStudent Grade Tracker Menu:");
System.out.println("1. Add Student");
System.out.println("2. Enter Grade");
System.out.println("3. Calculate Average Grade");
System.out.println("4. Generate Grade Report");
System.out.println("5. Exit");
System.out.print("Enter your choice: ");
choice = scanner.nextInt();
scanner.nextLine(); // Consume newline

switch (choice) {
case 1:
addStudent(scanner, gradeTracker);
break;
case 2:
enterGrade(scanner, gradeTracker);
break;
case 3:
calculateAverageGrade(scanner, gradeTracker);
break;
case 4:
generateGradeReport(scanner, gradeTracker);
break;
case 5:
System.out.println("Exiting Student Grade Tracker Program.
Goodbye!");
break;
default:
System.out.println("Invalid choice. Please try again.");
}
} while (choice != 5);

scanner.close();
}

private static void addStudent(Scanner scanner, GradeTracker gradeTracker) {


System.out.print("Enter student name: ");
String studentName = scanner.nextLine();
Student student = new Student(studentName);
student.addSubject("english", new Subject("english"));
student.addSubject("math", new Subject("math"));
student.addSubject("history", new Subject("history"));
student.addSubject("pathfit", new Subject("pathfit"));
student.addSubject("mapeh", new Subject("mapeh"));
gradeTracker.addStudent(studentName, student);
System.out.println("Student " + studentName + " added successfully!");
}

private static void enterGrade(Scanner scanner, GradeTracker gradeTracker) {


System.out.print("Enter student name: ");
String studentName = scanner.nextLine();
System.out.print("\n1.english ");
System.out.print("\n2.math ");
System.out.print("\n3.history ");
System.out.print("\n4.pathfit ");
System.out.print("\n2.mapeh");
System.out.print("\nEnter subject name: ");
String subjectName = scanner.nextLine();
System.out.print("Enter grade: ");
double grade = scanner.nextDouble();
scanner.nextLine(); // Consume newline

gradeTracker.enterGrade(studentName, subjectName, grade);


}

private static void calculateAverageGrade(Scanner scanner, GradeTracker


gradeTracker) {
System.out.print("Enter student name: ");
String studentName = scanner.nextLine();
double averageGrade = gradeTracker.calculateAverageGrade(studentName);
System.out.println("Average grade for " + studentName + ": " +
averageGrade);
}

private static void generateGradeReport(Scanner scanner, GradeTracker


gradeTracker) {
System.out.print("Enter student name: ");
String studentName = scanner.nextLine();
String report = gradeTracker.generateGradeReport(studentName);
System.out.println("Grade report for " + studentName + ":\n" + report);
}
}

Student.java

import java.util.HashMap;
import java.util.Map;

public class Student {


private String name;
private Map<String, Subject> subjects;

public Student(String name) {


this.name = name;
this.subjects = new HashMap<>();
}

public void addSubject(String subjectName, Subject subject) {


subjects.put(subjectName, subject);
}

public void enterGrade(String subjectName, double grade) {


Subject subject = subjects.get(subjectName);
if (subject != null) {
subject.addGrade(grade);
} else {
System.out.println("Subject " + subjectName + " not found for
student " + name);
}
}

public double calculateAverageGrade() {


if (subjects.isEmpty()) {
System.out.println("No subjects found for student " + name);
return 0.0; // or any other default value you prefer
}

double totalGrade = 0;
int numSubjects = 0;
for (Subject subject : subjects.values()) {
double subjectAverageGrade = subject.calculateAverageGrade();
if (subjectAverageGrade != 0.0) {
totalGrade += calculateGradePoints(subjectAverageGrade);
numSubjects++;
}
}

if (numSubjects == 0) {
System.out.println("No grades found for student " + name);
return 0.0; // or any other default value you prefer
}

double averageGradePoints = totalGrade / numSubjects;


return convertToGrade(averageGradePoints);
}

private double calculateGradePoints(double averageGrade) {


if (averageGrade >= 98) {
return 1.0;
} else if (averageGrade >= 95) {
return 2.0;
} else if (averageGrade >= 90) {
return 3.0;
} else if (averageGrade >= 85) {
return 4.0;
} else if (averageGrade >= 80) {
return 5.0;
} else {
return 6.0;
}
}

private double convertToGrade(double gradePoints) {


if (gradePoints <= 1.0) {
return 98;
} else if (gradePoints <= 2.0) {
return 95;
} else if (gradePoints <= 3.0) {
return 90;
} else if (gradePoints <= 4.0) {
return 85;
} else if (gradePoints <= 5.0) {
return 80;
} else {
return 0;
}
}

public String getName() {


return name;
}

@Override
public String toString() {
String report = "";
for (String subjectName : this.subjects.keySet()) {
report += subjectName + ": " +
this.subjects.get(subjectName).calculateAverageGrade() + "\n";
}

return report;
}
}

Subject.java

import java.util.ArrayList;
import java.util.List;

public class Subject {


private String name;
private List<Double> grades;

public Subject(String name) {


this.name = name;
this.grades = new ArrayList<>();
}

public void addGrade(double grade) {


grades.add(grade);
}

public double calculateAverageGrade() {


if (grades.isEmpty()) {
System.out.println("No grades found for subject " + name);
return 0.0; // or any other default value you prefer
}

double totalGrade = 0;
for (double grade : grades) {
totalGrade += grade;
}
return totalGrade / grades.size();
}

public String getName() {


return name;
}

@Override
public String toString() {
return "Subject{" +
"name='" + name + '\'' +
", grades=" + grades +
'}';
}
}

GradeTracker.java

import java.util.HashMap;
import java.util.Map;

public class GradeTracker {


private Map<String, Student> students;

public GradeTracker() {
this.students = new HashMap<>();
}

public void addStudent(String name, Student student) {


students.put(name, student);
}
public void enterGrade(String studentName, String subjectName, double grade)
{
if (students.containsKey(studentName)) {
students.get(studentName).enterGrade(subjectName, grade);
} else {
System.out.println("Student " + studentName + " not found.");
}
}

public double calculateAverageGrade(String studentName) {


if (students.containsKey(studentName)) {
return students.get(studentName).calculateAverageGrade();
} else {
System.out.println("Student " + studentName + " not found.");
return 0.0;
}
}

public String generateGradeReport(String studentName) {


if (students.containsKey(studentName)) {
return students.get(studentName).toString();
} else {
return "Student " + studentName + " not found.";
}
}
}

You might also like