线性表通讯录实验Word文档下载推荐.docx

上传人:b****5 文档编号:19769680 上传时间:2023-01-10 格式:DOCX 页数:46 大小:196.95KB
下载 相关 举报
线性表通讯录实验Word文档下载推荐.docx_第1页
第1页 / 共46页
线性表通讯录实验Word文档下载推荐.docx_第2页
第2页 / 共46页
线性表通讯录实验Word文档下载推荐.docx_第3页
第3页 / 共46页
线性表通讯录实验Word文档下载推荐.docx_第4页
第4页 / 共46页
线性表通讯录实验Word文档下载推荐.docx_第5页
第5页 / 共46页
点击查看更多>>
下载资源
资源描述

线性表通讯录实验Word文档下载推荐.docx

《线性表通讯录实验Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《线性表通讯录实验Word文档下载推荐.docx(46页珍藏版)》请在冰豆网上搜索。

线性表通讯录实验Word文档下载推荐.docx

初始化通讯录表用函数voidInitAddressBook(SqList&

TXL)、浏览所有通讯录成员函数BrowseAddressBook(SqListTSL)等等,将这些子函数放在头文件test3_Seq.h中。

③建立主函数文件test3.cpp,通过调用上述头文件中的函数来实现该系统。

④给出系统数据类型的定义、存储结构定义以及各个函数之间的调用关系。

⑤实验内容中设置的功能要求必须实现,此外可自行增加合适的功能,可作为额外的实验成绩进行加分:

例如:

●通讯录和被删成员数据可用文件保存,程序运行时可从文件读入相应数据,程序结束时可写入文件保存。

●通讯录分组,可自行考虑把通讯录成员进行分组,如同学组、亲戚组、同事组等。

2、以小组为单位认真填写实验报告,实验报告必须包括各类数据类型的结构定义说明,各类数据的组织方式,系统的功能结构,各个操作的定义以及实现方法,运行结果与分析,难点如何解决,存在问题以及可改进之处等。

同时,在实验报告中需写明小组每位同学的分工,得分(小组总分不超过12分)等。

实验报告文件取名为report3.doc。

每组还必须制作一个答辩PPT,该PPT的命名为PPT_通讯录管理系统_(各小组成员名字).PPT。

3、每位组长上传实验报告文件report3.doc、源程序文件test3.cpp及test3_Seq.h、test3_Link.h,以及答辩PPT压缩打包后到BB平台上。

小组分工:

陈正融

程序设计

1、抽象数据类型

ADTSqlist

