数据结构课程设计简易手机通讯录管理系统Word文档下载推荐.docx
- 文档编号:21562023
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:24
- 大小:758.56KB
数据结构课程设计简易手机通讯录管理系统Word文档下载推荐.docx
《数据结构课程设计简易手机通讯录管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计简易手机通讯录管理系统Word文档下载推荐.docx(24页珍藏版)》请在冰豆网上搜索。
3.对联系人信息进行排序\n"
4.修改联系人信息\n"
5.删除联系人信息\n"
6.统计联系人个数\n"
0.退出信息管理系统\n"
**********************************************************************\n\n"
★请输入您的选择(0-6):
"
while
(1)
{
scanf("
%d"
&
c);
if(c<
0||c>
6)
printf("
\n▲输入错误!
请重新选择:
else
break;
}
returnc;
}
//主函数
voidmain()
SqList*L;
InitList(L);
system("
color3f"
switch(menu())
{
case1:
system("
cls"
printf("
\n\t\t\t信息的增加\n"
ListAdd(L);
break;
case2:
\n\t\t\t信息的查询\n"
Search(L);
case3:
\n\t\t\t对信息进行排序\n"
Paixu(L);
case4:
\n\t\t\t信息的修改\n"
ListModify(L);
case5:
\n\t\t\t信息的删除\n"
Delete(L);
case6:
\n\t\t\t统计联系人个数\n"
ListLength(L);
case0:
再见!
\n"
return;
default:
}
(3)功能模块的实现
①初始化顺序表
voidInitList(SqList*&
L)
L=(SqList*)malloc(sizeof(SqList));
L->
length=0;
②增加信息函数。
定义变量a起标记作用,用于判断输入信息是否与已有信息重复
voidListAdd(SqList*&
L)//增加函数
inta=0;
//标记
1.号码(五位数字!
):
scanf("
%s"
L->
data[L->
length].num);
2.姓名:
length].name);
3.性别:
length].sex);
4.家庭住址:
length].add);
for(inti=0;
i<
L->
length;
i++)//判断是否重号
if(strcmp(L->
data[i].num,L->
length].num)==0)
该号码已经存在\n"
a=1;
if(a==0)
length++;
③查找符合条件的信息的下标并返回到需要调用的函数体中
intFindNum(SqList*&
L)
★输入需要进行操作的号码:
charnum[10];
scanf("
num);
inti=0;
while(i<
length&
&
strcmp(L->
data[i].num,num)!
=0)i++;
if(i>
=L->
length)
printf("
不存在该联系人!
returni;
④查询信息函数
分两种情况:
按号码查找与按姓名查找。
由于号码唯一所以可以直接调用之前的查找下标函数。
按姓名查找时则需要考虑到重名的情况,所以用一个for循环将所有符合条件的信息全部输出。
voidSearch(SqList*&
if(L->
length==0)
通讯录此时为空,无法进行查找!
else
intm,i;
***************************************************************\n"
\t\t1.按联系人号码进行查询\n"
\t\t2.按联系人姓名进行查询\n"
inta;
★请输入您的选择(1or2):
a);
switch(a)
m=FindNum(L);
if(m<
{
printf("
您查询的信息如下\n"
号码姓名性别家庭住址\n"
%s%s%s%s\n"
data[m].num,L->
data[m].name,L->
data[m].sex,L->
data[m].add);
}
★输入需要进行操作的姓名:
charname[20];
name);
for(i=0;
i++)
if(strcmp(L->
data[i].name,name)==0)
{
printf("
data[i].name,L->
data[i].sex,L->
data[i].add);
}
else
{
不存在该联系人\n"
输入错误!
⑤修改函数
按号码修改时先调用之前查找下标的函数,找到符合条件的信息后直接输入信息将原有信息覆盖。
按姓名修改时当只有一个信息符合条件时与按号码修改算法一样,当出现重名情况时提示用户选择相应的号码再调用按号码修改的算法。
每一次修改都进行一次判断,判断修改后的信息是否与表中已有信息重复。
voidListModify(SqList*&
通讯录此时为空,无法进行信息的修改!
intm,n;
intb=0;
\t\t1.按联系人号码进行修改\n"
\t\t2.按联系人姓名进行修改\n"
Telphonep;
输入修改后的联系人信息:
%s%s%s%s"
p.num,p.name,p.sex,p.add);
for(intj=0;
j<
j++)//判断是否重号
data[j].num,p.num)==0)
修改失败!
(该号码已经存在)\n"
重新输入修改后的联系人信息:
data[m].sex,L->
break;
}
L->
data[m]=p;
break;
inti;
b++;
if(b==0)
不存在该联系人!
if(b==1)
for(inti=0;
if(strcmp(L->
{
Telphoneq;
printf("
再次确认需要修改的信息:
%s%s%s%s\n\n"
★输入修改后的联系人信息:
q.num,q.name,q.sex,q.add);
for(intj=0;
{
if(strcmp(L->
data[j].num,q.num)==0)
{
printf("
printf("
data[i].sex,L->
break;
}
else
L->
data[i]=q;
}
if(b>
1)
符合条件的联系人有%d个!
详细信息如下:
b);
请根据以上显示出的信息选择对应的号码进行修改!
n=FindNum(L);
if(n<
Telphonet;
data[n].num,L->
data[n].name,L->
data[n].sex,L->
data[n].add);
t.num,t.name,t.sex,t.add);
if(strcmp(L->
data[i].num,t.num)==0)
data[n].sex,L->
else
L->
data[n]=t;
⑥删除函数
按号码删除时先查找到符合条件的信息,再用for循环将该信息后面的信息依次向前覆盖达到删除功能。
按姓名删除信息时当出现重名情况时提示用户选择相应的号码再调用按号码删除的算法。
voidDelete(SqList*&
L)//删除函数
通讯录此时为空,无法进行信息的删除!
\t\t1.按联系人号码进行删除\n"
\t\t2.按联系人姓名进行删除\n"
intb=0;
if(m<
for(intj=m;
length-1;
j++)
data[j]=L->
data[j+1];
信息已删除\n"
L->
length--;
for(i=0;
if(i<
for(intj=i;
}
请根据以上显示出的信息选择对应的号码进行删除!
n=FindNum(L);
for(intj=n;
L->
⑦排序函数
采用冒泡排序的思想对号码进行排序。
按姓名排序时若出现重名则按号码排序,算法体现在PaixuName函数中,先进行号码排序再进行姓名排序。
voidPaixuNum(SqList*&
length==0)
通讯录为空\n"
inti,j;
Telphonet;
for(i=0;
i++)
for(j=L->
j>
i;
j--)
data[j].num,L->
data[j-1].num)<
0)
t=L->
data[j];
L->
data[j-1];
data[j-1]=t;
按号码排序为:
号码\t姓名\t性别\t家庭住址\n"
for(i=0;
%s\t%s\t%s\t%s\n"
voidPaixuName(SqList*&
data[j-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 简易 手机 通讯录 管理 系统