"这个代码段是关于电话簿设计的一个小型程序,用于读取、搜索和添加联系人信息。它包含一个结构体`struct person`来存储姓名、电话、分类、邮箱、QQ号和备注等信息,并通过文件操作读取和保存数据。程序设计周可能是课程的一部分,旨在帮助初学者掌握基本的文件操作和数据管理技能。" 在电话簿设计中,这个C语言程序首先定义了一个名为`struct person`的结构体,其中包含以下字段: 1. `char name[10]`: 姓名,最多9个字符加上结束符。 2. `char phone[11]`: 电话号码,考虑到可能包含国际区号,预留了11个字符。 3. `char classify[10]`: 联系人的分类,例如"A"、"B"或"C",最多9个字符加上结束符。 4. `char email[20]`: 邮箱地址,最多19个字符加上结束符。 5. `char QQ[15]`: QQ号码,最多14个字符加上结束符。 6. `char remark[30]`: 备注,最多29个字符加上结束符。 接着,定义了`per[N]`数组,用于存储`N15`个`struct person`对象,`N15`表示电话簿可以容纳15个联系人。 `load()`函数用于从名为`person.txt`的文件中加载联系人数据。如果文件打开失败,它会打印错误消息并返回0。否则,它会逐行读取文件,使用`fscanf()`函数将数据解析并存储到`per`数组中,然后关闭文件并返回实际加载的联系人数量。 `search()`函数允许用户根据分类搜索联系人。它首先调用`load()`函数加载数据,然后显示分类A、B和C的占位符。用户输入分类后,函数遍历`per`数组,比较每个联系人的分类,如果找到匹配项,就打印出该联系人的姓名和电话。如果没有找到匹配的分类,它会显示"NoEXIST!"。最后,调用`menu()`函数,可能用于显示其他功能选项。 `add()`函数尚未完整,但看起来它将打开一个文件以追加新的联系人信息。这通常涉及创建一个新的`struct person`实例,填充数据,然后将其写入文件。 这个程序设计周的实践项目有助于学习者理解如何使用C语言处理结构化数据,以及如何进行文件操作来持久化这些数据。这包括文件的读写操作、字符串比较函数(如`strcmp()`)以及用户输入的处理。同时,它还展示了如何设计简单的命令行界面来与用户交互。
#include<string.h>
#include<stdlib.h>
#define N 15
struct person
{
char name[10];
char phone[11];
char classify[10];
char email[20];
char QQ[15];
char remark[30];
}per[N];
char A[]={"办公类"};
char B[]={"个人类"};
char C[]={"商务类"};
int load()//**********加载函数**********/
/***********加载所有记录,并且可以返回所有记录的个数********/
{
FILE *fp;
int i;
if((fp=fopen("person.txt","r"))==NULL)
{
printf("\nCannot open file\n");
return 0;
}
for(i=0;!feof(fp);i++)
fscanf(fp,"%s%s%s%s",&per[i].name,&per[i].phone,&per[i].classify,&per[i].email,&per[i].QQ,&per[i].remark);
fclose(fp);
return(i);
/***************查看功能**************/
void search()
{
void menu();
int n,j,k=-1;
char p[10];
n=load();
printf("\n\nClassify A:办公类\nClassify B:个人类\nClassify C:商务类\n\n 输入要找的人所在分类! Classify:"); /*************输入要找的人的分类*********/
scanf("%s",p);
for(j=0;j<n;j++)
if(strcmp(p,per[j].classify)==0)
{
k=j;
printf("\n(%d).%s %s\n",j+1,per[j].name,per[j].phone);
}
if(k==-1)
/**********如果要查找的分类不存在,则显示不存在**********/ {
printf("\n\nNO EXIST!");
}
menu();
}
/**************增加功能*********/
void add()
{
void menu(); int n,j;
FILE *fp;
char name[10],classify[10],email[20],QQ [15],remark [30];
char phone[11];
n=load();
剩余7页未读,继续阅读
- 粉丝: 1
- 资源: 16
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展