人人范文网 范文大全

c语言通讯录程序

发布时间:2020-03-03 06:19:16 来源:范文大全 收藏本文 下载本文 手机版

C语言程序设计实践

——通讯录管理系统

六、程序源代码及注释

#include #include #include #include #define SUM 100 #define STOP 1000

typedef struct /*结构体,存放通讯录成员信息,重新定义成member型变量*/ { char name[10]; char tel[15]; char cla[5]; char mail[20]; char qq[15]; }member;

member info[SUM]; //所有成员空间

FILE *fp;

//文件指针,用于打开或保存通讯录文件 int count=0; //全局变量,用于计数已存入数量

/*-----------------------*/

int load(char filename[])//打开通讯录文件 { member *p; int i=0; if((fp=fopen(filename,\"rb\"))==NULL)

return i; else

{

while(!feof(fp))

{

p=(member *)malloc(sizeof(member));

if(fread(p,sizeof(member),1,fp)==1)

{

strcpy(info[i].name,p->name);

strcpy(info[i].tel,p->tel);

strcpy(info[i].cla,p->cla);

strcpy(info[i].mail,p->mail);

strcpy(info[i].qq,p->qq);

i++;

}

free(p);

}

return i;

} } /*------------------*/

void save(char filename[]) //保存通讯录文件 {

int i;

member *p;

