开始
实验
我要
提问
我要
纠错
C语言实现通讯录

C 语言通讯录

一、项目说明

1. 项目使用

1、本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到桌面上的程序:

2、LX终端(LXTerminal): Linux命令行终端,打开后会进入Bash环境,可以使用Linux命令

3、Firefox:浏览器,可以用在需要前端界面的课程里,只需要打开环境里写的HTML/JS页面即可

4、GVim:非常好用的编辑器,最简单的用法可以参考课程vim编辑器

2. 环境使用

使用GVim编辑器输入实验所需的代码及文件,使用LX终端(LXTerminal)运行所需命令进行操作。

实验报告可以在个人主页中查看,其中含有每次实验的截图及笔记,以及每次实验的有效学习时间(指的是在实验桌面内操作的时间,如果没有操作,系统会记录为发呆时间)。这些都是您学习的真实性证明。

3. 项目介绍

(1)项目简介

通讯在我们的日常生活中扮演者必不可少的角色,通讯时时刻刻与我们相伴。每当我们拿出手机需要联系某个公司 boss 谈项目的时候,通讯录就派上用场了。既然这样,那么就让我们一起用 C 实现通讯录的基本功能吧!

这里我们使用“结构体”“数组”“链表”等实现通讯录的数据结构,最终实现通讯录的“添加联系人”“通过关键字查询”“查看通讯录所有联系人”“查看联系人详细信息”“删除联系人”基本功能,也是个比较简单的项目咯,但是麻雀虽小,也要五脏俱全嘛!

这里所有的代码都可以在 通讯录代码 下载得到。

(2)运行效果

通过命令运行:

gcc contactbook.c -o contact -I /usr/include -L /usr/lib
./contact

运行结果如下:

img

二、头文件

我们需要一些 Linux C 库下的头文件来支持实现通讯录,这里使用到了:

  • stdio.h:标准输入输出
  • stdlib.h:标准库头文件,包含常用系统函数
  • sys/io.h:i/o 访问
  • string.h:字符串处理相关

三、数据结构设计

要想存放我们所录入的联系人,就需要我们定义一个结构体如contact来实现存放联系人信息的基本功能,可以按照如下方式来实现:

struct contacts
{   
    char cNameBuf[50];
    char cTelBuf[80];
    char cOfficTelBuf[80];
    char cHomeTelBuf[80];
    char cQQNumber[60];
    char cAddress[128];
}

四、 所有联系人

思索一下,我们打开电话本的时候有哪些功能呢?是否首先看到的就所有联系人呢?那么怎么实现这个功能呢,很简单,使用循环体对结构体指针做控制,将结构体中各项一次显示在屏幕上!而形参就应该定义为第一个待读数据的指针!实现方式如下:

```

void ViewList(int iCurpage)

{

FILE *file;

int i;

struct contacts contacts;
int iDataTotalPage;

int iDataTotalCount;

int iDataCountPerPage;

int iPos;

int j;

ClearScreen();

iDataCountPerPage=20;

iDataTotalCount=GetFileDataCount();

if(iDataTotalCount==0)
    iDataTotalPage=0;
else
    iDataTotalPage=iDataTotalCount/20+1;

if(iCurpage==iDataTotalPage)
    iDataCountPerPage=iDataTotalCount%20;
file=fopen("contacts.dat","r");
for(j=0;j<6;j++)
{
    printf("%s   ",ListTitle[j]);
}
printf("%s   \n",ListTitle[6]);

if(iDataTotalPage>0)
{
    if(iCurpage>0 && iCurpage<=iDataTotalPage)
    {
        for(i=0;i<iDataCountPerPage;i++)
        {
            memset(&contacts,0,sizeof(struct contacts));
            iPos=sizeof(struct contacts)*((iCurpage-1)*20+i);
            fseek(file,iPos,SEEK_SET);
            fread(&contacts,sizeof(struct contacts),1,file);
            printf("%d   ",(iCurpage-1)*20+(i+1));
            printf("%s   ",contacts.cNameBuf);
            printf("%s   

本课程为会员专属,查看完整内容请

加入实验楼会员

0% Complete

加载中,精彩就在后面...

卡住了?点击重试