1.设计一个结构体来表示学生信息,包括学号、姓名和各科成绩。2.实现录入、查询、修改、删除学生信息的功能。 3.实现计算学生平均分和总分的功能。 4.实现按平均分排序并显示学生信息的功能。 5.使用文件操作来持久化存储学生数据。
时间: 2025-06-22 09:37:09 浏览: 13
为了表示学生信息,我们可以创建一个名为`Student`的结构体,包含必要的属性:
```csharp
struct Student {
int studentId;
string name;
float scores[10]; // 假设最多有10门课程
}
```
接下来,我们可以定义一个名为`StudentManager`的类来管理学生的增删改查以及统计功能:
1. **录入学生信息**:
```csharp
void AddStudent(Student s) {
// 将新学生添加到数组或数据库中
}
```
2. **查询学生信息**:
```csharp
Student GetStudentById(int id) {
// 根据学号查找并返回对应的学生
}
```
3. **修改学生信息**:
```csharp
void UpdateStudent(int id, Student updatedInfo) {
// 更新指定学号的学生信息
}
```
4. **删除学生信息**:
```csharp
void DeleteStudent(int id) {
// 从数据结构中移除指定学号的学生
}
```
5. **计算平均分和总分**:
```csharp
float CalculateAverageScore(Student s) {
float sum = 0;
for (int i = 0; i < 10; i++) {
if (scores[i] > 0) {
sum += scores[i];
}
}
return sum / 10;
}
float CalculateTotalScore(Student s) {
return Array.Sum(s.scores);
}
```
6. **按平均分排序并显示学生信息**:
```csharp
List<Student> SortStudentsByAverage() {
List<Student> sortedStudents = new List<Student>(students); // 假设students是一个所有学生的集合
sortedStudents.Sort((a, b) => CompareAverageScores(a, b));
return sortedStudents;
}
// 自定义比较函数
int CompareAverageScores(Student a, Student b) {
return a.CalculateAverageScore().CompareTo(b.CalculateAverageScore());
}
```
7. **文件操作来持久化存储**:
```csharp
void SaveToFile(string fileName, List<Student> students) {
using (StreamWriter writer = new StreamWriter(fileName)) {
foreach (Student s in students) {
writer.WriteLine($"{s.studentId},{s.name},{"{",string.Join(",", s.scores)}");
}
}
}
List<Student> LoadFromFile(string fileName) {
List<Student> students = new List<Student>();
using (StreamReader reader = new StreamReader(fileName)) {
string line;
while ((line = reader.ReadLine()) != null) {
string[] parts = line.Split(',');
Student s = new Student {
studentId = Int32.Parse(parts[0]),
name = parts[1],
scores = parts[2].Split(',').Select(float.Parse).ToArray()
};
students.Add(s);
}
}
return students;
}
```
阅读全文
相关推荐



















