数据结构通讯录制作总结模板.docx

上传人:b****6 文档编号:3312388 上传时间:2022-11-21 格式:DOCX 页数:17 大小:212.37KB
下载 相关 举报
数据结构通讯录制作总结模板.docx_第1页
第1页 / 共17页
数据结构通讯录制作总结模板.docx_第2页
第2页 / 共17页
数据结构通讯录制作总结模板.docx_第3页
第3页 / 共17页
数据结构通讯录制作总结模板.docx_第4页
第4页 / 共17页
数据结构通讯录制作总结模板.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

数据结构通讯录制作总结模板.docx

《数据结构通讯录制作总结模板.docx》由会员分享,可在线阅读,更多相关《数据结构通讯录制作总结模板.docx(17页珍藏版)》请在冰豆网上搜索。

数据结构通讯录制作总结模板.docx

数据结构通讯录制作总结模板

 

数据结构

大作业设计总结报告

 

题目:

通讯录建立

班级:

学号:

姓名:

指导教师:

日期:

2013年7月3日

一、课程设计目标

1、问题描述:

运用数据结构课程中所学知识制作一个通讯录,在通讯录中实现添加、删除、查找、修改等功能,其中查找方式要用到分块查找。

2、问题分析:

由于通讯录涉及到多个类型不同的数据组合成一个有机的整体,链表又是能够动态地进行存储分配的一种结构,根据需要开辟新的内存空间,不会浪费内存资源,所以利用链表实现通讯录的。

由于系统需要实现的功能较多,所以采用模块化方式减少工作量及编译时的困难,分别实现建立、插入、查询、输出通讯录的功能。

二、设计过程

1、整体算法思想:

①、首先要定义结构体、结构体指针,初始化链表,以便于在后面的查找、插入、删除、输出操作的实现;

②、各个功能模块通过函数实现,可是使程序可读性更好;

③、插入操作:

add_TXL(),利用该函数进行插入操作,同时考虑到排序问题,在输入姓名后,程序对输入的姓名通过ASCII码进行判断,大写字母进行ASCII码相减后进行排序操作;

④、查找操作:

search_TXL(),通过ASCII码相减,选择不同的链表进行查找以实现分块查找;

⑤、删除操作:

delete_TXL(),需先进行查找,找到目标后,进行删除;

⑥、修改操作:

mod_TXL(),同样需要先对通讯录进行查找,然后进行修改;

⑦、主函数中依次调用相关函数即可。

2、程序:

#include

#include

#include

#include

typedefstructnode//结点定义

{

charname[10];//名字存储单元

charclas[20];//班级存储单元

longtel;//电话存储单元

longqq;//QQ号存储单元

structnode*next;

}TXLnode;

typedefstruct//定义索引表

{

charind;

TXLnode*next;

}INDEX[26];

//-----------------------函数声明----------------------------

voidinit_ind();//索引表初始化函数

voidadd_TXL();//通讯录内容添加函数

voidsearch_TXL();//通讯录内容查找函数

voiddelete_TXL();//通讯录内容删除函数

voidmod_TXL();//通讯录内容修改函数

voidoutput_IND();//通讯录内容输出函数

voidprint();//通讯录主菜单选择项内容函数

voidhellow();//通讯录头欢迎界面

//-------------------------函数声明-------------------------

voidinit_ind(INDEXtind)//索引表初始化--以26个字母分为26个索引表

{

inti,j=97;

for(i=0;i<26;i++)

{

tind[i].ind=j;

tind[i].next=NULL;

j++;

}

}

voidadd_TXL(TXLnodeTX,INDEXindex)//增加记录

