滁 州 学 院
课 程 设 计 报 告
课程名称:
数据结构与算法
设计题目:
通讯录
系
专
组
别:
业:
别:
计算机科学与技术系
网络工程
第三组
起止日期:
2009 年 5 月 17 日~2009 年 6 月 17 日
指导教师:
赵玉艳
计算机科学与技术系二○○九年制
课程设计题目
通讯录
组长 程腾
学号 2007210842
班级 2
系别
计 算 机 科 学 与
技术
专业 网络工程
组员 关啸 宫保林 吴敏 徐义明 周靖明
指导教师
赵玉艳
课程设计目的
(1)熟练掌握 C 语言的基本知识和技能;
(2)基本掌握面向对象程序设计的基本思路和方法;
(3)能够利用所学的基本知识和技能,解决简单的程序设
计问题。
课程设计所需环境
Windows xp 、Turbo.c
课程设计任务要求
用数据结构知识编写个通讯录程序
课程设计工作进度计划
序号 起止日期 工 作 内 容 分工情况
1
2
3
4
5
2009.5.17 —
—2009.5.20
2009.5.21.
—2009.5.27
2009.5.28 —
—2009.6.5
2009.6.6 —
2009.6.12.
2009.6.13 —
—2009.6.17
需求分析
所有组员对程序做了分析
概要设计
经过分析,所有组员总结了程序的模块。
详细设计
吴敏和徐义明对程序的查找和删除程序模块
进行分析;周靖明对程序的显示信息程序;程
腾和关啸对程序进行详细的编写;程腾对程序
做最后的调试;
调试与操作说明
程腾对程序的修改和运行
总结
全组对整个课程设计的总结。并填写课程设计
教研室审核意见:
教研室主任签字:
年
月
日
目录
1.需求分析.........................................................................................................................................4
1.1 课程设计题目............................................................................................................................... 4
1.2 课程设计任务及要求................................................................................................................... 4
1.3 编译环境........................................................................................................................................4
2.概要设计.........................................................................................................................................4
2.1 主要数据结构............................................................................................................................... 4
2.2 设计方法及原理............................................................................................................................4
2.3 流程图........................................................................................................................................... 5
3.详细设计.........................................................................................................................................6
3.1 主要用的函数................................................................................................................................6
3.2 详细程序介绍................................................................................................................................6
4.调试与操作说明...........................................................................................................................11
4.1 调试..............................................................................................................................................11
5.课程设计总结与体会...................................................................................................................11
6.致谢 ...............................................................................................................................................12
7.参考文献.......................................................................................................................................12
1.需求分析
1.1 课程设计题目
通讯录的制作
1.2 课程设计任务及要求
设计内容:
本系统应完成一下几方面的功能:
①输入信息(Enter()): 调用此函数用以输入数据到内存中,此过程包括建
立相应的链表或相应的数组,便于读取
②显示信息(Display()):用以显示输入的数据,包括从内存中读出和从磁盘
中读出
③查找(Search()):以姓名作为关键字查找要找的信息
④删除信息(Delete()):用以删除选定的输入信息(姓名作为关键字)
⑤存盘(Save()):调用此函数将内存中的数据保存至磁盘中
⑥装入(Load()):调用此函数用以将之前保存在磁盘的内容读入到内存中或
显示到屏幕上
注:本课题中输入的数据应包括以下几项信息:
姓名(NAME )学校(SCHOOL)城市(CITY)邮编(EIP)电话号码(PHM)
1.3 编译环境
TURBO.C
windows xp
2.概要设计
2.1 主要数据结构
主要利用线性表的链式存储结构,来存储数据和信息。
2.2 设计方法及原理
线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元
素。因此,为了表示每个数据元素与其后继元素之间的逻辑关系,对于数据元素
来说,除了存储数据本身信息之外,还需要存储一个指示其后继的信息。这两部分
组成数据的存储映像,称为结点。
2.3 流程图
开始
执行 main()函数
ch=getche()
switch(ch)
选择操作编号
1
Input()
2
List()
3
Find()
4
Delete()
5
Save()
6
creat()
3.详细设计
3.1 主要用的函数
creat() 调用信息
List() 显示信息
Delete() 删除信息 Find() 查找信息
Input() 输入信息 Save() 存盘
3.2 详细程序介绍
#include
#include
#include
#define maxlen 100
struct persons
{ char name[10];
char street[10];
char city[20];
char eip[10];
char state[10];
}persons[maxlen];
typedef struct lnode{
char name[10];
char street[10];
char city[20];
char eip[10];
char state[10];
struct lnode *next;
}listnode,*linklist;
linklist head=NULL,r=NULL;
listnode
*s,*p0,*p1,*p2,*p3,*p4,*p5;
char name1[10],ch;
char str1[20];
FILE *fp;
void enter()
{ s=(linklist)malloc(sizeof(listnode));
if(!s) printf("ERROR");
else { printf("\n\n\t 请输入录入人员信息:");
printf("\n\n\t\t 姓名:");
scanf("%s",s->name);
printf("\n\n\t\t 街道:");
scanf("%s",s->street);
printf("\n\n\t\t 城市:");
scanf("%s",s->city);
printf("\n\n\t\t 邮编:");
scanf("%s",s->eip);
printf("\n\n\t\t 国家:");
scanf("%s",s->state);
if(head==NULL)
head=s;
else
r->next=s;
r=s;
}
}
void display()
{ p1=head;
while(p1!=NULL)
{ printf("\n\n\t 姓名:%s\n",p1->name);
printf("\n\n\t 街道:%s",p1->street);
printf("\n\n\t 城市:%s",p1->city);
printf("\n\n\t 邮编:%s",p1->eip);
printf("\n\n\t 国家:%s",p1->state);
p1=p1->next;
}
}
void search()
{
printf("\n\n\t 请输入要查询人的姓名:");
p0=head;
gets(name1);
while(strcmp(name1,p0->name)!=0&&p0!=NULL)
p0=p0->next;
if(p0==NULL)
printf("\n\n\tIt is not exit in the addr-book!");
else
{
printf("\n\n\t 姓名:%s\n",p1->name);
printf("\n\n\t 街道:%s",p1->street);
printf("\n\n\t 城市:%s",p1->city);
printf("\n\n\t 邮编:%s",p1->eip);
printf("\n\n\t 国家:%s",p1->state);
}
}
void Delete()
{ printf("\n\n\t 请输入要删除人的姓名:");
gets(name1);
p4=head;
if(strcmp(p4->name,name1)==0)
{
p4=p4->next;
head=p4;
}
else
{
while(strcmp(p4->next->name,name1)!=0)
p4=p4->next;
p5=p4->next;
p4->next=p5->next;
free(p5);
}
}