以下是一个使用C#设计的学生成绩管理程序的示例代码:

using System;
using System.Collections.Generic;

class Student
{
    public string StudentId { get; set; }
    public string Name { get; set; }
    public List<Course> Courses { get; set; }

    public Student(string studentId, string name)
    {
        StudentId = studentId;
        Name = name;
        Courses = new List<Course>();
    }

    public double CalculateGPA()
    {
        double totalCredits = 0;
        double weightedSum = 0;

        foreach (var course in Courses)
        {
            totalCredits += course.Credits;
            weightedSum += course.Credits * course.Grade;
        }

        if (totalCredits == 0)
            return 0;

        return weightedSum / totalCredits;
    }
}

class Course
{
    public string Name { get; set; }
    public double Credits { get; set; }
    public double Grade { get; set; }

    public Course(string name, double credits, double grade)
    {
        Name = name;
        Credits = credits;
        Grade = grade;
    }
}

class Program
{
    static void Main(string[] args)
    {
        List<Student> students = new List<Student>();

        // 输入学生信息
        Console.WriteLine("请输入学生信息(输入exit结束输入):");
        while (true)
        {
            Console.Write("学号:");
            string studentId = Console.ReadLine();
            if (studentId == "exit")
                break;

            Console.Write("姓名:");
            string name = Console.ReadLine();

            Student student = new Student(studentId, name);
            students.Add(student);

            // 输入学生选修课程信息
            Console.WriteLine("请输入学生选修课程信息(输入exit结束输入):");
            while (true)
            {
                Console.Write("课程名:");
                string courseName = Console.ReadLine();
                if (courseName == "exit")
                    break;

                Console.Write("学分:");
                double credits = double.Parse(Console.ReadLine());

                Console.Write("成绩:");
                double grade = double.Parse(Console.ReadLine());

                Course course = new Course(courseName, credits, grade);
                student.Courses.Add(course);
            }
        }

        // 按GPA对学生进行排序
        students.Sort((s1, s2) => s2.CalculateGPA().CompareTo(s1.CalculateGPA()));

        // 输出学生信息和GPA
        Console.WriteLine("学生排序结果:");
        foreach (var student in students)
        {
            Console.WriteLine($"学号:{student.StudentId}, 姓名:{student.Name}, GPA:{student.CalculateGPA()}");
        }
    }
}

此程序中,首先创建了Student类和Course类来表示学生和课程。Student类包含学生的学号、姓名和课程列表,Course类包含课程名、学分和成绩。在Student类中,还定义了一个CalculateGPA方法来计算学生的GPA。

Main方法中,首先创建了一个空的学生列表。然后,通过循环依次输入学生的学号、姓名和选修课程信息,将学生信息添加到学生列表中。在输入选修课程信息时,可以输入多门课程,直到输入"exit"退出输入。

最后,使用Sort方法对学生列表按照GPA进行排序,并输出学生的学号、姓名和GPA。排序使用了Lambda表达式,根据学生的GPA进行降序排序。

请注意,本示例代码中没有进行输入验证和异常处理,请根据实际情况进行适当的修改和完善


原文地址: https://www.cveoy.top/t/topic/h3yn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录