通讯录管理系统的设计与实现

合集下载

通讯录管理系统设计报告

通讯录管理系统设计报告

通讯录管理系统设计报告一、引言通讯录在日常生活中扮演着重要的角色,用来存储和管理各种联系人信息,方便人们随时找到需要联系的人或组织。

随着移动互联网的普及,通讯录的管理变得更加便捷和高效。

为了提高通讯录的管理效率,我们设计并开发了一款通讯录管理系统。

二、系统概述通讯录管理系统是一个基于Web的应用程序,用户可以通过浏览器访问系统,进行通讯录的管理操作。

系统主要包括以下功能:•用户登录与注册:用户可以注册新账号,并通过账号密码登录系统。

•联系人管理:用户可以添加、编辑、删除联系人信息,包括姓名、电话号码、邮箱等。

•分组管理:用户可以创建分组并将联系人归类到不同分组。

•搜索功能:用户可以通过关键词搜索联系人信息。

•导出和导入功能:用户可以将联系人信息导出为Excel表格,并可以通过Excel文件导入联系人到系统中。

三、系统架构通讯录管理系统采用了前后端分离的架构,前端使用Vue.js框架开发,提供友好的用户界面;后端使用Node.js和Express框架搭建RESTful API,负责数据的存储和管理。

系统中的数据存储在MySQL数据库中,用户的密码使用bcrypt进行加密存储,确保用户信息的安全性。

同时,系统对用户权限进行了细致管理,保障用户在系统中的数据安全。

四、系统界面系统的界面设计简洁直观,用户可以轻松进行操作。

主要包括登录页面、通讯录首页、联系人管理页面、分组管理页面等。

用户登录页面:[登录页面截图]通讯录首页:[通讯录首页截图]联系人管理页面:[联系人管理页面截图]五、系统特色•简洁高效:系统操作简单直观,提供了快速的联系人管理功能。

•个性化定制:用户可以根据自己的需求创建分组,快速查找联系人。

•数据安全:采用了加密技术和权限管理,确保用户数据的安全性。

•导入导出功能:支持Excel文件导入导出,方便用户管理大批量联系人信息。

六、未来展望通讯录管理系统将继续进行优化和迭代,引入更多智能化功能,如联系人推荐、消息提醒等,提升用户体验。

Java通讯录管理系统设计报告

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.数据的持久化存储二、系统设计1. 数据结构设计为了实现学生通讯录管理系统的功能,我们需要设计以下数据结构:•学生信息结构体包括学号、姓名、性别、年龄等字段•通讯录信息结构体包括联系人姓名、电话号码、邮箱等字段2. 算法设计2.1 添加学生信息当用户选择添加学生信息时,系统会要求用户输入学号、姓名、性别、年龄等信息,然后将这些信息存储在学生信息的数据结构中。

