数据结构课程设计
——————通讯录的制作
信计 081
班级:
组员: 王 琪 0809290106
杨赫桐 0809290108
隋欣桐 0809290103
- 1 -
一、摘要:
运用〈〈数据结构〉〉中的算法思想作数据结构,结合 C 语言基本
知识,编写一个通讯录管理系统。以把所学数据结构知识应用到实际
软件开发中去。
二、问题的重述:
制作通讯录,要求每条信息至包含姓名(name )城市(city)
电话(tel)QQ 号(qq),完成如下功能:输入信息;显示信息;
查找以姓名作为关键字;删除信息;修改信息;存盘(将数据保
存在文件中,此功能选做);清除信息;
三、问题的分析:
结合数据结构和 C 语言的知识运用链表和文件。
本系统应完成一下几方面的功能:
①输入信息(enter()): 调用此函数用以输入数据到内存中,此过
程包括建立相应的链表或相应的数组,便于读取;
②显示信息(display()):用以显示输入的数据;
③查找(search()):以姓名作为关键字查找要找的信息;
④删除信息(delete_name ()):用以删除选定的输入信息(姓名作
为关键字);
⑤修改信息(change()): 用以修改选定的输入信息(姓名作为关键
字);
⑥打开通讯录(load()):存储从文件中读取的字符;
⑦添加信息(inster()):用尾插法以添加信息;
- 2 -
⑧保存(save()):调用此函数将内存中的数据保存至磁盘中;
⑨清屏(system("cls")):执行 cls 命令。
四、程序的建立与运行结果检验
1、定义主函数:
void main()
{
list *head=NULL;//头指针初始化
FILE *fp;//定义文件指针
int m;//功能代号吗
do{
printf("\n
#############################请
选择################################\n");
printf("
printf("
printf("
printf("
printf("
printf("
printf("
printf("
printf("
printf("
#
1、信息输入 ");
2、显示信息
#\n");
#
3、查找姓名 ");
4、删除信息
#\n");
#
5、修改信息 ");
6、打开通讯录 #\n");
#
7、添加信息 ");
8、 保存
#\n");
#
9、清屏
");
0、退出
#");
- 3 -
printf("\n
#######################################################
############\n");
printf(" 提 示 : 信 息 输 入 和 添 加 信 息 时 最 好 存 入 字
符,否则,在打开存储文件时,可能会出现乱码!\n");
printf("==输入要执行的功能代号:_");
scanf("%d",&m);
switch(m)
{
case 1:enter(head);break;
case 2:display(head); break;
case 3:search(head); break;
case 4:delete_name(head);break;
case 5:change(head);break;
case 6:load(head);break;
case 7:insert(head);break;
case
8:save(head,fp);printf("== 保 存 成 功
==\n");break;
case 9:system("cls");break;
}
}
while(m!=0);
- 4 -
}
2、信息输入:
void enter(list *&head)
{
list *p0,*p1,*p2;//定义指针
int m;//作为判断是否继续新建的条件
FILE *fp;
p0=(list *)malloc(LEN);
//开辟一个新单元
p0->next=NULL;//结点指针域为空
head=p0;//第一个结点,即为头结点
printf("请输入信息建立通讯录:\n");
getchar();
scanfdata(p0);//输入数据
- 5 -
p2=p0;
printf("是否继续按 1 输入,按 0 结束_");
scanf("%d",&m);
while(m)
{
getchar();
p1=(list *)malloc(LEN);
//开辟一个新单元
p1->next=NULL;
p2->next=p1;
scanfdata(p1);//输入数据
p2=p1;
head->n = head->n+1;//表长
printf("是否继续按 1 输入,按 0 结束_");
scanf("%d",&m);
}
if(m==0)
save(head,fp);//把信息存到相应文件
{
}
}
- 6 -
3、显示信息
void display(list *head)
{
list *p; //定义移动指针
int i;
char *menu[]={"姓名","城市","电话", "QQ"};
p=head;
printf("--------------------------------------------------------------------\n");
for(i=0;i<4;i++)
printf("%-20s",menu[i]);
printf("\n");
if (head!=NULL)
while(p)
- 7 -
printf("%-20s",p->name);
printf("%-20s",p->city);
printf("%-20s",p->phone);
printf("%-20s",p->qq);
printf("\n");
p=p->next;
{
}
else
printf("不好意思,列表为空\n");
printf("--------------------------------------------------------------------\n");
}
4、查找信息:
- 8 -