利用单链表实现一个简单的学生信息管理系统,该系统的功能有:1、利用单链表建立学生基本信息表2、浏览每个学生的信息3、根据学号查询某个学生的基本信息4、添加学生信息到单链表中5、删除一个学生的信息。请分点陈述程序
时间: 2024-05-25 22:15:03 浏览: 63
1. 定义结构体表示学生信息:
struct Student {
string id; // 学号
string name; // 姓名
int age; // 年龄
string major; // 专业
Student* next; // 指向下一个节点的指针
};
2. 定义链表类,包含如下方法:
class LinkedList {
public:
LinkedList(); // 构造函数
~LinkedList(); // 析构函数
void add(Student* student); // 添加学生信息
void remove(string id); // 删除学生信息
void display(); // 显示学生信息
Student* find(string id); // 查询学生信息
private:
Student* head; // 链表头
};
3. 实现链表类的构造函数和析构函数:
LinkedList::LinkedList() {
head = new Student;
head->next = NULL;
}
LinkedList::~LinkedList() {
Student* p = head;
while (p != NULL) {
Student* tmp = p->next;
delete p;
p = tmp;
}
}
4. 实现添加学生信息的方法:
void LinkedList::add(Student* student) {
Student* p = head;
while (p->next != NULL) {
p = p->next;
}
p->next = student;
student->next = NULL;
}
5. 实现删除学生信息的方法:
void LinkedList::remove(string id) {
Student* p = head;
while (p->next != NULL) {
if (p->next->id == id) {
Student* tmp = p->next;
p->next = tmp->next;
delete tmp;
return;
}
p = p->next;
}
}
6. 实现显示学生信息的方法:
void LinkedList::display() {
Student* p = head->next;
while (p != NULL) {
cout << "学号:" << p->id << ",姓名:" << p->name << ",年龄:" << p->age << ",专业:" << p->major << endl;
p = p->next;
}
}
7. 实现查询学生信息的方法:
Student* LinkedList::find(string id) {
Student* p = head->next;
while (p != NULL) {
if (p->id == id) {
return p;
}
p = p->next;
}
return NULL;
}
8. 定义主函数,实现学生信息管理系统:
int main() {
LinkedList list;
// 添加学生信息
Student* s1 = new Student {"001", "张三", 20, "计算机科学与技术", NULL};
Student* s2 = new Student {"002", "李四", 21, "软件工程", NULL};
list.add(s1);
list.add(s2);
// 显示学生信息
list.display();
// 查询学生信息
Student* s = list.find("001");
if (s != NULL) {
cout << "学号:" << s->id << ",姓名:" << s->name << ",年龄:" << s->age << ",专业:" << s->major << endl;
} else {
cout << "查询失败,该学生不存在!" << endl;
}
// 删除学生信息
list.remove("002");
// 显示学生信息
list.display();
return 0;
}
阅读全文