c语言通讯录程序_通讯录c语言程序
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;}
输入指令无效!====”);