通讯录管理系统.docx

上传人:b****8 文档编号:9964320 上传时间:2023-02-07 格式:DOCX 页数:21 大小:229.16KB
下载 相关 举报
通讯录管理系统.docx_第1页
第1页 / 共21页
通讯录管理系统.docx_第2页
第2页 / 共21页
通讯录管理系统.docx_第3页
第3页 / 共21页
通讯录管理系统.docx_第4页
第4页 / 共21页
通讯录管理系统.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

通讯录管理系统.docx

《通讯录管理系统.docx》由会员分享,可在线阅读,更多相关《通讯录管理系统.docx(21页珍藏版)》请在冰豆网上搜索。

通讯录管理系统.docx

通讯录管理系统

 

洛阳理工学院

课程设计报告

课程名称数据结构课程设计

设计题目通讯录管理系统

课程设计任务书

设计题目:

通讯录管理系统

设计内容与要求:

该系统至少应具有如下功能:

1.输入记录要求随时都能使用该项功能实现记录的输入,一次可以输入一条记录,也可以输入多条记录。

2.输出

(1)按自然顺序输出

(2)按某种排序顺序输出。

至少两种。

3.查询至少提供两种查询方式。

4.修改至少提供两种修改方式。

5.删除既能一次删除一条记录,也能一次删除多条记录。

6.退出通讯录管理结束后,正常退出系统。

要求:

1.每个记录至少包含如下信息:

姓名、电话、所在城市、所在单位、年龄、E-mail、备注等。

2.以采单方式实现功能选择控制。

3.编写功能独立的函数实现各功能。

4.记录最大个数100。

课程设计评语

 

成绩:

指导教师:

_______________

年月日

一.数据结构

typedefstruct//通讯录结点类型

{

charnum[10];//编号

charname[10];//姓名

charsex[5];//性别

charphone[20];//电话

charadd[30];//地址

}DataType;

typedefstructnode//结点定义

{

DataTypedata;//结点数据

structnode*next;//结点指针域

}ListNode;

typedefListNode*LinkList;

二.系统总框架图

 

算法流程图:

如下

图1程序算法流程图

 

三.详细设计

(1)主函数:

voidmain()

(2)LinkListCreateList(void)//创建函数

(3)intmenu_select()/*菜单函数*/

(4)voidInsertNode(LinkListhead,ListNode*p)//插入函数。

(5)ListNode*ListFind(LinkListhead)//查找函数

(6)voidsort(LinkListhead)//排序函数

(7)voidPrintList(LinkListhead)//输出函数

 

四.测试数据

运行程序:

建立

输出和排序如下:

查询如下

插入如下:

五.源程序

#include

#include

#include

typedefstruct//通讯录结点类型

{

charnum[10];//编号

charname[10];//姓名

charsex[5];//性别

charphone[20];//电话

charadd[30];//地址

}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);//输出函数声明

voidsort(LinkListhead);//排序函数说明

voidsort_sort(LinkListp,LinkListq);

//主函数

voidmain()

{

for(;;)

{

switch(menu_select())

{

case1:

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

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

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

head=CreateList();

break;

case2:

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

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

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

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

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

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

scanf("%s%s%s%s%s",p->data.num,p->data.name,p->data.sex,p->data.phone,p->data.add);

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->data.name,p->data.sex,p->data.phone,p->data.add);

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

}

else

printf("没有到要查询的通讯者!

\n");

break;

case4:

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

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

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

p=ListFind(head);

DelNode(p);//删除结点

break;

case5:

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

printf("*通讯录信息的输出*\n");

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

PrintList(head);

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

sort(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");

for(;;)

{

scanf("%d",&sn);

if(sn<0||sn>5)

printf("\n\t输入有误,请重新输入\n");

else

break;

}

returnsn;

}

//建立

LinkListCreateList()

{//用尾插法建立带头结点的通讯录的算法

LinkListhead=(ListNode*)malloc(sizeof(ListNode));

ListNode*p,*rear;

intflag=0;

rear=head;

while(flag==0)

{

p=(ListNode*)malloc(sizeof(ListNode));

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

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

scanf("%s%s%s%s%s",p->data.num,p->data.name,p->data.sex,p->data.phone,p->data.add);

rear->next=p;

rear=p;

printf("是否结束建立表?

(1/0)\n");

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;

p2=p2->next;

}

p1->next=p;

p->next=p2;

}

//查找

ListNode*ListFind(LinkListhead)

{

ListNode*p;

charnum[10];

charname[10];

intm;

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

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

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

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

printf("请选择:

");

p=head->next;//假定通讯录表带头结点

scanf("%d",&m);

if(m==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(m==2)

{

printf("请输入要查找人的姓名:

");

scanf("%s",name);

while(p&&strcmp(p->data.name,name)!

=0)

p=p->next;

}

returnp;

}

//删除

voidDelNode(LinkListp)

{

ListNode*q;

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

if(p==NULL)

{

printf("没有查到要删除的人!

\n");

return;

}

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->data.name,p->data.sex,p->data.phone,p->data.add);

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

p=p->next;

}

}

//快速排序,小的数据往前排,后的数据往后排

voidsort(LinkListhead)

{

//LinkListtemp,temp_change;

LinkListp=head->next;

LinkListq=p;

if(q==NULL)

{

printf("里面没有数据");

return;

}

 

if(q->next==NULL)

{

printf("里面只有一个数据:

");

printf("%s,%s,%s,%s,%s\n",q->data.num,q->data.name,q->data.sex,q->data.phone,q->data.add);

return;

}

while(q!

=NULL)

{

 

while(p)

{

if(strcmp(p->data.name,q->data.name)<0)

{

p=p->next;

}

else

{

//temp_change=p;

//p=q;

//q=temp_change;

sort_sort(q,p);

p=p->next;

}

}

printf("%s,%s,%s,%s,%s\n",q->data.num,q->data.name,q->data.sex,q->data.phone,q->data.add);

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

q=q->next;

p=q;

}

}

voidsort_sort(LinkListp,LinkListq)

{

charnum[10];//编号

charname[10];//姓名

charsex[5];//性别

charphone[20];//电话

charadd[30];//地址

strcpy(num,q->data.num);

strcpy(q->data.num,p->data.num);

strcpy(p->data.num,num);

strcpy(name,q->data.name);

strcpy(q->data.name,p->data.name);

strcpy(p->data.name,name);

strcpy(sex,q->data.sex);

strcpy(q->data.sex,p->data.sex);

strcpy(p->data.sex,sex);

strcpy(phone,q->data.phone);

strcpy(q->data.phone,p->data.phone);

strcpy(p->data.phone,phone);

strcpy(add,q->data.add);

strcpy(q->data.add,p->data.add);

strcpy(p->data.add,add);

 

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 财务管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1