通讯录管理系统的设计与实现
c语言实现通讯录管理系统(用链表实现)
c语⾔实现通讯录管理系统(⽤链表实现)题⽬:通讯录(通过链表实现)设计并实现⼀个简易的通讯录软件,管理个⼈通讯记录。
⼀条通讯记录可包括:姓名、⼯作单位、⼿机、住宅电话、E-Mail、家庭住址等(可⾃⾏增删,但不可过少)。
该系统应实现以下基本功能:(1)增加新的通讯记录。
(2)删除已有的通讯记录。
(3)修改已有的通讯记录。
(4)浏览全部或指定(如指定姓名、⼯作单位等)的通讯记录。
(5)合理组织排列各项功能,界⾯可使⽤键盘操作。
(6)以⽂件的形式存储数据。
说明:⼤⼀时的c语⾔课设,⽤链表实现⼀个通讯录管理系统,为了美观好看,花了很多时间调整齐度,记录⼀下⼤⼀时的作业。
其主要功能是对通讯录可输⼊,显⽰,插⼊,删除,最难是可保存,这个学⽂件的时候不怎么会。
内容我⾃⼰弄了7个,名字,性别,⼯作单位,⼿机,住宅电话,E-Mail,家庭住址(其他太多其实都是⼀样的,就懒得加了)。
主要运⽤到对指针中的链表的功能和使⽤要⽐较扎实,分部列写就可以了。
实现图⽚:附上代码:1 #include <stdio.h>2 #include <string.h>3 #include <stdlib.h>4 typedef struct student5 {6char name[20];//名字7char wm[20];//性别8char work[100];//⼯作单位9char stel[20];//⼿机10char htel[20];//住宅号码11char mail[20];//E-Mail12char home[100];//家庭住址13struct student *next;14 }stu;15 stu *head;//头指针16void screen()//主菜单17 {18 printf("\n=======================================================\n");19 printf(" 欢迎来到通讯录管理系统\n\n");20 printf(" 1.输⼊数据 2.显⽰数据\n");21 printf(" 3.插⼊数据 4.删除数据\n");22 printf(" 5.查看数据 6.修改数据\n");23 printf(" 7.保存数据 8.返回主菜单\n");24 printf("\n~~~~~~输~~~~~~⼊~~~~~~9~~~~~~退~~~~~~出~~~~~~程~~~~~~序\n");25 }26void input()//输⼊数据27 {28int ans;//判断是否继续输⼊29 stu *p1,*p2;30 p1=(stu *)malloc(sizeof(stu));//申请内存来⽤31if(p1!=NULL)32 {33 printf("========输⼊数据========\n");34 head=p1;35while(1)36 {37 printf("名字:");38 scanf("%s",&p1->name);39 printf("性别:");40 scanf("%s",&p1->wm);41 printf("⼯作单位:");42 scanf("%s",&p1->work);43 printf("⼿机:");44 scanf("%s",&p1->stel);45 printf("住宅号码:");46 scanf("%s",&p1->htel);47 printf("E-Mail:");48 scanf("%s",&p1->mail);49 printf("家庭地址:");50 scanf("%s",&p1->home);51 printf("===================================\n");52 p2=p1;53 p1=(stu *)malloc(sizeof(stu));//申请下⼀个要⽤的空间54if(p1!=NULL)55 p2->next=p1;56 printf("请选择是否继续输⼊:1.继续 2.退出\n请选择:");//⽤户选择57 scanf("%d",&ans);58if(ans==1)//继续59continue;60else//退出61 {62 printf("========输⼊完毕========\n");63 p2->next=NULL;64free(p1);//将申请的的⽆⽤内存释放65break;66 }67 }68 }69 }70void look(stu *p1)//显⽰数据71 {72 printf("========显⽰数据========\n");73while(p1!=NULL)74 {75 printf("名字:%s\n",p1->name);76 printf("性别:%s\t",p1->wm);77 printf("⼯作单位:%s\t",p1->work);78 printf("⼿机:%s\t",p1->stel);79 printf("住宅号码:%s\t",p1->htel);80 printf("E-Mail:%s\t",p1->mail);81 printf("家庭住址:%s\n",p1->home);82 printf("=====================================\n");83 p1=p1->next;84 }85 printf("========显⽰完毕========\n");86 }87void insert()//插⼊数据88 {89int ans;//选择插⼊位置90char name[20];//插⼊者的名字91 printf("========插⼊数据========\n");92 stu *p1,*p2,*p3;93 p1=head;94 p3=(stu *)malloc(sizeof(stu));//申请内存95 p3->next=NULL;96 printf("请输⼊插⼊者的数据:\n");97 printf("名字:");98 scanf("%s",&p3->name);99 printf("性别:");100 scanf("%s",&p3->wm);101 printf("⼯作单位:");102 scanf("%s",&p3->work);103 printf("⼿机:");104 scanf("%s",&p3->stel);105 printf("住宅号码:");106 scanf("%s",&p3->htel);107 printf("E-Mail:");108 scanf("%s",&p3->mail);109 printf("家庭地址:");110 scanf("%s",&p3->home);111 printf("请选择插⼊位置:1.⾸位置插⼊ 2.尾部插⼊ 3.插到某⼈前⾯\n请选择:");112 scanf("%d",&ans);113switch(ans)114 {115case1://放到头指针116 p3->next=p1;117 head=p3;118break;119case2://放到尾部120while(p1->next!=NULL)121 p1=p1->next;122 p1->next=p3;123break;124case3://放到某⼈前⾯125 printf("请输⼊插到谁前⾯名字:");126 scanf("%s",name);127while(strcmp(name,p1->name)!=0)128 {129 p2=p1;130 p1=p1->next;131 }132 p2->next=p3;133 p3->next=p1;134break;135 }136 printf("========插⼊成功========\n");137 }138void deleted()//删除数据139 {140 stu *p1,*p2;141char name[20];//删除者名字142 printf("========删除数据========\n");143 printf("请输⼊要删除者的名字:");144 scanf("%s",name);145 p1=head;146if(head==NULL)//通讯录已经没数据了147 {148 printf("通讯录⾥什么也没有了。
通讯录管理系统设计报告
通讯录管理系统设计报告一、引言通讯录在日常生活中扮演着重要的角色,用来存储和管理各种联系人信息,方便人们随时找到需要联系的人或组织。
随着移动互联网的普及,通讯录的管理变得更加便捷和高效。
为了提高通讯录的管理效率,我们设计并开发了一款通讯录管理系统。
二、系统概述通讯录管理系统是一个基于Web的应用程序,用户可以通过浏览器访问系统,进行通讯录的管理操作。
系统主要包括以下功能:•用户登录与注册:用户可以注册新账号,并通过账号密码登录系统。
•联系人管理:用户可以添加、编辑、删除联系人信息,包括姓名、电话号码、邮箱等。
•分组管理:用户可以创建分组并将联系人归类到不同分组。
•搜索功能:用户可以通过关键词搜索联系人信息。
•导出和导入功能:用户可以将联系人信息导出为Excel表格,并可以通过Excel文件导入联系人到系统中。
三、系统架构通讯录管理系统采用了前后端分离的架构,前端使用Vue.js框架开发,提供友好的用户界面;后端使用Node.js和Express框架搭建RESTful API,负责数据的存储和管理。
系统中的数据存储在MySQL数据库中,用户的密码使用bcrypt进行加密存储,确保用户信息的安全性。
同时,系统对用户权限进行了细致管理,保障用户在系统中的数据安全。
四、系统界面系统的界面设计简洁直观,用户可以轻松进行操作。
主要包括登录页面、通讯录首页、联系人管理页面、分组管理页面等。
用户登录页面:[登录页面截图]通讯录首页:[通讯录首页截图]联系人管理页面:[联系人管理页面截图]五、系统特色•简洁高效:系统操作简单直观,提供了快速的联系人管理功能。
•个性化定制:用户可以根据自己的需求创建分组,快速查找联系人。
•数据安全:采用了加密技术和权限管理,确保用户数据的安全性。
•导入导出功能:支持Excel文件导入导出,方便用户管理大批量联系人信息。
六、未来展望通讯录管理系统将继续进行优化和迭代,引入更多智能化功能,如联系人推荐、消息提醒等,提升用户体验。
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;}```六、系统测试在完成系统的开发后,需要进行全面的测试以确保系统的稳定性和可靠性。
桌面通讯录管理系统的 设计与实现
北京师范大学毕业论文(设计)论文(设计)题目桌面通讯录管理系统的设计与实现院(系):信息科学与技术学院专业:计算机科学与技术专业学号: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绪论通讯录管理是同学们都熟悉的内容,在这个项目中,可以通过自己设计的表单对一个简单的数据表进行管理,包括添加、修改、删除以及查询等功能,最后生成一个可执行文件,并在桌面上创建一个快捷方式,随时使。
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系统升级:版本管理、更新提示、升级策略总结:通过上述的详细阐述,我们可以看到,通讯录管理系统涵盖了用户界面设计、数据存储与管理、通讯录的分类与搜索功能、用户权限管理以及通讯录系统的扩展与升级等多个关键领域。
在该系统的设计过程中,我们需要重点关注用户友好性、数据安全性和系统的可扩展性。
个人通讯录管理系统的设计与实现
通 讯 录 、 系本 是 每 个 人 不 可 缺 少 的工 具 , 联 目前 以 纸 介 质 的 通 讯 令 按 钮 制 作 “ 确定 ” 钮 。 且 制 定 单击 按 钮 后 的任 务 , 按 并 即在 “ 程 代 码 过 录最 为 普 遍 。 工 的 信 息管 理 存 在 许 多 弊 端 , 信 息 容 易 丢 失 、 找 费 手 如 查 框” 中输 入 相 应代 码 。 时、 储量有限等。 存 随着 科 技 的发 展 与 人 民 生 活水 平 的 提 高 , 计算 机 进 显 示 数 据 的表 单 分 别 有 个 人 通 讯 录 . X 私 人 电 话 . X 办 公 电 话 . S , C S , C 入 了千 家 万 户 。 作 为计 算 机 应 用 的 一 部 分 , 用计 算 机对 通 讯 录进 行 使 sx Q SX, 系地 址 . X等 。 以上 表 单 都 是 基 于数 据 源“ 人 通 讯 录 . e . Q. 联 C S C 个 管理 , 有 着 手 工 管 理所 无 法 比拟 的 优 点 , : 具 如 检索 迅 速 、 找 方 便 、 查 可 d f, 只是 在 控 件 设 置上 有 区别 。个 人 通讯 录 .X选 取 表 中 的所 有 字 b” S C 靠 性 高 、 储 量 大 、 密性 好 、 命 长 、 本 低 等 。 些 优 点 能 够极 大地 存 保 寿 成 这 段 , 人 电话 . X选取 姓 名 、 人 电 话 字段 , 它 表 单 类 同 。 私 S C 私 其 提 高通 讯 录管 理 的 效 率 。 因此 , 发 一 套 通 讯 录信 息 管理 软件 是 很 有 开 报 表 是 使 用 数 据记 录 的另 一 种 重 要形 式 , 了具 有 浏 览 数 据 记 录 除 必要 的 , 且 意 义 重 大 。 并 的功 能 外 , 能 控 制 打 印输 出数 据 记 录 的 格式 。 在本 系统 中基 于个 人 还 V sa oPo是 一 个 在 我 国 有 着 庞 大 用 户 群 的数 据 库 管 理 系 统 通讯 录 . f 作 一个 报 表 . iul xr F d 制 b 显示 表 中所 有 字 段 和记 录 。所 以可 利 用 报 软 件 , 将 过 程 化 程 序 设 计 与 面 向对 象 程 序 设 计 结 合 在 一 起 , 助 用 它 帮 表 向导 制 作 , 名 为 个人 通 讯 录 .x 命 f。 r 户创 建 出功 能 强 大 , 活 多变 的应 用 程 序 。 V P还 支 持 对 象 的链 接 与 24 制 定 应 用 程 序 的操 作 菜 单 个 人 通 讯 录 应 用 系 统 的 功 能 是 由菜 灵 F . 嵌 入 和动 态 数 据 变 换 技 术 , 富 了设 计 效 果 , 面令 人 耳 目一 新 。 丰 界 单来 实 现 的 , 的 结 构 如设 计 所 述 。 菜 单 可 在 菜 单设 计 器 中制 作 。 它 各 系 利 用 VF . 作个 人 通讯 录 可 以便 于用 户 添加 、 除 和查 找 通 P60制 删 统 功 能 的下 拉 菜 单 项 分 别 有 以 下 命 令 实 现 :D OR 个 人 通 讯 录 OF M 讯信 息 , 使信 息 管理 工 作 系 统 化 、 范 化 、 规 自动 化 , 而 提 高 通 讯 录管 ( 览 通 讯 录 ) 从 浏 ,个 人 通 讯 录 .E E S ( 闭 通 讯 录 )R P TF R R LAE 关 , E O O M 理效 率 。 个人 通 讯 录 ( 印 通 讯 录 )编 辑 功 能 的 命 令 语 句 分 别 是 D O M 个 打 : OF R 人 通 讯 录 ( 加 记 录 )D L T 删 除 记 录 )R C L ( 复 记 录 ) 查 增 , E E E( ,E A L 恢 ; 询 功 能 实 现 的命 令 分 别 是 D O M 个 人 通 讯 录 ( 询 记 录 )DO OFR 查 , 系统 的设 计 决 定 了 系 统 的开 发 方 向和 总 体 目标 。 因 此 , 它是 系统 F R 私 人 电 话 ( 询 私 人 电 话 )DOF R 办 公 电 话 ( 询 办 公 电 O M 查 , O M 查 开 发 的 关 键 步 骤 之 一 。个 人 通 讯 录 是 以 处 理 为 中 心 的数 据 库 应 用 系 话 )D OR Q 查 看 Q , O F M 通讯 地 址 ( 询 通 讯地 址 ) ,O F M Q( Q)D OR 查 。 统 , 体 设 计 过 程 分 为 需 求分 析 、 据 库 设 计 、 具 数 应用 程 序 设 计 等 流 程 。 25 制定 应 用 程 序 的主 程 序 主程 序 包 括 初 始 化 设 置 ,制 定 操 作 窗 .
基于ExtJS的毕业生通讯录管理系统的设计与实现
n wI s a c e t n e0 : n
COnn
目录 。e t a . s a a t r e t e t x — 1j 口 d p e / x / x I
—
=
Dri ver an g . M a er
b s . s已经 包含 了 E t S的所 有功 能 , ae j xJ 所有 的 J v S r a a c t脚本 都在 这里 ; i p b d o al / x —I n — h O . s是简 体 中文国际 化 ui /l c e t g z I e a Nj 资源 文件 ;e o re r s u c s目录 下是 C S样式 表和 图片 。在 S
使 用 E t S框 架必 须至 少在页 面 中引入 : xJ
e t aI . s a a t r e t e t b s . s x — I j 、 d p e / x / × — a e j 、
b I /lc / x —ln — h C . s年 整 个 r s u c s uid aJ e t g z o e a Nj 口 e o r e
理 系统 分 为访 客页面 、学生 页面 、管理 员 页面 三个 模 块 。管 理 员即超 级用 户 , 可查 看所 有 信息 、 添加所 有 信
息 、 改 所 有信 息 ; 修 学生 可 查 看 别 人 的信 息 , 只 能修 但
能方便 、 时找 到原 来 的老 同学 , 及 如果把 同学之 间 的通 讯方 式记 录在 一个通 讯 簿上 , 当通讯地 址 变更 时 就不
3 0
Hale Waihona Puke S s n g me t 系统 管理 y Ma a e n
ty { r ty { r
学生通讯录管理系统
学生通讯录管理系统 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)插入通讯记录。
每次可以插入一个成员通讯录的信息。
(毕业设计)基于Android通讯录的设计与实现
毕业论文(设计)题目基于Android通讯录管理系统设计与实现学生姓名学号学院专业指导教师联系QQ 1912881988本人严重声明:1、持以“求实、创新”的科学精神从事研究工作。
2、本文是我个人在导师指导下进行的研究工作和取得的研究成果。
3、本文除引文外,所有实验、数据和有关材料均是真实的。
4、本文除引文和致谢内容外,没有抄袭其他人或其他机构发表或撰写过的研究成果。
作者签名:__________日期:__________目录1 绪论 (1)1.1 手机通讯录管理系统的开发背景 (1)1.2 手机通讯录管理系统的研究目的和意义 (1)1.3 系统主要实现内容及实现方式 (1)1.3.1系统主要实现功能 (1)1.3.2 Android系统的开发平台 (2)1.4 系统开发所需的技术支持 (2)1.4.1 Java开发语言 (2)1.4.2 Android简介 (3)2 手机通讯录管理系统分析 (3)2.1技术可行性分析 (3)2.2 经济可行性分析 (4)2.3 需求可行性 (4)3 系统概要设计 (4)3.1 总体功能设计 (4)3.2 系统流程设计 (5)3.2.1 业务流程图 (5)3.3 系统数据库简介与设计 (6)3.3.1 SQLite数据库简介 (6)3.3.2 系统数据库设计 (6)4 系统详细设计 (7)4.1 联系人模块 (7)4.1.1 联系人操作模块 (7)4.1.2 联系人查找模块 (9)4.2 信息模块 (10)4.2.1 信息显示模块 (10)4.2.2 信息编辑模块 (10)4.3 个人中心模块 (12)5 系统测试与调试 (13)5.1 测试的概念 (13)5.2测试的目的 (13)5.3 测试的原则 (13)5.4程序测试 (14)5.5 测试的主要内容 (14)5.6 测试用例 (14)5.7 系统测试结果 (15)5.7.1 编辑联系人功能测试 (15)5.7.2 查找联系人功能 (16)5.7.3 删除联系人测试 (16)5.7.4 短信息发送测试 (17)5.7.5 短信息删除测试 (17)5.7.6 备份功能测试 (17)5.8 测试总结 (18)6 总结 (18)参考文献: (19)致谢 (20)基于Android通讯录管理系统设计与实现摘要:随着科学技术的不断进步与发展,移动便携式设备,如手机,平板电脑等产品越来越普及,其中大部分产品的操作系统采用的Android操作系统,并且自Alphabet收购安卓系统后,安卓的市场份额急剧扩大并且还在进一步增加。
C++程序设计通讯录管理系统
C++程序设计通讯录管理系统通讯录管理系统文档1.引言本文档描述了一个C++程序设计的通讯录管理系统的设计和实现细节。
本系统旨在提供一个用户友好的界面,帮助用户轻松管理其通讯录信息。
本文档将详细介绍系统的需求分析、设计、实现和测试过程。
2.需求分析2.1 系统介绍通讯录管理系统是一个用于存储和管理个人联系人信息的工具。
它允许用户创建、查看、编辑和删除联系人信息,同时提供搜索和排序等功能。
2.2 功能需求①用户登录与注册功能用户通过输入用户名和密码进行登录,如果没有账号,可以进行注册。
②联系人管理功能用户可以创建、查看、编辑和删除联系人信息。
③联系人搜索功能用户可以根据姓名、方式号码等关键字进行联系人的搜索。
④联系人排序功能用户可以按照姓名、拼音首字母或方式号码等属性对联系人进行排序。
⑤联系人导入和导出功能用户可以将联系人信息导入和导出到外部文件,以便在不同设备之间共享和备份。
2.3 非功能性需求①用户界面友好性界面应简洁、直观,方便用户操作。
②数据安全性用户数据应进行加密存储,确保用户隐私的安全。
3.系统设计3.1 系统架构系统采用MVC(Model-View-Controller)架构,将数据模型、用户界面和控制逻辑分离。
3.2 数据库设计系统使用关系型数据库存储联系人信息,包括姓名、方式号码、电子邮件等属性。
3.3 用户界面设计系统采用图形用户界面(GUI),提供直观的操作界面,包括菜单、按钮、输入框等。
4.系统实现4.1 开发环境本系统使用C++编程语言开发,开发工具为Visual Studio。
4.2 数据库操作使用SQL语句实现数据库的创建、查询、插入、更新和删除等操作。
4.3 用户界面实现使用C++中的图形库实现用户界面,包括菜单栏、按钮、文本框等控件。
5.系统测试在开发完成后,对系统进行功能测试和性能测试,确保系统能够稳定运行并满足用户需求。
6.附件本文档附带通讯录管理系统的源代码和数据库文件。
通讯录管理系统课程设计报告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语言的简单程序,旨在帮助班级管理者更好地管理班级通讯录信息。
本文将从需求分析、系统设计、代码实现等方面详细介绍该系统。
二、需求分析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.实现分组显示功能,使用不同链表存储不同分组的联系人信息。
以上是通讯录管理系统的设计与实现汇总。
在数据结构的选择上,我们选择了链表作为存储通讯录联系人信息的数据结构,使用排序算法进行排序,使用文件读写操作进行导入/导出操作,使用多个链表实现分组显示功能。
在功能实现上,分别实现了添加联系人、删除联系人、查找联系人、修改联系人信息、显示所有联系人等核心功能以及排序、导入/导出、分组显示等扩展功能。
基于的通讯录管理系统
} public void displayContacts() { contactList.di splayContacts()
} public void exit()
{ System.exit(0)
} }```
-
感谢您的观看
THANK YOU FOR WATCHING
XXXX
单击此处输入你的正文,文字是您思想的提炼,为了最终演示发布的良好效果,请尽量 言简意赅的阐述观点;根据需要可酌情增减文字
合度
4
技术实现
技术实现
开发环境
Java SE Development Kit (JDK) 8或以上版本, 用于编写和运行Java
程序
Step.01
开发工具
Eclipse或IntelliJ IDEA等集成开发环境
(IDE)
Step.02
类库
Java自带的标准类库 和第三方类库
Step.03
数据库
可以选择使用SQLite 或MySQL等关系型数 据库存储联系人信息
2 项目需求分析
项目需求分析
通讯录管理系统需要 具备以下基本功能
01
03
05
项目需求分析
02
04
06
3
系统设计
系统设计
1
用户界面设计:采用命令 行界面,包括菜单选项和 命令输入。菜单应清晰明
了,易于操作
2
数据存储设计:使用文本 文件或数据库存储联系人
信息,便于数据持久化
3
架构设计:采用简单的 MVC(模型-视图-控制器)架 构,降低各模块之间的耦
Step.04
ห้องสมุดไป่ตู้
编码规范
遵循Java编码规范, 提高代码的可读性和
数据结构课程设计_通讯录查询系统的设计与实现
Word格式通讯录查询系统的设计与实现完美整理一、需求分析1、问题描述为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的电话与地址。
设计散列表存储,设计并实现通讯录查找系统。
2、基本要求a.每个记录有下列数据项:电话号码、用户名、地址;b.从键盘输入各记录,分别以电话号码为关键字建立散列表;c.采用二次探测再散列法解决冲突;d.查找并显示给定电话号码的记录;e.通讯录信息文件保存。
二、概要设计1.数据结构本程序需要用到两个结构体,分别为通讯录 message以及哈希表HxList2.程序模块本程序包含两个模块,一个是实现功能的函数的模块,另一个是主函数模块。
系统子程序及功能设计本系统共有三个子程序,分别是:int Hx(long long key,int data)//哈希函数void BulidHx(HxList &L)//建立通讯录int Search(HxList &L)//查找3.各模块之间的调用关系以及算法设计主函数调用BulidHx以及Search函数。
函数BulidHx调用函数Hx。
三、详细设计1.数据类型定义typedef struct{char *name;char *add;long long phonenumber;}message;typedef struct{message *list;int number;//记录数}HxList;2.系统主要子程序详细设计a. 建立通讯录void BulidHx(HxList &L)//建立通讯录{FILE *f = fopen("E:\\tongxunlu.txt", "w");char buf[20]={0},str[20]={0};long long key;cout<<"输入要建立的记录数:";cin>>L.number;L.number+=1;L.list=new message[L.number];//分配哈希表的存储空间for(int i=0;i<L.number;i++){L.list[i].phonenumber=-1;}L.list[L.number-1].name=NULL;L.list[L.number-1].add=NULL;cout<<"输入记录信息(电话号码用户名地址)"<<endl; for(int i=0;i<L.number-1;i++){cin>>key>>buf>>str;int pose=Hx(key,L.number);//获取理论上的存储位置if(L.list[pose].phonenumber==-1){}else{//用二次探测再散列法解决冲突//1^2 -1^2 2^2 -2^2int di,count=1;xunhuan: if(count%2==0)di=-(count/2)*(count/2);elsedi=((count/2)+1)*((count/2)+1);int site=Hx(key+di,L.number);if(site>=0){if(L.list[site].phonenumber==-1){pose=site;}else{count++;goto xunhuan;}}else{site=L.number-abs(site);if(L.list[site].phonenumber==-1){pose=site;}else{count++;goto xunhuan;}}}L.list[pose].phonenumber=key;fprintf(f,"%lld",key);fprintf(f," ");L.list[pose].name=new char[strlen(buf)+1];strcpy(L.list[pose].name,buf);fprintf(f,"%s",buf);fprintf(f," ");L.list[pose].add=new char[strlen(str)+1];strcpy(L.list[pose].add,str);fprintf(f,"%s",str);fprintf(f,"\n");}}b.查找int Search(HxList &L)//查找{long long key;cout<<"输入要查找记录的关键字(电话号码):";cin>>key;int pose=Hx(key,L.number);//计算理论上的位置if(L.list[pose].phonenumber==key){}else{int count=1,di;//二次探测再散列,查找xunhuan: if(count%2==0){di=-(count/2)*(count/2);}else{di=((count/2)+1)*((count/2)+1);}int site=Hx(key+di,L.number);if(site>=0){if(L.list[site].phonenumber==key){pose=site;}else{count++;if(L.list[site].phonenumber==-1){cout<<"没有找到"<<endl;return -1;//没有找到}goto xunhuan;}}else{site=L.number-abs(site);if(L.list[site].phonenumber==key){pose=site;}else{count++;if(L.list[site].phonenumber==-1){cout<<"没有找到"<<endl;return -1;//没有找到}goto xunhuan;}}}if(L.list[pose].phonenumber==key){cout<<"电话号码\t"<<"用户名\t"<<"地址"<<endl;cout<<L.list[pose].phonenumber<<"\t"<<L.list[pose].name<<"\t"<<L.list [pose].add<<endl;return pose;}}四、测试与分析1.显示主菜单,运行程序可以显示出如下界面。
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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构实验报告实验名称:通讯录管理系统的设计与实现试验时间:2011.1.13班级:姓名学号:指导老师:1.问题描述:通讯录是用来记录,查询联系人通讯信息的工具。
电子通讯录已成为手机,电子词典等电子设备中不可缺少的工具软件。
设计一个能够,满足这种需求的软件。
基本功能模块:输入,显示,查找,插入,删除,保存,读入,排序,修改,移动,退出。
2.设计要求:(1)基本要求1.设计通讯录数据的逻辑结构和物理结构。
2.通讯录至少包含下列数据信息:姓名,电话,地址等。
3.完成图示基本功能。
4.软件易用,操作简单。
5.根据自己使用通讯录的体会,扩充其他功能,如按姓名查找,按学号查找,按序号查找等。
(2)较高要求1.数据输入有效性检验:如姓名不能为空,号码中不能有非法字符等。
2.提供分组管理的相关功能,如:分组显示,加入组,组创建,组查询等。
3.可视化的界面设计。
3.测试案例:请输入您的选择(0--6): 1分别输入编号,姓名,性别,电话,地址(输入0 结束通信录的建立): 编号:01姓名:张三电话:152****1919地址:2-222编号:0请输入您的选择(0--6): 2编号:01姓名:张三电话:152****1919地址:2-222是否继续添加?(Y/N):N请输入您的选择(0--6): 3请选择查询的方式(1 编号,2 姓名):1 请输入编号:01编号:01姓名:张三电话:152****1919地址:2-222请问是否继续查询?(Y/N):N请输入您的选择(0--6): 4输入删除编号:01删除学生信息如下:编号:01姓名:张三电话:152****1919地址:2-222请输入您的选择(0--6): 5通讯录的全部信息如下:*****编号*****姓名*****性别*****电话*****地址*****学生总人数为:1请输入您的选择(0--6):6 记录已保存!请输入您的选择(0--6):0 结束!!!4.数据结构设计:数据域描述通讯录的相关信息,根据每个学生的基本信息含有多个属性,其中包括序号,姓名,性别,电话,地址等,为此可根据学生信息建立结构体,类型定义如下:typedef struct{ char num; //学号char name; //姓名char sex; //性别char phone; //电话char addr; //地址}DataType;根据通讯录的设计要求,可用单向链表实现该通讯录系统的功能。
链表结点只含一个数据域和一个指针,用typedef定义通讯录的结点类型。
线性表的链式存储结构定义如下:typedef struct node{ //结构类型定义DataType data; //结点数据域Struct node * next; //结点指针域}ListNode;typedef ListNode *LinkList;ListNode * p; //定义一个指向结点的指针变量LinkList head; //定义指向单链表的头指针5.算法设计:1)建立通讯录链表建立带头结点的单链表,运用尾插法建表void StudentRecords::Build() {string NUM;bool flag=false;ListNode *p;cout<<"分别输入编号,姓名,性别,电话,地址(输入0 结束通信录的建立):"<<endl;while(!flag){cout<<"编号:";cin>>NUM;if(NUM>"0") {p=new ListNode; //创建一个新头结点p->data.num=NUM;cout<<"姓名:";cin>>p->;cout<<"性别:";cin>>p->data.sex;cout<<"电话:";cin>>p->data.phone;cout<<"地址:";cin>>p->data.addr;p->next=head->next;head->next=p;}else break;}cout<<endl;}2)通讯录信息的插入单链表结点插入元素的基本思想:使用两个指针变量p和q分别指向访问过的结点和下一个待访问的结点,循环顺序查找链表,寻找插入结点的位置,其中p指向待插入位置的前一个结点。
首先:p指向原链表的头结点,q指向链表的第一个指针;while(q!=NULL&&q->data.num){p=q; //p指向访问过的结点q->next; //q指向表的下一个结点}然后插入新结点:void StudentRecords::Add(){ListNode *p;bool flag=true;while(flag) {p=new ListNode;cout<<"分别输入编号,姓名,性别,电话,地址:"<<endl;cout<<"编号:";cin>>p->data.num;cout<<"姓名:";cin>>p->;cout<<"性别:";cin>>p->data.sex;cout<<"电话:";cin>>p->data.phone;cout<<"地址:";cin>>p->data.addr;p->next=head->next;head->next=p;cout<<endl;cout<<"是否继续添加?(Y/N):";char YN;cin>>YN;if(YN=='Y')flag=true;else flag=false;}}3)通讯录的查找基本思想:首先输入要查找的通讯录学号或姓名,从表头顺序访问表中的结点,如查找成功,则返回一个指向查找到的通讯者结点的指针,若查找失败,则返回一个空指针NULL.void StudentRecords::Check(){ListNode *p,*q;int i;bool flag1,flag2,flag3,flag;flag=true;char YN='Y';string NUM;string NAME;while(flag){if(!head->next){cout<<"通信录为空!"<<endl;break;}else{while(YN=='Y') {flag3=false;cout<<"请选择查询的方式(1编号,2姓名):";cin>>i;switch(i){case 1:cout<<"请输入编号:";cin>>NUM;break;case 2:cout<<"请输入姓名:";cin>>NAME;break;default:cout<<"输入错误,请重新输入!"<<endl;flag3=true;break;}if(!flag3){p=head->next;flag1=false;while(p){flag2=false;switch(i){case 1:if(NUM==p->data.num){flag2=flag1=true;q=p;}p=p->next;break;case 2:if(NAME==p->){flag2=flag1=true;q=p;}p=p->next;break;default:break;}if(flag2){cout<<"该学生信息如下:"<<endl;cout<<"编号:"<<q->data.num<<endl;cout<<"姓名:"<<q-><<endl;cout<<"性别:"<<q->data.sex<<endl;cout<<"电话:"<<q->data.phone<<endl;cout<<"地址:"<<q->data.addr<<endl;}}cout<<endl;if(!flag1)cout<<"查无此人"<<endl;cout<<"请问是否继续查询?(Y/N):";cin>>YN;if(YN=='Y')flag=true;else flag=false;}}}cout<<endl;}}4)通讯录的删除基本思想:现调用查找函数,查找到要删除的结点,删除void StudentRecords::Delete(){ListNode *p,*q;string NUM;char YN='Y';bool flag,flag1;flag1=true;while(flag1){while( YN=='Y'){ flag=false;p=head;q=p->next;if(!q){cout<<"通信录为空!"<<endl;flag1=false;break;}cout<<"输入删除编号:";cin>>NUM;while(q){if(NUM==q->data.num){cout<<"确认删除"<<NUM<<"的信息(Y/N):";cin>>YN;if(YN=='Y')flag1=true;else flag1=false;cout<<"删除学生信息如下:"<<endl;cout<<"编号:"<<q->data.num<<endl;cout<<"姓名:"<<q-><<endl;cout<<"性别:"<<q->data.sex<<endl;cout<<"电话:"<<q->data.phone<<endl;cout<<"地址:"<<q->data.addr<<endl;p->next=q->next;delete q;flag=true;break;}else {p=p->next; q=p->next;}}if(!flag) cout<<"查无此人!"<<endl;cout<<"是否继续进行删除?(Y/N):";cin>>YN;if(YN=='Y')flag1=true;else flag1=false;}}cout<<endl;}5)通讯录的输出基本思想:将头指针赋给一个指针变量p,然后用p向后扫描,输出相应结点的值,直到表尾p为空为止.void StudentRecords::PrintList(){ListNode *p,*q,*s,*Max,*Min,*first;int count=0;if(head->next){first=new ListNode;s=first;cout<<"通信录的全部信息如下:"<<endl<<endl;cout<<"****编号"<<"***********姓名"<<"**********性别"<<"**********电话"<<"**************地址***********"<<endl;while(head->next){Min=head->next ;Max=Min->next ;q=head;while(Max&&Min){if(Max->data .num <Min->data .num ){Min=Max;Max=Max->next ;}e lse Max=Max->next ;}while(q->next !=Min)q=q->next ;q->next =Min->next;s->next=Min;s=Min;s->next =NULL;}delete head;head=first;p=head->next;while(p){cout<<setw(8)<<p->data.num<<setw(17)<<p-><<setw(13)<<p->data.sex<<setw(16)<<p->data.phone<<setw(21)<<p->data.addr<<endl;p=p->next;count++;}cout<<endl<<"学生总人数为:"<<count<<endl;}else cout<<"通信录为空!"<<endl;cout<<endl;}void StudentRecords::cin_file(char*filename){ifstream infile(filename,ios::in);if(!infile){cerr<<"open error!"<<endl;exit(1);}ListNode ch,* p;while(infile>>ch.data.num){p=new ListNode;infile>>>>ch.data.sex>>ch.data.phone>>ch.data.addr;p->data.num=ch.data.num;p->=;p->data.sex=ch.data.sex;p->data.phone=ch.data.phone;p->data.addr=ch.data.addr;p->next=head->next;head->next=p;}infile.close();}6)通讯录的保存void StudentRecords::Preservation_file(){ofstream outfile("RD.txt",ios::out);if(!outfile){cerr<<"open error!"<<endl;exit(1);}ListNode * p;p=head->next;while(p){outfile<<setw(8)<<p->data.num<<setw(17)<<p-><<setw(13)<<p->data.sex<<setw(16)<<p->data.phone<<setw(22)<<p->data.addr<<endl;p=p->next;}cout<<"记录已保存!"<<endl<<endl;outfile.close();}7)界面设计6.运行与测试1)运行程序,显示菜单,如图:2)按“1”创建表。