{数据对象:

D={ai|aiElemSet,i=1,2,3,……,n,n≥0}

数据关系:

R1={<

ai-1,ai>

|ai-1,ai∈D,i=1,2,3,……,n}

基本操作:

(1)intnewContactPerson(Sqlist&

S)

//输入函数

(2)intSearchContacts(Sqlist&

S,LinklistL)

//查询函数

(3)intOper_updata(Sqlist&

//修改函数

(4)intOper_detele(Sqlist&

//删除函数

(5)intInitList_Sq(Sqlist&

//初始化函数

(6)intsort_Sq(Sqlist&

S,Contactsi)

//排序函数

(7)intDestoryList_Sq(Sqlist&

//销毁函数

ADTLinklist

(1)intinsert_L(LinklistL,Contactsi,Sqlist&

(2)intInitList_L(Linklist&

L)

(3)intBrowselist(LinklistL)

//显示函数

(4)intremoveContact(LinklistL,Sqlist&

//恢复函数

(5)intDestoryList_L(Linklist&

2、存储结构

typedefstruct

{

intno;

//编号

charname[20];

//信息

chartel_1[20];

//电话1

chartel_2[20];

//电话2

charEmail[50];

//邮箱

chargroup[20];

//分组信息

}Contacts;

Contacts*elem;

intlength;

intlistsize;

}Sqlist;

typedefstructNode{

Contactsdata;

structNode*next;

}LNode,*Linklist;

intnum;

//分组序号

chargroname[20];

//分组名

}grouping;

grouping*gr;

}grolist;

3、函数定义

voidmain_menu()//菜单

intInitList_Sq(Sqlist&

S)//顺序表初始化

intInitList_gro(grolist&

G)//分组表初始化

intDestoryList_Sq(Sqlist&

S)//通途录销毁

intDestoryList_Gro(grolist&

G)//分组表销毁

intin_Seq(Sqlist&

S,Contactsa,inti)//本地输入处理

intzero_Sq(Sqlist&

S)//通讯录本地输入

intzero_Gro(grolist&

G)//分组表本地输入

intout_Seq(Sqlist&

S,Contactsa,inti)//通讯录输出处理

intprinttotxt_Sq(Sqlist&

S)//通讯录输出

intprinttotxt_Gro(grolist&

G)//分组表输出

Contactshandle(Sqlist&

S,Contactsi)//新建信息处理

intsort_Sq(Sqlist&

S,Contactsi)//排序

intnewContactPerson(Sqlist&

S)///新建联系人

intnewGro(grolist&

G)//新建分组

intContactdetails(Sqlist&

S,intno)//显示联系人详情

intDelete_Sq(Sqlist&

S,LinklistL,inti,intj)//删除联系人

intDelete_Gro(grolist&

G,Sqlist&

S)//删除分组

intupdata_Sq(Sqlist&

S,LinklistL,intno)//修改联系人

intBrowseContacts(Sqlist&

S)//显示联系人

intBrowseGro(grolist&

G)//显示分组

intOperation_2(Sqlist&

S,LinklistL,intno)//查询后操作

intfind_out(Sqlist&

S,inti,intj)//查询输出处理

intfindContact(Sqlist&

S,intno[],charna[])//查询输出

intBrowseGroCon(Sqlist&

S,charna[],intk[20])//显示分组联系人

intSearchContacts(Sqlist&

S,LinklistL)//查询联系人

intjoingro(grolist&

S,inti,intj)//分组加入联系人

intOper_updata(Sqlist&

S,LinklistL)//修改联系人

intOper_detele(Sqlist&

S,LinklistL)//删除联系人

intOperation_Gro2(Sqlist&

S,grolist&

G)//分组综合操作

intupdataGroname(grolist&

S)//修改分组名

intOperation_Gro(grolist&

S)//分组操作

intDestory(Sqlist&

S,LinklistL,grolist&

G)//销毁

intInitList_L(Linklist&

L)//初始化链表

intDestoryList_L(Linklist&

L)//销毁链表

intBrowselist(LinklistL)//显示误删表联系人

intin_link(Linklistp)//本地输入修改

intzero_Link(LinklistL)//本地输入

intout_Link(Linklistp)//本地输出修改

intprintotxt_link(LinklistL)//本地输出

intinsert_L(LinklistL,Contactsi,Sqlist&

S)//插入联系人

intsort_Link(Sqlist&

S,Contactsi)//恢复联系人排序

intremoveContact(LinklistL,Sqlist&

S)//恢复联系人

4、程序描述

本通讯录所有的操作都是基于联系人的编号,未避免编号出错,采用自动编号。

主界面直接显示通讯录联系人和操作选项,可直接通过编号进行操作。

也可以先查找联系人,然后再进行修改,删除操作。

支持本地保存和读取,模糊查找,插入排序

5、实验结果

1、主菜单

2、添加联系人

3、查询联系人

4、修改联系人

5、联系人分组

6、删除联系人

7、恢复删除联系人

6、代码

主函数

#include<

stdio.h>

string.h>

math.h>

stdlib.h>

#defineLIST_INIT_SIZE100

#defineLISTINCREMEMT10

#include"

test3_link.h"

test3_seq.h"

intmain()

inti=1;

SqlistS;

LinklistL;

grolistG;

InitList_Sq(S);

InitList_L(L);

InitList_gro(G);

zero_Gro(G);

zero_Sq(S);

zero_Link(L);

while

(1)

{

BrowseContacts(S);

main_menu();

printf("

输入选项:

"

);

scanf("

%d"

&

i);

if(i>

=0&

&

i<

=6)

{

switch(i)

{

case1:

newContactPerson(S);

break;

case2:

SearchContacts(S,L);

case3:

Oper_updata(S,L);

case4:

Operation_Gro(G,S);

case5:

Oper_detele(S,L);

case6:

removeContact(L,S);

break;

case0:

Destory(S,L,G);

exit(0);

default:

break;

}

}

else

i=1;

printf("

请输入有效数字\n"

system("

pause"

}

return0;

}

头文件1

voidmain_menu()

printf("

\t\t菜单\n"

\t\t1.添加联系人\n"

\t\t2.查询联系人\n"

\t\t3.修改联系人\n"

\t\t4.联系人分组\n"

\t\t5.删除联系人\n"

\t\t6.恢复联系人\n"

\t\t0.保存并退出\n"

}//主菜单

S.elem=(Contacts*)malloc(LIST_INIT_SIZE*sizeof(Contacts));

S.length=0;

S.listsize=LIST_INIT_SIZE;

return1;

}//构造顺序空表。

G)

G.gr=(grouping*)malloc(LIST_INIT_SIZE*sizeof(grouping));

G.length=0;

G.listsize=LIST_INIT_SIZE;

}//构造分组表

if(S.elem)

free(S.elem);

S.elem=NULL;

S.length=S.listsize=0;

}//销毁顺序表

if(G.gr)

free(G.gr);

G.gr=NULL;

G.length=G.listsize=0;

}//销毁分组表

S,Contactsa,inti)

