用C#设计学生成绩管理程序。根据学生选修的课程及课程学分和课程成绩计算GPA最后按GPA的值对学生进行排序。=
以下是使用C#设计的学生成绩管理程序,包括计算GPA和按GPA排序的功能:
using System;
using System.Collections.Generic;
using System.Linq;
public class Student
{
public string Name { get; set; }
public List<Course> Courses { get; set; }
public Student(string name)
{
Name = name;
Courses = new List<Course>();
}
public void AddCourse(Course course)
{
Courses.Add(course);
}
public double CalculateGPA()
{
double totalCredits = 0;
double totalGradePoints = 0;
foreach (var course in Courses)
{
totalCredits += course.Credits;
totalGradePoints += course.Credits * course.Grade;
}
return totalGradePoints / totalCredits;
}
}
public class Course
{
public string Name { get; set; }
public int Credits { get; set; }
public double Grade { get; set; }
public Course(string name, int credits, double grade)
{
Name = name;
Credits = credits;
Grade = grade;
}
}
public class Program
{
public static void Main(string[] args)
{
List<Student> students = new List<Student>();
// 添加学生及其选修的课程及成绩
Student student1 = new Student("张三");
student1.AddCourse(new Course("数学", 3, 85));
student1.AddCourse(new Course("英语", 4, 92));
student1.AddCourse(new Course("物理", 3, 78));
students.Add(student1);
Student student2 = new Student("李四");
student2.AddCourse(new Course("数学", 3, 90));
student2.AddCourse(new Course("英语", 4, 88));
student2.AddCourse(new Course("物理", 3, 95));
students.Add(student2);
// 计算每个学生的GPA
foreach (var student in students)
{
double gpa = student.CalculateGPA();
Console.WriteLine($"{student.Name} 的GPA为:{gpa}");
}
// 按GPA排序学生
var sortedStudents = students.OrderByDescending(s => s.CalculateGPA()).ToList();
Console.WriteLine("\n按GPA排序的学生列表:");
foreach (var student in sortedStudents)
{
Console.WriteLine($"{student.Name} 的GPA为:{student.CalculateGPA()}");
}
}
}
在上面的程序中,我们定义了两个类Student和Course,Student类表示学生,包含学生的姓名和选修的课程列表;Course类表示课程,包含课程的名称、学分和成绩。
在Student类中,我们实现了AddCourse()方法用于添加学生的选修课程,以及CalculateGPA()方法用于计算学生的GPA。GPA的计算公式为每门课程的学分乘以该门课程的成绩,然后将所有课程的学分和成绩乘积相加,再除以总学分数。
在Program类中,我们创建了两个学生对象,并为每个学生添加选修的课程及成绩。然后通过调用CalculateGPA()方法计算每个学生的GPA,并输出结果。
最后,我们使用LINQ中的OrderByDescending()方法对学生列表进行排序,按照GPA的值从高到低排序,并输出排序后的学生列表及其对应的GPA值
原文地址: https://www.cveoy.top/t/topic/h3yh 著作权归作者所有。请勿转载和采集!