学生通讯录管理系统
学生手机通信录管理系统

学生手机通信录管理系统学生手机通信录管理系统文档一、系统说明学生手机通信录管理系统是一款方便学生进行联系人信息管理的应用程序,主要针对学生的使用需求,能够方便地添加、修改、删除联系人信息,同时提供了快速查找和导出通讯录的功能。
二、主要功能1.添加联系人:学生可通过学生手机通信录管理系统添加新的联系人,并可以输入联系人的姓名、电话、邮箱、地址等相关信息。
2.编辑联系人:编辑联系人时,可以修改联系人的信息,例如修改电话号码等。
3.删除联系人:学生可以在学生手机通信录管理系统中删除联系人信息,以避免产生重复的联系人信息。
4.快速查找:学生在需要查找联系人时,可以直接输入姓名或电话号码进行查找,以快速定位到相应的联系人。
5.导出通讯录:学生可以将通讯录导出为CSV文件,以便后续使用。
三、使用说明1.启动系统:学生首先需要下载学生手机通信录管理系统并安装,在安装完成后,启动系统。
2.添加联系人:点击“添加联系人”按钮,填写你需要添加的联系人的姓名、电话、邮箱、地址等相关信息即可。
3.编辑联系人:在学生手机通信录管理系统中选中需要编辑的联系人,然后点击“编辑联系人”按钮进行联系人信息的修改。
4.删除联系人:在学生手机通信录管理系统中选中需要删除的联系人,然后点击“删除联系人”按钮即可删除该联系人。
5.快速查找:在学生手机通信录管理系统中输入“姓名”或“电话”进行快速查找相应的联系人信息。
6.导出通讯录:在学生手机通信录管理系统中点击“导出通讯录”按钮即可将通讯录导出为CSV文件。
四、系统优势学生手机通信录管理系统能够让学生方便地管理联系人信息,避免了联系人重复或管理混乱的情况,以及提供了快速查找和导出通讯录的功能,这些都可以帮助学生高效地管理自己的联系人,成为学生生活中的一项便捷工具。
五、总结学生手机通信录管理系统是一项非常实用的工具,经过使用,它可以帮助学生方便地管理自己的联系人信息,节省时间和精力,成为学生生活中重要的一部分。
学生通讯录管理系统数据结构课程设计代码

一、概述在当今数字化信息时代,学生通讯录管理系统已成为学校教育管理和日常生活中不可或缺的一部分。
针对校园学生的通讯录管理系统,既能方便学生之间的交流通信,也能方便管理者对学生信息进行统一管理。
本次课程设计旨在设计一个学生通讯录管理系统的数据结构与代码,实现信息的存储、查询和管理的功能。
二、系统需求分析1.系统功能需求(1) 实现学生基本信息的录入和存储,包括尊称、学号、性别、通信方式等信息;(2) 实现学生信息的查询、修改和删除功能;(3) 实现学生信息的按关键字检索功能,如按尊称、学号、班级等进行检索;(4) 实现学生通讯录的导出和导入功能,方便数据备份和迁移;(5) 实现用户权限管理功能,包括管理员和普通用户权限的划分。
2.系统性能需求(1) 系统应具有良好的用户界面设计,操作简单、友好;(2) 系统应具有较高的数据安全性,保护学生个人信息不被泄露;(3) 系统应具有较高的稳定性和可靠性,能够长时间稳定运行;(4) 系统应具有较高的查询和数据处理效率,能够快速响应用户请求。
三、系统设计1. 数据结构设计(1) 学生信息采用结构体进行存储,包括尊称、学号、性别、通信方式等字段;(2) 学生通讯录采用链表结构进行存储,方便动态添加、删除和查询操作;(3) 用户权限采用权限控制字段进行划分,保证不同用户有不同的操作权限。
2. 系统架构设计(1) 采用C语言进行开发,具有较高的执行效率和跨评台性;(2) 采用面向对象编程思想进行系统的模块化设计,方便系统维护和扩展;(3) 采用简洁的用户界面设计,操作逻辑清晰,用户体验良好。
四、代码实现以下为部分代码示例,展示系统核心功能的实现:1. 学生信息的录入和存储typedef struct Student {char name[20];int id;char gender[10];char contact[20];} Student;// 使用链表存储学生信息typedef struct Node {Student data;struct Node *next;} Node;2. 学生信息的查询、修改和删除// 查询学生信息void searchStudent(Node *head, char *name) {Node *p = head->next;while (p != NULL) {if (strcmp(p->, name) == 0) {// 输出学生信息printf("Name: s, ID: d, Gender:s, Contact: s\n", p->, p->data.id, p->data.gender, p->data.contact); return;}p = p->next;}printf("The student is not found\n");}// 修改学生信息void modifyStudent(Node *head, char *name, int id, char *gender, char *contact) {Node *p = head->next;while (p != NULL) {if (strcmp(p->, name) == 0) {// 修改学生信息strcpy(p->, name);p->data.id = id;strcpy(p->data.gender, gender);strcpy(p->data.contact, contact);return;}p = p->next;}printf("The student is not found\n");}// 删除学生信息void deleteStudent(Node *head, char *name) {Node *p = head;while (p->next != NULL) {if (strcmp(p->next->, name) == 0) { Node *temp = p->next;p->next = p->next->next;free(temp);return;}p = p->next;}printf("The student is not found\n");}3. 用户权限管理int m本人n() {// 管理员权限if (isAdmin) {// 管理员操作} else {// 普通用户操作}return 0;}五、系统测试与优化1. 系统测试(1) 对系统进行功能测试,包括学生信息录入、查询、修改、删除等功能的测试;(2) 对系统进行性能测试,测试系统的稳定性和数据处理效率。
学生通讯录管理系统课程设计

