数据结构课程设计通迅录.docx
- 文档编号:2886659
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:11
- 大小:131.38KB
数据结构课程设计通迅录.docx
《数据结构课程设计通迅录.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计通迅录.docx(11页珍藏版)》请在冰豆网上搜索。
数据结构课程设计通迅录
课程设计报告书
题目:
通迅录
专业:
计算机计算机科学与技术
班级:
12级<4>班
姓名:
马立萍
学号:
2012051434
指导老师:
米文丽
成绩:
一.需求分析
整个通讯录一共6个部分,分别为预选准备,增加联系人,删除联系人,显示联系人,修改联系人,以及退出系统。
0.预选准备:
首先调用定义的read_func函数,查询是否有预先保存的数据,如果有则载入没有则先调用insert_func函数输入一个数据然后进入主菜单
1.增加联系人:
在主菜单中键入1则进入增加联系人部分。
通过调用insert_func函数输入名字与电话。
由于系统的原因,名字和电话的字符长度为20,超过20则出错,但由于国内的实际情况20字符几乎可以满足所有非特殊的电话用途。
2.删除联系人:
在主菜单中键入2则进入删除联系人部分。
通过调用delete_func()函数,查找需要删除联系人的名字进行删除。
3.显示联系人:
在主菜单中键入3则进入显示联系人部分。
通过调用display_func()函数,显示并按照电话号码的大小排列显示并统计所有的联系人个数。
4.修改联系人:
在主菜单中键入4则进入修改联系人部分。
通过调用modify_func()函数,查找需要删除联系人的名字进行修改号码。
5.退出系统:
在主菜单中键入5则进入退出系统部分。
通过调用write_func()函数,保存已输入的电话号码,并退出系统。
二.概要设计:
三.详细设计
/*filename:
slist.c*/
/*单链表,插入、删除使用排序*/
#include
#include
#include
#include
voidread_func(void);
voidwrite_func(void);
voidinsert_func(void);
voidtel_func(void);
voiddelete_func(void);
voiddisplay_func(void);
voidmodify_func(void);
voidanykey_func(void);
structstudent{
charname[20];
chartelephone[20];
structstudent*next;
};
structstudent*ptr,*head,*current,*prev;
voidmain(void)
{
charoption1;
system("cls");
read_func();
while
(1)
{
printf("****************************************\n");
printf("1.增加联系人\n");
printf("2.删除联系人\n");
printf("3.显示联系人\n");
printf("4.修改联系人\n");
printf("5.退出系统\n");
printf("****************************************\n");
printf("Pleaseenteryourchoice(1-5)...");
option1=getche();
printf("\n");
switch(option1)
{
case'1':
insert_func();
break;
case'2':
delete_func();
break;
case'3':
display_func();
break;
case'4':
modify_func();
break;
case'5':
write_func();
exit(0);
}
}
}
voidread_func(void)
{
FILE*fptr;
head=(structstudent*)malloc(sizeof(structstudent));
head->next=NULL;
/*开始时,若表中不存在数据,则要求输入第一笔数据*/
if((fptr=fopen("slist.dat","r"))==NULL)
{
printf("表中数据不存在\n");
printf("请按任意键输出第一组数据...\n");
getch();
insert_func();
}
else
{
ptr=(structstudent*)malloc(sizeof(structstudent));
while(fscanf(fptr,"%s%s",ptr->name,&ptr->telephone)!
=EOF)
{
tel_func();
ptr=(structstudent*)malloc(sizeof(structstudent));
}
fclose(fptr);
}
}
voidwrite_func(void)
{
FILE*fptr;
fptr=fopen("slist.dat","w");
current=head->next;
while(current!
=NULL)
{
fprintf(fptr,"%s%s\n",current->name,current->telephone);
current=current->next;
}
fclose(fptr);
}
voidinsert_func(void)
{
ptr=(structstudent*)malloc(sizeof(structstudent));
printf("名字:
");
gets(ptr->name);
printf("电话:
");
gets(ptr->telephone);
tel_func();
}
/*以电话高低由大到小排列*/
voidtel_func(void)
{
//插入数据
prev=head;
current=head->next;
while((current!
=NULL)&&(current->telephone>ptr->telephone))
{
prev=current;
current=current->next;
}
ptr->next=current;
prev->next=ptr;
}
voiddelete_func(void)
{
chardel_name[20];
printf("删除名字:
");
gets(del_name);
prev=head;
current=head->next;
while((current!
=NULL)&&(strcmp(current->name,del_name)!
=0))
{
prev=current;
current=current->next;
}
if(current!
=NULL)
{
prev->next=current->next;
free(current);
printf("%s档案已删除\n",del_name);
}
else
printf("姓名%s没找到\n",del_name);
anykey_func();
}
voidmodify_func(void)
{
charn_temp[20];
printf("需要修改信息的名字:
");
gets(n_temp);
current=head->next;
while((current!
=NULL)&&(strcmp(current->name,n_temp)!
=0))
{
prev=current;
current=current->next;
}
if(current!
=NULL)
{
printf("**************************\n");
printf("名字:
%s\n",current->name);
printf("电话:
%s\n",current->telephone);
printf("**************************\n");
printf("请输入新的电话:
");
gets(ptr->telephone);
printf("%s档案修改\n",n_temp);
}
else
printf("名字%s没有被找到\n",n_temp);
anykey_func();
}
voiddisplay_func(void)
{
intcount=0;
system("cls");
if(head->next==NULL)
{printf("Nostudentrecord\n");}
else
{
printf("名字电话\n");
printf("---------------------------\n");
current=head->next;
while(current!
=NULL)
{
printf("%-20s%3s\n",current->name,current->telephone);
count++;
current=current->next;
if(count%20==0)getch();
}
printf("---------------------------\n");
printf("总共%d记录被找到\n",count);
}
anykey_func();
}
voidanykey_func(void)
{
printf("请输入任意键以继续");
getch();
printf("\n");
}
四.测试和结果分析:
(一).测试
1.开头载入不成功输入第一组数据以及显示主菜单界面
2.添加联系人界面:
3.删除联系人界面:
4.显示联系人界面:
5.修改联系人界面:
6.退出后保存的slist.dat文件
(二)结果分析
界面比较烦乱,或许应该使用system(“cls”)来使系统更加简洁,而且系统功能过于简单,如果是显示使用的通讯录应该包含多个电话号码,包括固定电话几个手机,QQ,地址,邮箱等等数据,而且开始时电话号码的数据不能超过10位,否则就不能正常显示,经过修改现在能显示20位以内,但是总觉得这样的修改并不灵活,有待修改。
五.课程设计总结及心得
通过这次的课程设计,更加深了我对数据结构这门课程的理解,特别是对数据结构的灵活运用有了很大进步。
这次的课程设计的题目很简单,设
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 通迅录