精品C语言程序设计用指针链表实现的通讯录小程序

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

/**********************************

*准备工作*

**********************************/

#include

#include

#include

#include

typedef struct address

{ char name[10];

char petname[10];

char telnum[15];

char QQnum[12];

char Address[20];

struct address *next;

}ADDR;

#define LEN sizeof(ADDR)

#define ASK(p) do{\

p=(ADDR*)malloc(sizeof(ADDR));\

if(p==NULL) {printf("memory fail!"); exit(-1);}\

}while(0)

/*函数声明*/

void handle_menu(ADDR *);

int menu_select(void);

ADDR* new_addrBook(ADDR *);

ADDR *slstore(ADDR *);

void display(ADDR *);

ADDR *load(void);

void save(ADDR *);

void free_nodes(ADDR *);

void search_record(ADDR *);

void update_record(ADDR *);

ADDR *delete_record(ADDR *);

ADDR *sort_record(ADDR *);

void link_files(void);

void quit(ADDR *);

int count=0; //声名全集记录计数变量

int savedTag=0; //记录是否已保存的标志

*主函数*

**********************************/

void main()

{

printf("\n");

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

printf("\t\t\t* 这是一个*\n");

printf("\t\t\t* 简单的通讯录程序*\n");

printf("\t\t\t* 可以对通讯录进行简单管理*\n");

printf("\t\t\t* 欢迎使用通讯录*\n");

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

handle_menu(NULL);

}

*菜单处理函数*

*参数top:当前通讯录链表的表头*

**********************************/

void handle_menu(ADDR *top)

{

while(1 )

{

switch(menu_select())

{ case 0: //新建通讯录

top=new_addrBook(top);

break;

case 1: //读取记录

free_nodes(top); //首先销毁原来链表所占用的内存

top=load();

case 2: //显示记录

display(top);

break;

case 3: //增加记录

top=slstore(top);

break;

case 4: //查询记录

search_record(top);

break;

case 5: //修改记录

update_record(top);

break;

case 6: //删除记录

top=delete_record(top);

break;

case 7: //保存记录

save(top);

break;

case 8: //连接文件

link_files();

break;

case 9: //结束运行

quit(top);

break;

case 10:

top=sort_record(top); //记录整理

}

}

}

/**********************************

*菜单选择函数*

*返回所选功能对应的数字*

**********************************/

int menu_select()

{

char s[2];

char s[2];

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

printf("<微型通讯录主菜单>");

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

printf("* 0.新建记录\t1.读取记录\t2.显示记录\t3.增加记录\t4.查询记录*\n");

printf("* 5.修改记录\t6.删除记录\t7.保存记录\t8.连接文件\t9.结束运行*\n");

printf("*\t\t卐卍\t\t *");

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

printf("<左边数字对应着功能>");

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

printf("请选择功能序号:");

while(1)

{

gets(s);

if(s[0]=='\0')

{

printf("启动ZKN小助手!");

return 10;

}

else

{

if(s[1])

printf("\n输入有误,请重选功能:");

else

{

if(!isdigit(s[0])) //isdigit(s[0]):当s[0]为数字非0~9时,返回零值

printf("\n输入有误,请重选功能:");

相关文档
最新文档