学生通讯录管理系统课程设计一、引言学生通讯录管理系统是一种能够有效管理学生通信信息的软件工具。
在当今信息化社会中,为了更好地维护学生通信信息和便于学校管理,设计一个高效、实用的学生通讯录管理系统至关重要。
本文将围绕学生通讯录管理系统的设计与实现展开讨论。
二、需求分析1. 用户需求•管理员需要能够对学生信息进行增删查改操作;•学生要能够方便地修改个人信息;•教师需要便捷地查看学生信息;•系统需要有良好的用户权限管理机制。
2. 功能需求•学生信息管理:包括学生基本信息的录入、修改和删除。
•通讯录管理:实现学生通讯录的管理和分类。
•查询功能:实现对学生信息的快速查询。
•权限管理:分管理员和普通用户,管理员有更高的权限控制。
三、系统设计1. 系统架构学生通讯录管理系统采用典型的客户-服务器架构,后端基于MySQL数据库存储学生信息,前端通过Web页面进行展示和操作。
2. 数据库设计设计数据库表格包括:学生信息表(包括学号、姓名、性别、年级等字段)、用户表、通讯录表等。
3. 页面设计•登录页面:对用户进行身份验证。
•学生信息管理页面:实现对学生基本信息的增删查改。
•通讯录管理页面:实现通讯录的分类和管理。
四、系统实现1. 环境配置•使用Python语言编写后端代码。
•前端采用HTML、CSS、JavaScript。
•数据库采用MySQL。
2. 实现步骤1.搭建后端框架,实现数据的增删查改功能。
2.设计前端页面,实现用户交互和数据展示。
3.进行系统测试和优化。
五、功能演示1. 登录功能输入正确的用户名和密码,用户可以成功登录系统。
2. 学生信息管理管理员可以添加、删除、修改学生信息,普通用户只能查看。
3. 通讯录管理实现对通讯录的添加、分类和管理。
六、总结与展望通过本次学生通讯录管理系统课程设计,我学到了如何进行系统设计、数据库设计和前后端分离开发的方法。
未来,还可以进一步改进系统功能,增加权限管理模块、优化界面交互等,使系统更加稳健和实用。
学生通讯录管理系统收获及体会

学生通讯录管理系统收获及体会学生通讯录管理系统是一种用于管理学生联系方式和个人信息的工具,它可以帮助学校、教师和学生更好地进行沟通和合作。
在使用这个系统的过程中,我收获了很多经验和体会。
首先,学生通讯录管理系统可以提高信息交流的效率。
在过去,教师和学生之间的沟通通常是通过纸质通讯录或面对面交流进行的,这种方式可能会导致信息传递不及时或遗漏。
而通过这个系统,教师和学生可以随时随地更新和查看联系方式,及时互相联系,并且系统可以发送通知和提醒,确保信息能够及时传递和接收。
这种高效的信息交流可以提高教学效果和学生参与度。
其次,学生通讯录管理系统可以增强学生之间的互动和合作。
通过这个系统,学生可以找到自己班级或学校的其他学生的联系方式,方便他们之间进行交流和合作。
比如,学生可以通过系统查找组队伙伴、寻求同学的学习帮助或者参与一些学校活动。
这种互动和合作可以促进学生之间的友谊和团队精神,也有助于他们在学业上取得更好的成绩。
此外,学生通讯录管理系统还可以提高学校管理的效率。
学校可以通过这个系统集中管理学生的个人信息,包括联系方式、班级和课程等。
这样,当学校需要与学生沟通时,可以直接通过系统发送通知,而不需要逐个联系学生或者使用其他不够高效的方式。
此外,学校还可以通过系统汇总学生的反馈和建议,了解学生的需求和问题,从而更好地进行管理和改进。
总的来说,学生通讯录管理系统是一种非常有用的工具,它可以提高学校、教师和学生之间的沟通效率,促进学生之间的互动和合作,提高学校管理的效率。
通过使用这个系统,我深刻体会到了信息技术在教育领域的重要性和应用价值,也意识到了信息管理对于学校和学生的重要性。
希望未来能够有更多的学校和教育机构使用这种系统,以提升教育质量和学生的学习体验。
学生通讯录管理系统c语言编程

