c#创建一个学生类Student,具有姓名、学号、年龄、班级属性。使用Hashtable存储几个学生对象,分别按照学号和年龄对集合中的学生对象进行排序,实现对学生对象信息的增删改查。各项功能要有必要的提示信息。
时间: 2024-11-09 16:17:30 浏览: 104
在 C# 中,首先我们需要创建一个名为 `Student` 的类来表示学生的基本信息。下面是一个简单的示例:
```csharp
public class Student
{
public string Name { get; set; }
public int ID { get; set; }
public int Age { get; set; }
public string Class { get; set; }
// 构造函数
public Student(string name, int id, int age, string clazz)
{
Name = name;
ID = id;
Age = age;
Class = clazz;
}
// 提示信息
public override string ToString()
{
return $"Name: {Name}, ID: {ID}, Age: {Age}, Class: {Class}";
}
}
```
接着,我们使用 `Hashtable` 存储学生对象,不过请注意 `Hashtable` 已经从 .NET Framework 4.0 开始被 `Dictionary<TKey, TValue>` 替代,它更推荐用于键值对操作,并且提供了更好的性能。这里使用 `Dictionary` 代替:
```csharp
using System.Collections.Generic;
// 创建一个 Dictionary 存储学生对象
Dictionary<int, List<Student>> studentDict = new Dictionary<int, List<Student>>();
// 添加学生
void AddStudent(int id, string name, int age, string clazz)
{
if (!studentDict.ContainsKey(id))
{
studentDict[id] = new List<Student>();
}
var student = new Student(name, id, age, clazz);
studentDict[id].Add(student);
Console.WriteLine($"添加了学生: {student}");
}
// 删除学生
void RemoveStudent(int id, string name)
{
if (studentDict.TryGetValue(id, out List<Student> students))
{
var found = false;
foreach (var student in students)
{
if (student.Name == name)
{
students.Remove(student);
found = true;
break;
}
}
if (found)
{
Console.WriteLine($"删除了学生: {name}");
}
else
{
Console.WriteLine($"未找到该学生的名称 '{name}'");
}
}
else
{
Console.WriteLine($"未找到ID为 {id} 的学生");
}
}
// 根据学号查找并排序
void FindAndSortByID(int id)
{
if (studentDict.TryGetValue(id, out List<Student> students))
{
students.Sort((a, b) => a.ID.CompareTo(b.ID));
Console.WriteLine("按学号排序后的学生列表:");
foreach (var student in students)
{
Console.WriteLine(student);
}
}
else
{
Console.WriteLine($"未找到ID为 {id} 的学生");
}
}
// 根据年龄查找并排序
void FindAndSortByAge(int minAge, int maxAge)
{
var filteredStudents = new List<Student>();
foreach (var kvp in studentDict)
{
foreach (var student in kvp.Value)
{
if (student.Age >= minAge && student.Age <= maxAge)
{
filteredStudents.Add(student);
}
}
}
if (filteredStudents.Count > 0)
{
filteredStudents.Sort((a, b) => a.Age.CompareTo(b.Age));
Console.WriteLine("按年龄筛选并排序后的学生列表:");
foreach (var student in filteredStudents)
{
Console.WriteLine(student);
}
}
else
{
Console.WriteLine("未找到符合条件的学生");
}
}
阅读全文