if(!

strcmp(a.name,"

00000000"

))

strcpy(S.elem[i].name,"

\t"

strcmp(a.tel_1,"

strcpy(S.elem[i].tel_1,"

strcmp(a.tel_2,"

strcpy(S.elem[i].tel_2,"

strcmp(a.Email,"

strcpy(S.elem[i].Email,"

strcmp(a.group,"

strcpy(S.elem[i].group,"

}//对值为“”进行处理

inti=0;

Contactsa;

FILE*fp;

if((fp=fopen("

Contacts_Sq.txt"

"

r"

))==NULL)

error!

\n"

exit(0);

while(!

feof(fp))

fscanf(fp,"

%d%s%s%s%s%s"

S.elem[i].no,S.elem[i].name,S.elem[i].tel_1,S.elem[i].tel_2,S.elem[i].Email,S.elem[i].group);

a=S.elem[i];

in_Seq(S,a,i);

i++;

S.length=i;

fclose(fp);

}//从Contacts_Sq文本初始化

Contacts_Gro.txt"

))==NULL)

%d%s"

G.gr[i].num,G.gr[i].groname);

}

G.length=i;

}//从文本Contacts_Gro文本初始化

}//对值为“\t”的数据进行处理

if(S.elem==NULL)

return0;

fp=fopen("

w"

a=S.elem[i];

out_Seq(S,a,i);

fprintf(fp,"

%d\t%s\t%s\t%s\t%s\t%s"

S.elem[i].no,S.elem[i].name,S.elem[i].tel_1,S.elem[i].tel_2,S.elem[i].Email,S.elem[i].group);

while(i<

S.length)

if((fp=fopen("

"

a"

out_Seq(S,a,i);

fprintf(fp,"

\n%d\t%s\t%s\t%s\t%s\t%s"

}//输出联系人到文本

groupinga;

if(G.gr==NULL)

%d\t%s"

G.gr[i].num,G.gr[i].groname);

(G.length-1))

if((fopen("

\n%d\t%s"

}//输出分组目录到文本

strcmp(i.name,"

无"

strcpy(i.name,"

strcmp(i.tel_1,"

strcpy(i.tel_1,"

strc

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

当前位置:首页 > 医药卫生 > 基础医学

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

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