if((fp=fopen(filename,\"wb\"))==NULL)

{

printf(\"无法保存!打开文件%s时出错\\n\",filename);

exit(1);

}

else

for(i=0;i

{

p=(member *)malloc(sizeof(member));

strcpy(p->name,info[i].name);

strcpy(p->tel,info[i].tel);

strcpy(p->cla,info[i].cla);

strcpy(p->mail,info[i].mail);

strcpy(p->qq,info[i].qq);

fwrite(p,sizeof(member),1,fp);

free(p);

}

fclose(fp); } /*-----------------*/ void display(void)

//分类查看功能 { system(\"cls\");

char dis;

char way[5];

int i,j=0;

choice:

printf(\"**********

请选择查看分类

***********\\n\");

printf(\"**********

1.亲友

**********\\n\");

printf(\"**********

2.同学

**********\\n\");

printf(\"**********

3.老师

**********\\n\");

printf(\"**********

4.其他

**********\\n\");

printf(\"**********

5.查看全部

**********\\n\");

printf(\"**********

0.返回上一级菜单

**********\\n\");

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

printf(\"请选择(1~5或0):\");

dis=getchar();

getchar();

switch(dis)

{

case \'1\':strcpy(way,\"亲友\");break;

case \'2\':strcpy(way,\"同学\");break;

case \'3\':strcpy(way,\"老师\");break;

case \'4\':strcpy(way,\"其他\");break;

case \'5\':printf(\"*******全部通讯成员*******\\n\");

for(i=0;i

printf(\"

姓名:%s\\n\",info[i].name);

printf(\"

电话号码:%s\\n\",info[i].tel);

printf(\"

电子邮箱:%s\\n\",info[i].mail);

printf(\"

QQ号:%s\\n\",info[i].qq);

printf(\"

分类:%s\\n\",info[i].cla);

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

j++;

}

if(j==0){

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

printf(\"无任何通讯成员\\n\");

}

j=0;

Sleep(STOP);

goto choice; break;

case \'0\':return; break;

default:

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

printf(\"

输入指令有误!

\\n\");

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

Sleep(STOP);

goto choice;

}

printf(\"********通讯成员之%s*******\\n\",way);

for(i=0;i

if(strcmp(info[i].cla,way)==0){

printf(\"****

姓名:%s\\n\",info[i].name);

printf(\"****

电话号码:%s\\n\",info[i].tel);

printf(\"****

电子邮箱:%s\\n\",info[i].mail);

printf(\"****

QQ号:%s\\n\",info[i].qq);

printf(\"****

分类:%s\\n\",info[i].cla);

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

j++;

}

}

if(j==0){

printf(\"该分类中无通讯成员\\n\");

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

}

j=0;

Sleep(STOP);

goto choice; }

/*------*/ int add(void)

//增加新的成员 {

member temp;

int i;

reinput_name:

printf(\"请输入新成员的姓名:\");

gets(temp.name);

for(i=0;i

if(strcmp(info[i].name,temp.name)==0){

printf(\"该姓名已存在!\\n\");

Sleep(STOP);

goto reinput_name;

}

reinput_tel:

printf(\"请输入新成员的电话号码:\");

gets(temp.tel);

for(i=0;i

if(strcmp(info[i].tel,temp.tel)==0){

printf(\"该电话号码已存在!\\n\");

Sleep(STOP);

goto reinput_tel;

}

printf(\"请输入新成员的电子邮箱:\");

gets(temp.mail);

printf(\"请输入新成员的QQ号:\");

gets(temp.qq);

printf(\"请输入新成员的分类:\");

gets(temp.cla);

info[count]=temp;

count++;

return count; }

/*-----*/ int search(char sname[]) //查找功能 {

int flag=0,i;

for(i=0;i

if(strcmp(info[i].name,sname)==0){

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

printf(\"****

姓名:%s\\n\",info[i].name);

printf(\"****

电话号码:%s\\n\",info[i].tel);

printf(\"****

电子邮箱:%s\\n\",info[i].mail);

printf(\"****

QQ号:%s\\n\",info[i].qq);

printf(\"****

分类:%s\\n\",info[i].cla);

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

flag=1;

}

return flag; }

/*---------*/ int rework(char rname[])

//修改功能 {

int flag=0,i;

for(i=0;i

if(strcmp(info[i].name,rname)==0){

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

printf(\"请输入新的姓名:\");

gets(info[i].name);

printf(\"请输入新的电话号码:\");

gets(info[i].tel);

printf(\"请输入新的电子邮箱:\");

gets(info[i].mail);

printf(\"请输入新的QQ号:\");

gets(info[i].qq);

printf(\"请输入新的分类:\");

gets(info[i].cla);

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

flag=1;

}

return flag; }

/*-----------------------------*/ int erase(char ename[]) //删除功能 {

int flag=0,i,j;

for(i=0;i

if(strcmp(info[i].name,ename)==0){

for(j=i;j

info[j]=info[j+1];

count--;

flag=1;

}

return flag; } /*-----------------------------*/ int call(void)//拨号功能 {

int i,j,flag=0;

char cname[10];

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

for(i=0;i

printf(\"%s \",info[i].name);

}

putchar(\'\\n\');

printf(\"请输入需要拨号的姓名:\");

gets(cname);

for(i=0;i

if(strcmp(info[i].name,cname)==0){

printf(\"正在拨号:\");

for(j=0;info[i].tel[j]!=\'\\0\';j++){

printf(\"%c\",info[i].tel[j]);

Sleep(300);

}

putchar(\'\\n\');

flag=1;

}

return flag; } /*-----------------------*/ int main(void)

//主函数 { char filename[40]; char c,save_j; int t; char s_r_e_name[10];

printf(\"欢迎使用通讯录系统!请输入通讯录文件的有效路径(若文件不存在则自动创建新通讯录)\\n\"); gets(filename); count=load(filename); system(\"cls\");

printf(\"

======================================\\n\");

printf(\"

==========欢迎使用我的通讯录==========\\n\");

printf(\"

============ 制作:石贵清

===========\\n\");

begin:

printf(\"★★★★★★★★★★★★★★★★★★★★★★★★★★\\n\");

printf(\"※

※\\n\");

printf(\"※

※\\n\");

printf(\"※

※\\n\");

printf(\"※

1.添加新联系人.

5.分类显示查询.

※\\n\");

printf(\"※

※\\n\");

printf(\"※

2.删除联系人.

6.拨出电话.

※\\n\");

printf(\"※

※\\n\");

printf(\"※

3.查询通讯成员.

7.保存通讯文件.

※\\n\");

printf(\"※

※\\n\");

printf(\"※

4.修改信息.

0.关闭通迅录.

※\\n\");

printf(\"★★★★★★★★★★★★★★★★★★★★★★★★★★\\n\"); printf(\"友情提醒:请在退出本程序之前按7保存通讯文件! \\n\"); printf(\"请输入您选择的操作:\");

c=getchar();

getchar(); switch(c) {

case \'1\':

if(count==SUM){

printf(\"======= 通讯录空间已满,无法继续录入!===\\n\");

Sleep(STOP);

goto begin; break;

}

t=add();

printf(\"===== 信息已建立,请尽快保存!=====\\n\");

if(t==SUM){

printf(\"===== 通讯录空间已满,无法继续录入!=====\\n\");

}

Sleep(STOP);

goto begin;

break; case \'2\': if(count==0){

printf(\"

========================\\n\");

printf(\"=== 通讯录中无任何成员!====\\n\");

printf(\"

======================\\n\");

Sleep(STOP);

goto begin;

break; }

printf(\"请输入要删除成员的姓名:\");

gets(s_r_e_name);

t=erase(s_r_e_name);

if(!t) {

printf(\"=================\\n\");

printf(\"==== 查无此人====\\n\");

printf(\"=================\\n\"); } else {

printf(\"======================\\n\");

printf(\"======已成功删除======\\n\");

printf(\"======================\\n\"); } Sleep(STOP); goto begin;

break; case \'3\':

printf(\"请输入要查找的成员姓名:\");

gets(s_r_e_name);

t=search(s_r_e_name);

if(!t)

{

printf(\"======================\\n\");

printf(\"===== 查无此人 =======\\n\");

printf(\"======================\\n\");

}

Sleep(STOP);

goto begin;

break;

case \'7\':

save(filename);

printf(\"==============================\\n\");

printf(\"======

保存成功!

=======\\n\");

printf(\"==============================\\n\"); Sleep(STOP); goto begin;

break;

case \'4\':

printf(\"请输入要修改的成员姓名:\");

gets(s_r_e_name);

t=rework(s_r_e_name);

if(!t) {

printf(\"=======

查无此人

====\\n\"); }

else

{

printf(\"=========================\\n\");

printf(\"====

修改成功

====\\n\");

}

Sleep(STOP);

goto begin;

break;

case \'5\':

display();

Sleep(STOP);

goto begin;

break;

case \'6\':

t=call();

if(!t)

{

printf(\"=============================\\n\");

printf(\"====== 输入姓名错误! =======\\n\");

printf(\"============================\\n\");

}

else

{

printf(\"=========================\\n\");

printf(\"======

电话已经拨出

=====\\n\");

printf(\"=======================\\n\");

}

Sleep(STOP);

goto begin;

break;

case \'0\':

printf(\"是否保存数据文件?(Y:是/N:否)\");

save_j=getchar();

if(save_j==\'Y\'||save_j==\'y\'){

save(filename);

printf(\"

====== 保存成功!=======\\n\");

printf(\"======= 感谢您的使用!再见! ======\\n\");

}

else

{

printf(\"========================\\n\");

printf(\"=== 感谢您的使用!再见! ===\\n\");

printf(\"========================\\n\");

}

exit(0); default:

printf(\"=====

Sleep(STOP);

goto begin; } return 0; }

输入指令无效!====\");

C语言通讯录管理系统

C语言课程设计通讯录管理

c语言通讯录实训心得

C语言课程设计程序

C语言程序总结

红绿灯C语言程序

c语言实习程序

C语言程序稳定性

C语言程序设计学生通讯录管理系统

全功能版通讯录(c语言) 设计说明概要

c语言通讯录程序
《c语言通讯录程序.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档