c语言通讯录程序_通讯录c语言程序

2020-02-28 其他范文 下载本文

c语言通讯录程序由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“通讯录c语言程序”。

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(“

姓名:%sn”,info[i].name);

printf(“

电话号码:%sn”,info[i].tel);

printf(“

电子邮箱:%sn”,info[i].mail);

printf(“

QQ号:%sn”,info[i].qq);

printf(“

分类:%sn”,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(“****

姓名:%sn”,info[i].name);

printf(“****

电话号码:%sn”,info[i].tel);

printf(“****

电子邮箱:%sn”,info[i].mail);

printf(“****

QQ号:%sn”,info[i].qq);

printf(“****

分类:%sn”,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(“****

姓名:%sn”,info[i].name);

printf(“****

电话号码:%sn”,info[i].tel);

printf(“****

电子邮箱:%sn”,info[i].mail);

printf(“****

QQ号:%sn”,info[i].qq);

printf(“****

分类:%sn”,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]!='';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语言通讯录程序.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
c语言通讯录程序
点击下载文档
相关专题 通讯录c语言程序 通讯录 语言 程序 通讯录c语言程序 通讯录 语言 程序
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文