C语言实现通讯录链表管理系统
本文档是一份C语言实现的通讯录管理系统的代码,主要关注于数据结构和基本操作的设计。首先,它引入了必要的头文件,如stdio.h、stdlib.h、dos.h、conio.h和string.h,这些库在C语言中用于输入输出、内存管理以及字符串处理。 核心部分是定义了一个名为`Info`的结构体,用于存储联系人的信息,包括姓名(name)、城市(city)、省份(province)、国家(state)和电话号码(tel)。这种结构体在软件开发中是常见的方式,用于组织和存储具有相同属性的数据。 接下来,文档定义了一个名为`Node`的结构体,它是通讯录链表的结点类型。`Node`包含一个`Info`类型的成员变量`data`,以及一个指向下一个节点的指针`next`,这使得我们可以构建动态的数据结构,方便在不预知联系人数量的情况下添加、删除和查找联系人。 `stringinput`函数是一个用于接收用户输入并验证输入长度的实用函数,确保输入的字符串不超过指定长度。它接受一个字符指针、最大长度以及提示信息作为参数,通过循环接收输入,并进行必要的错误检查。 `enter`函数是主操作之一,用于向通讯录中添加新的联系人记录。它使用动态内存分配来创建新的`Node`实例,并调用`stringinput`函数依次获取并存储联系人的各项信息。如果输入的姓名为"0",则表示结束输入,退出循环。 这个系统的核心功能是基于链表的,链表数据结构允许在运行时灵活地添加或删除联系人,而不必预先知道所有的联系人信息。这在实际应用中是非常实用的,特别是当数据量可能增长并且需要频繁更新时。 总结来说,这份文档展示了如何在C语言中使用结构体和链表实现一个简单的通讯录管理系统,重点在于用户输入处理、数据存储以及链表操作。通过这个例子,读者可以了解到如何设计数据模型、处理用户输入以及管理动态数据结构。对于想要学习C语言编程或了解基础数据结构的同学,这是一个很好的实践案例。
#include<stdlib.h>
#include<dos.h>
#include <conio.h>
#include<string.h>
struct Info
{
char name[15];/*姓名*/
char city[10];/*城市*/
char province[10];/*省*/
char state[10];/*国家*/
char tel[15];/*电话*/
};
typedef struct node/*定义通讯录链表的结点结构*/
{
struct Info data;
struct node *next;
}Node,*link;
void stringinput(char *t,int lens,char *notice)
{
char n[50];
do{
printf("%s",notice); /*显示提示信息*/
scanf("%s",&n); /*输入字符串*/
if(strlen(n)>lens)
printf("\n exceed the required length! \n"); /*超过lens值重新输入*/
}while(strlen(n)>lens);
strcpy(t,n); /*将输入的字符串拷贝到字符串t中*/
}
void enter(link l)/*输入记录*/
{
Node *p,*q;
q=l;
while(1)
{
p=(Node*)malloc(sizeof(Node));/*申请结点空间*/
if(!p)/*未申请成功输出提示信息*/
{
printf("memory malloc fail\n");
return;
}
stringinput(p->data.name,15,"enter name:");/*输入姓名*/
if(strcmp(p->data.name,"0")==0)/*检测输入的姓名是否为0*/
break;
stringinput(p->data.city,10,"enter city:");/*输入城市*/
stringinput(p->data.province,10,"enter province:");/*输入省*/
stringinput(p->data.state,10,"enter status:");/*输入国家*/
stringinput(p->data.tel,15,"enter telephone:");/*输入电话号码*/
p->next=NULL;
q->next=p;
q=p;
}
}
void del(link l)
{
Node *p,*q;
char s[20];
剩余7页未读,继续阅读
- 粉丝: 0
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