通讯录的制作(数据结构C语言版)

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

通讯录的设计

一、设计思路:

经过一个学期的程序设计学习,我逐渐了解了计算机的基本原理和c语言的基本常识,并可以逐渐自己来实现一些简单的程序任务。此次程序设计我选择了通讯录设计,通过函数、结构体的定义以及一些基本操作运用,经过一个多月的编写、调试、测试,最终完成了该程序的设计。以下为我的设计思路:首先,确定通讯录的功能,我初步设计了六项功能:输入(程序中对应 enter ())、删除(程序中对应delete())、显示通讯录(程序中对应list())、搜索(程序中对应search())、保存(程序中对应save())、装载(程序中对应 load())。

其次,对于存储的数据结构,我则主要选择了一下几个方面的信息:姓名、性别年龄、籍贯、手机、下一个指针(用于链表的操作与实现)、当前指针(用于链表的操作与实现)。

二、程序源代码:

#include

struct address{ /*创建一个address结构*/

char name[10]; /*姓名*/

char sex[2]; /*性别*/

char age[2]; /*年龄*/

char native[10]; /*籍贯*/

char telephone[12]; /*手机*/

struct address *next; /*下一个入口的指针*/

struct address *prior; /*当前记录的指针*/

} list_entry;

struct address *start; /*指向列表中第一个入口*/

struct address *last; /*指向列表中最后一个入口*/

void

enter(),display(),search(),save(),loa d();

menu_select(),list(),delet(),inp uts();

main()

{

char s[20],choice;

struct address *info;

start=last=NULL; /*列表长度清零*/

for(;;) { /*列循环的一个用法*/

switch(menu_select()){

case 1: enter(); /*输入1,进入enter()程序,是输入通讯录*/

break;

case 2:delet(); /*输入2,进入delete()程序,是删除一个记录*/

break;

case 3:list(); /*输入3,进入list()程序,是列表显示通信录*/

break;

case 4:search(); /*输入4,进入search()程序,搜索一个街道*/

break;

case 5:save(); /*输入5,保存列表到磁盘文件*/

break;

case 6:load(); /*输入6,从磁盘文件读入列表*/

break;

case 7:return(0);

}

}

}

/*选择一个选项*/

menu_select()

{

char s[20];

int c;

printf("1.输入一个名字(直接回车则退出)\n");

printf("2.删除一个名字\n");

printf("3.列表显示\n");

printf("4.搜索查询\n");

printf("5.保存文件\n");

printf("6.装入文件\n");

printf("7.退出\n");

do{

printf("\n输入您的选择:");

gets(s);

c=atoi(s);

}while (c<0||c>7);

return c;

}

/*输入名字和地址*/

void enter()

{

struct address *info,*dls_store();

for(;;){

info=(struct address *) malloc(sizeof(list_entry));

if (!info) {

printf("\n内存溢出");

return;

}

inputs("输入姓名:",info->name,10);

if (!info->name[0]) break; /*名字长度为0,停止输入*/

inputs("输入性别:",info->sex,2);

inputs("输入年龄:",info->age,2);

inputs("输入籍贯:",info->native,10);

inputs("输入电话:",info->telephone,12);

start=dls_store(info,start);

/*保存在第一个记录里*/

} /*输入循环*/

}

inputs(prompt,s,count) /*这个函数用于输入长度为count的一个字符串,用于防止字符串长度超过它的空间,并提出警告*/

char *prompt;

char *s;

int count;

{

char p[255];

do{

printf(prompt);

/*显示这个函数的字符串*/

gets(p); /*从键盘获得255个输入*/

if(strlen(p)>count) printf("n字符串超过长度!");

/*如果数组P中的长度超过调用函数中的参数count,提示*/

}while (strlen(p)>count);

/*如果输入的字符串长度超过count,循环重新输入,否则退出,返回调用者*/

strcpy(s,p); /*s是目标字符串,输出时字符串在s中*/

return(0);

}

/*产生一个又链接表,当一个新元素插入到列表的开始时,一个指向第一个元素的指针被返回*/

struct address *dls_store(i,top) /*存贮顺序*/

struct address *i;

相关文档
最新文档