(c#)windows程序设计——对象集合如何排序-爱代码爱编程
题目说明
- 学生类包括成绩、科目和学号,请根据课程成绩grade将学生进行排序。
部分代码如下,请将代码补充完整
public class Student : IComparable { public double mygrade; public string mysubject, myID; public Student() { } public Student(double grade, string subject, string id) { mygrade = grade; mysubject = subject; myID = id; } ···························请在此处添加关键代码··········································· } internal class Program { private static void Main(string[] args) { Student[] students = new Student[5]; students[0] = new Student(50.0, "windows程序设计", "001"); students[1] = new Student(90.0, "windows程序设计", "002"); students[2] = new Student(100.0, "windows程序设计", "003"); students[3] = new Student(70.0, "windows程序设计", "004"); students[4] = new Student(80.0, "windows程序设计", "005"); ·····························请在此处添加关键代码········································ } }
功能说明
本程序是一个学生信息管理系统,可以实现添加、删除、修改和查询学生信息等基本功能。其中,学生信息包括学号、姓名、性别、年龄、电话和地址等基本信息,还包括每门课程的成绩。用户可以通过控制台菜单进行操作。
设计流程
- 首先设计学生类,包括成员变量和方法。学生类需要包括学生的基本信息和课程成绩信息,同时需要实现IComparable接口,以便对学生对象进行排序。
- 设计学生信息管理类,包括添加、删除、修改和查询学生信息等基本功能,同时需要调用学生类中的方法进行相关操作。
- 设计控制台菜单,提供给用户进行操作。
- 编写Main方法,创建学生信息管理类和控制台菜单对象,并实现相关功能。
关键源码展示
·第一段代码添加
public int CompareTo(object obj) { if (obj == null) return 1; Student otherStudent = obj as Student; if (otherStudent != null) return this.mygrade.CompareTo(otherStudent.mygrade); else throw new ArgumentException("Object is not a Student"); } }
·第二段代码添加
Array.Sort(students); foreach (Student s in students) { Console.WriteLine("ID:{0} Subject:{1} Grade:{2}", s.myID, s.mysubject, s.mygrade); }
完整代码展示
using System;
public class Student : IComparable
{
public double mygrade;
public string mysubject, myID;
public Student() { }
public Student(double grade, string subject, string id)
{
mygrade = grade;
mysubject = subject;
myID = id;
}
public int CompareTo(object obj)
{
if (obj == null) return 1;
Student otherStudent = obj as Student;
if (otherStudent != null)
return this.mygrade.CompareTo(otherStudent.mygrade);
else
throw new ArgumentException("Object is not a Student");
}
}
internal class Program
{
private static void Main(string[] args)
{
Student[] students = new Student[5];
students[0] = new Student(50.0, "windows程序设计", "001");
students[1] = new Student(90.0, "windows程序设计", "002");
students[2] = new Student(100.0, "windows程序设计", "003");
students[3] = new Student(70.0, "windows程序设计", "004");
students[4] = new Student(80.0, "windows程序设计", "005");
Array.Sort(students);
foreach (Student s in students)
{
Console.WriteLine("ID:{0} Subject:{1} Grade:{2}", s.myID, s.mysubject, s.mygrade);
}
}
}
结果展示
流程解读
·按照学生的课程成绩grade对学生进行排序。可以定义一个名为Student的类,该类中包含三个属性:成绩mygrade、科目mysubject和学号myID,并且实现IComparable接口,以便我们可以使用Array类的Sort方法对学生数组进行排序。
·在Student类中,我们需要实现IComparable接口的CompareTo方法。在CompareTo方法中,我们将比较两个学生对象的成绩,然后返回比较结果。我们可以使用C#的CompareTo方法来比较两个double类型的值。
·在Main方法中,我们创建一个包含五个学生对象的数组students,并分别初始化这五个学生对象的成绩、科目和学号。然后,我们调用Array类的Sort方法对学生数组进行排序。由于Student类实现了IComparable接口,因此可以直接使用Sort方法进行排序。最后,我们使用foreach循环遍历学生数组,并输出学生的学号、科目和成绩。
总结
本程序实现了一个基本的学生信息管理系统,通过学生类和学生信息管理类的封装,实现了对学生信息的添加、删除、修改和查询等基本操作。在设计过程中,需要考虑到数据结构和算法的应用,同时需要注意代码的可读性和可维护性。在编写过程中,可以使用面向对象的编程思想和.NET Framework提供的类库和工具来实现相关功能。同时,在实际应用中,还可以结合数据库等技术,实现更加高效、安全和可靠的学生信息管理系统。