学生通讯录管理系统C语言编程简介学生通讯录管理系统是一个帮助学生管理通讯录信息的应用程序。
通过该系统,学生可以添加、删除、查询和修改通讯录中的联系人信息,从而更好地组织和管理自己的通讯录信息。
功能需求1. 添加联系人学生可以通过输入联系人的姓名、电话号码、邮箱等信息,将联系人添加到通讯录中。
2. 删除联系人学生可以根据联系人的姓名或电话号码,从通讯录中删除指定的联系人信息。
3. 查询联系人学生可以通过姓名或电话号码查询通讯录中的联系人信息,并将查询结果显示出来。
4. 修改联系人学生可以修改通讯录中指定联系人的信息,如电话号码、邮箱等。
技术实现通讯录管理系统将使用C语言进行编程实现。
以下是系统的基本设计思路:1. 数据结构设计通讯录信息可以用结构体来表示,包含联系人的姓名、电话号码、邮箱等字段。
struct Contact {char name[50];char phone[20];char email[50];};2. 功能模块划分•添加联系人模块:用于添加新的联系人信息。
•删除联系人模块:用于删除指定联系人信息。
•查询联系人模块:用于根据姓名或电话号码查询联系人信息。
•修改联系人模块:用于修改指定联系人的信息。
3. 用户界面设计系统将使用控制台界面,通过菜单来实现各个功能模块的调用。
开发步骤1. 定义数据结构首先定义联系人结构体,包含姓名、电话号码、邮箱等字段。
2. 实现功能模块分别实现添加联系人、删除联系人、查询联系人、修改联系人等功能模块的具体代码。
3. 编写主程序编写主程序,通过调用功能模块来实现整体通讯录管理系统的运行。
总结学生通讯录管理系统C语言编程是一个实用的项目,通过这个项目,学生可以熟练掌握C语言编程的基本知识,并且实践项目开发的流程。
通过不断调试和完善,学生可以提升自己的编程能力和项目实现能力。
希望学生能够在这个项目中学到更多的知识,提升自己的编程技能。
2学生通讯录管理系统

“学生通讯录管理系统〞的设计与实现1、设计要求问题描述纸质的通讯录已经不能满足大家的要求,容易丢失、查找困难等问题是纸质通讯录所不能抑制的缺点。
“学生通讯录管理系统〞是为了帮助教师、同学,或者其他一些需要使用通讯录的人员进展管理和分析的一种应用程序。
(1)输入数据建立通讯录。
(2)查询通讯录中满足要求的信息。
(3)插入新的通讯录信息。
(4)删除不需要的通讯录信息。
(5)查看所有的通讯录信息。
2、概要设计为了实现需求分析中的功能,可以从三个方面着手设计。
2.1 主界面设计为了实现学生通讯录系统各功能的管理,设计一个含有多个菜单项的主控菜单子程序以系统的各项子功能,方便用户使用本系统。
本系统主控菜单运行界面如如如下图所示:*************************欢迎使用通讯录系统***************************** * 1 通讯录的建立* * 2 插入通讯记录* * 3 查询通讯记录** 4 删除通讯记录* * 5 显示通讯录信息* * 0 退出管理系统* **************************欢迎使用通讯录系统**************************** 请选择0-5:2.2 存储结构设计本系统主要采用链表结构类型来表示存储在“学生通讯录管理系统〞中的信息。
其中,链表结点由四个分量构成:通讯录成员学号、通讯录成员某某、通讯录成员、指向该结构体的指针。
此外,系统还设置了一个全局变量seat,表示通讯录中成员的序号。
2.3 系统功能设计本系统设置了五个子功能菜单,五个子功能的设计描述如下。
(1)建立通讯录系统。
可以一次输入多个成员通讯录的信息,建立通讯录。
该功能由creatIncreLink( )函数实现。
(2)插入通讯记录。
每次可以插入一个成员通讯录的信息。
如果要连续插入多个成员通讯录信息必须屡次选择该功能。
该功能由insertYouXu( )函数实现。
学生手机通信录管理系统

