简单个人电话号码查询系统数据结构课程设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、课题任务

人们在日常生活中经常要查找某个人或某个单位的电话号码,本实验将实现一个简单的个人电话号码查询系统,根据用户输入的信息(例如姓名等)进行快速查询

二、设计要求

(1)在外存上,用文件保存电话号码信息;

(2)在内存中,设计数据结构存储电话号码信息;

(3)提供查询功能:根据姓名或编号实现快速查询;

(4)提供其他维护功能,例如插人、删除、修改等。

三、程序的结点设计

现假设链表结点仅含有一个数据域和一个指针域。数据域是为了描述通讯者的相关信息,定义通讯者的结点类型:

typedef struct{

char num[10]; //编号

char name[15]; //姓名

char phone[11]; //电话号码

}dataType;

因此,,线性表的链式存储结构定义如下:

typedef struct node{ //结点类型定义

dataType data; //结点的数据域

struct node *next ; //结点指针域

}listnode , * linklist ;

linklist head ; //定义指向单链表的头指针

listnode * p ; //定义一个指向结点的指针变量

四、程序的功能设计

创建:创建通讯录文件

添加:添加通讯录记录

输出:显示通讯录记录

删除:删除通讯录记录

查找:查询通讯录记录

修改:修改通讯录记录

保存:将信息保存到文件中

五、程序的数据设计

该系统用下面六个功能模块编写,每个模块执行不同的功能,体现了模块化设计的思想。下面六个模块都是利用C语言文件,向文件中追加数据、

修改数据、查询数据和删除数据。

建立:可以建立通讯录记录,利用C语言文件,向文件中按顺序输入编号、姓名、电话号码,这里实际上是要求建立一个带头结点的单链表。

添加:可以添加通信录记录,向链表中继续增加结点,但只是输入到内存中,如果要输入到文件中还得调用保存函数。

输出:也是用通过循环依次输出文件中的数据,即输出所有通讯录里的记录。

删除:输入你要删除的人的姓名或编号后,系统会自动删除他的记录,在删除通过switch语句满足提示你确认删除的功能,只有等你确认删除

后才会删除。

查询:为了满足用户的实际需求,设计了两种查询方式,可以用姓名、编号两种方式查找通讯录记录。这里用到strcmp()函数,通过比较字符

串是否相同来判别是否找到相关信息,找到后,就把文件中的数据赋

给对应的变量,再把变量所带的值输出到屏幕上。

修改:当你选择修改功能后,系统会在修改函数中调用查询函数来找到需要修改的记录,然后返回该记录的结点。再通过printf语句来显示他

的记录,再通过修改查询函数返回的结点来修改所需要修改的记录。

保存:用到fclose()函数,每次操作成功后会自动保存到指定的文件中。

六、程序的函数设计

主函数和菜单选择函数部分:

int main(){

for( ; ; ){

switch( menu_select() ){

case 1:

printf("\t\t\t建立\n\n");

head = createlist();

break;

case 2:

printf("\t\t\t添加\n\n");

printf("编号姓名电话号码\n");

p = ( linklist ) malloc ( sizeof ( listnode ) );

scanf ( "%s%s%s" , p->data.num , p-> , p->data.phone ) ; insertnode(head,p);

break;

case 3:

printf("\t\t\t查询\n\n");

p = listfind( head );

if(p!=NULL){

printf("编号姓名电话号码 \n");

printf("%s %s %s\n", p->data.num , p->, p->data.phone ); }

else

printf("没有查询到!\n");

break;

case 4:

modify(head);

printf("修改成功!\n");

printf("请保存!\n");

break;

case 5:

printf("\t\t\t删除\n\n");

delnode(head);

break;

case 6:

printf("\t\t\t输出\n\n");

printlist(head);

break;

case 7:

save(head);

printf("保存成功!\n");

system("pause");

break;

case 0:

printf("\t\t\t亲爱的用户,白白了!我会想你的哦 >3

}

}

return 0 ;

}

int menu_select(){

int n;

printf("\t\t\t**********************\n");

printf("\t\t\t *********\n");

printf ( "\t\t\t个人电话号码查询系统\n");

printf ("\t\t\t<== 1 建立 ==>\n");

printf ("\t\t\t<== 2 添加 ==>\n");

相关文档
最新文档