{

inti;

printf("*系统提示:

请输入个人信息:

姓名、班级、电话、QQ号\n");

scanf("%s%s%ld%ld",&TX.name,&TX.clas,&TX.tel,&TX.qq);

TXLnode*p;

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

if(!

p)

exit(0);

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

strcpy(p->clas,TX.clas);

p->tel=TX.tel;

p->qq=TX.qq;

p->next=NULL;

if('a'<=TX.name[0]&&TX.name[0]<='z')

i=p->name[0]-'a';

elseif('A'<=TX.name[0]&&TX.name[0]<='Z')

i=TX.name[0]-'A';

else

{

printf("*系统提示:

输入姓名错误\n");

return;

}

if(!

index[i].next)

index[i].next=p;

else

{

p->next=index[i].next;

index[i].next=p;

}

}

voidsearch_TXL(TXLnode&TX,INDEXindex)//查找记录

{

inti,j;

printf("*系统提示:

请输入要查找人的姓名\n");

scanf("%s",&TX.name);

if('a'<=TX.name[0]&&TX.name[0]<='z')

i=TX.name[0]-'a';

elseif('A'<=TX.name[0]&&TX.name[0]<='Z')

i=TX.name[0]-'A';

else

{

printf("*系统提示:

输入姓名出错\n");

return;

}

TXLnode*p;

p=index[i].next;

while(p)

{

j=strcmp(p->name,TX.name);

if(j==0)

{

printf("要查找人信息:

\n");

printf("姓名:

%s班级:

阰%s;",p->name,p->clas);

printf("电话:

%ld;QQ:

%ld\n",p->tel,p->qq);

break;

}

p=p->next;

}

if(p==NULL)

printf("*系统提示:

不存在此人\n");

}

voiddelete_TXL(TXLnodeTX,INDEXindex)//删?

除y记?

录?

{

inti,j;

printf("*系统提示:

请输入要删除人的姓名:

\n");

scanf("%s",&TX.name);

if('a'<=TX.name[0]&&TX.name[0]<='z')

i=TX.name[0]-'a';

elseif('A'<=TX.name[0]&&TX.name[0]<='Z')

i=TX.name[0]-'A';

else

{

printf("*系统提示:

输入姓名出错\n");

return;

}

TXLnode*p,*q;

p=index[i].next;

q=index[i].next;

while(p)

{

if(strcmp(index[i].next->name,TX.name)==0)

{

index[i].next=p->next;

break;

}

j=strcmp(p->name,TX.name);

if(j==0)

{

q->next=p->next;

break;

}

q=p;

p=p->next;

}

free(p);

}

voidmod_TXL(TXLnodeTX,INDEXindex)//修改记录

{

printf("*系统提示:

请输入要修改人员的名字\n");

scanf("%s",&TX.name);

inti,k,j;

if('a'<=TX.name[0]&&TX.name[0]<='z')

i=TX.name[0]-'a';

elseif('A'<=TX.name[0]&&TX.name[0]<='Z')

i=TX.name[0]-'A';

else

{

printf("*系统提示:

输入姓名出错\n");

return;

}

TXLnode*p;

p=index[i].next;

while(p)

{

j=strcmp(p->name,TX.name);

if(j==0)

{

printf("*系统提示:

请输入要修改的项目1:

班级;2:

电话;3:

QQ\n");

scanf("%d",&k);

switch(k)

{

case1:

{

printf("请输入班级:

\n");

scanf("%s",&p->clas);

break;

}

case2:

{

printf("请输入电话:

\n");

scanf("%ld",&p->tel);

break;

}

case3:

{

printf("请输入QQ:

\n");

scanf("%ld",&p->qq);

break;

}

default:

{

printf("*系统提示:

输入出错\n");

return;

}

}

}

p=p->next;

}

}

voidoutput_IND(INDEX&index)//输出索引表

{

inti;

TXLnode*p;

for(i=0;i<26;i++)

{

p=index[i].next;

while(p)

{

printf("姓名:

%s班级:

%s电话:

%ldqq:

%ld\n",p->name,p->clas,p->tel,p->qq);

//printf("电?

话°:

阰%ldqq:

%ld\n",p->tel,p->qq);

p=p->next;

}

}

}

voidprint()//通?

讯?

录?

主÷菜?

单蹋?

选?

项?

展1示?

{

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

printf("==输入要修改的项目:

==\n");

printf("==0:

退出==\n");

printf("==1:

修改记录==\n");

printf("==2:

查找记录==\n");

printf("==3:

删除记录==\n");

printf("==4:

新增记录==\n");

printf("==5:

显示通讯录==\n");

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

}

voidhellow()//通讯录欢迎界面

{

printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");

printf("++++\n");

printf("++欢迎使用岩哥通讯录++\n");

printf("++++\n");

printf("++制作人:

周岩班级:

10级通信一班++\n");

printf("++++\n");

printf("++学号:

201040600434++\n");

printf("++++\n");

printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");

printf("\n");

printf("\n");

}

intmain()//主函数

{

inti;

TXLnodeTXL;

INDEXindex;

init_ind(index);

//add_TXL(TXL,index);

//output_IND(index);

hellow();

intj;

print();

scanf("%d",&j);//输入数字选择功能

while

(1)//执行功能

{

switch(j)

{

case0:

//退出程序

{

exit(0);

}

case1:

//修改通讯录内容

{

mod_TXL(TXL,index);

output_IND(index);

intm;

printf("*系统提示:

是否继续修改?

1:

是;0:

否;\n");

scanf("%d",&m);

while(m)

{

mod_TXL(TXL,index);

output_IND(index);

printf("*系统提示:

是否继续修改?

1:

是;0:

否;\n");

scanf("%d",&m);

}

break;

}

case2:

//查找通讯录内容

{

search_TXL(TXL,index);

printf("*系统提示:

是否继续查找?

1:

是;0:

否\n");

intsear;

scanf("%d",&sear);

while(sear)

{

search_TXL(TXL,index);

printf("*系统提示:

是否继续查找?

1:

是;0:

否\n");

scanf("%d",&sear);

}

break;

}

case3:

//删除通讯录内容

{

delete_TXL(TXL,index);

output_IND(index);

intdel;

printf("*系统提示:

是否继续删除?

1:

是;0:

否;\n");

scanf("%d",&del);

while(del)

{

delete_TXL(TXL,index);

output_IND(index);

printf("*系统提示:

是否继续删除?

1:

是;0:

否;\n");

scanf("%d",&del);

}

break;

}

case4:

//录入通讯录内容

{

inta=1;

while(a)

{

add_TXL(TXL,index);

//output_IND(index);

printf("*系统提示:

是否继续增加记录1.是0.否\n");

scanf("%d",&a);

}

//output_IND(index);

break;

}

case5:

//输出展示通讯录内容

{

output_IND(index);

break;

}

default:

printf("*系统提示:

输入不符合标准\n");

}

print();//循环完成后继续提示主菜单进行后面操作

scanf("%d",&j);

}

return0;

}

三、程序调试

1、打开程序

显示欢迎界面和功能菜单,程序运行正常。

2、输入内容

可以连续输入内容,并按名字首字母排序,输入功能正常。

3、修改内容

如图所示,讲aa同学的班级由11改为了tongyi,修改功能正常。

4、查找内容

输入要查找的姓名后,程序显示信息,查找功能正常。

5、删除内容

删除ee后,输出通讯录,显示已没有ee同学信息,删除功能正常。

4、心得体会

通过这次大作业,感觉收获最多的就是把这学期所学的知识进行了一次系统的应用,让本来觉得掌握的比较模糊的地方,在实际编程应用中得到了明确。

同时,也很大程度上增强了自己的信心,以前提到编程,觉得没什么底气,觉得是一件很难完成的工作,通过这次大作业,经历过实际编程后,感觉编程也不是那么遥远。

同时,在编写程序的时候,又把C语言这本书看了很多,发现以前在学的时候并没有学那么透彻,还有一些知识因为当时学的时候没有经过编程的实际操作,已经忘记了。

在结合了大二大三两年的学习,再看C语言这本书,觉得又学到了很多东西。

在经过这次编程之后,觉得对数据结构这门课以及编程比以前更有趣了。

觉得老师在今后的教学中,可以多带领同学们实际地去编写、运行一些程序,这样既可以加深同学们对知识的理解,又能调动学习兴趣。

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

当前位置:首页 > 小学教育 > 英语

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

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