请帮我设计一个 通讯录信息管理系统,要求如下(1)数据结构:通讯人员信息结点类型以及相应的结构体; (2)存储结构:选择单链表存储通讯人员信息。 (3)实现功能(以函数方式实现):通讯信息链表创建、通讯信息输入、通讯信息查询、通讯信息修改、 通讯信息删除、通讯信息排序、输出或保存到文件。 附:通讯录信息包括:编号、姓名、电话、通信地址、EMAIL
时间: 2023-08-08 10:04:29 浏览: 163
好的,我会帮您设计一个通讯录信息管理系统,实现上述功能。
首先,我们需要定义一个通讯人员信息结构体,包括编号、姓名、电话、通信地址和EMAIL等信息:
```c++
struct Contact {
int id; // 编号
string name; // 姓名
string phone; // 电话
string address; // 通信地址
string email; // EMAIL
};
```
然后,我们可以使用单链表存储通讯人员信息,定义一个链表结点类型:
```c++
struct ListNode {
Contact data; // 通讯人员信息
ListNode* next; // 指向下一个结点的指针
};
```
接下来,我们可以定义实现上述功能的函数:
1. 通讯信息链表创建
```c++
ListNode* createList() {
ListNode* head = new ListNode;
head->next = nullptr;
return head;
}
```
2. 通讯信息输入
```c++
void insert(ListNode* head, Contact contact) {
ListNode* node = new ListNode;
node->data = contact;
node->next = head->next;
head->next = node;
}
```
3. 通讯信息查询
```c++
void search(ListNode* head, string name) {
ListNode* p = head->next;
while (p != nullptr) {
if (p->data.name == name) {
// 找到了对应的联系人
cout << "编号:" << p->data.id << endl;
cout << "姓名:" << p->data.name << endl;
cout << "电话:" << p->data.phone << endl;
cout << "通信地址:" << p->data.address << endl;
cout << "EMAIL:" << p->data.email << endl;
return;
}
p = p->next;
}
// 没有找到对应的联系人
cout << "未找到联系人" << endl;
}
```
4. 通讯信息修改
```c++
void update(ListNode* head, string name, Contact contact) {
ListNode* p = head->next;
while (p != nullptr) {
if (p->data.name == name) {
// 找到了对应的联系人
p->data = contact;
cout << "修改成功" << endl;
return;
}
p = p->next;
}
// 没有找到对应的联系人
cout << "未找到联系人" << endl;
}
```
5. 通讯信息删除
```c++
void remove(ListNode* head, string name) {
ListNode* p = head->next;
ListNode* prev = head;
while (p != nullptr) {
if (p->data.name == name) {
// 找到了对应的联系人
prev->next = p->next;
delete p;
cout << "删除成功" << endl;
return;
}
prev = p;
p = p->next;
}
// 没有找到对应的联系人
cout << "未找到联系人" << endl;
}
```
6. 通讯信息排序
```c++
void sortList(ListNode* head) {
ListNode* p = head->next;
int len = 0;
while (p != nullptr) {
len++;
p = p->next;
}
for (int i = 0; i < len - 1; i++) {
p = head->next;
for (int j = 0; j < len - i - 1; j++) {
if (p->data.name > p->next->data.name) {
// 交换相邻的两个结点
Contact temp = p->data;
p->data = p->next->data;
p->next->data = temp;
}
p = p->next;
}
}
cout << "排序成功" << endl;
}
```
7. 输出或保存到文件
```c++
void output(ListNode* head) {
ListNode* p = head->next;
while (p != nullptr) {
cout << "编号:" << p->data.id << endl;
cout << "姓名:" << p->data.name << endl;
cout << "电话:" << p->data.phone << endl;
cout << "通信地址:" << p->data.address << endl;
cout << "EMAIL:" << p->data.email << endl;
p = p->next;
}
}
void saveToFile(ListNode* head, string filename) {
ofstream outfile(filename);
if (!outfile.is_open()) {
cout << "无法打开文件" << endl;
return;
}
ListNode* p = head->next;
while (p != nullptr) {
outfile << p->data.id << " " << p->data.name << " " << p->data.phone << " " << p->data.address << " " << p->data.email << endl;
p = p->next;
}
outfile.close();
cout << "保存成功" << endl;
}
```
以上就是实现通讯录信息管理系统的主要函数,您可以根据需要对其中的细节进行完善。
阅读全文