完整word版数据结构课程设计学生通讯录Word格式.docx
- 文档编号:6155602
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:23
- 大小:128.18KB
完整word版数据结构课程设计学生通讯录Word格式.docx
《完整word版数据结构课程设计学生通讯录Word格式.docx》由会员分享,可在线阅读,更多相关《完整word版数据结构课程设计学生通讯录Word格式.docx(23页珍藏版)》请在冰点文库上搜索。
该功能由insetYouXu函数实现。
查询通讯录记录。
可以按两种方式查询所需要的通讯录成员记录,一是按学号查询,二是按照姓名查询。
分别有searchNum函数和searchName函数实现。
删除通讯录记录。
可以对通讯录中不再需要的信息进行删除。
有三种删除方式:
按序号进行deleteElem函数、delNum函数和delName函数实现。
显示通讯录记录。
可以查看通讯录中所有查看通讯录中所有的通讯录成员记录。
该功能由printList函数是实现。
3.详细设计
1)数据类型定义
本系统采用链式结构存储通讯录结点。
结点结构定义如下:
#defineLENsizeof(LNode)
typedefstructLNode
{
intnumber;
//学号
charname[20]//姓名
doubletelenum//电话
structLNode*next;
}LNode,*LinkList;
2)系统主要子程序详细设计
建立通讯录链表的函数。
LinkListcreatIncreLink()
{//创建一个存放通讯录成员的非递减有序表,返回头结点地址
LinkListp;
intnum=1,number;
doubletelenum;
charname[20],temp;
LinkListL,P;
L=(LinkList)malloc(LEN);
L->
next=NULL;
printf(“请输入学生学号、姓名和电话号码,建立通讯录,以’-1’为输入结束标记\n”);
printf(“请输入学号%d:
”,num);
scanf(“%d”,&
number);
printf(“请输入姓名%d:
temp=getchar();
gets(name);
printf(“请输入电话号码%d:
scanf(“%lf”,&
telenum);
while(number>
=0)
p=(LinkList)malloc(LEN);
p->
number=number;
telenum=telenum;
strcpy(p->
name,name);
insertYouXu(L,p);
num++;
printf(“请输入学号%d:
“,num);
scanf(“%d”,&
printf(“请输入姓名%d:
temp=getchar();
printf(“请输入电话号码 %d:
scanf(“%lf”,&
}
return(L);
}//end
2)查看通讯录所有记录的函数。
voidprintList(LinkListL)
{//打印头结点地址为L的通讯录
LinkListp=L;
intn=1;
printf(“\n--------\n”);
printf(“学号姓名电话号码\n”);
printf(“--------\n”);
if(L==NULL||L->
next==NULL)//判断通讯录是否为空
printf(“该通讯录在中没有元素\n”);
else
while(p->
next!
=NULL)
{
printf(“%2d%-9d”,n,p->
next->
printf(“%5s%.0f\n”,p->
name,p->
p=p->
next;
n++;
printf(“------------\n”);
return;
4.测试分析
1).通讯录的建立
在主菜单下,用户输入1并回车,然后按照提示建立通讯录。
分别依次输入通讯录成员的学号、姓名、电话号码;
重复此过程,直至分别输入-1三次,退出。
2).插入通讯记录
在主菜单下,用户输入2并回车,可以插入一个新成员的记录。
按照提示,依次输入学号、姓名、和电话号码后完成插入。
3).查询通讯记录
在主菜单下,用户输入3并回车,可以按照两种方式查询通讯录。
一是按照“学号”查询,二是按“姓名”查询,可按照提示操作。
4).删除通讯录记录
在主菜单下,用户输入4并回车,可以进行通讯录记录的删除。
本系统提供三种删除方式:
分别是按序号、按学号、和按姓名进行删除。
5).显示通讯录信息
在主菜单下,用户输入5并回车,可以查看通讯录中所有的成员信息。
5.源程序清单
详见附件-文件夹:
学生通讯录/main.cpp
6.用户手册
1)本程序执行文件为“学生通讯录管理系统.exe”。
2)进行本系统之后,随即显示系统主菜单界面。
用户可在该界面下输入各个菜单前对应的数字并按下回车键,执行相应子菜单命令。
3)本系统没用提供直接修改通讯录信息的功能,可通过删除和插入操作完成修改功能。
完整代码如下:
#include<
stdio.h>
stdlib.h>
string.h>
/*runthisprogramusingtheconsolepauseroraddyourowngetch,system("
pause"
)orinputloop*/
intseat;
intnumber;
charname[20];
}LNode,*LinkList;
//7.找到当前地址元素的直接前驱元素的地址
LinkListprior(LinkListL,LinkListp)
LinkListp_prior=L;
if(L->
next==NULL)returnL;
while(p_prior->
=p)
p_prior=p_prior->
return(p_prior);
}
//5.插入一条成员记录,使原通讯录保持有序
voidinsertYouXu(LinkListL,LinkListElem)
LinkListp=L->
while(p!
=NULL&
&
(Elem->
number)>
=(p->
number))
if(p->
number==Elem->
number)
{
printf("
重复输入!
!
\n"
);
return;
}
p=p->
if(p==NULL)
p=prior(L,p);
Elem->
p->
next=Elem;
next=p->
//1.创建链表
LinkListcreatIncreLink()
intnum=1,number;
charname[20],temp;
printf("
请输入学生学号、姓名和电话号码,建立通讯录,以'
-1'
为输入结束标志\n"
--------------------------\n"
请输入学号%d:
"
num);
scanf("
%d"
&
请输入姓名%d:
请输入电话号码%d:
%lf"
while(number>
p=(LinkList)malloc(LEN);
number=number;
telenum=telenum;
strcpy(p->
insertYouXu(L,p);
num++;
printf("
scanf("
temp=getchar();
gets(name);
return(L);
}
//2.在通讯录中按序号删除第i个成员
voiddeleteElem(LinkListL,inti)
LinkListp=L,q;
intj=0;
while(p->
next&
j<
i-1)
p=p->
j++;
if(!
(p->
next))
第%d个元素删除失败\n"
i);
return;
q=p->
p->
next=q->
free(q);
//3.按姓名删除通讯录成员
intdelName(LinkListL,charn[])
intflag=0;
seat=1;
next==NULL)
该链表中没有元素,查找失败\n"
while(p!
if(!
strcmp(p->
name,n))
{
flag=1;
printf("
%s"
p->
name);
p=p->
deleteElem(L,seat);
}
else
p=p->
seat++;
if(flag)
被删除\n"
returnflag;
}
//4.按学号删除通讯录成员
intdelNum(LinkListL,intn)
next==NULL)
该链表中没有元素,删除失败\n"
if(p->
number==n)
returnflag;
//6.输出通讯录L的所有元素
voidprintList(LinkListL)
LinkListp=L;
intn=1;
\n----------------------------------------\n"
学号姓名电话号码\n"
----------------------------------------\n"
if(L==NULL||L->
该通讯录中没有元素\n"
while(p->
%2d%-9d"
n,p->
%-5s%.0f\n"
n++;
return;
//8.按姓名查找通讯录成员
intsearchName(LinkListL,charn[])
intflag=0;
next==NULL||L==NULL)
该通讯录中没有元素,查找失败!
\n"
while(p!
=NULL)
strcmp(p->
name,n))
flag=1;
要查找的是第%d位通讯录成员:
seat);
Number:
%dName:
%sTelephone:
%.0f\n"
number,p->
p=p->
seat++;
returnflag;
//9.按学号查找通讯录成员
intsearchNum(LinkListL,intn)
number<
=n)
if(p->
{
flag=1;
printf("
学号:
%d姓名:
%s电话号码.:
}
p=p->
intmain(intargc,char*argv[]){
LinkListL=NULL;
intmenu;
system("
colorlf"
\n************************^@^欢迎使用通讯录系统**********************\n"
*1通讯录的建立*\n"
*2插入通讯记录*\n"
*3查询通讯记录*\n"
*4删除通讯记录*\n"
*5显示通讯录信息*\n"
*0退出管理系统*\n"
*************************^@^欢迎使用通讯录系统**********************\n"
请选择0-5:
"
menu);
while(menu!
switch(menu)
case1:
L=creatIncreLink();
建立通讯录:
printList(L);
flag=1;
break;
case2:
if(flag==1)
{
intnumber,telenum;
charname[20],temp;
LinkListp;
printf("
----------请输入通讯录成员--------\n"
请输入学号:
scanf("
请输入姓名:
temp=getchar();
请输入电话号码:
p=(LinkList)malloc(LEN);
p->
number=number;
strcpy(p->
telenum=telenum;
insertYouXu(L,p);
插入后:
printList(L);
}
else
\nERROR:
通讯录还没有建立,请先建立通讯录\n"
break;
case3:
intway,n,s;
charna[20],temp;
if(L!
if(flag)
------------------------------------\n"
选择查询方式(1.按学号2.按姓名):
way);
if(way==1)
{
printf("
scanf("
n);
s==searchNum(L,n);
if(s==0)
printf("
无此通讯录成员,查询失败!
}
elseif(way==2)
temp=getchar();
gets(na);
s=searchName(L,na);
无此通讯录成员,查找失败!
elseprintf("
通讯录中无记录!
elseprintf("
break;
case4:
选择删除方式:
(1.按序号2.按号3.按姓名):
if(way==1)
intn;
请输入通讯录序号:
删除后:
deleteElem(L,n);
elseif(way==2)
intn,f;
f=delNum(L,n);
if(f!
=0)
elseprintf("
无该学号,删除失败!
elseif(way==3)
charna[20],temp;
intf;
\n请输入姓名:
f=delName(L,na);
if(f!
printList(L);
ERROR\n"
case5:
printf(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 word 数据结构 课程设计 学生 通讯录
![提示](https://static.bingdoc.com/images/bang_tan.gif)