通讯录系统,顺序表
- 格式:pdf
- 大小:1.45 MB
- 文档页数:32
通讯录排序规则通常取决于不同的操作系统和通讯录应用程序。
一般来说,通讯录中的联系人可以通过姓名字母顺序、电话号码、邮箱地址等多种方式进行排序。
在
iOS系统中,通讯录默认按照姓和名的拼音首字母进行排序,也可以在设置中进行调整。
而在Android系统中,通讯录则默认按照联系人的名字进行排序,也可以通
过多种方式进行自定义排序。
此外,一些第三方通讯录应用程序也提供了多种排序方式,例如按照联系人的使用频率、生日、添加时间等进行排序。
总之,通讯录排序规则可以根据个人需要进行调整,以便更好地管理和查找联系人。
通讯录管理系统设计说明书通讯录管理系统设计说明书1、引言1.1 编写目的1.2 文档范围1.3 目标读者1.4 术语定义2、系统概述2.1 目标2.2 功能2.3 运行环境2.4 系统限制3、功能需求3.1 用户注册与登录3.2 通讯录管理3.2.1 添加联系人3.2.2 编辑联系人 3.2.3 删除联系人 3.2.4 查找联系人 3.2.5 排序联系人 3.3 分组管理3.4 数据备份与恢复3.5 用户权限管理4、数据库设计4.1 数据库结构4.2 表设计4.2.1 用户表4.2.2 联系人表 4.2.3 分组表4.3 数据库操作5、系统设计5.1 使用案例图5.2 系统架构5.3 模块划分与功能描述5.3.1 用户模块5.3.2 通讯录模块5.3.3 分组模块5.3.4 数据备份与恢复模块5.4 界面设计6、性能需求6.1 响应时间6.2 数据处理能力6.3 系统稳定性6.4 安全性7、测试计划7.1 单元测试7.2 集成测试7.3 系统测试7.4 用户验收测试8、项目计划8.1 项目里程碑8.1.1 需求分析完成8.1.2 设计完成8.1.3 编码完成8.1.4 测试完成8.1.5 系统交付8.2 项目资源8.3 项目风险与风险应对措施8.4 项目团队组成9、维护支持9.1 维护需求9.2 维护方案9.3 维护周期10、附件附件1:数据库设计文档附件2:界面设计图附件3:系统测试用例法律名词及注释:- 用户注册与登录:用户进行系统登录前需要注册账号,并通过账号密码进行身份验证,确保系统安全。
- 通讯录管理:对联系人进行增加、编辑、删除、查找和排序等操作,方便用户管理自己的通讯录。
- 分组管理:将联系人按照不同的分组进行分类管理,便于用户查找和管理。
- 数据备份与恢复:为了防止数据丢失,系统提供数据备份和恢复的功能,用户可以定期备份数据,并在需要时恢复到备份的状态。
- 用户权限管理:系统根据用户的身份及权限设置,对不同用户进行权限管理,确保系统的安全性和数据的保密性。
一、通讯录管理系统1.题目要求通讯录一般包括通讯者的编号、姓名、性别、电话及地址等信息,设计一个通讯录要求实现通讯者的插入、查询、删除、更新、排序操作。
struct node{char num[5]; //编号char name[8]; //姓名char sex; //性别char tel[8]; //电话char address[100]; //地址};2.应用程序功能开始运行时界面如下:通讯录链表建立界面如下:通讯录链表插入界面如下:通讯录链表查询界面如下:按编号查询界面如下:按姓名查询编号如下:通讯录链表删除界面如下:通讯录链表输出界面如下:3.输入数据类型、格式和内容限制输入数据类型为字符型,但在输入过程中不可包含空格,如输入地址过程中不可出现空格!4.主要算法模块描述流程图:5.源程序代码#include<stdio.h>#include "iostream"int flag1=0;#include "string.h"#include "stdlib.h"#include "windows.h"using namespace std;typedef struct { //通讯录结点类型char num[5]; //编号char name[9]; //姓名char sex[3]; //性别char phone[13]; //电话char addr[31]; //地址} DataType;typedef struct node { //结点类型定义DataType data; //结点数据域struct node *next; //结点指针域} ListNode;typedef ListNode *LinkList;LinkList head;ListNode *p;LinkList CreateList(void);void InsertNode(LinkList head,ListNode *p);ListNode *ListFind(LinkList head);void DelNode(LinkList head);void PrintList(LinkList head);/*******尾插法建立带头结点的通讯录链表算法*******/LinkList CreateList(void){LinkList head=(ListNode *)malloc(sizeof(ListNode)); //申请头结点ListNode *p,*rear;char flag='y'; //int flag=0; //结束标志置0rear=head; //尾指针初始指向头结点while (flag=='y'){p=(ListNode *)malloc(sizeof(ListNode)); //申新结点printf("编号(4) 姓名(8) 性别电话(11) 地址(31)\n");printf("-----------------------------------------------\n");printf("\n添加的编号:\n");cin>>p->data.num;printf("\n添加的姓名:\n");cin>>p->;printf("\n性别:\n");cin>>p->data.sex;printf("\n电话:\n");cin>>p->data.phone;printf("\n地址:\n");cin>>p->data.addr;rear->next=p; //新结点连接到尾结点之后rear=p; //尾指针指向新结点printf("继续建表?(y/n):");cin>>flag;rear->next=NULL; //终端结点指针置空return head; //返回链表头指针}/*********在通讯录链表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; //连接表中剩余的结点}/**********有序通讯录链表的查找****************/ListNode *ListFind(LinkList head){ListNode *p;char num[5];char name[9];char pp;printf("==================\n");printf(" a. 按编号查询\n");printf(" b. 按姓名查询\n");printf("==================\n");printf(" 请选择:");p=head->next;cin>>pp;if (pp=='a'||pp=='A'){printf("请输入要查找者的编号:");cin>>num;while (p&&strcmp(p->data.num,num)<0) p=p->next;if ((p==NULL)||strcmp(p->data.num,num)>0) p=NULL; //没有查到要查找的通讯信息}if (pp=='b'||pp=='B'){printf(" 请输入要查找者的姓名:");cin>>name;while(p&&strcmp(p->,name)!=0) p=p->next;}return p;}/********通讯录链表上的结点删除*****************/void DelNode(LinkList head){char cho;ListNode *p,*q;p=ListFind(head); //调用查找函数if (p==NULL){printf("没有查到要删除的通讯者!\n");return;}else if(p!=NULL){printf("真的要删除该结点吗?(y/n)");cin>>cho;if (cho=='y'||cho=='Y'){q=head;while ((q!=NULL)&&(q->next!=p)) q=q->next;q->next=p->next; //删除结点free(p); //释放被删结点空间printf("删除成功!\n");}}}/********通讯录链表的输出函数**********/void PrintList(LinkList head){ListNode *p;p=head->next;printf("编号姓名性别联系电话地址\n");printf("--------------------------------------------------------------------------------\n");while (p!=NULL){printf("%s,%s,%s,%s,%s\n",p->data.num,p->,p->data.sex,p->data.phone,p->data.a ddr);printf("---------------------------------------------------------------------------------\n");p=p->next; //后移一个结点}}void main(){int choice,j=1;while(j){printf("\n\n\n\n\n");printf("\t\t\t\t通信录链表\n");printf("\n\t\t\t******************************");printf("\n\t\t\t* 1--- 通信录链表建立*");printf("\n\t\t\t* 2--- 通信录链表插入*");printf("\n\t\t\t* 3--- 通信录链表查询*");printf("\n\t\t\t* 4--- 通信录链表删除*");printf("\n\t\t\t* 5--- 通信录链表输出*");printf("\n\t\t\t* 0--- 退出管理系统*");printf("\n\t\t\t******************************");printf("\n\t\t\t请选择菜单号(0--5):");cin>>choice;getchar();switch(choice){case 1:{printf("**********************************\n");printf("* 通讯录链表的建立*\n");printf("**********************************\n");head=CreateList( );flag1=1;system("cls");break;}case 2:{if(flag1!=1) {printf("请先建立表!");Sleep(1500); system("cls");}printf("**********************************\n");printf("* 通讯者信息的添加*\n");printf("**********************************\n");printf("编号(4) 姓名(8) 性别(3) 电话(11) 地址(31)\n");printf("************************************* \n");p=(ListNode *)malloc(sizeof(ListNode)); //申请新结点printf("\n添加的编号:\n");cin>>p->data.num;printf("\n添加的姓名:\n");cin>>p->;printf("\n性别:\n");cin>>p->data.sex;printf("\n电话:\n");cin>>p->data.phone;printf("\n地址:\n");cin>>p->data.addr;InsertNode(head,p);system("cls");break;}case 3:{if(flag1!=1) {printf("请先建立表!");Sleep(1500);system("cls");}else{printf("***********************************\n");printf("* 通讯录信息的查询*\n");printf("***********************************\n");p=ListFind(head);if (p!=NULL){printf("编号姓名性别联系电话地址\n");printf("--------------------------------------------------\n");printf("%s,%s,%s,%s,%s\n",p->data.num,p->,p->data.sex,p->data.phone,p->data.a ddr);printf("---------------------------------------------------\n");}else printf("没有查到要查询的通讯者!\n");}break;}case 4:{if(flag1!=1) {printf("请先建立表!"); Sleep(1500);}else{printf("***********************************\n");printf("* 通讯录信息的删除*\n");printf("***********************************\n");DelNode(head); //删除结点}break;}case 5:{if(flag1!=1) {printf("请先建立表!"); Sleep(1500);}else{printf("************************************\n");printf("* 通讯录链表的输出*\n");printf("************************************\n");PrintList(head);}break;}case 0:j=0;system("cls");break;default:printf("\t\t\n 输入有错,请重新输入!\n");Sleep(1500);system("cls");break;}}}。
数据结构课程设计通讯录管理系统
数据结构课程设计中的通讯录管理系统可以涉及到以下几个方面的知识点:
1. 数据结构:通讯录管理系统中需要使用到的数据结构包括数组、链表、哈希表等。
其中,数组用于存储通讯录中的人员信息,链表用于存储联系人信息,哈希表用于实现快速查找功能。
2. 算法:通讯录管理系统中需要使用到的算法包括查找算法、排序算法、动态规划算法等。
其中,查找算法用于实现快速查找联系人功能,排序算法用于实现通讯录的排序功能,动态规划算法用于实现最长公共子序列问题等。
3. 数据库:通讯录管理系统需要使用到数据库来存储通讯录中的数据。
需要掌握关系型数据库的设计和操作,包括数据表的设计、SQL 语句的编写等。
4. 界面设计:通讯录管理系统需要有友好的用户界面,需要进行界面设计和开发,包括前端技术的使用,如HTML、CSS和JavaScript等。
5. 系统测试:通讯录管理系统需要进行系统测试,包括功能测试、性
能测试等,确保系统能够正常运行并满足用户需求。
通过设计和实现通讯录管理系统,可以锻炼学生对数据结构和算法的理解和应用能力,同时还能提高学生的编程能力和团队合作能力。
一、课题名称简易手机通讯录管理系统(线性表、查找、排序)二、主要内容简易手机通讯录管理系统的设计主要是实现对手机通讯录的管理和相关操作。
基本功能如下:(1)联系人信息录入、添加功能:包括手机号(此处用短号,5位,不能重复)、姓名、家庭住址的录入和添加。
(2)联系人信息查询功能:能①按手机号进行查询。
②按联系人姓名进行查询。
(3)排序:①能按手机号升序进行排序;②能按姓名进行升序排序,姓名相同时按手机号从小到大进行排序(4)联系人信息的修改、删除功能:①按手机号进行联系人信息的修改和删除。
②按姓名进行联系人信息的修改和删除,多个姓名时,再指定具体的号码。
(5)统计功能:统计自己的联系人有多少个。
三、课题设计的基本思想,原理和算法描述(1)本次课程设计题目为简易手机通讯录管理系统,主要运用到线性表中顺序表的相关知识,以及顺序查找的思想和冒泡排序算法。
(2)界面设计//菜单函数int menu(){int c;printf("\n\n\t☆☆☆☆☆☆☆手机通讯录信息管理系统☆☆☆☆☆☆☆☆\n\n");printf("******************************************************************* ***\n");printf(" 1.添加联系人信息\n");printf(" 2.查询联系人信息\n");printf(" 3.对联系人信息进行排序\n");printf(" 4.修改联系人信息\n");printf(" 5.删除联系人信息\n");printf(" 6.统计联系人个数\n");printf(" 0.退出信息管理系统\n");printf("******************************************************************* ***\n\n");printf("★请输入您的选择(0-6):");while(1){scanf("%d",&c);if(c<0||c>6)printf("\n▲输入错误!请重新选择:");elsebreak;}return c;}//主函数void main(){SqList * L;InitList(L);system("color 3f");while(1){switch(menu()){case 1:system("cls");printf("\n\t\t\t信息的增加\n");ListAdd(L);break;case 2:system("cls");printf("\n\t\t\t信息的查询\n");Search(L);break;case 3:system("cls");printf("\n\t\t\t对信息进行排序\n");Paixu(L);break;case 4:system("cls");printf("\n\t\t\t信息的修改\n");ListModify(L);break;case 5:system("cls");printf("\n\t\t\t信息的删除\n");Delete(L);break;case 6:system("cls");printf("\n\t\t\t统计联系人个数\n");ListLength(L);break;case 0:printf("再见!\n");return;default:printf("\n▲输入错误!请重新选择:");break;}}}(3)功能模块的实现初始化顺序表void InitList(SqList *&L)L=(SqList *)malloc(sizeof(SqList));L->length=0;}②增加信息函数。
目录第一章绪论 (2)1.1研究背景及意义 (2)1.2开发的意义 (2)第二章问题分析 (3)1.问题描述 (3)2.系统功能需求分析 (3)3.概要设计 (4)4.数据抽象 (5).结构关系 (5)第三章详细设计 (6)1. BookInfo类 (6)2. person结构 (6)3. telephone结构 (7)4. linknode结构 (7)3. mian函数 (10)第四章功能测试 (10)1.要实现的功能目标 (10)2.具体测试过程 (11)第五章总结 (20)参考文献 (21)第一章绪论1.研究背景及意义通讯录管理系统是每一个用户管理通讯录的不可缺少的一个管理信息系统,它的内容对于用户的管理者来说是至关重要的,所以通讯录管理系统应该能够为每一个用户的管理者提供充足的信息和快捷的查询手段,大大的方便用户合理的管理通讯录。
随着科学技术的不断提高,计算机科学日渐成熟,网上通讯工具的迅速发展,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对通讯录进行管理,具有着手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高通讯录管理的效率,也是用户理财的科学化、正规化管理,与先进科学技术接轨的重要条件。
因此,开发这样一套管理软件成为很有必要的事情,对于我们即将计算机专业毕业的学员来说,也是一次将计算机应用于现实管理的一次很有意义的实践活动。
2.开发的意义计算机已经成为我们学习和工作的得力助手,使用其可方便的管理通讯录今天,计算机的价格已经十分低廉,性能却有了长足的进步。
它已经被应用于许多领域。
现在我国的通讯录管理水平还停留在纸介质的基础上,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代这种传统的管理方法必然被计算机为基础的信息管理所取代。
A 通讯录管理系统随着社会的发展,人际关系变得越来越重要,为了保持良好的人际关系,必须经常与亲戚、朋友、同学、同事和其他一些人保持联系,因此,为了能够快速查找到联系人的信息,节省查找时间,可以创建一个通讯录管理系统,在该系统中为了防止信息被他人窃取,可以通过密码进行验证,只有通过密码验证才能进入系统。
通讯录管理系统主窗体界面如图A.1所示。
图A.1 通讯录管理系统主窗体A.1程序预览下面我们首先来浏览一下整个系统的运行过程,由于整个系统分为家人、朋友、同学、同事和其他5类,并且这5类信息的操作过程是一样的,所以下面主要以家人信息进行介绍。
1.系统运行后,首先进入系统登录模块,效果如图A.2所示。
图A.2 系统登录窗体2.在图A.2所示的系统登录模块中可以通过输入正确的用户“mr”和密码“mrsoft”,单击“登录”按钮进入通讯录管理系统的主窗体界面,通讯录管理系统的主窗体界面如图A.3所示,可以通过菜单和工具栏进入相应的模块。
图A.3 通讯录管理系统主窗体3.在通讯录管理系统的主窗体中,单击“家人”/“添加信息”菜单项,可以打开添加家人信息模块,如图A.4所示,在该界面中可以输入家人的联系信息,然后单击“保存”按钮,保存此次输入的家人联系信息。
图A.4 添加家人信息模块4.在通讯录管理系统的主窗体中,单击“家人”/“修改信息”菜单项,可以打开修改家人信息模块,如图A.5所示,在该界面中可以修改家人的联系信息,方法是首先在下面的表格中选择要修改的家人信息,然后在编辑组件中输入要修改的内容,单击“修改”按钮,保存此次信息的修改。
图A.5 修改家人信息模块5.在通讯录管理系统的主窗体中,单击“家人”/“删除信息”菜单项,可以打开删除家人信息模块,如图A.6所示,从表格中选择要删除的家人信息,然后单击“删除”按钮,即可删除所选择的家人联系信息。
图A.6 删除家人信息模块6.在通讯录管理系统的主窗体中,单击“家人”/“查询信息”菜单项,可以打开查询家人信息模块,如图A.7所示,在该界面中默认在表格中显示所有家人的联系信息,也可以从“查询条件:”标签右侧的组合框中选择查询字段,然后在右侧的文本框中输入对应的查询内容,单击“查询”按钮,即可查询出指定条件的家人联系信息。
电子通讯录功能如下:Function choose1.Read2.Append3.Delete4.Search5.Save and exit6.Quit说明:上图是电子通讯录的主菜单,利用它,将能够轻松地录入一个朋友的电话号码,通讯地址和出生日期,而且它还提供了检索和删除功能。
在后面还将提供按生日先后排序的功能,这些都有助于该通讯录的管理。
电子通讯录是采用线性表作为电子通讯录功能如下:Function choose1.Read2.Append3.Delete4.Search5.Save and exit6.Quit说明:上图是电子通讯录的主菜单,利用它,将能够轻松地录入一个朋友的电话号码,通讯地址和出生日期,而且它还提供了检索和删除功能。
在后面还将提供按生日先后排序的功能,这些都有助于该通讯录的管理。
电子通讯录是采用线性表作为程序的基本结构的。
设计思想:1。
用顺序表设计电子通讯录的结构为了表示较为复杂的数据内容,一般用结构这种数据类型,第一步就是在结构中定义所需要的各项信息。
一般的通讯录都包括姓名,性别,出生年月,通讯地址和联系电话这几项,而在这几项中,出生年月又包括年份,月份和日期三项,通讯地址包括邮编和家庭地址二项,我们把这些联系较为紧密的内容又用单独的结构表示,这样就产生了电子通讯录的基本结构:struct addr /*通讯地址结构定义*/{ char post_num[10]; /*邮编*/char addr[40]; /*家庭地址*/};struct birth /*出生年月结构定义*/{ int year; /*年份*/int month; /*月份*/int day; /*日期*/};struct friend /*电子通讯录结构定义*/{ int number; /*序号*/char name[20] /*姓名*/char sex; /*性别*/struct birth birth; /*出生年月*/struct addr addr; /*通信地址*/char telephone[13]; /*联系电话*/};定义的主结构friend包含了前述的五项内容 name,sex,和telephone分别代表了姓名,性别和联系电话。
通讯录模块
一、模块概述
1、功能描述:主要用于用户按类别管理自己的通讯录信息。
根据功能可以将同学录模块分为两个部分,用户操作,联
系人管理。
2、功能结构图:
3、系统流程:当用户访问系统时,首先判断用户是否已经注
册,如果没有注册,就要进入注册页面,如果注册了,就
进入登录页面(进行验证),进入系统后,用户可以对自己的联系人信息进行管理
4、系统流程图:
5、页面预览
1)注册:
2)登录:
3)主页面:
4)添加联系人:
5)修改联系人:
6)按类别查询联系人:
7)通讯分组显示的页面:
8)修改登录用户的个人信息,可以修改登录密码,修改
头像
二、关键技术
MVC,JSP+Servlet+JavaBean设计模式,Servlet充当了控制层,
用于实现业务逻辑,JavaBean充当了模型层;JSP充当了表示层,也就是视图,用于获取或显示数据。
我们采用JSP的动作标签,以及EL表达式,还有JSTL标签库等技术来替代JSP页面捉弄个
的一些Java代码片。
三、数据库设计
3张表:user(用户信息表),group(通讯组信息表),linkman(联
系人信息表)。
user表:
group表
linkman表。
青岛大学软件技术学院课程设计题目名称通讯录系统姓名肖祯专业计算机网络技术班级 08级网络2班指导教师崔树娟二0一0 年七月十日目录第一章引言 (1)1.1选题背景 (1)1.2项目目标 (1)1.3开发技术 (1)第二章通讯录系统概述 (1)2.1需求分析 (2)2.1.1功能需求分析 (2)2.1.2性能需求分析 (2)2.2总体设计 (2)2.2.1可行性分析 (2)2.2.2功能分析 (3)2.2.3数据流图分析 (3)第三章通讯录系统的详细设计 (7)3.1数据库设计 (7)3.2系统模块设计 (7)3.3用户模块设计 (8)第四章现行系统存在的主要问题 (13)小结 (14)参考文献 (15)致谢 (16)第一章引言1.1选题背景Internet已经成为人们生活、工作、学习越来越离不开的平台。
Web技术已经不在局限于单纯地提供信息服务,而是日益成为一个操作平台,为用户提供强大的服务功能。
网络实现了远程通讯,人们能够通过计算机网络进行电子邮件的发送,召开网络会议,网上购物,甚至坐在家里就可以上大学(网上教育)。
因此,创建这个通讯录系统,紧跟行业发展,满足人们生活、学习的需要。
JSP是Sun公司推出的一种网站开发技术,Sun公司借助自己在Java上的不凡造诣,又把人们引进JSP时代,JSP即Java Server Page,它可以在Servlet和JavaBean的支持下,完成功能强大的Web应用程序。
采用了JSP作为开发工具,构建通讯录系统。
该系统能实现用户的注册、登录、添加信息、修改信息、查询查询、删除信息等功能。
1.2项目目标1)通过课程设计,加深对结构化设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。
2)通过课程设计,提高程序开发功能,能运用合理的控制流程编写清晰高效的程序。
3)通过课程设计,设计一个实用的通讯录管理系统,能以简便高效的方法,对通讯录进行管理和检索。
4)通话课程设计,培养分析问题、解决实际问题的能力。