void addStudentInfo() {// 读取用户输入的学生信息// 将学生信息存储在学生信息结构体中}2.2 修改通讯录信息用户可以根据联系人姓名查找通讯录信息,并进行修改操作,比如修改电话号码、邮箱等内容。

void modifyContactInfo() {// 根据联系人姓名查找通讯录信息// 用户进行修改操作}2.3 删除通讯录信息用户可以根据联系人姓名删除通讯录信息。

void deleteContactInfo() {// 根据联系人姓名删除通讯录信息}3. 数据存储设计为了持久化存储数据,我们可以选择使用文件存储或数据库存储。

在本系统中,我们选择文件存储的方式,数据以文本的形式存储在文件中。

三、系统实现通过以上设计,我们可以开始实现学生通讯录管理系统。

在实现过程中,我们需要注意保证数据结构的正确性和数据操作的合法性,从而确保系统的稳定性和可靠性。

四、总结通过本次数据结构课程设计,我们深入了解了学生通讯录管理系统的实现原理和功能设计。

在接下来的学习中,我们将继续努力提升自己的编程能力,不断完善系统的功能和性能,为实现更多复杂系统打下坚实的基础。

数据结构课程设计通讯录管理系统

数据结构课程设计通讯录管理系统

数据结构课程设计通讯录管理系统一、系统需求分析通讯录管理系统的主要目标是提供一个方便、高效的方式来管理联系人信息。

具体需求包括: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;}```六、系统测试在完成系统的开发后,需要进行全面的测试以确保系统的稳定性和可靠性。

通讯录管理系统设计与实现

通讯录管理系统设计与实现

1引言通讯录是用来记载、查询联系人通讯信息的工具。

电子通讯录已成为手机、电子词典等电子设备中不可缺少的工具软件。

通讯录管理系统能有效地管理通讯录相关信息,包括输入、查询、添加、修改、删除等功能,该软件给用户提供了一个简单的人机界面,用户可以根据提示信进行各种操作。

本次设计使用的编程语言是C语言。

通过设计"通讯录管理系统"使其具有数据输入、修改、删除、添加、显示和查询等功能。

我们可以进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法。

这个设计可以使我们掌握软件设计的基本内容和设计方法;使我们的软件设计的能力得到规范;使我们掌握使用各种计算机资料和有关参考资料,提高我们进行程序设计的基本能力。

2问题分析本题目主要涉及线性表的基本操作。

通讯录中的记录通常按记载顺序先后有序,因此选用线性表;如果考虑到很少删除联系人,并且新增联系人又添加在表尾,则可采用顺序表;但是如果考虑到在任何位置插入或删除操作,因涉及经常性的插入和删除,则应优先考虑采用链表。

通过上述分析,我选择了单链表存储结构,通讯录存储结构如下struct record{char name[20];char phonenum[20];char type[20];char email[20];}student[50];struct slnode{record date;struct slnode *next;struct slnode *prior;};typedef slnode * linklist;linklist l;通讯录中需要有查询功能、增加功能、删除功能和修改功能,所以要建立具有这些功能的子函数,对程序实现模块化。

这其中要用到对链表的删除、插入等知识。

删除时用一结构体指针指向链表的第一个结点,检查该节点的值是否等于输入的要删除的,若相等就删除,不相等则后移指针,直至表尾。

桌面通讯录管理系统的 设计与实现

桌面通讯录管理系统的 设计与实现

北京师范大学毕业论文(设计)论文(设计)题目桌面通讯录管理系统的设计与实现院(系):信息科学与技术学院专业:计算机科学与技术专业学号:0632133015学生姓名:张荣荣指导教师:尹乾指导教师职称:副教授指导教师单位:信息科学与技术学院2009 年11 月01 日目录绪论 (4)第一章、概述 (5)1.1 数据库及其应用 (5)1.2 数据库系统 (5)1.3 数据库系统简介 (6)第二章、数据库系统设计 (7)2.1数据库设计概述 (7)2.2数据库设计周期 (7)第三章、图书管理系统具体设计 (8)3.1 图书管理系统总体规划 (8)3.2需求分析 (9)3.3功能设计 (11)3.4逻辑设计 (11)3.5物理设计 (12)第四章、数据库实现 (13)4.1数据库的建立 (13)4.2数据库应用程序的实现 (16)4.3桌面通讯录管理系统的调试 (37)4.4桌面通讯录管理系统其它设计工作 (38)第五章、结束语 (40)参考文献 (41)桌面通讯录管理系统的设计与实现摘要本文介绍了数据库管理系统的基本设计方法,详细阐述了整个应用系统的设计思路,并对各部分设计周期进行了详尽的分析,最终达成了一个完整的设计方案;在文章的最后,还根据数据库系统的调试结果,提出了可以进一步改进的部分,以便在投入实际应用后系统可以更加稳定可靠的工作。

本文的数据库系统是一个桌面通讯录管理系统,包括查看界面和管理界面,分别有添加、删除、查看等功能。

通讯录管理是同学们都熟悉的内容,在这个项目中,可以通过自己设计的表单对一个简单的数据表进行管理,包括添加、修改、删除以及查询等功能,最后生成一个可执行文件,并在桌面上创建一个快捷方式,随时使用这个应用程序去管理通讯录。

关键字桌面通讯录管理系统数据库系统AbstractThis article describes the basic design of the database management system approach, elaborated the entire application system design ideas, and all parts of the design cycle of a detailed analysis, and finally reach a complete design; in the article Finally, according to the database system debugging results, further improvements can be made part of the post in order to put into practical application systems can be more stable and reliable work.This database system is a desktop address book management system, including the view interface and management interface, respectively, add, delete, view and other functions.Address book management is the students are familiar with the content, in this project, you can form their own design for a simple data table management, Including add, modify, delete, and query functions, ultimately producing an executable file, and create a shortcut on the desktop, ready to use this application to manage contacts.KeywordsDesktop Address Book Management System Database System绪论通讯录管理是同学们都熟悉的内容,在这个项目中,可以通过自己设计的表单对一个简单的数据表进行管理,包括添加、修改、删除以及查询等功能,最后生成一个可执行文件,并在桌面上创建一个快捷方式,随时使。

通讯录管理系统

通讯录管理系统

通讯录管理系统一、引言随着科技的不断发展,电子设备的运用愈发广泛,通讯工具也从最早的电话、传真、邮件演变到如今的移动电话、微信等APP软件。

同时,人们通讯的宽带和速度也得到了很大的进步,这里提到的速度指的是通讯的速度和传输的速度。

在日常生活中,人们需要不断联系和交流,而一个完善的通讯管理系统能够辅助人们做到这一点。

二、通讯录管理系统的概述通讯录管理系统是一个集成化的系统,它包括通讯录的建立、搜索、编辑、删除等基本功能,同时也有通讯录的导入、导出、备份、恢复等高级功能。

对于个人而言,通讯录管理系统是一个非常有用的工具,可以让我们对日常生活中的联系人实现精细化管理。

对于企业和组织而言,通讯录管理系统则是一个不可或缺的管理工具,它可以让企业和组织对内外联系人进行统一管理,提高工作效率,实现快速响应与灵活沟通。

三、通讯录管理系统的需求分析1. 用户管理需求通讯录管理系统的用户一般包括个人、企业和组织等,他们的管理需求有所不同,例如个人通讯录管理系统需要支持用户自主导入、导出、备份、恢复,企业通讯录管理系统需要支持管理员进行用户管理和权限控制等。

2. 数据整合需求通讯录管理系统需要支持将人员信息从不同的来源整合到一个集中的库中,这可以通过数据导入、数据同步、数据抓取等方式实现。

3. 可扩展性和可定制化需求通讯录管理系统应该具有良好的可扩展性和可定制化的能力,以满足企业和组织不同的需求。

4. 安全性需求通讯录管理系统需要具有安全性,防止数据泄漏和恶意攻击等安全问题,同时还要实现数据备份、数据恢复等功能。

五、通讯录管理系统的设计1. 系统结构设计通讯录管理系统应该是一个分层结构的系统,分为表示层、业务层、数据访问层和数据存储层四个层级。

其中,表示层为用户提供了用户界面,业务层处理用户请求,数据访问层为业务层提供数据访问接口,数据存储层则负责数据存储管理。

2. 系统模块设计通讯录管理系统主要包括三个模块:用户管理模块、通讯录管理模块和数据备份恢复模块。

通讯录管理系统毕业设计(两篇)2024

通讯录管理系统毕业设计(两篇)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. 修改联系人信息:用户可以对已有联系人信息进行修改和更新。

4. 删除联系人信息:用户可以选择删除不需要的联系人信息。

5. 显示所有联系人信息:系统可以按照一定的格式将所有联系人信息展示给用户。

三、系统设计1. 数据结构为了存储联系人信息,我们可以使用一个包含姓名、电话号码、电子邮件地址等字段的结构体来表示每个联系人。

可以使用链表或数组来组织所有联系人信息。

2. 模块设计通讯录管理系统可以划分为以下几个模块: - 添加联系人模块:实现添加新联系人信息的功能。

- 查找联系人模块:实现根据关键词查找联系人信息的功能。

- 修改联系人模块:实现对已有联系人信息进行修改和更新的功能。

- 删除联系人模块:实现删除不需要的联系人信息的功能。

- 显示联系人模块:实现将所有联系人信息按照一定格式展示给用户的功能。

3. 用户界面设计用户界面应该简洁明了,包括各个功能的按钮或选项,以及输入框和显示信息的区域。

用户应该能够方便地进行各种操作和查看联系人信息。

四、系统实现1. 数据存储可以使用文件来存储联系人信息,也可以使用数据库来进行数据持久化。

2. 界面实现可以使用图形界面或命令行界面来实现用户交互功能,不同的界面设计会影响用户体验。

3. 功能实现根据需求分析中的功能,实现各个模块的功能代码,确保系统可以正确地完成相关操作。

五、功能测试在系统实现完毕后,需要进行功能测试,确保系统的各个功能都能正常运行,并且符合需求。

(完整word版)C通讯录管理系统的设计与实现..

(完整word版)C通讯录管理系统的设计与实现..

目录摘要 0关键词 0第一章绪论 (1)1.1课题背景 (1)1.2 目的和意义 (1)第二章需求分析 (2)2.1 范围 (2)(1) 标识 (2)(2) 系统概述 (2)2.2 需求概述 (2)(1) 系统目标 (2)(2) 运行环境 (2)①设备 (2)②支持程序 (3)③用户的特点 (3)2.3功能需求 (3)(1)功能介绍 (3)(2) 系统用例图 (4)2.4实体关系图 (4)第三章概要设计 (6)3.1 范围 (6)(1) 标识 (6)(2) 系统概述 (6)3.2 系统结构 (6)3.3 通讯录界面设计 (7)第四章系统详细设计 (8)4.1 范围 (8)(1) 标识 (8)(2) 系统概述 (8)4.2 详细设计说明 (8)第五章测试说明 (21)5.1 范围 (21)(1) 标识 (21)(2) 系统概述 (21)5.2 测试计划及预期结果 (21)5.3 具体测试情况 (21)第六章总结 (25)参考文献 (26)通讯录的设计与实现摘要随着互联网的不断发展,互联网对我们生活产生的影响越来越大。

在日常的生活中,我们需要接触很多不同的人,如何运用互联网技术实现朋友圈通讯录的管理呢?这是我们日常生活中经常要面临的问题。

本次毕业设计中设计的通讯录管理系统既可以实现对通讯录进行管理,在本地进行通讯录的增加、修改、删除、更新等操作。

本次设计的通讯录管理系统主要是了解通讯录管理系统的业务逻辑,熟悉通讯录管理系统的实现方式,模拟了真实的通讯录管理软件,为后续相关内容的学习打下了坚实的基础。

通讯录管理系统是一个专门针对少用户的实用系统,它方便了大家对众多信息的储存和快速查询的功能,大大减少了查找过程的时间,是一个比较实用的通讯录管理系统,。

对我们后续学习移动端的通讯录管理也会有很大的帮助。

本设计使用的计算机语言是C++,C++语言是在C语言的基础上作了进一步的强化。

C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。

学生通讯录管理系统

学生通讯录管理系统

学生通讯录管理系统 IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】“学生通讯录管理系统”的设计与实现1、设计要求问题描述纸质的通讯录已经不能满足大家的要求,容易丢失、查找困难等问题是纸质通讯录所不能克服的缺点。

“学生通讯录管理系统”是为了帮助老师、同学,或者其他一些需要使用通讯录的人员进行管理和分析的一种应用程序。

需求分析(1)输入数据建立通讯录。

(2)查询通讯录中满足要求的信息。

(3)插入新的通讯录信息。

(4)删除不需要的通讯录信息。

(5)查看所有的通讯录信息。

2、概要设计为了实现需求分析中的功能,可以从三个方面着手设计。

主界面设计为了实现学生通讯录系统各功能的管理,设计一个含有多个菜单项的主控菜单子程序以链接系统的各项子功能,方便用户使用本系统。

本系统主控菜单运行界面如下图所示:*************************欢迎使用通讯录系统****************************** 1 通讯录的建立 ** 2 插入通讯记录 ** 3 查询通讯记录 ** 4 删除通讯记录 ** 5 显示通讯录信息 ** 0 退出管理系统 ***************************欢迎使用通讯录系统****************************请选择0-5:存储结构设计本系统主要采用链表结构类型来表示存储在“学生通讯录管理系统”中的信息。

其中,链表结点由四个分量构成:通讯录成员学号、通讯录成员姓名、通讯录成员电话号码、指向该结构体的指针。

此外,系统还设置了一个全局变量seat,表示通讯录中成员的序号。

系统功能设计本系统设置了五个子功能菜单,五个子功能的设计描述如下。

(1)建立通讯录系统。

可以一次输入多个成员通讯录的信息,建立通讯录。

该功能由creatIncreLink( )函数实现。

(2)插入通讯记录。

每次可以插入一个成员通讯录的信息。

学生通讯录管理系统设计(数据结构)

学生通讯录管理系统设计(数据结构)

学生通讯录管理系统设计(数据结构)一、总体设计1、系统开发环境本系统采用C++语言,运行在Windows平台上,数据库采用MySQL。

2、系统功能(1)登陆:系统登录,验证用户名/密码,权限认证等。

(2)新增:新增学生通讯录信息,包括姓名、联系电话、地址、备注等信息。

(3)修改:修改学生通讯录信息,可以修改学生姓名、联系电话、地址等信息。

(4)删除:删除学生通讯录信息,可以根据姓名、联系电话删除学生的通讯录信息。

(5)查询:可以根据姓名、联系电话查询学生的通讯录详细信息。

(6)权限管理:根据用户类别对不同用户进行不同级别的权限管理。

(7)数据管理:根据学生查询,统计学生的报表信息和查询结果,可以对学生的通讯录数据实行一定的数据管理。

3、数据结构用于存储、管理学生通讯录信息的数据结构,采用链表法。

首先将学生信息定义为一个结构体,包含学生的姓名、联系电话、联系地址等信息,此构造体可存储学生一种或者多种信息;然后建立一个学生链表来存储学生信息,每个结点中存放学生结构体,在链表末尾增加一个指向学生链表头结点的指针,即实现了学生通讯录的输出。

二、模块分解1、登录模块实现用户名/密码的验证,权限的认证,权限管理等功能。

2、新增模块用于实现新增学生信息,信息包括姓名、联系电话、联系地址等,并将学生信息存放到学生链表中。

4、删除模块用于实现删除学生信息,使用链表的查找、删除等来实现。

6、权限管理模块用于实施对不同用户类别的权限管理,实现对不同用户类别的权限管理,保证数据的安全。

7、数据管理模块用于实施对学生数据的安全,统计报表信息,数据标准化处理。

通讯录管理系统的设计与实现

通讯录管理系统的设计与实现

通讯录管理系统设计与实现一、内容和要求(1)完成通信录信息的管理,包括添加、修改、删除、查询功能。

尽量丰富联系人的各项信息。

(2)能够根据联系的信息单独或分类查询。

(3)联系人的生日提醒功能。

(4)数据存储功能可以使用文件的块读写操作完成,也可以使用SQLite数据库(要学习如何用C/C++连接SQLite数据库)二、需求分析(1)添加:在系统中添加新成员,并保存在文件“通讯录.txt”中;(2)修改:读入要修改成员的姓名,按照提示进行修改;(3)删除:读入要删除成员的姓名,将进行删除;(4)保存:将所有成员数据保存在文件“通讯录.txt”中;(5)查找:读入要查找成员的姓名,查找成员将显示在屏幕上;三、实现代码#include<iostream>#include<string>#include<fstream>using namespace std;static int count=0;class telephone{char name[20]; //姓名char number[17]; //电话号码char birthday[18]; //生日int year,month,day,hour,minute,age;public:telephone(char *na,char *nu,int y,int m,int d,int h,int mi,int a);telephone(){};// ~telephone();char *getname(); //获得姓名char *getnumber(); //获得电话号码int getyear(); //获得年份int getmonth(); //获得月份int getday(); //获得日int gethour(); //获得小时int getminute(); //获得分钟int getage(); //获得年龄void display(); //输出信息void input(); //添加信息void insert(); //插入信息void Delete(); //删除信息void change(); //改变信息static int getcount();};//int telephone::count=0;telephone::telephone(char *na,char *nu,int y,int m,int d,int h,int mi,int a){strcpy(name,na);strcpy(number,nu);year=y;month=m;day=d;hour=h;minute=mi;age=a;// count++;}char *telephone::getname() //获得姓名{return name;}char *telephone::getnumber() //获得电话号码{return number;}int telephone::getyear() //获得年份{return year;}int telephone::getmonth() //获得月份{return month;}int telephone::getday() //获得日{return day;}int telephone::gethour() //获得小时{return hour;}int telephone::getminute() //获得分钟{return minute;}int telephone::getage() //获得年龄{return age;}void telephone::display() //输出信息{cout<<"姓名:"<<name<<endl;cout<<"年龄:"<<age<<endl;cout<<"号码:"<<number<<endl;cout<<"生日:"<<hour<<":"<<minute<<" "<<year<<"-"<<month<<"-"<<day<<endl;}void telephone::input() //输入信息{char na[20];cout<<"输入姓名:";cin>>na;strcpy(name,na);cout<<"输入年龄:";cin>>age;cout<<"输入电话号码:";cin>>number;cout<<"输入生日(按时、分、年、月、日的顺序):";cin>>hour>>minute>>year>>month>>day;count++;}void telephone::insert () //插入信息{if(!age)input();}void telephone::Delete () //删除信息{strcpy(name,(this+1)->name);strcpy(number,(this+1)->number);hour=(this+1)->hour;minute=(this+1)->minute;year=(this+1)->year;month=(this+1)->month;day=(this+1)->day;age=(this+1)->age;count--;}void telephone::change() //改变信息{cout<<"please input again!"<<endl;input();}int telephone::getcount(){return count;}const int N=20;void menu();void createfile(char *a,telephone *array);void outputtel(telephone *array);void inputtel(telephone *array);int searchtel(telephone *array,char *na);bool inserttel(telephone *array);bool Deletetel(telephone *array,char *na);int main(){telephone array[N];int choice; //读入选项do{menu();cout<<"please input your choice:";cin>>choice;if(choice>=0 && choice<=6)switch(choice){case 1:inputtel(array); break;case 2:cout<<"input the name searched"<<endl;char na[20];cin>>na;int i;i=searchtel(array,na);if(i==N)cout<<"无此人!\n";elsearray[i].display();break;case 3:outputtel(array);break;case 4:if(inserttel(array))cout<<"成功插入一条记录!"<<endl;elsecout<<"插入失败!"<<endl;break;case 5:cout<<"input the name deleted:"<<endl;char na1[20];cin>>na1;// system("cls");if(Deletetel(array,na1))cout<<"成功删除一条记录!"<<endl;elsecout<<"删除失败!"<<endl;break;case 6:cout<<"input the name changed:"<<endl;cin>>na;i=searchtel(array,na);if(i==N)cout<<"没有此联系人,改变失败"<<endl;elsecout<<"被改变联系人的信息为:"<<endl;array[i].display ();cout<<"改变后的信息为:"<<endl;array[i].Delete ();array[i].change ();break;default:break;}}while(choice);createfile("通讯录.txt",array);return 0;}void menu() //定义菜单函数{cout<<"*********1.添加联系人*********"<<endl;cout<<"*********2.查询联系人信息*********"<<endl;cout<<"*********3.浏览联系人信息*********"<<endl;cout<<"*********4.插入联系人*********"<<endl;cout<<"*********5.删除联系人*********"<<endl;cout<<"*********6.改变联系人信息*********"<<endl;cout<<"*********0.退出*********"<<endl;}void createfile(char *a,telephone *array){ofstream outf(a);if(!outf){cout<<"can't open the file\n";return;}for(int i=0;i<count;i++){outf<<"姓名:";outf<<" "<<array[i].getname ()<<endl;outf<<"电话:";outf<<" "<<array[i].getnumber ()<<endl;outf<<"年龄:";outf<<" "<<array[i].getage ()<<endl;outf<<"生日:";outf<<" "<<array[i].gethour ()<<array[i].getminute();outf<<array[i].getyear ()<<"-"<<array[i].getmonth ()<<"-"<<array[i].getday ()<<endl;}outf.close ();}void outputtel(telephone *array) //输出对象信息{cout<<"学生总数="<<count<<endl;for(int i=0;i<count;i++)array[i].display();}int searchtel(telephone *array,char *na) //按姓名查找{int i,j=N;for(i=0;i<N;i++)if(strcmp(array[i].getname(),na)==0){j=i;break;}return j;}void inputtel(telephone *array) //输入对象元素{char ch;int i=0;do{if(telephone::getcount()==N)cout<<"人数已满,无法继续录入!"<<endl;if(!array[i].getage())array[i++].input();array[count].input();cout<<"继续输入吗?(Y or N)"<<endl;cin>>ch;}while(ch=='Y');}bool inserttel(telephone *array) //根据年龄插入{if(telephone::getcount()==N){cout<<"人数已满,无法插入!"<<endl;return false;}// else// for(int j=0;j<N;j++)// {// if(array[j].getage())// {// cout<<"无法插入!";// return false;// }// }for(int i=0;array[i].getage() ;i++);array[i].insert();return true;}bool Deletetel(telephone *array,char *na) //按姓名删除{if(telephone::getcount()==0){cout<<"没有记录,无法删除!"<<endl;return false;}int i=searchtel(array,na);if(i==N){cout<<"查无此人,无法删除!"<<endl;return false;}array[i].Delete();return true;}四、运行结果。

通讯录管理系统课程设计报告Java

通讯录管理系统课程设计报告Java

通讯录管理系统课程设计报告Java1. 简介通讯录管理系统是一种方便用户存储和管理联系人信息的工具。

本课程设计将使用Java语言开发一个简单的通讯录管理系统,实现对联系人信息的增删改查功能。

通过本项目的实践,学习者将掌握Java编程语言的基础知识和面向对象编程的技巧。

2. 功能需求通讯录管理系统应包含以下功能: - 添加联系人信息:用户可以输入联系人的姓名、电话号码、邮箱等信息添加到通讯录中。

- 显示所有联系人信息:系统能够展示所有已保存在通讯录中的联系人信息。

- 查找联系人信息:用户可以通过姓名或电话号码查找特定联系人的信息。

- 修改联系人信息:用户可以对已保存的联系人信息进行修改。

- 删除联系人信息:用户可以删除通讯录中的联系人信息。

实现以上功能需要设计相应的数据结构和算法,以及编写用户交互界面。

3. 技术实现3.1 数据结构在Java中,可以使用ArrayList或HashMap等数据结构来存储联系人信息。

ArrayList适用于有序的联系人列表,而HashMap适用于根据键值快速查找联系人信息。

3.2 用户交互界面用户交互界面可以通过Java的Swing或JavaFX等GUI工具包来实现。

设计一个简洁明了的界面,包含菜单栏、输入框、按钮等组件,以方便用户操作。

3.3 功能实现•添加联系人信息:用户输入信息后,将联系人信息添加到数据结构中。

•显示所有联系人信息:遍历数据结构,将所有联系人信息展示在界面上。

•查找联系人信息:根据用户输入的查询条件,在数据结构中查找对应的联系人信息。

•修改联系人信息:根据用户输入的修改信息,更新数据结构中相应的联系人信息。

•删除联系人信息:根据用户输入的删除条件,从数据结构中移除对应的联系人信息。

4. 总结通讯录管理系统是一个简单实用的应用程序,能够帮助用户有效管理联系人信息。

通过本课程设计,学习者将学习如何使用Java语言开发基本的应用程序,掌握面向对象编程的基本原理和技巧。

简单的c语言程序设计班级通讯录管理系统

简单的c语言程序设计班级通讯录管理系统

简单的c语言程序设计班级通讯录管理系统一、引言班级通讯录管理系统是一款基于C语言的简单程序,旨在帮助班级管理者更好地管理班级通讯录信息。

本文将从需求分析、系统设计、代码实现等方面详细介绍该系统。

二、需求分析1. 功能需求(1)添加联系人:可以添加新的联系人信息,包括姓名、性别、电话号码等。

(2)删除联系人:可以删除已有的联系人信息。

(3)修改联系人:可以修改已有的联系人信息,包括姓名、性别、电话号码等。

(4)查询联系人:可以根据姓名或电话号码查询已有的联系人信息。

(5)显示所有联系人:可以查看当前所有已有的联系人信息。

2. 性能需求(1)稳定性:程序应该具有较高的稳定性,不会因为输入错误或其他异常情况导致崩溃。

(2)响应速度:程序应该具有较快的响应速度,不会因为数据量过大或其他原因导致卡顿或延迟。

3. 可靠性需求(1)数据安全:程序应该具有较高的数据安全性,保证用户输入的数据不会被损坏或丢失。

(2)用户友好性:程序应该具有较好的用户友好性,使用户能够轻松使用。

三、系统设计1. 总体设计(1)系统结构:本系统采用单层结构,包含若干个函数模块。

(2)数据结构:本系统采用链表数据结构,将每个联系人信息存储在一个节点中,并通过指针将各个节点连接起来。

(3)界面设计:本系统采用命令行界面,用户可以通过输入不同的命令实现不同的功能。

2. 模块设计(1)添加联系人模块:该模块用于添加新的联系人信息,包括姓名、性别、电话号码等。

用户需要输入相应的信息后,程序将新建一个节点并将其插入到链表中。

(2)删除联系人模块:该模块用于删除已有的联系人信息。

用户需要输入要删除的联系人姓名或电话号码后,程序将在链表中查找相应节点并将其删除。

(3)修改联系人模块:该模块用于修改已有的联系人信息。

用户需要输入要修改的联系人姓名或电话号码后,程序将在链表中查找相应节点并允许用户修改其中的信息。

(4)查询联系人模块:该模块用于根据姓名或电话号码查询已有的联系人信息。

数据结构-通讯录管理系统的设计与实现汇总

数据结构-通讯录管理系统的设计与实现汇总

数据结构-通讯录管理系统的设计与实现汇总简介本篇文档介绍了如何使用数据结构实现一个简单的通讯录管理系统。

包括系统的需求分析、数据结构选择、程序设计与实现等方面。

需求分析通讯录管理系统的核心功能是记录联系人信息,包括姓名、电话号码、电子邮件地址等。

该系统需要支持以下操作:1.添加联系人2.删除联系人3.查找联系人4.修改联系人信息5.显示所有联系人除了核心功能以外,通讯录管理系统还需要具有以下扩展功能:1.根据姓名或电话号码排序2.将联系人信息导入/导出文件3.显示某个分组的联系人数据结构选择为了支持以上功能,我们需要选择合适的数据结构来存储联系人信息。

常见的数据结构有数组、链表、栈、队列、哈希表等。

对于通讯录管理系统,我们可以使用链表来存储联系人信息。

每个节点包含一个指向下一节点的指针和联系人信息。

这种方式可以方便地插入、删除联系人信息,同时节省存储空间。

排序可以使用快速排序(QSort)、归并排序等算法实现。

导入/导出文件可以使用文件读写操作实现。

分组显示则可以使用多个链表来分别存储不同分组的联系人信息。

程序设计与实现以下是通讯录管理系统的程序设计与实现的主要流程:1.定义联系人结构体,包含姓名、手机号、邮箱等字段。

2.定义联系人节点结构体,包含指向下一节点的指针和联系人信息结构体。

3.实现通讯录管理系统功能函数,包括添加联系人、删除联系人、查找联系人、修改联系人信息、显示所有联系人等。

4.实现排序算法,如快速排序和归并排序。

5.实现文件读写操作,包括将联系人信息导入/导出文件。

6.实现分组显示功能,使用不同链表存储不同分组的联系人信息。

以上是通讯录管理系统的设计与实现汇总。

在数据结构的选择上,我们选择了链表作为存储通讯录联系人信息的数据结构,使用排序算法进行排序,使用文件读写操作进行导入/导出操作,使用多个链表实现分组显示功能。

在功能实现上,分别实现了添加联系人、删除联系人、查找联系人、修改联系人信息、显示所有联系人等核心功能以及排序、导入/导出、分组显示等扩展功能。

学生通讯录管理系统课程设计报告

学生通讯录管理系统课程设计报告

学生通讯录管理系统课程设计报告一、课程设计背景学生通讯录管理系统是一个旨在帮助学生和教师更好地管理个人信息和通讯录的软件系统。

随着信息技术的不断发展,现代教育领域对教学、管理和学习等方面的要求越来越高,传统的纸质通讯录管理方式已经无法满足教育机构的需求。

因此,开发一个便捷、高效的学生通讯录管理系统成为当今教育信息化的重要课题。

二、需求分析学生通讯录管理系统主要包括以下功能模块:1.学生信息管理:用于录入、修改和删除学生个人信息,包括姓名、学号、性别、联系方式等;2.通讯录管理:实现通讯录的分类、查找、添加和删除功能,方便学生和教师进行联系;3.用户权限管理:设置不同权限等级的用户,如学生、教师和管理员,确保信息安全性;4.数据备份与恢复:对系统中的重要数据进行定期备份,保障数据的安全性;5.界面友好性:系统界面简洁明了,操作便捷,用户体验良好。

三、系统设计1. 系统架构学生通讯录管理系统采用客户端-服务器架构,客户端提供给学生和教师使用,服务器端用于存储核心数据和处理业务逻辑。

2. 数据库设计系统采用关系型数据库,主要包括以下表:•学生表(Student):包含学生的基本信息;•教师表(Teacher):包含教师的基本信息;•通讯录表(Contact):记录学生或教师之间的联系方式;•用户表(User):存储系统用户的账号信息和权限。

3. 功能实现(1)学生信息管理学生信息管理模块提供学生信息的增删改查功能,管理员可以对学生信息进行修改和删除,学生可以查看、修改自己的个人信息。

(2)通讯录管理通讯录管理模块支持对通讯录的分类和搜索功能,学生和教师可以添加、删除通讯录条目,并对通讯录进行管理。

(3)用户权限管理系统设定不同权限等级的用户,管理员有最高权限,可以管理用户账号和角色,确保系统的安全性。

四、系统实现系统采用Java语言进行开发,前端界面使用JavaFX技术,后端采用Spring框架实现业务逻辑,数据库连接采用JDBC等技术。

python通讯录管理系统课程设计

python通讯录管理系统课程设计

Python通讯录管理系统课程设计1. 介绍通讯录管理系统是一种用于存储和管理联系人信息的应用程序。

这个系统可以帮助用户更好地组织和查找联系人信息,提高通讯录管理的效率。

本课程设计将带领学生使用Python编程语言开发一个简单的通讯录管理系统。

通过设计这个系统,学生将学习到Python编程的基础知识,并能够应用它们解决实际问题。

2. 系统需求在开始开发之前,我们需要明确系统的需求。

下面是本课程设计所开发的通讯录管理系统的基本需求:•用户注册和登录功能:允许用户注册一个新账号并登录系统。

•联系人管理功能:允许用户添加、编辑、删除和搜索联系人信息。

•联系人信息包括:姓名、电话号码和邮箱地址。

•联系人信息的存储:使用文件来保存联系人信息,确保信息不会丢失。

3. 开发环境准备在开始开发之前,我们需要准备好相应的开发环境。

以下是所需的开发环境:•Python编程语言:确保已经安装了Python解释器。

•文本编辑器:用于编写代码的文本编辑器,例如Visual Studio Code 或Sublime Text。

•命令行界面:用于执行Python程序的命令行界面。

4. 系统设计4.1 用户注册和登录功能用户注册和登录功能是通讯录管理系统的核心功能之一。

下面是具体的设计步骤:1.用户注册功能:–提示用户输入用户名和密码。

–将用户名和密码保存到文件中作为登录凭证。

–如果用户名已存在,则提示用户重新输入。

–注册成功后,用户可以使用注册的用户名和密码登录系统。

2.用户登录功能:–提示用户输入用户名和密码。

–从文件中读取保存的用户名和密码进行验证。

–如果验证失败,则提示用户重新输入。

–登录成功后,显示联系人管理功能菜单。

4.2 联系人管理功能联系人管理功能是通讯录管理系统的核心功能之二。

下面是具体的设计步骤:1.联系人列表显示:–从文件中读取联系人信息并显示在界面上。

–如果联系人列表为空,则显示相应提示信息。

2.联系人添加功能:–提示用户输入联系人的姓名、电话号码和邮箱地址。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告课程设计名称:数据结构课程设计系:三系学生姓名:班级:学号:成绩:指导教师:开课时间:2011-2012学年一学期课程设计任务书课程名称:数据结构指导教师:专业班级:学生姓名:起止日期: 2012.12-2013.1 设计题目一:通讯录管理系统的设计与实现1 概述1.1现状分析课程设计是实践教学中的重要环节,它以某一门课程为基础,涉及和课程相关的各方面知识,是一门独立于课程外的特殊课程。

课程设计就是让所有同学对课程更全面的应用。

本次实验项目“通讯录管理”就是针对数据结构的一门应用较为广泛的系统管理方法。

1.2 实现意义本次实验应用性能很好,结构清楚,能随时添加、删除、查找、修改、输出联系人;并且可以用姓名、编号两种方式;而且其中增加了排序功能,使得插入之后排序为接下来的操作提供便利,操作更精确,以人性化的方式展现出来,效果十分突出。

2 系统分析编程完成通讯录的一般性管理工作如通讯录中记录的增加、修改、查找、删除、输出等功能。

每个记录包含编号、姓名、性别、电话号码、住址个人基本信息。

用《数据结构》中的链表做数据结构结合c语言基本知识编写一个通讯录管理系统。

本程序相对简单,使用方便,几乎不用特殊的命令,只需按提示输入即可。

对于建立通讯录管理系统,则需了解并掌握数据结构与算法的设计方法,尤其在算法方面,链表及结点的联系,提高综合运用所学的理论知识和方法独立分析和解决问题的能力。

3 概要设计3.1算法的设计本实验从整体上分为七大模块:(1)通讯录链表的建立;(2)通讯者结点的插入;(3)通讯者结点的查询;(4)通讯者结点的删除;(5)通讯者结点的修改;(6)通讯录链表的输出;(7)退出通讯录管理通讯者结点的删除系统。

3.2 通讯录系统图系统功能模块图如图所示:4 详细设计4.1 主菜单模块设计编写一个主控菜单驱动程序,输入0—6以进入相应选择项。

1. 实现循环和功能选择假设输入选择用变量k ,它作为0-6之间的一个输入变量,由getchar 读入,提供给switch 语句。

使用while 语句循环实现重复选择,并在主函数void main( )中实现。

2.得到k 的合理值设计一个函数用来输出提示信息和处理信息输入,这个函数应该返回一个数值k ,以便供给switch 语句使用。

对于k 输入值,在switch 中case 语句对应数字0—6,在swith 语句中再调用相应的函数,使得程序得以执行,对于不符合要求的输入,提示输入错误并要求重新输入。

主菜单 创建通讯录 插入通讯录查找通讯录删除通讯录输出通讯录退出通讯录修改通讯录系统功能模块图4.2 通讯录建立模块设计1.系统用到的数据有:char number[5]; //编号char name[20]; //姓名char sex[10]; //性别char telephone[20]; //电话char address[20]; //地址函数:LinkList CreateList(void); //实现通讯录链表的建立功能void InsertNode(LinkList head,ListNode *p); //实现通讯录结点的插入void PaixuNode(linklist *&l); //信息按编号排序ListNode *ListFind(LinkList head); //实现通讯录结点的查找void DeleteNode(LinkList head); //实现通讯录结点的删除void ModifyNode(LinkList head); //实现通讯录结点的修改void PrintList(LinkList head); //实现通讯录结点的输出*/2.我们知道的建立链表有两种方法,一种为头插入法,一种为尾插入法。

头插入法是每次将新插入的结点插在链表的表头,而尾插入法是将新插入的结点插入在链表的尾部。

我们这里用尾插入法描述算法。

(1) 使链表的头尾指针head、rear指向新生成的头结点(也是尾结点);(2) 置结束标志为0(假);(3)while(结束标志不为真){P指向新生结点;读入一个通讯者数据至新结点的数据域;将新结点链接到尾结点之后;使为指针指向新结点;提示:是否结束建表,读入一个结束标志;}(4) 尾结点指针域置空值NULL。

具体算法如下:/-------------------------------------------------------//* 用尾插入法建立通讯录链表函数*//------------------------------------------------------/LinkList CreateList(void){//尾插入法建立带头结点的通讯录链表算法LinkList head=(ListNode *)malloc(sizeof(ListNode));//申请头结点ListNode *p,*rear;int flag=0; //结束指标置0rear=head; //尾指针初始化指向头结点while(flag==0){ p=(ListNode *)malloc(sizeof(ListNode));//申请新结点printf("编号(1) 姓名(2) 性别电话(4) 地址(5)\n");printf("-----------------------------------------------------------\n");scanf("%s%s%s%s%s",p->data.num,p->,p->data.sex,p->data.phone,p->data.addr);rear->next=p; //新结点连接到尾结点之后rear=p; //尾指针指向新结点printf("结束建表吗?(1/0):");scanf("%d",&flag); //读入一个标志数据}rear->next=NULL; //终端结点指针域置空return head; //返回链表头指针}4.3 通讯录插入模块设计插入结点的基本思想是:使用两个指针变量p1和p2分别指向当前访问过的结点和下一个待访问的结点,循环顺序查找链表,寻找插入结点的位置,其中p1指向待插入结点的前一个结点。

(1)用p1指向原链表头结点,p2指向链表的第一个结点;(2)while(p2=NULL && p2->data.num<p->data.num){p1=p2; //p1指向刚访问过的结点;p2=p2->next; //p2指向表的下一个结点(3)插入新结点。

具体算法如下:/-------------------------------------------------------//*在通讯录链表head中插入结点*//-------------------------------------------------------/void InsertNode(LinkList head,ListNode *p){ListNode *p1,*p2;p1=head;p2=p1->next;while(p2!=NULL && strcmp(p2->data.num,p->data.num)<0){p1=p2; //p1指向刚访问过的结点p2=p2->next; //p2指向表的下一个结点}p1->next=p; //插入p所指向的结点p->next=p2; //连接表中剩余部分}4.4 通讯录查询模块设计查询的基本思想是:首先输入要查找的通讯者的编号或姓名,从表头顺序访问表中结点。

如查找成功,则返回一个指向查找到的通讯者信息的结点;若查找失败,则返回一个空的指针值NULL。

当按编号好查找时,如需要查找的通讯者编号不在表中,则不一定需要循环才比较到表尾,因为表是按编号递增有序的;而当按姓名查找时,这要循环比较到表尾,才能确定查不到的情况。

具体算法如下:/-------------------------------------------------------//* 有序通讯录链表上的查找*//-------------------------------------------------------/ListNode * ListFind(LinkList head){//有序通讯录链表上的查找ListNode *p;char num[5];char name[9];int xz;printf("----------------------------n");printf(" 1. 按编号查询\n");printf(" 2. 按姓名查询\n");printf("----------------------------\n");printf(" 请选择1/2:");p=head->next; //假定通讯录表带有结点scanf("%d",&t);if(t==1){printf("请输入要查找者的编号:");scanf("%s",num);while(p && strcmp(p->data.num,num)<0)p=p->next;if(p==NULL || strcmp(p->data.num,num)>0)p=NULL; //没有查到要查找的通讯者}elseif(t==2) {printf("请输入要查找者的姓名: ");scanf("%s",name);while(p && strcmp(p->,name)!=0)p=p->next;}return p;}4.5 通讯录删除模块设计删除的基本思想是:先调用查找函数,查询到要删除的结点,删除结点即可。

算法如下:/*****************************//* 通讯录链表上的结点的删除*//*****************************/void DelNode(LinkList head){char s;ListNode *p,*q;p=ListFind(head);//调用查找函数if(p==NULL){printf("没有查到要删除的通讯者!\n");return;}printf("%s%s%s%s%s\n",p->data.number ,p->,p->data.sex,p->data.telephone, p->data.address);printf("真的要删除该结点吗?(y/n) : ");scanf("%s",&s);if(s=='y'){ q=head;while(p!=NULL && q->next!=p)q=q->next;q->next=p->next;//删除结点free(p); //释放被删除的结点空间printf("通讯者已被删除!\n");return; }printf("通讯者没有被删除!\n");}4.6通讯录修改模块设计修改的基本思想是:先调用查找函数,查询到要修改的结点,修改从新输入结点即可。

相关文档
最新文档