1、本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到桌面上的程序:
2、LX终端(LXTerminal): Linux命令行终端,打开后会进入Bash环境,可以使用Linux命令
3、Firefox:浏览器,可以用在需要前端界面的课程里,只需要打开环境里写的HTML/JS页面即可
4、GVim:非常好用的编辑器,最简单的用法可以参考课程vim编辑器
使用GVim编辑器输入实验所需的代码及文件,使用LX终端(LXTerminal)运行所需命令进行操作。
实验报告可以在个人主页中查看,其中含有每次实验的截图及笔记,以及每次实验的有效学习时间(指的是在实验桌面内操作的时间,如果没有操作,系统会记录为发呆时间)。这些都是您学习的真实性证明。
通讯在我们的日常生活中扮演者必不可少的角色,通讯时时刻刻与我们相伴。每当我们拿出手机需要联系某个公司 boss 谈项目的时候,通讯录就派上用场了。既然这样,那么就让我们一起用 C 实现通讯录的基本功能吧!
这里我们使用“结构体”、“数组”、“链表”等实现通讯录的数据结构,最终实现通讯录的“添加联系人”、“通过关键字查询”、“查看通讯录所有联系人”、“查看联系人详细信息”、“删除联系人”基本功能,也是个比较简单的项目咯,但是麻雀虽小,也要五脏俱全嘛!
这里所有的代码都可以在 通讯录代码 下载得到。
通过命令运行:
gcc contactbook.c -o contact -I /usr/include -L /usr/lib
./contact
运行结果如下:
我们需要一些 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
本课程为会员专属,查看完整内容请