Java-программа для подсчета количества кредитов, сданных студентами? - PullRequest
0 голосов
/ 22 июня 2019

Я бы хотел реализовать программу, которая бы возвращала студенческий проход в классах за семестр.Скажем, у него есть A в классах с 3 кредитами, B в классах с 4 кредитами и F в классах с 3 кредитами.Как рассчитать количество кредитов, которые получает студент?

Условие состоит в том, что, пока его средний балл выше 1,33 (или D-), он проходит.Другими словами, если он получает A, то он не пройдет.Мой код сейчас не работает.

    if (gradeValue >= 1.33)
                pass = totalunits;

Ответы [ 3 ]

0 голосов
/ 22 июня 2019

Хотя я предполагаю, что вы просто сорвете этот ответ и просто включите его, я все равно написал это. Расчет веса был взят из gpacalculator.net . Если бы это был рабочий код, были бы лучшие комментарии, инкапсуляция и т. Д.

Примечание: некоторые из этих записей требуют прокрутки ...

enum Grade
{
    A ("A", 4.00),
    A_MINUS ("A-", 3.67),
    B_PLUS ("B+", 3.33),
    B ("B", 3.00),
    B_MINUS ("B-", 2.67),
    C_PLUS ("C+", 2.33),
    C ("C", 2.00),
    C_MINUS ("C-", 1.67),
    D_PLUS ("D+", 1.33),
    D ("D", 1.00),
    D_MINUS ("D-", 0.67),
    F ("F", 0.00);

    private final String gradeString;
    private final double gradeGPA;

    Grade(String gradeString, double gradeGPA)
    {
        this.gradeString = gradeString;
        this.gradeGPA = gradeGPA;
    }

    public String getGradeString()
    {
        return gradeString;
    }

    public double getGradeGPA()
    {
        return gradeGPA;
    }

    public static String getGradeLetter(double gpa)
    {
        if (gpa == A.gradeGPA) return A.gradeString;
        if (gpa >= A_MINUS.gradeGPA) return A_MINUS.gradeString;
        if (gpa >= B_PLUS.gradeGPA) return B_PLUS.gradeString;
        if (gpa >= B.gradeGPA) return B.gradeString;
        if (gpa >= B_MINUS.gradeGPA) return B_MINUS.gradeString;
        if (gpa >= C_PLUS.gradeGPA) return C_PLUS.gradeString;
        if (gpa >= C.gradeGPA) return C.gradeString;
        if (gpa >= C_MINUS.gradeGPA) return C_MINUS.gradeString;
        if (gpa >= D_PLUS.gradeGPA) return D_PLUS.gradeString;
        if (gpa >= D.gradeGPA) return D.gradeString;
        if (gpa >= D_MINUS.gradeGPA) return D_MINUS.gradeString;
        return F.gradeString;
    }
}
class Course
{
    String courseName;
    Grade grade;
    int credits;

    public Course(String courseName, Grade grade, int credits)
    {
        this.courseName = courseName;
        this.grade = grade;
        this.credits = credits;
    }
}
public class GPACalculator
{
    public static double calculateGPA(List<Course> courses)
    {
        double totalGPA = 0.0;
        int totalCredits = 0;

        for (Course course : courses)
        {
            totalGPA += course.grade.getGradeGPA() * course.credits;
            totalCredits += course.credits;
        }

        return totalGPA / totalCredits;
    }

    public static void main(String[] args)
    {
        DecimalFormat prettyFormat = new DecimalFormat("0.00");

        List<Course> courses = new ArrayList<>();
        Course calculusOne = new Course("Calculus I", Grade.B_MINUS, 4);
        Course dataStructures = new Course("Data Structures", Grade.B, 3);
        Course pointlessEnglish = new Course("English", Grade.D_PLUS, 3); // class was boring and I didn't do any homework.
        Course norseMythology = new Course("Norse Mythology", Grade.A, 3);

        courses.add(calculusOne);
        courses.add(dataStructures);
        courses.add(pointlessEnglish);
        courses.add(norseMythology);

        double gpa = calculateGPA(courses);
        if (gpa >= Grade.D_PLUS.getGradeGPA())
            System.out.println("You passed.");
        else
            System.out.println("You failed.");
        System.out.println("Your GPA was: " + prettyFormat.format(gpa));

        // TODO: add something funny about working too hard or playing too hard...
    }
}
0 голосов
/ 22 июня 2019

