数据结构 链表的应用 通讯录管理

数据结构 链表的应用 通讯录管理
数据结构 链表的应用 通讯录管理

数据结构链表的应用通讯录管理

实验要求:

一、设计一个含有多个菜单项的程序,菜单项内容如下:

1通讯录链表的建立

2通讯录链表的插入

3通讯录链表的查询

4通讯录链表的删除

5通讯录链表的输出

0退出管理系统

要求只能用0-5来选择菜单项,其他的输入无效

二、分别实现多个菜单项的功能,要求每个功能在操作时都有确认提示

三、编写一个程序实现整个通讯录管理系统,把主菜单的生成和各菜单项功能的实现作为子程序或者函数或者过程来实现。

四、要求关键语句必须要写注释。

#include"stdio.h"

#include"string.h"

#include"stdlib.h"

typedefstructabc{//通讯录结点类型

charnum[5];//编号

charname[9];//姓名

charsex[3];//性别

charphone[13];//电话

charaddr[31];//地址

}DataType;

typedefstructnode{//结点类型定义

DataTypedata;//结点数据域

structnode*next;//结点指针域

}ListNode;

typedefListNode*LinkList; LinkListhead;

ListNode*p;

//函数说明

intmenu_select();

LinkListCreateList(void); voidInsertNode(LinkListhead,ListNode*p); ListNode*ListFind(LinkListhead); voidDelNode(LinkListhead); voidPrintList(LinkListhead);

//主函数

voidmain()

{

for(;;){

switch(menu_select())

{

case1:

printf("**********************************\n"); printf("*通讯录链表的建立*\n");

printf("**********************************\n"); head=CreateList();

break;

case2:

printf("*通讯者信息的添加*\n");

printf("**********************************\n");

printf("编号(4)姓名(8)性别(3)电话(11)地址(31)\n");

printf("*************************************\n");

p=(ListNode*)malloc(sizeof(ListNode));//申请新结点

scanf("%s%s%s%s%s",p->data.num,p->https://www.360docs.net/doc/2b12861055.html,,p->data.sex, p->data.phone,p->data.addr);

InsertNode(head,p);

break;

case3:

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->https://www.360docs.net/doc/2b12861055.html,,

p->data.sex,p->data.phone,p->data.addr);

printf("---------------------------------------------------\n");

}

else

printf("没有查到要查询的通讯者!\n");

break;

case4:

printf("*通讯录信息的删除*\n");

printf("***********************************\n"); DelNode(head);//删除结点

break;

case5:

printf("************************************\n"); printf("*通讯录链表的输出*\n");

printf("************************************\n"); PrintList(head);

break;

case0:

printf("\t再见!\n");

return;

}

}

}

intmenu_select()

{

intsn;

printf("通讯录管理系统\n");

printf("===================\n"); printf("1.通讯链表的建立\n");

printf("2.通讯者结点的插入\n");

printf("3.通讯者结点的查询\n");

printf("4.通讯者结点的删除\n");

printf("5.通讯录链表的输出\n");

printf("0.退出管理系统\n");

printf("==========================\n");

printf("请选择0-5:");

for(;;)

{

scanf("%d",&sn);

if(sn<0||sn>5)

printf("\n\t输入错误,重选0-5:");

else

break;

}

returnsn;

}