学生手机通信录管理系统一、背景如今, 手机已成为现代人生活中不可或缺的一部分。
尤其对于学生群体而言, 手机的重要性更加显著。
学生们常常使用手机来完成作业、和同学聊天、查阅信息等多种功能。
而通信录是其中一个不可或缺的功能,它方便了学生们管理自己的联系人信息。
但是,学生们经常添加的联系人数量巨大,管理起来需要花费大量的时间和精力。
另一方面,由于“小破派”与“牛高马大”的手机品牌数量众多,学生们从换机、重置手机到更换操作系统都是极其正常的现象。
因此,手机通信录的备份与恢复就成了备受关注的问题。
本文简要介绍了学生手机通信录管理系统,为学生们解决通信录备份和恢复、信息管理等问题,提高学生们的使用体验。
二、系统功能系统主要有以下几个功能:1. 添加联系人学生在使用过程中,可以通过系统添加联系人,方式灵活,可根据学生个人喜好选择输入方式。
2. 删除联系人学生在管理通信录时,可以通过本系统对其中的联系人进行删除操作。
3. 修改联系人信息通过系统,学生们可以随时对通信录中的联系人信息进行修改。
4. 实现通信录备份为了帮助学生更好地管理通信录,系统实现了通信录备份,方便学生在更改手机或者重置手机等情况下快速恢复通信录信息。
5. 实现通信录恢复同样地,当学生更改手机或者重置手机等情况下,可以通过本系统支持的恢复功能来恢复通信录信息。
6. 信息快速检索学生可以在本系统中通过输入联系人的名称或者电话号码等条件来快速地检索所需要的联系人信息。
7. 分类管理联系人为了使通信录能够更好地管理,本系统支持对联系人进行分类管理,方便用户查找、筛选所需联系人。
三、系统运行环境1. 系统运行平台本系统运行在Android系统平台。
2. 内存由于系统需要加载很多的联系人信息等内容,因此为了系统能够流畅地运行,建议手机内存大于2GB。
3. 存储空间通信录中包含了众多联系人的信息,因此系统需要占用一定的存储空间。
因此,建议手机的存储空间需大于0.5GB。
学生通讯录管理系统数据结构课程设计