Вот мой полный ответ.Осталось только то, что я не знаю, как иметь 3 знака после запятой ... Я обновлю, когда что-нибудь придумаю.

 import java.util.*;
 import java.text.*;
 import java.lang.Math; 
 public class Project1_Trial3 {
        public static void main(String args[])
        {
            Scanner scanner = new Scanner(System.in);

            //Input the term
        System.out.println("Please enter the term of your grade calculation (for example, Fall 2015): ");
        String term = scanner.nextLine();

        //Input the number of courses that the student is enrolled in
        System.out.println("Please enter the number of courses that you are enrolled in "+term+": ");
        int numberofcourses = scanner.nextInt();

        //Declaration
        String ClassName[] = new String[numberofcourses];
        String Description[] = new String[numberofcourses];
        String grade[] = new String[numberofcourses];
        float Units[] = new float[numberofcourses];
        double gradeValue = 0;
        float finalgrade[] = new float[numberofcourses];
        float totalunits = 0;
        float fail = 0;
        float pass = 0;
        float totalgradepoints = 0;
        float gpa = 0;
        String standing = null;

        //Arrays for class number, description, units, grade, grade point
        //Here, input class number, description, units, and grade
        for(int i = 0; i < numberofcourses; i++)
        {
            scanner.nextLine();
            System.out.println("Please enter your #"+(i+1)+" class name: ");
            ClassName[i] = scanner.nextLine();
            System.out.println("Please enter your #"+(i+1)+" class description: ");
            Description[i] = scanner.nextLine();
            System.out.println("Please enter your #"+(i+1)+" class units: ");
            Units [i] = scanner.nextInt();
            scanner.nextLine();
            System.out.println("Please enter your #"+(i+1)+" class grade: ");
            grade[i] = scanner.nextLine();

            if (grade[i].equals ("A"))
                gradeValue= 4.00;
              else if (grade[i].equals("A-"))
                gradeValue= 3.67;
              else if (grade[i].equals("B+"))
                gradeValue = 3.33;
              else if (grade[i].equals("B"))
                gradeValue = 3.00;
              else if (grade[i].equals ("B-"))
                gradeValue = 2.67;
              else if (grade[i].equals("C+"))
                gradeValue = 2.33;
              else if (grade[i].equals("C"))
                gradeValue = 2.00;
              else if (grade[i].equals ("D+"))
                gradeValue = 1.33;
              else if (grade[i].equals ("D"))
                gradeValue = 1.00;
              else if (grade[i].equals ("F"))
                gradeValue = 0;
              else
                System.out.println ("Invalid Grade");
                finalgrade[i] = (float) (gradeValue * Units[i]);
        //Get the total number of units
                totalunits += Units[i];

        //Get the total grade points
                totalgradepoints += finalgrade[i];
                if (grade[i].equals("F"))
                    fail = Units[i];
                pass = totalunits - fail;
                gpa = totalgradepoints / totalunits;

        }

        //Get status
        if (gpa > 2.0)
            standing = "Good standing";
        else if (1.0 < gpa | gpa < 1.999)
            standing = "On probation";
        else
            standing = "Dismissed";

        //Round to 3 decimals and get final results



        //Finally, print out the report

        //Print out the heading
        System.out.println("Class Grades - "+term+" Term");
        System.out.println("Office Grades");

        //Print out the table
        System.out.println(String.format("%20s %7s %25s %7s %10s %7s %7s %10s %10s", "Class", "|", "Description", "|", "Units", "|", "Grade", "|", "Gradepoint"));
        System.out.println(String.format("%s", "-------------------------------------------------------------------------------------------------------------------------------------"));
        for(int i = 0; i < numberofcourses; i++)
        {
            DecimalFormat format = new DecimalFormat("#.#####");
            format.format(totalunits);
            format.format(fail);
            format.format(totalgradepoints);
            format.format(gpa);
            System.out.println(String.format("%20s %7s %-25s %7s %10s %7s %-7s %10s %-10s", ClassName[i], "|", Description[i], "|", Units [i], "|", grade[i], "|", finalgrade[i]));
        }
        System.out.println("Term Statistics - "+term+" Term");
        System.out.println(String.format("%s", "-----------------------------------------------------------------------------------------------"));
        System.out.println(String.format("%40s %7s %25s", "", "|", "From Enrollment"));
        System.out.println(String.format("%40s %7s %25s", "", "|", ""));
        System.out.println(String.format("%40s %7s %25s", "Units Towards GPA:", "|", ""));
        System.out.println(String.format("%40s %7s %25s", "Taken", "|", totalunits));
        System.out.println(String.format("%40s %7s %25s", "Passed", "|", pass));
        System.out.println(String.format("%s", "-----------------------------------------------------------------------------------------------"));     
        System.out.println(String.format("%40s %7s %25s", "GPA Calculation", "|", ""));
        System.out.println(String.format("%40s %7s %25s", "Total Grade Points", "|", totalgradepoints));
        System.out.println(String.format("%40s %7s %25s", "/ Units Taken Toward GPA", "|", totalunits));
        System.out.println(String.format("%s", "-----------------------------------------------------------------------------------------------"));
        System.out.println(String.format("%40s %7s %25s", "= GPA", "|", gpa));
        System.out.println(String.format("%40s %7s %25s", "Status", "|", standing));
    }

}
0 голосов
/ 22 июня 2019

Вот еще один мой ... еще не там.

if (grade[i].equals("F"))
            pass = totalunits - Units[i];
        gpa = totalgradepoints / totalunits;
...