创建一个学生类Student,具有姓名、学号、年龄、班级属性。使用Hashtable存储几个学生对象,分别按照学号和年龄对集合中的学生对象进行排序,实现对学生对象信息的增删改查。各项功能要有必要的提示信息C#
时间: 2024-11-05 09:34:31 浏览: 29
在C#中,我们可以创建一个名为`Student`的类,包含所需的属性,然后使用`Dictionary`(等同于.NET Framework中的Hashtable,用于关联键值对)来存储学生对象。这里我会展示如何创建学生类,以及基本的增删改查操作。请注意,C#并未直接提供按学号或年龄排序的功能,但我们可以通过自定义比较器来实现。
```csharp
using System;
using System.Collections.Generic;
// 定义 Student 类
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 className)
{
Name = name;
ID = id;
Age = age;
Class = className;
}
}
// 自定义比较器,按学号排序
class ByIDComparer : IComparer<Student>
{
public int Compare(Student x, Student y)
{
return x.ID.CompareTo(y.ID);
}
}
// 自定义比较器,按年龄排序
class ByAgeComparer : IComparer<Student>
{
public int Compare(Student x, Student studentY)
{
return x.Age.CompareTo(studentY.Age);
}
}
class Program
{
static Dictionary<int, Student> studentsByID = new Dictionary<int, Student>(new ByIDComparer());
static Dictionary<int, Student> studentsByAge = new Dictionary<int, Student>(new ByAgeComparer());
static void Main(string[] args)
{
// 增加学生
AddStudent("张三", 1001, 18, "一班");
AddStudent("李四", 1002, 19, "二班");
// 删除学生(按学号)
RemoveStudent(1001);
// 修改学生信息
UpdateStudent(1002, "王五", 20, "三班");
// 查询学生
Console.WriteLine("查询学号为1002的学生信息:");
PrintStudent(studentsByID[1002]);
// 按照年龄排序显示所有学生
Console.WriteLine("\n按年龄排序的学生列表:");
foreach (var student in studentsByAge.Values.OrderBy(s => s.Age))
{
Console.WriteLine($"{student.Name} ({student.Age}): {student.Class}");
}
// 关闭程序
Console.ReadKey();
}
// 添加学生
private static void AddStudent(string name, int id, int age, string className)
{
Console.WriteLine($"添加学生 {name}, 学号: {id}, 年龄: {age}, 班级: {className}");
studentsByID.Add(id, new Student(name, id, age, className));
studentsByAge[id] = new Student(name, id, age, className); // 只在年龄字典中添加
}
// 删除学生
private static void RemoveStudent(int id)
{
if (studentsByID.ContainsKey(id))
{
Console.WriteLine($"删除学号为{id}的学生.");
studentsByID.Remove(id);
studentsByAge.Remove(id);
}
else
{
Console.WriteLine($"未找到学号为{id}的学生.");
}
}
// 更新学生信息
private static void UpdateStudent(int id, string newName, int newAge, string newClass)
{
if (studentsByID.TryGetValue(id, out var student))
{
Console.WriteLine($"更新学生 {student.Name} 的信息为 新名: {newName}, 新年龄: {newAge}, 新班级: {newClass}");
student.Name = newName;
student.Age = newAge;
student.Class = newClass;
}
else
{
Console.WriteLine($"未找到学号为{id}的学生.");
}
}
// 打印学生信息
private static void PrintStudent(Student student)
{
Console.WriteLine($"学生: {student.Name}, 学号: {student.ID}, 年龄: {student.Age}, 班级: {student.Class}");
}
}
```
阅读全文