可以实现添加,删除,查找,修改的功能。
#include <iostream>
#include <string>
using namespace std;
// 学生信息结构体
struct Student {
string name;
long long rollNumber;
string phoneNumber;
Student* next;
};
// 全局变量,指向学生链表的头节点
Student* head = nullptr;
// 函数声明
void addStudent();
void deleteStudent();
void searchStudent();
void modifyStudent();
void displayAllStudents();
int main() {
int choice;
while (true) {
cout << "学生通讯录管理系统" << endl;
cout << "1. 添加学生信息" << endl;
cout << "2. 删除学生信息" << endl;
cout << "3. 查找学生信息" << endl;
cout << "4. 修改学生信息" << endl;
cout << "5. 显示所有学生信息" << endl;
cout << "6. 退出" << endl;
cout << "请选择操作: ";
cin >> choice;
switch (choice) {
case 1:
addStudent();
break;
case 2:
deleteStudent();
break;
case 3:
searchStudent();
break;
case 4:
modifyStudent();
break;
case 5:
displayAllStudents();
break;
case 6:
// 退出程序
return 0;
default:
cout << "无效的选项,请重新选择。" << endl;
}
}
return 0;
}
void addStudent() {
Student* newStudent = new Student();
cout << "请输入学生姓名: ";
cin.ignore();
getline(cin, newStudent->name);
cout << "请输入学生学号: ";
cin >> newStudent->rollNumber;
cout << "请输入学生电话号码: ";
cin.ignore();
getline(cin, newStudent->phoneNumber);
newStudent->next = head;
head = newStudent;
cout << "学生信息已添加。" << endl;
}
void deleteStudent() {
int rollNumber;
cout << "请输入要删除的学生学号: ";
cin >> rollNumber;
Student* current = head;
Student* prev = nullptr;
while (current != nullptr && current->rollNumber != rollNumber) {
prev = current;
current = current->next;
}
if (current == nullptr) {
cout << "未找到学号为 " << rollNumber << " 的学生。" << endl;
return;
}
if (prev == nullptr) {
head = current->next;
} else {
prev->next = current->next;
}
delete current;
cout << "学生信息已删除。" << endl;
}
void searchStudent() {
int rollNumber;
cout << "请输入要查找的学生学号: ";
cin >> rollNumber;
Student* current = head;
while (current != nullptr) {
if (current->rollNumber == rollNumber) {
cout << "学生姓名: " << current->name << endl;
cout << "学生电话号码: " << current->phoneNumber << endl;
return;
}
current = current->next;
}
cout << "未找到学号为 " << rollNumber << " 的学生。" << endl;
}
void modifyStudent() {
int rollNumber;
cout << "请输入要修改信息的学生学号: ";
cin >> rollNumber;
Student* current = head;
while (current != nullptr) {
if (current->rollNumber == rollNumber) {
cout << "请输入新的学生姓名: ";
cin.ignore();
getline(cin, current->name);
cout << "请输入新的学生电话号码: ";
getline(cin, current->phoneNumber);
cout << "学生信息已修改。" << endl;
return;
}
current = current->next;
}
cout << "未找到学号为 " << rollNumber << " 的学生。" << endl;
}
void displayAllStudents() {
if (head == nullptr) {
cout << "学生通讯录为空。" << endl;
return;
}
Student* current = head;
cout << "所有学生信息:" << endl;
while (current != nullptr) {
cout << "学生姓名: " << current->name << endl;
cout << "学生学号: " << current->rollNumber << endl;
cout << "学生电话号码: " << current->phoneNumber << endl;
current = current->next;
}
}