LinkListCreateList(void){//尾插法建立带头结点的通讯录链表算法

LinkListhead=(ListNode*)malloc(sizeof(ListNode));//申请头结点

ListNode*p,*rear;

intflag=0;//结束标志置0

rear=head;//尾指针初始指向头结点

while(flag==0){

p=(ListNode*)malloc(sizeof(ListNode));//申新结点

printf("编号(4)姓名(8)性别电话(11)地址(31)\n");

printf("--------------------------------------------------------------------------------------\n");

scanf("%s%s%s%s%s",p->data.num,p->https://www.360docs.net/doc/2b12861055.html,,p->data.sex,p->data.phone, p->data.addr);

rear->next=p;//新结点连接到尾结点之后

rear=p;//尾指针指向新结点

printf("结束建表吗?(1/0):");

scanf("%d",&flag);

}

rear->next=NULL;//终端结点指针置空

returnhead;//返回链表头指针

}

voidInsertNode(LinkListhead,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(LinkListhead)

{//有序通讯录链表上的查找

ListNode*p;

charnum[5];

charname[9];

intxz;

printf("==================\n"); printf("1.按编号查询\n");

printf("2.按姓名查询\n");

printf("==================\n"); printf("请选择:");

p=head->next;//假定通讯录表带头结点scanf("%d",&xz);

if(xz==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;//没有查到要查找的通讯

}

else

if(xz==2){

printf("请输入要查找者的姓名:");

scanf("%s",name);

while(p&&strcmp(p->https://www.360docs.net/doc/2b12861055.html,,name)!=0) p=p->next;

}

returnp;

}

voidDelNode(LinkListhead)

{

charjx;

ListNode*p,*q;

p=ListFind(head);//调用查找函数

if(p==NULL){

printf("没有查到要删除的通讯者!\n");

return;

}

printf("真的要删除该结点吗?(y/n):");

scanf("%c",&jx);

if(jx=='y'||jx=='Y'){

q=head;

while((q!=NULL)&&(q->next!=p))

q=q->next;

q->next=p->next;//删除结点

free(p);//释放被删结点空间

printf("通讯者已被删除!\n");

}

}

voidPrintList(LinkListhead)

{

ListNode*p;

p=head->next;

printf("编号姓名性别联系电话地址\n");

printf("--------------------------------------------------------------------------------\n" );

while(p!=NULL)

{

printf("%s,%s,%s,%s,%s\n",p->data.num,p->https://www.360docs.net/doc/2b12861055.html,,p->data.sex,

p->data.phone,p->data.addr);

printf("---------------------------------------------------------------------------------\n ");

p=p->next;//后移一个结点

}

}

C++链表通讯录完美版

C++语言课程设计 学号:010910236 姓名:楚归羽 指导老师:张

目录 一、程序功能 (2) 二、题目分析 (2) 三、设计中遇到的问题及解决方法 (2) 四、感想与心得 (2) 五、程序说明 (2) 六、函数调用关系及主要算法的实现 (8) 七、数据测试 (8)

一、程序功能 程序采用单向链表类结构实现实现通讯录多个纪录的管理工作。 1、提示输入个字段,一次输入一个人的数据 2、输入待删除记录的姓名,显示其所有信息,让用户确认是否删除 3、按顺序显示所有记录,每显示10条记录暂停,按Enter继续 4、输入姓名,显示其所有信息 5、用户输入姓名,系统显示该姓名下所有信息,同时显示子菜单,用户按子菜单提示进行修改 6、从实现建立的正文文件中批量导入数据。程序运行时,用户需输入正文文件名 7、将库表中数据写入一个正文文件中。程序运行时,用户需输入正文文件名 8、首先显示当前排序关键字,然后提示是否需要改变。系统默认按姓名排序,可在按办公室电话排序之间切换 9、退出系统 二、题目分析 程序采用单向链表类结构实现,每个结点代表一个通讯记录。链表类实现通讯录多个纪录的管理工作。 三、设计中遇到的问题及解决方法 初次接触课程设计,刚刚拿到题目,实在是茫然无头绪,于是反复研究了题目,仔细复习了链表部分的知识点,加上和同学的讨论,终于是有了一个大概的思路。 刚开始着手编写的时候问题不断,幸好经过练习册上的指示,搭好了基本的框架,可是链表部分仍然是出了很大的问题,经过自己的反复实验与不断努力终于编译成功。后面的文本文件的读入与写入则是另一个难题,因为这一块练习的不是很多,只在课本上看到了一些皮毛,在编译与调试时也遇到了很大问题。最后通过看书上的例题并在与同学交流探讨中解决了这些问题。 四、感想与心得 C++作为一门必修课程,学习的过程实在是痛苦的,尤其是在编程的时候,因为总是会出现各种各样的错误。只有通过反复的调试,通过无数次的排错,才能编写出正确的程序,更多的时候,一个很小的很无聊错误就能导致长时间的迷惑。但是,这也让我学到了还能多,尤其是面对错误坚韧不拔的意志和不达目的绝不低头的毅力,这一点对科研工作想来也是相当重要的。 五、程序说明 /*通讯录管理系统||Copyright:010910236 丁志伟*/ #include #include #include #include #include #include /*------------------------分割线||节点类的定义--------------------------------------------*/ class node { char Name[15]; int OfficePhone; int HomePhone; char MobilePhone[15]; char Email[20]; node *next; public: node(char *n="a",int o=0,int h=0,char *m="b",char *e="c",node *ne=NULL)//初始化 { if(n)strcpy(Name,n); if(m)strcpy(MobilePhone,m); if(e)strcpy(Email,e); next=ne; OfficePhone=o;HomePhone=h; } void show() //显示节点数据 { cout<

通讯录管理系统

课程设计任务书 题目C语言课程设计 系(部) 信息科学与电气工程学院 专业计算机科学与技术 班级计职141 学生姓名王雪 学号140819139 06 月21 日至07 月04 日共 2 周 指导教师 院长 2015 年6月23日

一、课程设计目的 将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼: (1)进一步巩固、加深学生所学专业课程《C++程序设计语言》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。 (2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。 (3)利用所学知识,开发小型应用系统,掌握运用C++语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。 (4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。 (5)掌握结构化程序设计方法,熟悉面向对象程序设计方法。 (6)熟练掌握C++语言的基本语法,灵活运用各种数据类型。 (7)进一步掌握在集成环境下如何调试程序和修改程序。 设计功能 录入联系人信息(包括姓名、电话号码、地址等信息);通讯录管理系统要求实现以下功能: 1、输入每一位联系人记录,将其信息存入文件中。 2、查询所有联系人的信息,并按可选的自定义规则进行排序; 3、记录修改,将修改的记录信息保存于文件中。 设计要求 1、设一个通信录由以下几项数据信息构成: 数据项类型 姓名字符串 地址字符串 邮政编码字符串 电话号码字符串 试为通信录数据定义类型和定义通信录变量,实现功能:存取、显示、删除记录、查询记录等功能。 2、要求:界面友好,易于操作 总体设计 系统功能模块图:

数据结构—链表应用能力测评

任务: 编写一个能向表尾插入结点,并输出链表中所有数据元素的小程序

#ifndef _LINKLIST #define _LINKLIST #include using namespace std ; struct node { int data ; struct node *next ; }; typedef struct node *PLIST; typedef struct node NODE; /*创建链表,并初始化链表元素*/ PLIST createList_link() { PLIST head ,tail ,temp; int elem = -1; head = new NODE; //初始化头结点 if( head == NULL) { cout<<"分配空间失败,链表创建失败"<next = NULL; tail = head ; while(1) { cin >> elem ; if(elem == 0 ) break ; temp = new NODE ; if(temp == NULL) { cout<<"分配空间失败,链表创建失败"<data = elem ; temp->next = NULL ; tail->next = temp ; tail = temp; } return head ;

} void printList_link(PLIST head ) { /*在此处完成任务,输出head为表头的单链表数据元素*/ //begin PLIST p =new NODE; p=head->next; while(p){ printf("%d ",p->data); p=p->next; } //end } void insertDataTail(PLIST head , int insData ) { /*在此处完成任务,在head为表头的单链表表尾插入数据元素insData*/ //begin PLIST p; p=head->next; while(p->next!=NULL){ p=p->next; } PLIST q = new NODE; //初始化结点 p->next=q; q->data=insData; q->next=NULL; //end } #endif

数据结构 单链表详解

数据结构的概念: 数据的逻辑结构+ 数据的存储结构+ 数据的操作; 数据的数值:=====》数据===》数值型数据整形浮点数ASCII 非数值型数据图片声音视频字符 =====》数据元素=====》基本项组成(字段,域,属性)的记录。 数据的结构: 逻辑结构 ----》线性结构(线性表,栈,队列) ----》顺序结构 ----》链式结构 ----》非线性结构(树,二叉树,图) ----》顺序结构 ----》链式结构 存储结构 -----》顺序存储 -----》链式存储 -----》索引存储 -----》哈希存储==散列存储 数据的操作: 增 删 改 查 DS ====》数据结构===》DS = (D,R); 数据结构中算法: 1、定义:有穷规则的有序集合。 2、特性: 有穷性 确定性

输入 输出 3、算法效率的衡量 时间复杂度计算===》算法中可执行依据的频度之和,记为:T(n)。 是时间的一种估计值不是准确值。 计算结果的分析:1 将最终结果的多项式中常数项去掉 2 只保留所有多项式中最高阶的项 3 最后的最高阶项要去掉其常数项 时间复杂度的量级关系: 常量阶====》对数阶===》线性阶===》线性对数阶====》平方阶===》立方阶===》指数阶 以上关系可以根据曲线图来判断算法对时间复杂度的要求 空间复杂度计算====》算法执行过程中所占用的存储空间的量级,记为:D(n)。 计算方法是在运行过程中申请的动态内存的量级计算。 ///////////////////////////////////////////////////////////////////////////////////////////////// 线性表 顺序存储====》顺序表(数组) 链式存储====》单链表 特征:对于非空表,a0是表头没有前驱。 an-1 是表尾没有后继 ai的每个元素都有一个直接前驱和直接后继 基本操作:创建表=====》增加元素====》删除元素====》改变元素值====》查询元素 1、顺序表的操作 1.1 创建顺序表=====》定义个指定类型的数组====》int a[100] ={0};

链表实现通讯录

#include #include #include #include struct txl { char n[10]; char name[10]; char sex [10]; char tele[12]; char address[100]; struct txl *next; }; typedef struct txl TXL; typedef struct txl * link; enum result {exit_ok}; void menu_select()//主菜单 { printf(" 欢迎进入通讯录管理系统\n"); printf("********************************\n"); printf(" 1.联系人添加\n"); printf(" 2.联系人删除\n"); printf(" 3.联系人修改\n"); printf(" 4.联系人查找\n"); printf(" 5.联系人总览\n"); printf(" 0.退出通讯录管理系统\n"); printf("********************************\n"); } void is_malloc_ok(link *new_node) { if((*new_node) == NULL) { printf("Malloc error!"); exit(-1); } } void create_link(link *head)

{ (*head) = (link)malloc(sizeof(TXL)); is_malloc_ok(head); (*head)->next = NULL; } void create_new_node(link *new_node) { int i; *new_node = (link)malloc(sizeof(TXL)); is_malloc_ok(new_node); printf("请输入编号:\n"); scanf("%s",&(*new_node)->n); printf("请输入姓名:\n"); scanf("%s",&(*new_node)->name); printf("请输入性别:\n"); scanf("%s",&(*new_node)->sex); printf("请输入联系电话:\n"); scanf("%s",&(*new_node)->tele); printf("请输入家庭地址:\n"); scanf("%s",&(*new_node)->address); printf("联系人添加成功!\n"); } insert_new_node(link *new_node,link *head) { (*new_node)->next = (*head)->next; (*head)->next = (*new_node); } void add_new_node(link *head) { link new_node; create_new_node(&new_node); insert_new_node(&new_node,head); } void display(link *head) { int i = 1; link p = NULL; if((*head)->next == NULL) { printf("通讯录为空!\n");

题目通讯录管理系统

题目 2 通讯录管理系统 一.设计要求 1、问题描述 设有一通讯录,记录联系人的联系信息,包括联系人姓名、联系人多个联系电话、邮箱、联系地址以及所属群组。联系人按姓氏序列升序排列并按顺序编号。使用者能根据姓名或编号对联系人信息进行增删改查。请编制一程序模拟该通讯录的管理。 2、设计要求 1)基本要求 (1) 新建联系人。输入联系人的姓名、电话、email、地址和分组等信息, 并插入通讯录的正确位置。 (2) 编辑联系人。可修改、新增或删除联系人的电话、设置首个默认电话号 码、修改或删除email、地址和分组等信息。 (3) 删除联系人。可按姓名或序号删除联系人的信息。 (4) 查询联系人。可按姓名或序号查询联系人的信息并输出。 (5) 群组管理。可根据实际情况删除或新增分组,可为联系人分配群组或移 除群组,并可按群组查询联系人信息。 (6) 输出通讯录。按顺序输出通讯录的全部信息。 2)以下为选做: (7) 按姓名查询联系人时可进行模糊查询。 (8) 通过文件读写实现通讯录信息的读取和记录。 二.概要设计 1.主界面设计 为了实现通讯录管理系统,设计一个含有多个菜单项的主控菜单子程序以链接系统的各项子功能,方便用户使用本系统。本系统主菜单运行界面如下图

所示。 2.存储结构设计 本系统主要采用链表结构类型存储联系人信息。 3.系统功能设计 本系统分为以下7个功能模块。 (1)添加联系人:添加联系人子模块可完成添加联系人姓名、电话、email、地址和分组等信息,并插入通讯录的正确位置。 (2) 编辑联系人。可修改、新增或删除联系人的电话、设置首个默认电话号码、修改或删除email、地址和分组等信息。 (3) 删除联系人。可按姓名或序号删除联系人的信息。 (4) 查询联系人。可按姓名或序号查询联系人的信息并输出。 (5) 群组管理。可根据实际情况删除或新增分组,可为联系人分配群组或移除群组,并可按群组查询联系人信息。 (6) 输出通讯录。按顺序输出通讯录的全部信息。 (7)可选择是否保存并退出系统。 三.模块设计

通讯录管理系统

通讯录管理系统说明书 一、使用的技术和开发平台: 基于https://www.360docs.net/doc/2b12861055.html,技术开发的数据库应用程序。开发平台为windows,使用的语言为C#2008,数据库为:MSSQL SERVER2008 二、系统功能模块 本系统是使用c#2008和MSSQL SERVER2008开发的一个数据库应用程序,其主要功能是实现对不同组别的联系人信息进行管理,具体来说分如下几个功能模块: 1、后台管理模块 对系统管理员账户的添加、删除、修改等操作 2、登录验证系统 系统启动时,将出现登录窗口,要求用户输入正确的用户名和密码,否则无法进入系统。 2、联系人管理系统 登录成功后将进入系统的主窗口(FormMain.cs),如下图所示: 其中组别是对联系人分的类,根据添加到数据库中的所有联系人的组别确定,是可以更改的。主窗口第一次显示时,默认显示第一个组别的所有联系人。可以在左边树形列表中选择不同的组别,同时右边的ListView自动显示不同组别的所有联系人。在联系人菜单下可以实现新增联系人、删除联系人、修改或查看联系人以及搜索,不论是新增、删除还是修改联系人完毕后,下面的ListView会同时更新显示联系人及组别。状态栏显示登录账户名和选中组别包含的联系人个数。 当用户单击新增联系人菜单项时,弹出如下窗体(FrmAdd.cs),以实现新增:

其中组别是根据数据库中已有的组别自动加载到组合框中的。当用户在ListView中选择某个联系人后再单击删除联系人菜单项,可将该联系人删除。当用户在ListView中双击某个联系人或单击修改或查看联系人菜单项,会弹出如下窗体(FrmMod.cs),以实现修改或查看联系人:不论是添加还是修改联系人时,组别都是可以修改的,注意姓名和组别不能为空。

通讯录总体功能要求

一.需求分析说明 (1) 1.通讯录总体功能要求: (1) 2. 各功能模块的功能描述: (1) 二.概要设计说明 (3) 1.模块调用图: (3) 2.各函数简要说明: (3) 三.详细设计说明 (4) 1.数据结构设计 (4) 2.主函数模块 (5) 3.密码验证模块 (5) 4.输入信息模块 (6) 5. 显示信息模块 (7) 6.查找模块 (7) 7.修改信息模块 (7) 8.删除信息模块 (8) 9. 信息加载 (8) 10.存盘模块 (8) 11. 密码修改模块 (8) 四.调试分析 (9) 1.问题一 (9) 2.问题二 (9) 3.问题三 (9) 五.用户使用说明 (10) 六.课程设计总结 (16) 七.测试结果 (17) 1.测试密码登陆 (17) 2.测试输入信息 (17) 3.测试显示信息 (18) 4.测试查找信息 (18) 5.测试修改信息 (19) 6.测试删除信息 (19) 7.测试加载信息 (20) 8.测试存盘 (21) 9.测试密码修改 (22) 参考书目 (23) 附录 (24)

一.需求分析说明 1.通讯录总体功能要求: 在window7系统下用vc6.0开发工具以双向链表作数据结构,编写一个通讯录管理系统。每条信息包含:姓名(name )街道(street)城市(city)邮编(eip)电话(tel)国家(state)。此系统具有友好的界面和较强的容错能力。 本系统具有以下几方面的功能: (1).密码验证passWord():通过密码登陆本系统。 (2).输入信息enter():通过键盘输入所需添加信息。 (3).显示信息display( ):显示所有通讯录信息。 (4).查找search( ):以名字为关键字查找用户信息。 (5).修改modify():修改指定的信息。 (6).删除信息del ( ):用户通过输入指定名字找到相关记录然后确定是否删除。 (7).存盘save ( ):把所有用户通过键盘录入的信息或者通过文件加载的信息以 文本文件存入硬盘。 (8).装入load( ) :从文本文件加载通讯录信息。 (9).密码修改modpw():由用户自己修改为指定的密码。 2. 各功能模块的功能描述: (1)主函数模块: 本模块的主要功能是初始化各种数据,根据用户选择的数字调用对应的

通讯录管理系统需求分析

通讯录管理系统需求分析 项目编号:S1-BS-HTML-001 l项目概述 1.引言 1.1编写目的 在完成了针对通讯录管理系统的前期调查,同时与多位软件使用者进行了全面深入地探讨和分析的基础上,提出了这份软件需求规格说明书。 此需求规格说明书对《通讯录管理系统》软件做了通讯录管理系统的用户需求分析,明确所要开发的软件应具有的功能、性能与界面,使系统分析人员及软件开发人员能清楚地了解用户的需求,并在此基础上进一步提出概要设计说明书和完成后续设计与开发工作。本说明书的预期读者为客户、业务或需求分析人员、测试人员、用户文档编写者、项目管理人员。 本说明书是整个软件开发的依据,它对以后阶段的工作起指导作用。本文也是项目完成后系统验收的依据。

1.2项目背景 本通讯录信息管理系统用计算机管理电子通讯录的一种计算机应用技术的创新,在计算机还未普及之前通讯管理都是由联系人采用名片,笔录手工记帐的方式来操作的.现在一般的通讯录管理都是采用计算机作为工具的实用的计算机通讯录管理程序来帮助人们进行更有效的通讯录信息管理。通讯录管理系统是典型的信息管理系统(mis),要求应用程序功能完备,易使用等特点。 1.3定义 需求:用户解决问题或达到目标所需的条件或功能;系统或系统部件要满足合同、标准,规范或其它正式规定文档所需具有的条件或权能。 2.任务概述 2.1目标 实现通讯录管理系统的基本功能,可以实现电话用户的查询、电话号码的查询、电话号码所在地的查询、电话号码的添加及删除等功能,以方便人们的记录和通讯。 2.2运行环境 2.2.2.1服务端 A. 操作系统:Windows 2003 Server 2.2.2.2客户端 A. Windows 95/98/me/Xp/2000/2003, Unix, Linux,Vista,Mac OS各版 2.3条件与限制 本通讯录信息管理系统用计算机管理电子通讯录的一种计算机应用技术的创新,在计算机还未普及之前通讯管理都是由联系人采用名片,笔录手工记帐的方式来操作的.现在一般的通讯录管理都是采用计算机作为工具的实用的计算机通讯录管理程序来帮助人们进行更有效的通讯录信息管理。通讯录管理系统是典型的信息管理系统(mis),要求应用程序功能完备,易使用等特点。 3.数据描述 开始 3.1数据流图 以可读写的方式打开一个数据文件 将此文件的内容读出,并存入一个新的结构体类型的数组中。 调用menu()菜单函数

数据结构课程设计单链表

目录 1 选题背景 (2) 2 方案与论证 (3) 2.1 链表的概念和作用 (3) 2.3 算法的设计思想 (4) 2.4 相关图例 (5) 2.4.1 单链表的结点结构 (5) 2.4.2 算法流程图 (5) 3 实验结果 (6) 3.1 链表的建立 (6) 3.2 单链表的插入 (6) 3.3 单链表的输出 (7) 3.4 查找元素 (7) 3.5 单链表的删除 (8) 3.6 显示链表中的元素个数(计数) (9) 4 结果分析 (10) 4.1 单链表的结构 (10) 4.2 单链表的操作特点 (10) 4.2.1 顺链操作技术 (10) 4.2.2 指针保留技术 (10) 4.3 链表处理中的相关技术 (10) 5 设计体会及今后的改进意见 (11) 参考文献 (12) 附录代码: (13)

1 选题背景 陈火旺院士把计算机60多年的发展成就概括为五个“一”:开辟一个新时代----信息时代,形成一个新产业----信息产业,产生一个新科学----计算机科学与技术,开创一种新的科研方法----计算方法,开辟一种新文化----计算机文化,这一概括深刻影响了计算机对社会发展所产生的广泛而深远的影响。 数据结构和算法是计算机求解问题过程的两大基石。著名的计算机科学家P.Wegner指出,“在工业革命中其核心作用的是能量,而在计算机革命中其核心作用的是信息”。计算机科学就是“一种关于信息结构转换的科学”。信息结构(数据结构)是计算机科学研究的基本课题,数据结构又是算法研究的基础。

2 方案与论证 2.1 链表的概念和作用 链表是一种链式存储结构,链表属于线性表,采用链式存储结构,也是常用的动态存储方法。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。 以“结点的序列”表示线性表称作线性链表(单链表) 单链表是链式存取的结构,为找第 i 个数据元素,必须先找到第 i-1 个数据元素。 因此,查找第 i 个数据元素的基本操作为:移动指针,比较 j 和 i 单链表 1、链接存储方法 链接方式存储的线性表简称为链表(Linked List)。 链表的具体存储表示为: ① 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不连续的) ② 链表中结点的逻辑次序和物理次序不一定相同。为了能正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其后继结点的地址(或位置)信息(称为指针(pointer)或链(link)) 注意: 链式存储是最常用的存储方式之一,它不仅可用来表示线性表,而且可用来表示各种非线性的数据结构。 2、链表的结点结构 ┌───┬───┐ │data │next │ └───┴───┘ data域--存放结点值的数据域 next域--存放结点的直接后继的地址(位置)的指针域(链域) 注意: ①链表通过每个结点的链域将线性表的n个结点按其逻辑顺序链接在一起的。 ②每个结点只有一个链域的链表称为单链表(Single Linked List)。

管理信息系统-通讯录管理系统

昆明理工大学管理信息系统课程设计通讯录管理系统 学院计算机科学与技术学院 姓名黄亚军 学号200910405229 指导教师姓名王剑 2012年05月27日

昆明理工大学管理信息系统课程设计 (1) 摘要 参考文献 (25)

摘要: 通讯录管理系统是每一个用户管理通讯录的不可缺少的一个管理信息系统,它的内容对于用户的管理者来说是至关重要的,所以通讯录管理系统应该能够为每一个用户的管理者提供充足的信息和快捷的查询手段,大大的方便用户合理的管理通讯录。 随着科学技术的不断提高,计算机科学日渐成熟,网上通讯工具的迅速发展,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 作为计算机应用的一部分,使用计算机对通讯录进行管理,具有着手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高通讯录管理的效率,也是用户理财的科学化、正规化管理,与先进科学技术接轨的重要条件。 因此,开发这样一套管理软件成为很有必要的事情,对于我们即将计算机专业毕业的学员来说,也是一次将计算机应用于现实管理的一次很有意义的实践活动。 关键词:通讯录管理信息系统计算机科学用户 一、前瞻 1.开发背景简介 随着信息活动在国民经济中主导地位的确立和信息产业的崛起信息资源管 理(Informetion Resouces Management,简称IRM)作为一个专有名词和独立的学科逐渐发展起来。如何积极开发、合理配置和有效利用信息资源,日益成为社会生活中亟待解决的问题。由于计算机和通信技术的高速发展,推广应用计算

数据结构链表代码

#include typedef struct lnode{ int data; lnode *next; }lnode; void initlist(lnode *&head){ head=new lnode; head->next=NULL; }//带头结点空链表的判断条件 /*void initlistn(lnode *&head,int n){ initlist1(head); lnode *s; for(int i=0;i>s->data; s->next=head->next; head->next=s; } }//逆序*/ void initlistn(lnode *&head,int n){ initlist(head); lnode *p=head,*s; for(int i=0;i>s->data; s->next=NULL; p->next=s; p=s; } }//正序 void print(lnode *head){ lnode *p=head->next; while(p){ cout<data<<' '; p=p->next; } cout<next;j++;}

if(!p||j>i-1) return; lnode *s=new lnode; s->data=e; s->next=p->next; p->next=s; }//插入 void deletelist(lnode *&head,int i,int &e){ lnode *p=head; int j=0; while(p->next&&jnext;j++;} if(!p->next||j>i-1) return; lnode *q=p->next; e=q->data; p->next=q->next; }//删除 void main(void){ lnode *head; initlistn(head,10); print(head); inserlist(head,6,200); print(head); int e; deletelist(head,8,e); print(head); }

通讯录 双向链表

//node.h #include #include #include #include #include struct data //数据 { char name[20]; //姓名 char tel[20]; //电话 int age; //年龄 }; class node //节点 { friend class link; //友远类 private: data person; //数据 node * next; node * pre; public: void show() //显示数据信息 { cout<<"姓名:"<

C语言通讯录管理系统程序代码

一、课程设计题目及要求 题目通讯录管理系统 任务:自学C语言中相关知识,设计出通讯录管理系统。要求如下所述: ◆建立通讯录信息,信息至少包含编号、姓名、年龄、电话、通讯地址、电子 邮箱等;; ◆能够提供添加、删除和修改通讯录信息的功能; ◆能够提供按姓名或电话等查询; ◆将通讯录保存在文件中; ◆能够按表格方式输出通讯录信息。 二、系统设计方案 (一)总体框架图: 通讯录管理系统:1、录入通讯录信息 2、修改通讯录信息 3、查询通讯录信息 4、浏览通讯录信息 5、增加通讯录信息 6、推出系通讯录统 (二)模块设计 模块一:头文件,变量定义,函数的声明 对系统所使用的变量进行定义,对函数进行声明 模块二:录入通讯录信息 声明函数void readfile(),说明一个文件指针FILE *fp 打开文件"student.txt" 模块三:通讯录信息的查找 声明void seek()为查找函数,通过switch(item)设定用学号查找,用姓名查找两个分支 模块四:通讯录信息的修改

声明void modify()为学生信息修改函数,通过switch(item)设定所要修改的项目模块五:通讯录信息按学号排序 声明void sort()将录入通讯录信息系按升序排列,用的是“冒泡排序法”实现排序模块六:加通讯录信息 声明void insert()插入通讯录信息,先通过判断通讯录是否存在,若否则继续输入,若是跳出,重新循环 模块七:通讯录信息 声明void del()实现通讯录信息删除,通过学号对比确定要删除的信息,然后用后一个替换掉。 模块八:示学生信息 通过display()函数输出通讯录信息 模块九;存信息 通过fp=fopen("student.txt","w");写入信息 模块十:界面菜单 通过switch(num)调用,以上各函数,实现功能 三、设计详情 1.主函数 主函数设计要求简洁,只提供部分提示语和函数的调用 【程序】

数据结构 链表的应用 通讯录管理

数据结构链表的应用通讯录管理 实验要求: 一、设计一个含有多个菜单项的程序,菜单项内容如下: 1通讯录链表的建立 2通讯录链表的插入 3通讯录链表的查询 4通讯录链表的删除 5通讯录链表的输出 0退出管理系统 要求只能用0-5来选择菜单项,其他的输入无效 二、分别实现多个菜单项的功能,要求每个功能在操作时都有确认提示 三、编写一个程序实现整个通讯录管理系统,把主菜单的生成和各菜单项功能的实现作为子程序或者函数或者过程来实现。 四、要求关键语句必须要写注释。 #include"stdio.h" #include"string.h" #include"stdlib.h" typedefstructabc{//通讯录结点类型 charnum[5];//编号 charname[9];//姓名 charsex[3];//性别 charphone[13];//电话 charaddr[31];//地址 }DataType; typedefstructnode{//结点类型定义

DataTypedata;//结点数据域 structnode*next;//结点指针域 }ListNode; typedefListNode*LinkList; LinkListhead; ListNode*p; //函数说明 intmenu_select(); LinkListCreateList(void); voidInsertNode(LinkListhead,ListNode*p); ListNode*ListFind(LinkListhead); voidDelNode(LinkListhead); voidPrintList(LinkListhead); //主函数 voidmain() { for(;;){ switch(menu_select()) { case1: printf("**********************************\n"); printf("*通讯录链表的建立*\n"); printf("**********************************\n"); head=CreateList(); break; case2:

联系人管理系统

联系人管理系统设计报告 程珠 200907260203 信管0901 一、实验目地 通过本课程设计,要求熟悉管理信息系统开发的原理,掌握系统分析、系统设计、系统编程与调试等方法。能够完成一个中小型信息系统的规划与分析设计工作,或者能够开发一个小型的管理信息系统,提高分析问题与解决问题的能力。 二、实验内容 1.业务简介 (1)公司联系人 A.公司联系人类型构成:公司联系人类型标识,公司联系人类型 B.公司联系人构成:公司联系人标识,公司联系人名称,地址,出生日期,公司联系 人类型标识 C.查询构成:公司联系人标识,公司联系人类型标识 (2)客户 A 客户构成:客户标识,客户名称,客户地址,客户电话 (3)客户联系人 客户联系人构成:客户联系人标识,客户联系人姓名,客户联系人地址,客户联系人电话 2.系统功能 A 查看和修改公司联系人、客户、客户联系人 B添加和删除公司联系 人、客户、客户联系人 C退出系统 通过联系人管理系统,可以查询和修改公司联系人、客户、客户联系人。添加和删除公司联系人、客户、客户联系人,给企业或学校提供一个良好的人力资源管理环境。 也可以清晰地了解到三者的关系。除了可以查看公司联系人名称,地址,出生日期,公

司联系人类型还可以查看联系人的公司信息和家庭信息,如联系人的上级和下级信息,父母信息等等。以及联系人的毕业信息和在学校、公司的突出表现。方便企业对公司联系人更好的了解和统计。通过客户信息可以查找与公司有业务来往的客户信息。 三、实验过程 1. 系统分析(以公司联系人为例)

ER图 2.系统设计(以公司联系人为例) 模块结构设计 数据库设计

学校通讯录管理系统数据库设计

数据库设计 在本实例中使用的是SQLServer 2000数据库管理系统。数据库服务器安装的位置为本机,数据库名称为commu ni catio nserver 。下面将介绍数据库分析和设计、数据表的创建、数据表关系图和创建存储过程的内容。 4.2.1 数据库分析和设计 在本节中,将根据上一节系统功能的设计分析创建各数据表的实体E-R关系图,它是数 据库设计非常重要的一步,下面用E-R图的形式表示出各实体的属性。 1. 用户E-R实体图 用户的实体具有用户ID、密码、姓名、性别、电话、E-mail、用户权限7个属性,ER图如图4-5所示。 图4-5 用户E-R实体图 2. 地区E-R实体图 地区的实体具有地区编号、地区名称2个属性,E-R图如图4-6所示。 图4-6 地区E-R实体图 3. 职务E-R实体图 职务的实体具有职务编号、职务名称2个属性,E-R图如图4-7所示。 图4-7 职务E-R实体图 姓名用户权限性别 1 用户E-mail 地区 职务职务名称

4. 学校E-R 实体图 学校的实体具有学校名称、学校所在地区、在校学生人数3个属性,可用 E-R 图表示, 如图4-8所示。 (学校名称X 学校一(在校学生人数 图4-8 学校E-R 实体图 5. 通讯录E-R 实体图 通讯录的实体具有联系人姓名、地址、联系电话、所属职务、所在学校、所在单位、所 属地区7个属性,E-R 图如图4-9所示。 图4-9 通讯录E-R 实体图 4.2.2 数据表的创建 在上面一节中讲解了实体的 E-R 图,本节中将根据E-R 图的内容,创建企业信息管理系 统中的各数据表,在此系统中共涉及到 5个数据表的应用,分别为如下。 1、 字段采用camel 风格定义 2、 用不同颜色区分字段 主键:蓝色 外键:白色 既是主键又是外键:淡蓝色 普通字段:青绿 学校编号 学校所在地区 联系电话 通讯录 所在单位 * 所在学校 彳所属职务

通讯录管理系统(C语言)—单链表

广州大学物理与电子工程学院 程序与设计训练 通讯录管理系统实验报告 专业班级:电子121 设计人员:元达鹏 学号:1219200065 2013年6月24日

通讯录管理系统 一.需求分析 设计题目及需求: (1)查看功能:选择此功能时,列出下列三类选择。A 办公类 B 个人类 C 商务类,当选中某类时,显示出此类所有数据中的姓名和电话号码) (2)增加功能:能录入新数据(一个结点包括:姓名、电话号码、分类(可选项有:A 办公类 B 个人类 C 商务类)、电子邮件。例如:杨春135******** 商务类chuny@https://www.360docs.net/doc/2b12861055.html, (3)当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通信录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。 (4)修改功能:选中某个人的姓名时,可对此人的相应数据进行修改 (5)删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。 系统功能需求分析: 主要包含以下几种功能: 1.建立通讯录(建立功能) 2.删除通讯人(删除功能) 3.保存通讯录(保存功能) 4.读取通讯录文件(读取功能) 5.查找通讯人(查找功能) 6.添加通讯人(添加功能) 7.修改通讯人信息(修改功能)

8.退出通讯录系统 二.概要设计 系统功能模块图: 主菜单 建立删除保存读取查找添加修改退出 建立功能:在主菜单中输入1,进入建立功能。用户自己输入通讯录文件名,建立一个新的通讯录,便开始输入信息,一旦想结束添加,在输入姓名处输入“*”结束录入。(当录入相同的姓名和电话时,系统会告 诉你已经重复录入) 删除功能:在主菜单中输入2,进入删除功能。用户输入待删除人的姓名,系统会自动显示待删除人的信息,并且提示是否删除该通讯人。(当输 入的姓名不存在的时候,系统会告诉你此人不存在) 保存功能:在主菜单中输入3,进入保存功能。将你已经写好的通讯录保存在建立时创建的文件里面。(当保存成功后,系统会告诉你保存成功) 读取功能:在主菜单中输入4,进入读取功能。读取一个任意一个已经存在的文件,用户可以输入想要读取的文件,一旦文件读取成功,系统会告诉你文件读取成功。 查找功能:在主菜单中输入5,进入查找功能。查找方式有三种:1. 按姓名查

通讯录管理系统设计说明书

通讯录管理系统设计说明书 系统概述: 随着毕业的来临,我们就将面临分离。为了能在毕业后,能够方便联系我们在大学其间的同学朋友,通讯录就是一个可以帮我们方便查找同学朋友的工具。 随着计算机的普及,人们的生活摆脱了传统式的记事本、电话簿,越来越多的靠计算机来帮助人们记住这些事情,极其简便。这就需要有一个使用的通讯录管理系统,用户可以方便的通过自己电脑的通讯录管理系统,来随时查阅自己所需要的信息,而不必再大费周折去翻开那繁琐的记事本。 通讯录管理系统是一个专门针对储存用户联系方式以及一些简单个人信息的实用管理系统,它方便了用户对众多客户、朋友、同事等个人信息的储存和快速查阅的功能,大大减少了查找过程的时间。 关键字:插入,删除,查找,输出。 需求分析: 调查用户需求: 随着同学们的即将毕业,蹋出社会,交际难免地逐渐扩大,与外界联系将更为广泛和密切,传统的手工通讯录、地址簿已经难以满足快节奏、高效率的现代生活的需求。经常发生要在几十甚至上百张名片中找出某一张名片的情况,若由手工完成效率十分低。当交际扩大后,传统的手工通讯录非常不方便,不易查询、修改、存放,不易保密,容易遗失。 由计算机带来管理庞大而繁杂的通讯录是非常合适的,不仅查询和修改方便,并且效率高,速度快,完全能够满足现代化交际活动的要求,同时也更方便同学们联系交往。 本系统专门用于个人通讯信息管理的小型应用软件,主要提供个人通讯信息的登记、修改、浏览、查询和打印等功能。

1.用户的主要信息需求: ①对个人通讯信息资料进行登记、修改、浏览。 ②对个人通讯信息资料进行按姓名和学号查询。 ③对个人通讯信息资料进行打印输出。 系统功能设计与分析: 1.功能模块图 2.功能设计 (1)新建通讯录功能 增加一个新的记录,并保存通讯录; (2)搜索通讯录功能

相关文档
最新文档