联系人管理系统
C++通讯录管理系统(添加联系人,显示联系人,删除联系人,查找联系人,修改联系人,清空联系。。。

C++通讯录管理系统(添加联系⼈,显⽰联系⼈,删除联系⼈,查找联系⼈,修改联系⼈,清空联系。
1 /**2 * ProjectNmae:通讯录管理系统3 * 功能:4 * 添加联系⼈:向通讯录添加新⼈5 * 显⽰联系⼈:显⽰通讯录中的所有联系⼈信息6 * 删除联系⼈:按照姓名进⾏删除指定联系⼈7 * 查找联系⼈:按照姓名查看指定联系⼈信息8 * 修改联系⼈:按照姓名重新修改指定联系⼈9 * 清空联系⼈:清空通讯录中所有信息10 * 退出通讯录:退出当前使⽤的通讯录11 */12131415 #include<iostream>16 #include<string>17 #define MAX 1000 //最⼤联系⼈ 1k⼈18 using namespace std;1920 //设计联系⼈结构体21 struct Person22 {23 string m_Name; //姓名24 int m_Sex; //性别 1 男 2⼥25 int m_Age; //年龄26 string m_Phone; //电话27 string m_Adder; //住址282930 };3132 //通讯录结构体33 struct Addressbooks34 {35 struct Person personArray[MAX]; //通讯录中保存的联系⼈的数组3637 int m_Size; //记录当前⼈员个数3839 };4041 //添加联系⼈42 void addPerson(Addressbooks* abs)43 {44 //判断通讯录是否以满,如果满了就不在添加45 if (abs->m_Size == MAX)46 {47 cout << "通讯录已满,⽆法添加" << endl;48 return;49 }50 else51 {52 //添加具体联系⼈53 string name;54 cout << "请输⼊姓名: " << endl;55 cin >> name;56 abs->personArray[abs->m_Size].m_Name= name;5758 cout << "请输⼊性别: " << endl;59 cout << "1------男" << endl;60 cout << "2------⼥" << endl;6162 int sex = 0;63 while (true)64 {65 //输⼊正确退出循环错误继续输⼊66 cin >> sex;6768 if (sex == 1 || sex == 2)69 {70 abs->personArray[abs->m_Size].m_Sex = sex;71 break;72 }73 cout << "输⼊有⽆,请重新输⼊" << endl;7475 }767778 cout << "请输⼊年龄: " << endl;79 int age = 0;80 cin >> age;81 abs->personArray[abs->m_Size].m_Age = age;82838485 cout << "请输⼊联系电话: " << endl;86 string phone;87 cin >> phone;88 abs->personArray[abs->m_Size].m_Phone = phone;89909192 cout << "请输⼊联系⼈地址: " << endl;93 string address;94 cin >> address;95 abs->personArray[abs->m_Size].m_Adder = address;96979899 //更新通讯录⼈数100 abs->m_Size++;101 cout << "您加⼊成功了" << endl;102103 system("pause");104 system("cls");105106 }107 }108109 //2.显⽰所有的联系⼈110 void showPerson(Addressbooks* abs)111 {112 //判断通讯录中⼈数是否为0,如果为0,提⽰记录为空113 //不为 0 显⽰记录的联系⼈信息114 if (abs->m_Size == 0)115 {116 cout << "当前记录为空" << endl;117118 }119 else120 {121 for (int i = 0; i < abs->m_Size; i++)122 {123 cout << "姓名:" << abs->personArray[i].m_Name << "\t";124 cout << "性别:" <<( abs->personArray[i].m_Sex == 1?"男":"⼥") << "\t"; 125 cout << "年龄: " << abs->personArray[i].m_Age << "\t";126 cout << "电话:" << abs->personArray[i].m_Phone << "\t";127 cout << "住址:" << abs->personArray[i].m_Adder << endl;128 }129 }130131 system("pause");132 system("cls");133134 }135136137 //检测联系⼈是否存在如果存在返回联系⼈的所在位置不存在返回-1138 int isExist(Addressbooks* abs, string name)139 {140 for (int i = 0; i< abs->m_Size; i++)141 {142 //找到⽤户输⼊的姓名了143 if (abs->personArray[i].m_Name == name)144 {145 return i; //找到了。
数据结构 通讯录管理系统

数据结构通讯录管理系统数据结构通讯录管理系统1、引言1.1 目的和范围本文档旨在详细描述一个通讯录管理系统的设计和实现,以便帮助开发人员了解系统的功能和特性。
本系统可以用于存储和管理个人联系信息,实现添加、删除、修改和查询等功能。
1.2 定义、缩略语和缩写词- 通讯录:存储个人联系信息的系统。
- 系统:通讯录管理系统。
2、总体概述2.1 系统背景通讯录管理系统是为了方便用户管理个人联系信息而开发的软件。
它提供了一系列功能,包括添加联系人、删除联系人、修改联系人信息以及搜索联系人等。
该系统旨在提供一个高效、方便和可靠的通讯录管理解决方案。
2.2 产品功能- 添加联系人:用户可以添加新的联系人,并输入其姓名、方式号码、电子邮箱等信息。
- 删除联系人:用户可以删除已经存在的联系人。
- 修改联系人信息:用户可以修改已经存在的联系人的姓名、方式号码、电子邮箱等信息。
- 搜索联系人:用户可以根据姓名、方式号码等信息搜索联系人。
- 显示所有联系人:系统可以显示所有已经存在的联系人。
2.3 用户特点通讯录管理系统的主要用户群体为个人用户,他们需要管理自己的联系人信息。
这些用户对于系统的易用性、稳定性和功能性要求较高,因此系统需要提供简单直观的用户界面,并保证操作的正确性和数据的安全性。
3、系统需求3.1 功能需求3.1.1 添加联系人- 用户可以输入联系人的姓名、方式号码、电子邮箱等信息进行添加。
- 系统应该对输入进行合法性检查,确保输入的信息符合格式要求。
- 添加联系人后,系统应该将联系人信息保存到数据库中。
3.1.2 删除联系人- 用户可以删除已经存在的联系人。
- 删除联系人后,系统应该将联系人信息从数据库中删除。
3.1.3 修改联系人信息- 用户可以修改已经存在的联系人的姓名、方式号码、电子邮箱等信息。
- 系统应该对输入进行合法性检查,确保输入的信息符合格式要求。
- 修改联系人信息后,系统应该将修改后的联系人信息保存到数据库中。
Java通讯录管理系统设计报告

Java通讯录管理系统设计报告1. 引言随着社会发展和信息技术的进步,通讯录在人们的日常生活和工作中变得越来越重要。
Java通讯录管理系统是一种用于管理个人和组织联系信息的软件系统。
本篇文档将详细介绍Java通讯录管理系统的设计和实现。
2. 功能需求Java通讯录管理系统具有以下功能需求: - 添加联系人:用户可以添加新的联系人,包括姓名、电话号码、电子邮件等相关信息。
- 删除联系人:用户可以删除已存在的联系人。
- 编辑联系人:用户可以修改已存在联系人的信息。
- 搜索联系人:用户可以根据姓名、电话号码或其他关键字搜索联系人。
- 显示联系人列表:用户可以查看所有联系人的列表,并按照姓名或其他方式进行排序。
- 导入/导出联系人:用户可以将联系人导入/导出到文件中,以实现数据的备份和共享。
3. 系统设计3.1 技术栈选择Java通讯录管理系统采用Java语言进行开发,使用Java的面向对象特性来实现系统的各个功能模块。
系统使用MySQL数据库来存储联系人的信息。
3.2 系统架构Java通讯录管理系统采用三层架构,分为表示层、业务逻辑层和数据访问层。
•表示层:负责与用户的交互,包括图形界面和用户输入输出的处理。
•业务逻辑层:负责处理用户的请求,对联系人信息进行增加、删除、编辑、搜索等操作,并调用数据访问层进行数据的读写。
•数据访问层:负责与数据库交互,进行联系人信息的读写操作。
3.3 类设计在Java通讯录管理系统中,主要涉及以下类的设计: - Contact类:表示一个联系人,包含姓名、电话号码、电子邮件等属性。
- ContactDAO接口:定义对联系人的增删改查等操作。
- ContactDAOImpl类:实现ContactDAO接口,负责与数据库进行交互。
- ContactService类:负责处理业务逻辑,调用ContactDAOImpl 类进行联系人信息的操作。
- ContactConsole类:表示层的用户界面,处理用户输入输出和展示联系人信息。
数据结构课程设计通讯录管理系统报告

数据结构课程设计通讯录管理系统报告前言通讯录管理系统是一种常见的应用程序,用于帮助用户有效地组织和管理他们的联系人信息。
本报告旨在介绍和分析一个基于数据结构设计的通讯录管理系统,其中实现了基本的通讯录功能,并且通过合适的数据结构和算法进行优化。
功能需求通讯录管理系统需要实现以下基本功能: - 添加联系人信息 - 查找联系人信息 - 删除联系人信息 - 更新联系人信息 - 显示所有联系人信息数据结构选择为了实现通讯录管理系统的功能,我们选择使用链表作为数据结构。
链表是一种简单而灵活的数据结构,可以动态地添加或删除节点,非常适合存储联系人信息这种动态的数据。
在这里,我们采用双向链表,使得查找、插入和删除操作更加高效。
算法设计添加联系人信息添加联系人信息时,我们需要遍历链表找到合适的位置插入新节点,这里的算法复杂度为O(n),其中n表示链表的长度。
查找联系人信息查找联系人信息时,我们需要遍历链表查找目标节点,这里的算法复杂度为O(n)。
删除联系人信息删除联系人信息时,我们同样需要遍历链表找到目标节点并删除,其算法复杂度为O(n)。
更新联系人信息更新联系人信息时,我们首先需要查找到目标节点,然后进行更新操作,其算法复杂度也为O(n)。
系统优化为了提高系统的性能,我们可以通过以下几种方式进行优化: - 使用哈希表索引联系人信息,减少查找联系人的时间复杂度; - 引入缓存机制,减少频繁的IO 操作。
总结通过本报告的介绍和分析,我们了解了一个基于数据结构设计的通讯录管理系统的实现原理和优化方法。
在实际应用中,针对具体需求和场景,我们可以进一步优化系统性能,提升用户体验。
通讯录管理系统作为一种简单而实用的应用程序,将在日常生活中发挥重要作用。
数据结构课程设计通讯录管理系统

数据结构课程设计通讯录管理系统一、系统需求分析通讯录管理系统的主要目标是提供一个方便、高效的方式来管理联系人信息。
具体需求包括:1、能够添加联系人,包括姓名、电话号码、电子邮件、地址等基本信息。
2、可以对联系人信息进行修改和删除操作。
3、支持按照姓名、电话号码等关键字进行快速查找。
4、能够以列表形式展示所有联系人的信息。
二、数据结构选择为了实现上述功能,我们需要选择合适的数据结构来存储联系人信息。
考虑到联系人信息的多样性和动态性,链表是一个不错的选择。
链表可以方便地进行插入、删除和修改操作,并且能够灵活地调整存储空间。
另外,为了提高查找效率,我们可以结合使用哈希表。
通过将联系人的关键信息(如姓名或电话号码)进行哈希运算,快速定位到对应的联系人节点。
三、系统功能实现1、添加联系人功能当用户选择添加联系人时,系统会提示用户输入联系人的各项信息。
这些信息被封装成一个结构体,并通过链表的插入操作添加到链表中。
同时,将关键信息映射到哈希表中,以便后续快速查找。
2、修改联系人功能用户输入要修改的联系人的关键字,系统通过哈希表快速找到对应的联系人节点。
然后,提示用户输入修改后的信息,并更新链表和哈希表中的数据。
3、删除联系人功能与修改功能类似,通过关键字找到联系人节点,从链表和哈希表中删除相应的节点和信息。
4、查找联系人功能用户输入查找关键字,系统通过哈希表进行快速定位,如果找到匹配的联系人,则显示其详细信息。
5、展示所有联系人功能遍历链表,将所有联系人的信息以列表形式输出到屏幕上。
四、系统界面设计为了提高用户体验,系统设计了简洁直观的界面。
主界面提供了添加、修改、删除、查找和展示所有联系人等功能选项。
用户通过选择相应的选项,进入对应的操作流程。
五、代码实现示例以下是部分关键代码的示例:```c//联系人结构体typedef struct Contact {char name50;char phoneNumber20;char email50;char address100;struct Contact next;} Contact;//哈希表节点结构体typedef struct HashNode {char key50;Contact contact;struct HashNode next;} HashNode;//链表插入联系人void insertContact(Contact head, Contact newContact) {newContact>next = head;head = newContact;}//哈希函数unsigned int hashFunction(const char key) {unsigned int hash = 0;while (key) {hash =(hash << 5) + key++;}return hash % HASH_TABLE_SIZE;}//查找联系人Contact findContact(Contact head, const char key, HashNode hashTable) {unsigned int hashValue = hashFunction(key);HashNode node = hashTablehashValue;while (node) {if (strcmp(node>key, key) == 0) {return node>contact;}node = node>next;}Contact current = head;while (current) {if (strcmp(current>name, key) == 0 ||strcmp(current>phoneNumber, key) == 0) {//更新哈希表HashNode newNode =(HashNode )malloc(sizeof(HashNode));strcpy(newNode>key, key);newNode>contact = current;newNode>next = hashTablehashValue;hashTablehashValue = newNode;return current;}current = current>next;}return NULL;}```六、系统测试在完成系统的开发后,需要进行全面的测试以确保系统的稳定性和可靠性。
通讯录管理系统

通讯录管理系统一、引言随着科技的不断发展,电子设备的运用愈发广泛,通讯工具也从最早的电话、传真、邮件演变到如今的移动电话、微信等APP软件。
同时,人们通讯的宽带和速度也得到了很大的进步,这里提到的速度指的是通讯的速度和传输的速度。
在日常生活中,人们需要不断联系和交流,而一个完善的通讯管理系统能够辅助人们做到这一点。
二、通讯录管理系统的概述通讯录管理系统是一个集成化的系统,它包括通讯录的建立、搜索、编辑、删除等基本功能,同时也有通讯录的导入、导出、备份、恢复等高级功能。
对于个人而言,通讯录管理系统是一个非常有用的工具,可以让我们对日常生活中的联系人实现精细化管理。
对于企业和组织而言,通讯录管理系统则是一个不可或缺的管理工具,它可以让企业和组织对内外联系人进行统一管理,提高工作效率,实现快速响应与灵活沟通。
三、通讯录管理系统的需求分析1. 用户管理需求通讯录管理系统的用户一般包括个人、企业和组织等,他们的管理需求有所不同,例如个人通讯录管理系统需要支持用户自主导入、导出、备份、恢复,企业通讯录管理系统需要支持管理员进行用户管理和权限控制等。
2. 数据整合需求通讯录管理系统需要支持将人员信息从不同的来源整合到一个集中的库中,这可以通过数据导入、数据同步、数据抓取等方式实现。
3. 可扩展性和可定制化需求通讯录管理系统应该具有良好的可扩展性和可定制化的能力,以满足企业和组织不同的需求。
4. 安全性需求通讯录管理系统需要具有安全性,防止数据泄漏和恶意攻击等安全问题,同时还要实现数据备份、数据恢复等功能。
五、通讯录管理系统的设计1. 系统结构设计通讯录管理系统应该是一个分层结构的系统,分为表示层、业务层、数据访问层和数据存储层四个层级。
其中,表示层为用户提供了用户界面,业务层处理用户请求,数据访问层为业务层提供数据访问接口,数据存储层则负责数据存储管理。
2. 系统模块设计通讯录管理系统主要包括三个模块:用户管理模块、通讯录管理模块和数据备份恢复模块。
C#通讯录管理系统课程设计

项目目标
掌握数据库设计的基本原理 和方法
理解面向对象编程的思想和 方法
掌握C#编程语言的基本语 法和特性
掌握Windows Forms应 用程序的开发方法和技巧
掌握软件工程和项目管理的 基本知识和技能
提高团队协作和沟通能力, 培养解决问题的能力
联系人分组:工作、生活、 学习等
联系人搜索:根据姓名、 电话、地址等搜索联系人
联系人管理:添加、修改、 删除、查询等操作
数据备份与恢复:定期备 份数据,防止数据丢失
系统架构设计
架构设计原则:高内聚、低耦 合、可扩展、可维护
架构设计方法:分层架构、模 块化设计、服务化设计
架构设计要素:用户界面、业 务逻辑、数据存储、通信协议
架构设计工具:UML、Visio、 PowerDesigner等
数据库设计
数据库类型:SQL Server 数据库结构:用户表、联系人表、分组表等 数据库字段:用户名、密码、联系人姓名、电话、邮箱等 数据库操作:增删改查、排序、筛选等
界面设计
主界面:显示联系人列表、搜索框、添加联系人按钮等 联系人详情界面:显示联系人信息、编辑按钮、删除按钮等 添加联系人界面:输入联系人姓名、电话、邮箱等信息 编辑联系人界面:修改联系人信息 删除联系人界面:确认删除联系人 搜索联系人界面:输入关键词,显示符合条件的联系人列表
单元测试
单元测试的概念:对软件中的最 小可测试单元进行测试
单元测试的方法:白盒测试、黑 盒测试、灰盒测试
添加标题
添加标题
添加标题
添加标题
单元测试的目的:验证软件单元 的功能是否正确
单元测试的工具:NUnit、JUnit、 Te s t N G 等
通讯录管理系统毕业设计(两篇)2024

引言概述:通讯录管理系统是一种用于管理联系人信息的软件,它能够为用户提供便捷的联系人管理和信息查询功能。
本文将继续介绍通讯录管理系统的设计和实现,重点关注系统的用户界面设计、数据存储与管理、通讯录的分类与搜索功能、用户权限管理以及通讯录系统的扩展与升级。
正文内容:1.用户界面设计1.1设计原则:用户友好性、易用性和美观性原则1.2主界面设计:主界面布局、功能模块展示、导航设计1.3交互设计:交互方式、操作流程、反馈机制1.4响应式设计:适配多种设备和屏幕分辨率2.数据存储与管理2.1数据库设计:确定实体和属性、建立表结构、定义关系2.2数据库连接:连接数据库、读写操作、异常处理2.3数据备份与恢复:数据备份策略、备份文件管理、数据恢复机制2.4数据安全性:权限控制、数据加密、数据完整性3.通讯录的分类与搜索功能3.1通讯录分类:基本分类和用户自定义分类3.2联系人添加与编辑:输入验证、字段定义、数据关联3.3联系人查询:关键字查询、条件过滤、多条件组合查询3.4联系人导入导出:支持多种数据格式、数据匹配与转换、导入导出策略3.5通讯录分享与同步:用户权限设置、跨设备同步、冲突解决4.用户权限管理4.1用户注册与登录:用户信息获取、身份验证、登录状态管理4.2用户权限分配:管理员与普通用户权限区分、权限控制细化4.3用户信息管理:个人信息修改、密码重置、账号注销4.4安全性保护:登录失败锁定、密码加密、会话管理5.通讯录系统的扩展与升级5.1模块化设计:可插拔式功能模块、模块间接口定义5.2扩展性设计:支持插件开发、动态加载与卸载5.3性能优化:数据索引优化、查询优化、缓存机制5.4系统升级:版本管理、更新提示、升级策略总结:通过上述的详细阐述,我们可以看到,通讯录管理系统涵盖了用户界面设计、数据存储与管理、通讯录的分类与搜索功能、用户权限管理以及通讯录系统的扩展与升级等多个关键领域。
在该系统的设计过程中,我们需要重点关注用户友好性、数据安全性和系统的可扩展性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
联系人管理系统设计报告程珠 200907260203 信管0901一、实验目地通过本课程设计,要求熟悉管理信息系统开发的原理,掌握系统分析、系统设计、系统编程与调试等方法。
能够完成一个中小型信息系统的规划与分析设计工作,或者能够开发一个小型的管理信息系统,提高分析问题与解决问题的能力。
二、实验内容1.业务简介(1)公司联系人A.公司联系人类型构成:公司联系人类型标识,公司联系人类型B.公司联系人构成:公司联系人标识,公司联系人名称,地址,出生日期,公司联系人类型标识C.查询构成:公司联系人标识,公司联系人类型标识(2)客户 A 客户构成:客户标识,客户名称,客户地址,客户电话(3)客户联系人客户联系人构成:客户联系人标识,客户联系人姓名,客户联系人地址,客户联系人电话2.系统功能A 查看和修改公司联系人、客户、客户联系人 B添加和删除公司联系人、客户、客户联系人 C退出系统通过联系人管理系统,可以查询和修改公司联系人、客户、客户联系人。
添加和删除公司联系人、客户、客户联系人,给企业或学校提供一个良好的人力资源管理环境。
也可以清晰地了解到三者的关系。
除了可以查看公司联系人名称,地址,出生日期,公司联系人类型还可以查看联系人的公司信息和家庭信息,如联系人的上级和下级信息,父母信息等等。
以及联系人的毕业信息和在学校、公司的突出表现。
方便企业对公司联系人更好的了解和统计。
通过客户信息可以查找与公司有业务来往的客户信息。
三、实验过程1. 系统分析(以公司联系人为例)ER图2.系统设计(以公司联系人为例)模块结构设计数据库设计表结构(以公司联系人为例)关系创建窗体3.系统运行登陆主窗体公司联系人信息查看公司人员信息详细公司信息突出表现个人信息和家庭信息删除和添加公司成员输入要删除或添加的公司成员客户信息输入要查找的客户标识客户联系人信息输入要查找的客户联系人标识补:代码设计#include<stdio.h>#include<stdlib.h> //链表#include<string.h>void menu() //主界面函数{printf(" 联系人信息系统\n"); printf(" 1.创建联系人信息链表\n");printf(" 2.添加联系人信息\n");printf(" 3.删除联系人信息\n");printf(" 4.查找联系人信息\n");printf(" 5.显示所有联系人信息\n");printf(" 6.保存链表数据到文件\n");printf(" 7.从文件读取信息\n");printf(" 输入你的选择(数字才有效)\n");}struct student //定义结构体student{int num;char name[10];char phone[20];char mail[20];struct student *next;};struct student *create(int n) //创建n个节点的联系人信息{ printf("请输入联系人号,姓名,电话,邮箱中间用空格分开\n");int i;struct student *head ,*pnew,*ptail;pnew = (struct student *)malloc(sizeof(struct student)); //根据结构体自动分配空间大小scanf("%d%s%s%s",&pnew->num,pnew->name,pnew->phone,pnew->mail); head = pnew;ptail = pnew;for( i=1;i<n;i++){pnew = (struct student *)malloc(sizeof(struct student));scanf("%d%s%s%s",&pnew->num,pnew->name,pnew->phone,pnew->mail );ptail->next=pnew;ptail=pnew;}printf("输入完成\n");ptail->next=NULL;return head;}struct student *insert(struct student *head) //添加联系人信息(形参){struct student *pnew;pnew = (struct student *)malloc(sizeof(struct student));printf("请输入添加的联系人信息:\n");scanf("%d%s%s%s",&pnew->num,pnew->name,pnew->phone,pnew->mail); //p=head;pnew->next=head;head=pnew;return head;}struct student *pdelete(struct student *head,char nname[10])//删除联系人信息{struct student *p,*pold;p=head;while(head!=NULL&&(!strcmp(head->name,nname)))head=head->next;free(p);p=head;}if(head==NULL)return head;p=head->next;pold=head;while(p!=NULL){if(!strcmp(p->name,nname)){pold->next=p->next;free(p);p=pold->next;}else{pold=p;p=p->next;}}return head;}struct student *search(struct student *head,char nname[10])//查找联系人信息struct student *p,*pold;p=head;while(head!=NULL&&(!strcmp(head->name,nname))) //比较2个字符串是否相等{ printf("联系人号:%d 姓名:%s 电话:%s 邮箱:%s\n",head->num,head->name,head->phone,head->mail);head=head->next;p=head;}if(head==NULL)return head;p=head->next;pold=head;while(p!=NULL){if(!strcmp(p->name,nname)){pold->next=p->next;printf("联系人号:%d 姓名:%s 电话:%s 邮箱:%s\n",p->num,p->name,p->phone,p->mail);p=pold->next;}else{pold=p;p=p->next;}return head;}void print(struct student *head) //显示联系人信息{struct student *p=head;while(p!=NULL){printf("联系人号:%d 姓名:%s 电话:%s 邮箱:%s\n",p->num,p->name,p->phone,p->mail);p=p->next;}}void write(struct student *head) //保存联系人信息{FILE *fp1;struct student *p=head;fp1=fopen("e:\\hxn\\aa.txt","w");while(p!=NULL){ fprintf(fp1," 联系人号:%d 姓名:%s 电话:%s 邮箱:%s\n",p->num,p->name,p->phone,p->mail);p=p->next;}fclose(fp1);}struct student *read() //读取联系人信息{FILE *fp1;struct student *head ,*pnew,*ptail;char t[10],o[20],h[20];int i=1;int j;//struct student *p=head;fp1=fopen("e:\\hxn\\aa.txt","r");while(!feof(fp1)){ fscanf(fp1," 联系人号:%d 姓名:%s 电话:%s 邮箱:%s\n",&j,&t,&o,&h); printf("学号:%d 姓名:%s 电话:%s 邮箱:%s\n",j,t,o,h);if(i==1){pnew = (struct student *)malloc(sizeof(struct student));pnew->num=j;strcpy(pnew->name,t);strcpy(pnew->phone,o);strcpy(pnew->mail,h);head = pnew;ptail=pnew;}else{pnew = (struct student *)malloc(sizeof(struct student));pnew->num=j;strcpy(pnew->name,t);strcpy(pnew->phone,o);strcpy(pnew->mail,h);ptail->next=pnew;ptail=pnew;}i++;}i=1;ptail->next=NULL;fclose(fp1);return head;}void main() //主函数{int choise,s;char nname[10];struct student *nhead;while(1){ //主界面循环 menu();scanf("%d",&choise);switch (choise){case 1:{printf("请输入需要建立的节点数\n");scanf("%d",&s);nhead=create(s);};break;case 2:nhead=insert(nhead);break;case 3:{printf("请输入需要删除人的姓名\n");scanf("%s",&nname);nhead=pdelete(nhead,nname);printf("删除成功!\n");};break;//删除case 4:{printf("请输入查找人的姓名\n");scanf("%s",&nname);nhead=search(nhead,nname);printf("查找成功,若无信息则该联系人不存在");};break;//查找case 5:print(nhead);break;case 6:{write(nhead);printf("写入完成\n");};break;case 7:{printf("开始读取请等待。