个人通讯录管理系统源程序绝对无错.docx
《个人通讯录管理系统源程序绝对无错.docx》由会员分享,可在线阅读,更多相关《个人通讯录管理系统源程序绝对无错.docx(22页珍藏版)》请在冰豆网上搜索。
个人通讯录管理系统源程序绝对无错
#include/*头文件*/
#include//包含最常用的系统函数
#include//关于字符数组的函数定义的头文件
#include//控制台输入输出
//定义结构体
structtongxunlu/*定义通讯录结构体变量*/
{
charname[20];/*定义输入名字的数组*/
charphone[20];/*定义输入电话号码的数组*/
charadress[40];/*定义输入地址的数组*/
}txl[100];//默认100个数据
intn=0;//记录数据联系人数量
FILE*fp;/*定义文件*/
//程序用到的所有函数
voidmenu();/*主菜单函数*/
voidaddnew();/*增加联系人函数*/
voidreadfile();/*文件中读入函数*/
voidwritefile();/*文件中写入函数*/
voidmodify();/*修改联系人函数*/
voidmodifyname();/*姓名修改*/
voidmodifyphone();/*电话号码修改*/
voidsearch();/*查找联系人函数*/
voidsearchname();/*按姓名查找*/
voidsearchphone();/*按号码查找*/
voiddeletecd();/*删除联系人函数*/
voiddeleteall();/*全部删除*/
voiddeleteone();/*单个删除*/
voidshowall();/*号码显示*/
//程序主函数模块六
voidmain()/*主函数main*/
{readfile();/*二进制读入文件*/
while
(1)/*循环(永远进行)*/
{
menu();/*调用主菜单函数*/
}
}
//读取文件函数部分开始模块七
voidreadfile()
{
if((fp=fopen("c:
\\txl.txt","r"))==NULL)/*以只读方式打开判定文件是否为空*/
{
printf("\n\t\t\t通讯录文件不存在");/*判断结论*/
if((fp=fopen("txl.txt","w"))==NULL)/*只写方式判断*/
{
printf("\n\t\t建立失败");/*为空结论*/
exit(0);/*退出*/
}
else/*不为空则执行else*/
{
printf("\n\t-----------------欢迎使用通讯录管理系统------------------");
printf("\n\t通讯录文件已建立");
printf("\n\t按任意键进入主菜单");
printf("\n\t---------------------------------------------------------");
getch();
return;
}
exit(0);
}
fseek(fp,0,2);/*文件位置指针移动到文件末尾*/
if(ftell(fp)>0)/*文件不为空*/
{
rewind(fp);/*文件位置指针移动到文件开始位置*/
for(n=0;!
feof(fp)&&fread(&txl[n],sizeof(structtongxunlu),1,fp);n++);
printf("\n\t----------欢迎使用通讯录管理系统1.0beat版----------------");
printf("\n\t文件导入成功");
printf("\n\t按任意键返回主菜单");
printf("\n\t---------------------------------------------------------");
getch();
return;
}
printf("\n\t------------欢迎使用通讯录管理系统1.0beat版--------------");
printf("\n\t文件导入成功");
printf("\n\t通讯录文件中无任何纪录");
printf("\n\t按任意键返回主菜单");
printf("\n\t---------------------------------------------------------");
getch();
return;
}
//读取文件函数结束
//文件主菜单函数开始模块六
voidmenu()
{
charchoic;
system("cls");
printf("\n\t\t|-------欢迎您使用通讯录管理系统1.0beat版-----|");
printf("\n\t\t|1-添加联系人2-查询和显示联系人|");
printf("\n\t\t|3-删除联系人4-修改联系人|");
printf("\n\t\t|5-保存退出0-不保存退出|");
printf("\n\t\t|------------------------------------------------|");
printf("\n\t\t请选择您所所要的服务:
");
choic=getch();
switch(choic)/*对于上边的选择项目*/
{
case'1':
addnew();break;
case'2':
search();break;
case'3':
deletecd();break;
case'4':
modify();break;
case'5':
writefile();break;
case'0':
exit(0);
default:
menu();/*如果没有则返回主菜单等待输入*/
}
}
//文件主菜单函数结束
//添加新联系人函数开始模块一
voidaddnew()
{
printf("\n\t\t------------------请输入联系人信息--------------------\n");
printf("\n\t\t输入联系人姓名:
");
scanf("%s",txl[n].name);/*键盘输入*/
printf("\n\t\t输入联系人电话号码:
");
scanf("%s",txl[n].phone);
printf("\n\t\t输入联系人地址:
");
scanf("%s",txl[n].adress);
n++;/*统计个数*/
printf("\n\t\t是否继续添加联系人?
(Y/N):
");/*是否继续输入联系人.*/
if(getch()=='y')
addnew();
return;
}
//添加新联系人结束
//写入文件函数开始模块七
voidwritefile()/*联系人写入文件*/
{
inti;
if((fp=fopen("c:
\\txl.txt","w"))==NULL)
{
printf("\n\t\t文件打开失败");
}
for(i=0;i{
if(fwrite(&txl[i],sizeof(structtongxunlu),1,fp)!
=1)
{
printf("\n\t\t写入文件错误!
\n");
}
}
fclose(fp);/*关闭文件*/
printf("\n\t------------------------------------------------------");/*输出提示信息*/
printf("\n\t\t通讯录文件已保存");
printf("\n\t\t谢谢使用,欢迎再次使用!
\n");
printf("如果对本软件有疑问,请到我们官网()提出您的问题,我们将为您解答.\n");
printf("我们的软件有不足之处,欢迎到官网()反映,我们将努力改正!
");
printf("\n\t\t按任意键退出程序\n\t\t");/*输出完毕*/
exit(0);
printf("\n\t------------------------------------------------------");
}
//写入文件函数结束
///查询联系人函数开始模块四----------------------------------------------------
voidsearch()
{
charchoic;
system("cls");
printf("\n\t\t-------------------显示和查询联系人------------------");
printf("\n\t\t|1-逐个显示所有2-按姓名查询|");
printf("\n\t\t|3-按电话查询4-返回主菜单|");
printf("\n\t\t|------------------------------------------------------");
printf("\n\t\t请选择您所所要的服务:
");
choic=getch();
switch(choic)
{
case'1':
showall();break;/*显示所有号码*/
case'2':
searchname();break;/*调用按姓名查询函数*/
case'3':
searchphone();break;/*调用按号码查询函数*/
case'4':
menu();break;/*主菜单*/
}
}
voidshowall()//显示所有联系人函数
{
inti;
system("cls");//清楚屏幕
if(n!
=0)
{
printf("\n\t\t----------欢迎您查询通讯录所有联系人信息-------------");
for(i=0;i{
printf("\n\t\t姓名:
%s",txl[i].name);
printf("\n\t\t电话:
%s",txl[i].phone);
printf("\n\t\t地址:
%s",txl[i].adress);
printf("\n\t\t--------------------------------------------------");
if(i+1{
printf("\n\t\t-----------------------");
system("pause");//返回错误信息
}
}
printf("\n\t\t---------------------------------------------");
}
else/*无联系人*/
printf("\n\t\t通讯录中无任何纪录");
printf("\n\t\t按任意键返回主菜单:
");
getch();
return;
}
//按手机号码查询函数
voidsearchphone()
{
intmark=0;
inti;
charphone[15];
printf("\n\t\t-------------------按电话查找-------------------------");
printf("\n\t\t请输入电话号码:
");
scanf("%s",phone);
for(i=0;i{
if(strcmp(txl[i].phone,phone)==0)//对比查找函数
{
printf("\n\t\t------------以下是您查找的学生信息------------");
printf("\n\t\t姓名:
%s",txl[i].name);
printf("\n\t\t电话:
%s",txl[i].phone);
printf("\n\t\t地址:
%s",txl[i].adress);
printf("\n\t\t------------------------------------------------");
printf("\n\t\t按任意键返回主菜单:
");
mark++;
getch();
return;
}
}
if(mark==0)
{
printf("\n\t\t没有找到联系人的信息");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
}
voidsearchname()//按姓名查询
{
intmark=0;
inti;
charname[20];
printf("\n\t\t----------------按姓名查找--------------------");
printf("\n\t\t请输入您要查找的姓名:
");
scanf("%s",name);
for(i=0;i{
if(strcmp(txl[i].name,name)==0)
{
printf("\n\t\t------------以下是您查找的联系人信息---------------");
printf("\n\t\t姓名:
%s",txl[i].name);
printf("\n\t\t电话:
%s",txl[i].phone);
printf("\n\t\t地址:
%s",txl[i].adress);
printf("\n\t\t---------------------------------------------------");
mark++;
getch();
return;
}
}
if(mark==0)
{
printf("\n\t\t没有找到联系人的信息");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
}
////查询联系人函数结束-----------------------------------------------------
////删除联系人函数部分开始-------------------------------------------------
voiddeletecd()
{
charchoic;
if(n==0)/*如果通讯录中没有一个记录输出以下部分*/
{
printf("\n\t\t对不起,文件中无任何纪录");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
system("cls");/*清屏*/
printf("\n\t\t-----------------删除菜单----------------------");
printf("\n\t\t|1-删除所有2-删除单个|");
printf("\n\t\t|3-返回主菜单|");
printf("\n\t\t|-------------------------------------------------");
printf("\n\t\t请选择您所所要的服务:
");
choic=getch();/*输入的赋予choice*/
switch(choic)
{
case'1':
deleteall();break;
case'2':
deleteone();break;
case'3':
menu();break;
default:
menu();break;
}
}
voiddeleteall()//删除所有联系人
{
printf("\n\t\t确认删除?
(y/n)");
if(getch()=='y')
{
fclose(fp);
if((fp=fopen("txl.txt","w"))==NULL)/*文件空输出*/
{
printf("\n\t\t不能打开文件,删除失败");
readfile();
}
n=0;
printf("\n\t\t纪录已删除,按任意键返回主菜单");
getch();
return;
}
else
return;
}
voiddeletename()//按姓名删除联系人
{
inti,j,deletemark=0,a=0;
charname[20];
printf("\n\t\t请输入要删除联系人姓名:
");
scanf("%s",name);/*键盘输入姓名*/
for(i=a;i{
if(strcmp(txl[i].name,name)==0)//对比字符串查找到要删除的联系人
{
printf("\n\t\t以下是您要删除的联系人纪录:
");
printf("\n\t\t--------------------------------");
printf("\n\t\t姓名:
%s",txl[i].name);
printf("\n\t\t电话:
%s",txl[i].phone);
printf("\n\t\t地址:
%s",txl[i].adress);
printf("\n\t\t--------------------------------");
printf("\n\t\t是否删除?
(y/n)");
if(getch()=='y')//实现删除功能
{
for(j=i;jtxl[j]=txl[j+1];/*将通讯录的想前移*/
n--;
deletemark++;
printf("\n\t\t删除成功");
printf("\n\t\t是否继续删除?
(y/n)");
if(getch()=='y')
deletename();/*继续调用删除函数*/
return;
}
else
return;
}
continue;
}
if(deletemark==0)
{
printf("\n\t\t没有该联系人的纪录");
printf("\n\t\t是否继续删除?
(y/n)");
if(getch()=='y')
deletename();
return;
}
}
voiddeletephone()//按电话号码删除联系人
{
inti,j,deletemark=0;/*变量定义*/
charphone[20];
printf("\n\t\t请输入要删除联系人电话号码:
");
scanf("%s",phone);
if(n==0)
{
printf("\n\t\t对不起,文件中无任何纪录");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
for(i=0;i{
if(strcmp(txl[i].phone,phone)==0)
{
printf("\n\t\t以下是您要删除的联系人纪录:
");
printf("\n\t\t姓名:
%s",txl[i].name);
printf("\n\t\t电话:
%s",txl[i].phone);
printf("\n\t\t地址:
%s",txl[i].adress);
printf("\n\t\t是否删除?
(y/n)");
if(getch()=='y')
{
for(j=i;jtxl[j]=txl[j+1];
n--;
deletemark++;//记录删除次数
printf("\n\t\t删除成功");
printf("\n\t\t是否继续删除?
(y/n)");
if(getch()=='y')
deletephone();
return;
}
else
return;
}
continue;
}
if(deletemark==0)
{
printf("\n\t\t没有该联系人的纪录");
printf("\n\t\t是否继续删除?
(y/n)");
if(getch()=='y')
return;
}
}
voiddeleteone()//删除单个联系人
{
charchoic;
printf("\n\t----------------------------------------------------------");
printf("\n\t\t1-按姓名删除2-按电话删除");
printf("\n\t\t请选择您所所要的服务:
");
printf("\n\t----------------------------------------------------------");
choic=getch();
switch(choic)
{
case'1':
deletename();break;
case'2'