数据结构课程设计说明书模板
- 格式:doc
- 大小:131.37 KB
- 文档页数:18
中北大学
数据结构与算法课程设计
说 明 书
学 院、系: 软件学院
专 业: 软件工程
班 级: 13140A01
学 生 姓 名: 景贝贝 学 号: 1314011438
设 计 题 目: 通讯录的制作
起 迄 日 期: 2015年1月12日- 2015年1月29日
指 导 教 师: 杨顺民
2015 年1月 29 日
1
1 需求分析
1) 每条信息至包含 :姓名(NAME )街道(STREET)城市(CITY)邮编(EIP)国家(STATE)几项
2) 作为一个完整的系统,应具有友好的界面和较强的容错能力
3) 上机能正常运行,并写出课程设计报告
通讯录的基本活动包括:对一个人的采编、删除、查找和显示等等。由于上述四项基本活动都是通过人名(即关键字)进行的。
作为通讯录,就需要一个模块来完成对别人的登记和记录情况,本程序使用文件来完成上述操作。
2 设计内容
本系统应完成一下几方面的功能:
1) 输入信息——enter();
2) 显示信息———display( );
3) 查找以姓名作为关键字 ———search( );
4) 删除信息———delete( );
5) 存盘———save ( );
6) 装入———load( ) ;
3 设计目的
用〈〈数据结构〉〉中的双向链表作数据结构,结合C语言基本知识。编写一个通讯录管理系统。以把所学数据结构知识应用到实际软件开发中去。
线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素。
因此,为了表示每个数据元素与其后继元素之间的逻辑关系,对于数据元素来说,除了存储数据本身信息之外,还需要存储一个指示其后继的信息。
这两部分组成数据的存储映像,称为结点。
4.系统流程图
2
5.详细设计及
(1) 结构体:
(构造一个结构体来存储和使用数据)
struct address{ /*定义结构*/
char name[30]; //姓名
char street[100]; //街道
char city[30]; //城市
char state[30]; //国家 执行main()函数
switch(ch)
选择操作编号
1enter()
输入信息 开始
2mldelete()删除 3list()
显示信息 4search();查找
5save()存盘 6Load()装入 ch=getche()
7exit()
退出
3 char zip[11]; //邮政编码
struct address *next; /*后继指针*/
struct address *prior; /*前导指针*/
};
struct address *start; /*首结点*/
struct address *last; /*尾结点*/
struct address *find(char *); /*声明查找函数*/
(2)包含被调用函数:
功能
void enter(); //输入信息 /*函数声明*/
void search(); //查找信息
void save(); //存盘
void load(); //装入
void list(); //显示信息
void mldelete(struct address **,struct address **); //删除信息
void dls_store(struct address *i,struct address **start,
struct address **last);
void inputs(char *,char *,int);
void display(struct address *);
int menu_select(void);
(3)实现主程序与各模块的调用关系:
主函数通过调用各个函数来连接各个函数,从而实现程序功能的实现。
int main(void)
{
start = last = NULL;
for(;;)
{
4 switch(menu_select())
{
case 1:enter();
continue;
case 2:mldelete(&start,&last);
continue;
case 3:list();
continue;
case 4:search();
continue;
case 5:save();
continue;
case 6:load();
continue;
case 7:exit(0);
}
}
}
6.部分调试界面
5
7.程序源码
#include
#include
#include
struct address{ /*定义结构*/
char name[30];//姓名
char street[100];//街道
char city[30];//城市
char state[30];//国家
char zip[11];//邮编
struct address *next; /*后继指针*/
struct address *prior; /*前导指针*/
};
struct address *start; /*首结点*/
struct address *last; /*尾结点*/
struct address *find(char *); /*声明查找函数*/
6 void enter(); /*函数声明*/
void search();
void save();
void load();
void list();
void mldelete(struct address **,struct address **);
void dls_store(struct address *i,struct address **start,
struct address **last);
void inputs(char *,char *,int);
void display(struct address *);
int menu_select(void);
int main(void)
{
start = last = NULL;
for(;;)
{
switch(menu_select())
{
case 1:enter();
continue;
case 2:mldelete(&start,&last);//删除
continue;
case 3:list();//显示
continue;
case 4:search();//查找
continue;
case 5:save();//保存
7 continue;
case 6:load();//装入
continue;
case 7:exit(0);//退出
}
}
}
int menu_select(void) /*主目录*/
{
char s[80];
int c;
printf("……………………~欢迎使用迷你通讯录系统~………………………\n");
printf("*****************************************\n");
printf("************** 1.输入信息 ***************\n");
printf("************** 2.删除信息 ***************\n");
printf("************** 3.显示信息 ***************\n");
printf("************** 4.查找 ***************\n");
printf("************** 5.存盘 ***************\n");
printf("************** 6.装入 ***************\n");
printf("************** 7.退出 ***************\n");
printf("*****************************************\n");
do{
printf("\n请选择:\n");
gets(s);
c = atoi(s);//是把字符串转换成长整型数的一个函数
}while(c<0||c>7); /*超出选项范围时,提示重新输入*/
return c; /*返回输入值*/
}