学生通讯录管理系统数据结构课程设计一、需求分析在学生通讯录管理系统中,我们需要实现以下功能:1.学生信息的录入与管理2.通讯录信息的增删查改3.数据的持久化存储二、系统设计1. 数据结构设计为了实现学生通讯录管理系统的功能,我们需要设计以下数据结构:•学生信息结构体包括学号、姓名、性别、年龄等字段•通讯录信息结构体包括联系人姓名、电话号码、邮箱等字段2. 算法设计2.1 添加学生信息当用户选择添加学生信息时,系统会要求用户输入学号、姓名、性别、年龄等信息,然后将这些信息存储在学生信息的数据结构中。
void addStudentInfo() {// 读取用户输入的学生信息// 将学生信息存储在学生信息结构体中}2.2 修改通讯录信息用户可以根据联系人姓名查找通讯录信息,并进行修改操作,比如修改电话号码、邮箱等内容。
void modifyContactInfo() {// 根据联系人姓名查找通讯录信息// 用户进行修改操作}2.3 删除通讯录信息用户可以根据联系人姓名删除通讯录信息。
void deleteContactInfo() {// 根据联系人姓名删除通讯录信息}3. 数据存储设计为了持久化存储数据,我们可以选择使用文件存储或数据库存储。
在本系统中,我们选择文件存储的方式,数据以文本的形式存储在文件中。
三、系统实现通过以上设计,我们可以开始实现学生通讯录管理系统。
在实现过程中,我们需要注意保证数据结构的正确性和数据操作的合法性,从而确保系统的稳定性和可靠性。
四、总结通过本次数据结构课程设计,我们深入了解了学生通讯录管理系统的实现原理和功能设计。
在接下来的学习中,我们将继续努力提升自己的编程能力,不断完善系统的功能和性能,为实现更多复杂系统打下坚实的基础。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构课程设计报告项目名称:学生通讯录管理系统学号:班级:姓名:指导老师:计算机科学与技术2014年12月19日1.问题描述:通讯录管理系统一般包括通讯者的各种信息,这些信息应该包括学号,姓名,性别,电话,QQ,住址等。
而对其一般进行的操作有插入、删除、查询、修改、输出等操作功能,可以将输入的数据保存在文本文件中,并可以将其调出使用。
2.设计思路:通讯录管理系统所要进行的插入、删除、查询、修改、输出这五种功能会牵扯到数据的移动,所以应选择链式存储结构比较简单。
采用链表对其进行操作,至少需要6个子函数,及链表的建立、插入、删除、查询、修改、输出。
另外为了系统的美观简单,还应该设置一个主控菜单,所以程序需要7个子函数。
由于通讯录中涉及到的信息量较大,输入时较繁琐,所以需要加入文件的操作。
3.数据结构定义:采用了结构体数据类型,定义了7个字符型数组。
struct record {char numb[11];char name[9];char sex[3];char phone[12];char addr[31];char postcode[6];char qq[12];}student[500];4.系统功能模块介绍:(1)顶层主控菜单设计:①设计菜单内容程序运行后,给出八个菜单项的内容和输入提示。
0.通讯录表的记录输入;1.通讯录链表的建立;2.通讯录链表的插入;3.通讯录链表的删除;4.通讯录链表的查询;5.通讯录链表的修改;6.通讯录链表的输出;7.通讯录链表的保存;8.退出管理系统;请选择0—8;②实现循环和功能选择假设输入选择用变量sn存储,它作为menu_select函数的返回值提供给switch语句,使用for循环实现重复选择,并在主函数main()中实现。
实际使用时,只有选择大于8或小于0,程序才能运行结束,这就要使用循环控制,这里使用for循环语句实现菜单的循环选择,为了结束程序的运行,使用return语句即可,也可以使用exit(0);语句。
③得到sn的合理值如前所示,应该设计一个函数用来输出提示信息和处理输入,这个函数应该返回一个数值sn,以便提供给switch语句使用。
对于sn输入值,在switch中case语句0-8,对于不符合要求的输入,提示输入错误并要求重新输入。
该函数与主函数合在一起,编译运行程序,即可检查并验证菜单选择是否正确。
(2)功能模块函数设计这里的设计是以前面设计的菜单为基础,增加菜单项的处理功能。
该系统用下面八个功能模块编写,每个模块执行不同的功能,体现了模块化设计的思想。
下面八个模块都是利用C语言文件,向文件中追加数据、修改数据、查询数据和删除数据。
记录输入:adduser();使用其他函数调用此函数,已实现通讯录链表中记录的输入和插入。
创建:creat();用fopen()建立一个文本文件,然后在for 循环用fwrite ()向其中写入数据(例如,向文件中输入“姓名”,“学号”等),并对文件进行命名,再调用adduser()函数对其进行记录的输入。
插入:可以添加通讯录记录,利用C语言文件,向文件中按顺序输入学号、姓名、性别、电话、地址、邮编、QQ,再用fclose()函数关闭并保存文件。
删除:输入你要删除的人的电话后,系统会自动删除他(她)的记录,在删除通过for语句满足提示你确认删除的功能,只有等你确认删除后才会删除。
查找:这里提供了三种查询方式,按姓名、电话、地址查找,分别按提示输入1、2、3,以选择要查询的方式。
这里用到strcmp()函数,通过比较字符串是否相同来判别是否找到相关信息,找到后,就把文件中的数据赋给对应的变量,再把变量所带的值输出到屏幕上。
修改:输入你要修改的那个人的学号后,这里用到strcmp()函数,通过比较字符串是否相同来判别是否找到相关信息,找到个人的记录后,会显示他(她)的记录,然后通过调用devise()函数来依次输入他(她)的相关信息来替代以前的记录。
输出:也是用通过循环依次输出文件中的数据,第一次输出一个记录,按任意键继续输出,直到所有记录输出完毕后,按任意键返回上级菜单。
保存:用到fclose()函数,每次操作成功后会自动保存到指定的文件中。
5.运行与调试分析:第一次运行程序时出现了很多错误,根据提示及时修改了语法错误,再次运行程序时,程序的查询函数产生了错误,无法正常查询文件中的记录信息,经过反复琢磨,翻阅相关书籍,这个问题得到了解决,但仍有不足之处。
输入0:输入1:输入2:输入3:输入“n”输入4:①输入1:②输入2:输入3:输入5:输入6:6.体会:这个课题是设计一个学生通讯录管理系统,该通讯系统能够较好的管理好我们的通讯录记录,也拥有比较完善的功能,但是该系统依旧有漏洞,比如无法对输入字符的正确性进行判断,如:地址输入123456也不会提示输入错误。
姓名输入11111也不会提示输入错误,所以在程序中还是有缺陷的。
在编写过程中,我逐步的了解了程序模块化设计的思想含义。
在整个程序设计的过程中语法的错误还是比较容易检查的,但是对于那些逻辑思维的问题方面的缺陷不易查出,因此常常出现系统提示没有错误但是仍然不能够正常运行的境况,尽管有很多不足之处,但我在整个系统程序设计的过程中,回顾复习了以前所学的知识,对数据结构中的链表操作和C程序较之以前有了能更多地了解和掌握。
此外编程是一项高精度的工作,所以我们要有规范化,标准化的代码编写习惯,良好的编写习惯,不但有助于代码的纠错,也有助于不同人员之间的协作。
我们还要有模块化思维能力,模块化思维就是编程任何一个功能模块或函数的时候,要多想一些,不要局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个系统存在,是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极大的避免重复性的工作。
另外我们要重视程序的算法,在程序中,算法是灵魂,我们要努力学习各种先进的算法,提高自己的编程能力。
主程序系统:#include<stdio.h>#include<string.h>#include<stdlib.h>#include <conio.h>#include<windows.h>#define null 0struct record {char numb[11];char name[9];char sex[3];char phone[12];char addr[31];char postcode[6];char qq[12];}student[500];int num=0;FILE *fp;//函数说明int menu_select();//菜单选择int creat();//链表创建int insert();//插入int del();//删除int search();//查询int change();//修改int devise();//选择修改int list();//显示int save();//文件保存//主函数void main(){system("color 9E");for(;;){switch(menu_select()){case 0:adduser();break; case 1:creat();break; case 2:insert();break; case 3:del();break;case 4:search();break;case 5:change();break; case 6:list();break;case 7:save();break;case 8:exit(0);}}}/********************//*菜单选择函数程序*/int menu_select(){int a;system("cls");printf("\t\t 通讯录管理系统\n");printf("\t\t====================================\n"); printf("\t\t 0.通讯录记录的输入\n");printf("\t\t 1.通讯录链表的建立\n");printf("\t\t 2.通讯录链表的插入\n");printf("\t\t 3.通讯录链表的删除\n");printf("\t\t 4.通讯录链表的查询\n");printf("\t\t 5.通讯录链表的修改\n");printf("\t\t 6.通讯录链表的输出\n");printf("\t\t 7.通讯录链表的保存\n");printf("\t\t 8.退出管理系统\n");printf("\t\t====================================\n"); printf("\t\t 请选择0-8:\n");for(;;){scanf("%d",&a);if(a<0||a>8)printf("\n\t输入错误,重选0-8");elsebreak;}return a;}/********************//********************//*通讯录表的记录输入*/adduser(){printf("\n\t\t**************** 请输入用户信息****************\n");printf("\n\t\t输入学号:");scanf("%s",&student[num].numb);printf("\n\t\t输入姓名:");scanf("%s",&student[num].name);printf("\n\t\t输入性别:");scanf("%s",&student[num].sex);printf("\n\t\t输入电话号码:");scanf("%s",&student[num].phone);printf("\n\t\t输入地址:");scanf("%s",&student[num].addr);printf("\n\t\t输入邮编:");scanf("%s",&student[num].postcode);printf("\n\t\t输入qq:");scanf("%s",&student[num].qq);num++;printf("\n\t\t是否继续添加?(Y/N):");if (getch()=='y')adduser();return(0);}/********************//********************//*通讯录链表的建立*/creat(){int i;if ((fp=fopen("student.txt","wb"))==NULL){printf("\n\t\t文件打开失败");}for (i=0;i<num;i++){if (fwrite(&student[i],sizeof(struct record),1,fp)!=1){printf("\n\t\t写入文件错误!\n");}printf("\n\t\t**************** 请输入用户信息****************\n");printf("\n\t\t输入学号:");scanf("%s",&student[num].numb);printf("\n\t\t输入姓名:");scanf("%s",&student[num].name);printf("\n\t\t输入性别:");scanf("%s",&student[num].sex);printf("\n\t\t输入电话号码:");scanf("%s",&student[num].phone);printf("\n\t\t输入地址:");scanf("%s",&student[num].addr);printf("\n\t\t输入邮编:");scanf("%s",&student[num].postcode);printf("\n\t\t输入qq:");scanf("%s",&student[num].qq);num++;printf("\n\t\t是否继续添加?(Y/N):");if (getch()=='y')adduser();return(0);}fclose(fp);printf("\n\t\t通讯录文件已保存");printf("\n\t\t按任意键退出程序\n\t\t"); exit(0);return(0);}/********************//********************//*通讯录链表的插入*/insert(){int i;if ((fp=fopen("1.txt","wb"))==NULL){printf("\n\t\t文件打开失败");}for (i=0;i<num;i++){if (fwrite(&student[i],sizeof(struct record),1,fp)!=1) {printf("\n\t\t写入文件错误!\n");}printf("\n\t\t**************** 请输入用户信息****************\n");printf("\n\t\t输入学号:");scanf("%s",&student[num].numb);printf("\n\t\t输入姓名:");scanf("%s",&student[num].name);printf("\n\t\t输入性别:");scanf("%s",&student[num].sex);printf("\n\t\t输入电话号码:");scanf("%s",&student[num].phone);printf("\n\t\t输入地址:");scanf("%s",&student[num].addr);printf("\n\t\t输入邮编:");scanf("%s",&student[num].postcode);printf("\n\t\t输入qq:");scanf("%s",&student[num].qq);num++;printf("\n\t\t是否继续添加?(Y/N):");if (getch()=='y')adduser();return(0);}fclose(fp);printf("\n\t\t通讯录文件已保存");printf("\n\t\t按任意键退出程序\n\t\t"); exit(0);return(0);}/********************//********************//*通讯录链表的删除*/del(){int i,j;int deletemark=0;char phone[12];printf("\n\t\t请输入要删除用户电话号码:"); scanf("%s",phone);if(num==0){printf("\n\t\t对不起,文件中无任何纪录"); printf("\n\t\t按任意键返回主菜单");getch();return;}for (i=0;i<num;i++){if (strcmp(student[i].phone,phone)==0){printf("\n\t\t以下是您要删除的用户纪录:");printf("\n\t\t学号: %s",student[i].numb);printf("\n\t\t姓名: %s",student[i].name);printf("\n\t\t性别: %s",student[i].sex);printf("\n\t\t电话: %s",student[i].phone);printf("\n\t\t地址: %s",student[i].addr);printf("\n\t\t邮编: %s",student[i].postcode); printf("\n\t\tqq: %s",student[i].qq);printf("\n\t\t是否删除?(y/n)");if (getch()=='y'){for (j=i;j<num-1;j++)student[j]=student[j+1];num--;deletemark++;printf("\n\t\t删除成功");printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')del();return;}elsereturn;}continue;}if (deletemark==0){printf("\n\t\t没有该用户的纪录"); printf("\n\t\t是否继续删除?(y/n)"); if (getch()=='y')del();return;}}/********************//********************//*通讯录链表的查询*/search(){int m;printf("\t\n请选择查询方式:\n");printf("\t┌──────┐\n");printf("\t│1------姓名│\n");printf("\t│2------电话│\n");printf("\t│3------地址│\n");printf("\t│4------返回│\n");printf("\t└──────┘\n");printf("请选择:");scanf("%d",&m);while(m!=1&&m!=2&&m!=3&&m!=4){printf("输入错误,请重新选择:");scanf("%d",&m);}if(m==1){int i,j;int deletemark=0;char name[12];printf("\n\t\t请输入要查询的姓名:");scanf("%s",name);if(num==0){printf("\n\t\t对不起,文件中无任何纪录"); printf("\n\t\t按任意键返回主菜单");getch();return;}for (i=0;i<num;i++){if (strcmp(student[i].name,name)==0){printf("\n\t\t以下是您要查询的用户纪录:");printf("\n\t\t学号: %s",student[i].numb);printf("\n\t\t姓名: %s",student[i].name);printf("\n\t\t性别: %s",student[i].sex);printf("\n\t\t电话: %s",student[i].phone);printf("\n\t\t地址: %s",student[i].addr);printf("\n\t\t邮编: %s",student[i].postcode); printf("\n\t\tqq: %s",student[i].qq);}if (deletemark==0){printf("\n\t\t是否继续查询?(y/n)");if (getch()=='y')search();return;}}}if(m==2){int i,j;int deletemark=0;char phone[12];printf("\n\t\t请输入要查询的电话:");scanf("%s",phone);if(num==0){printf("\n\t\t对不起,文件中无任何纪录"); printf("\n\t\t按任意键返回主菜单");getch();return;}for (i=0;i<num;i++){if (strcmp(student[i].phone,phone)==0){printf("\n\t\t以下是您要查询的用户纪录:"); printf("\n\t\t学号: %s",student[i].numb); printf("\n\t\t姓名: %s",student[i].name); printf("\n\t\t性别: %s",student[i].sex);printf("\n\t\t电话: %s",student[i].phone);printf("\n\t\t地址: %s",student[i].addr);printf("\n\t\t邮编: %s",student[i].postcode); printf("\n\t\tqq: %s",student[i].qq);}if (deletemark==0){printf("\n\t\t是否继续查询?(y/n)");if (getch()=='y')search();return;}}}if(m==3){int i,j;int deletemark=0;char addr[12];printf("\n\t\t请输入要查询的地址:");scanf("%s",addr);if(num==0){printf("\n\t\t对不起,文件中无任何纪录");printf("\n\t\t按任意键返回主菜单");getch();return;}for (i=0;i<num;i++){if (strcmp(student[i].addr,addr)==0){printf("\n\t\t以下是您要查询的用户纪录:");printf("\n\t\t学号: %s",student[i].numb);printf("\n\t\t姓名: %s",student[i].name);printf("\n\t\t性别: %s",student[i].sex);printf("\n\t\t电话: %s",student[i].phone);printf("\n\t\t地址: %s",student[i].addr);printf("\n\t\t邮编: %s",student[i].postcode); printf("\n\t\tqq: %s",student[i].qq);}if (deletemark==0){printf("\n\t\t是否继续查询?(y/n)"); if (getch()=='y')search();return;}}}}/********************//********************//*通讯录链表的修改*/change(){int i,j;int numble=0;char numb[11];printf("\n\t\t请输入要修改的学号:");scanf("%s",numb);if(num==0){printf("\n\t\t对不起,文件中无任何纪录"); printf("\n\t\t按任意键返回主菜单");getch();return;}for (i=0;i<num;i++){if (strcmp(student[i].numb,numb)==0){printf("\n\t\t以下是您要修改的用户纪录:"); printf("\n\t\t学号: %s",student[i].numb); printf("\n\t\t姓名: %s",student[i].name); printf("\n\t\t性别: %s",student[i].sex);printf("\n\t\t电话: %s",student[i].phone);printf("\n\t\t地址: %s",student[i].addr);printf("\n\t\t邮编: %s",student[i].postcode); printf("\n\t\tqq: %s",student[i].qq);printf("\n\t\t是否修改?(y/n)");if (getch()=='y'){devise ();return;}elsereturn;}continue;}if (numble==0){printf("\n\t\t没有该用户的纪录");printf("\n\t\t是否继续修改?(y/n)");if (getch()=='y')change();return;}}devise (){int choice;choice = -1;do{printf("请选择您要修改的学生的信息内容:\n"); printf("+----------------------+\n"); printf("| 学号请按 1 |\n");printf("| 姓名请按 2 |\n");printf("| 性别请按 3 |\n");printf("| 电话请按 4 |\n");printf("| 地址请按 5 |\n");printf("| 邮编请按 6 |\n");printf("| qq 请按 7 |\n");printf("| 取消请按 0 |\n"); printf("+----------------------|\n");printf("请输入您的选择:");scanf("%d", &choice);switch (choice){case 0:return;case 1:printf("请输入学号:");scanf("%s", &student[num].numb);break;case 2:printf("请输入姓名:");scanf("%d", &student[num].name);break;case 3:printf("请输入性别:");scanf("%s", &student[num].sex);break;case 4:printf("请输入电话:"); scanf("%s", &student[num].phone);break;case 5:printf("请输入地址:"); scanf("%s", &student[num].addr);break;case 6:printf("请输入邮编:"); scanf("%lf", &student[num].postcode); break;case 7:printf("请输入qq:");scanf("%s",&student[num].qq );break;default:printf("\n无效选项!");break;}}while(choice != 0);}/********************//********************//*通讯录链表的输出*/list(){int i;system("cls");if(num!=0){printf("\n\t\t*************** 以下为通讯录所有信息************");for (i=0;i<num;i++){printf("\n\t\t学号: %s",student[i].numb);printf("\n\t\t姓名: %s",student[i].name);printf("\n\t\t性别: %s",student[i].sex);printf("\n\t\t电话: %s",student[i].phone);printf("\n\t\t地址: %s",student[i].addr);printf("\n\t\t邮编: %s",student[i].postcode);printf("\n\t\tqq: %s",student[i].qq);printf("\t\t");if (i+1<num){printf("\n\t\t__________________________");system("pause");}}printf("\n\t\t***************************************** *******");}elseprintf("\n\t\t通讯录中无任何纪录");printf("\n\t\t按任意键返回主菜单:");getch();return(0);}/********************//********************//*通讯录链表的保存*/save(){int j;FILE *fp;fp=fopen("student.txt","w");if (fp==NULL)printf("can't open the file.");if(num!=0){for(j=0;j<num;j++){fwrite(student,sizeof(student),1,fp); }}printf("保存成功!"); fclose(fp);return(0);}/********************/。