用数据结构的知识和devc++软件编写下列代码,要求利用链表实现一个简单的学生信息管理系统: (1) 学生信息包括学号、姓名、性别、年龄、电话号码、所学专业、班级等; (2) 系统的主要功能包括:学生信息的创建、输出学生信息、查询学生信息、增加学生信息、删除学生信息。
时间: 2024-11-28 07:27:12 浏览: 10
在Dev-C++中,我们可以使用结构体(struct)和链表(LinkedList)来实现这个简单的学生信息管理系统。首先,我们定义一个`Student`结构体存储学生的各项信息:
```cpp
#include <iostream>
using namespace std;
// 定义学生结构体
struct Student {
int id;
string name;
char gender;
int age;
string phone;
string major;
string class_name;
// 构造函数和析构函数
Student(int _id, string _name, char _gender, int _age, string _phone, string _major, string _class_name):
id(_id), name(_name), gender(_gender), age(_age), phone(_phone), major(_major), class_name(_class_name) {}
~Student() {} // 析构函数用于清理内存
// 显示学生信息的方法
void display() {
cout << "ID: " << id << ", Name: " << name << ", Gender: " << gender << ", Age: " << age
<< ", Phone: " << phone << ", Major: " << major << ", Class: " << class_name << endl;
}
};
```
接下来,我们使用单链表来存储学生信息,并实现链表节点:
```cpp
#include <list>
// 链表节点
struct Node {
Student student;
Node* next;
};
// 链表类
class StudentList {
private:
Node* head;
public:
// 添加新学生到链表
void add(Student new_student) {
Node* newNode = new Node();
newNode->student = new_student;
newNode->next = head;
head = newNode;
}
// 删除指定学生的信息
bool remove(Student student_to_remove) {
if (head == nullptr || &head->student != &student_to_remove) return false;
Node* temp = head;
head = head->next;
delete temp;
return true;
}
// 查找并显示学生信息
void search(Student& target) {
Node* current = head;
while (current != nullptr) {
if (current->student == target) {
current->student.display();
return;
}
current = current->next;
}
cout << "Student not found." << endl;
}
// 清空链表
void clear() {
Node* temp = head;
while (temp != nullptr) {
Node* nextTemp = temp->next;
delete temp;
temp = nextTemp;
}
head = nullptr;
}
};
```
最后,在主函数中,你可以创建`StudentList`的对象并实现所需的功能:
```cpp
int main() {
StudentList studentSystem;
// 创建、添加、删除和查询学生信息
Student s1(1001, "张三", 'M', 20, "1234567890", "计算机科学", "一班");
studentSystem.add(s1);
// 输出学生s1的信息
Student s2; // 假设这是目标学生
s2.id = 1001;
studentSystem.search(s2);
// 删除学生s1
studentSystem.remove(s1);
// ... 其他操作 ...
return 0;
}
```
阅读全文