创建了一个通讯录管理系统,可是出错,求指教
#include<stdio.h>#include<stdlib.h>
#include<string.h>
#include<conio.h>
int n;
struct tongxunlu
{
int no;//序号
char xingming[20];//姓名
char dianhuahaoma[15];/
char dizhi[50];//地址
char youzhengbianma[10];//邮政编码
char qqhaoma[11];/号码
int pno;
}txl ;
void ReadFile(txl emp[],int &n) //读取文件并存入emp数组
{
if((fp=fopen("tongxunlu.dat","rb"))==NULL) //判断文件是否可读
{
n=0;
return;
}
fseek(fp,0,2); //文件指针移到文件尾
length=ftell(fp); //length求出文件长度
rewind(fp); //文件位置指针指向文件首
n=length/sizeof(txl);
for(i=0;i<=n;i++)
fread(&emp[i],sizeof(txl),1,fp); //将文件的数据读到emp中
fclose(fp);
}
void Clearup(txl emp[],int &n) //清空文件的全部记录
{
FILE *fp;
if((fp=fopen("tongxunlu.dat","wb"))==NULL){
printf(">> 文件不能打开\n");
return;
}
emp[0].pno=-1;
n=0;
fclose(fp);
printf(" ============================================================================\n");
}
void SaveFile(txl emp[],int &n) //将emp数组存入库存文件
{
int i;
FILE *fp;
if((fp=fopen("tongxunlu.dat","wb"))==NULL)
{
printf(">> 文件不能打开\n");
return;
}
if(n>1)
{ for(i=0;i<=n;i++)
fwrite(&emp[i],sizeof(txl),1,fp);
fclose(fp);
printf(" ============================================================================\n");
}
}
void chazhao ( txl emp[],int n)/*查找人的信息记录*/
{
char c;
system("cls");
printf("\n\t\t------------------显示和查找联系人-----------------");
printf("\n\t\t 1-逐个显示所有 2-按姓名查询 ");
printf("\n\t\t 3-按电话查询 ");
printf("\n\t\t请选择您所需要的服务:");
c=getch();
switch (c)
{
case'1':xianshi(txl emp[]);break;/*显示所有联系人*/
case'2':chazhao_xingming(txl emp[]);break;/*调用按姓名查询的函数*/
case'3':chazhao_dianhuahaoma(txl emp[]);break;/*调用按号码查询的函数*/
}
}
void xianshi(txl emp[],int n)
{
int i;
system("cls");
if(n!=0)
{
printf("\n\t\t------------欢迎您查询通讯录的所有联系人信息--------------");
for(i=0;i<n;i++)
{
printf("\n\t\t 姓名:%s", emp[i].xingming);
printf("\n\t\t 地址:%s", emp[i].dizhi);
printf("\n\t\t 电话:%s", emp[i].dianhuahaoma);
printf("\n\t\t 邮政编码:%s", emp[i].youzhengbiana);
printf("\n\t\t QQ号码:%s", emp[i].qqhaoma);
printf("\n\t\t----------------------------------");
if(i+1<n)
{
printf("\n\t\t---------------");
system("pause");/*返回错误信息*/
}
}
printf("\n\t\t------------------------------------");
}
else
printf("\n\t\t通讯录中无任何记录");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
void chazhao_dianhuahaoma(txl emp[],int n)
{
int mark=0;
int i;
char phone[15];
printf("\n\t\t----------------按电话查找-------------");
printf("\n\t\t 请输入电话号码:");
scanf("%s",phone);
for (i=0;i<n;i++)
{
if (strcmp(emp[i].dianhuahaoma.phone)==0)/*对比查找函数*/
{
printf("\n\t\t------------以下是您查找的联系人信息--------------");
printf("\n\t\t 姓名:%s",emp[i].xingming);
printf("\n\t\t 地址:%s",emp[i].dizhi);
printf("\n\t\t 电话:%s",emp[i].dianhuahaoma);
printf("\n\t\t 邮政编码:%s",emp[i].youzhengbianma);
printf("\n\t\t QQ号码:%s",emp[i].qqhaoma);
printf("\n\t\t----------------------------------");
printf("\n\t\t按任意键返回主菜单");
mark++;
getch();
return;
}
}
if(mark==0)
{
printf("\n\t\t 没有找到联系人的信息");
printf("\n\t\t 按任意键返回主菜单");
getch();
return;
}
}
void chazhao_xingming(txl emp[])
{
int mark=0;
int i;
char name[20];
printf("\n\t\t -------------------按姓名查找--------------------");
printf("\n\t\t 请输入您要查找的姓名:");
scanf("%s",name);
for(i=0;i<n;i++)
{
if(strcmp(emp[i].xingming.name)==0)
{
printf("\n\t\t------------以下是您查找的联系人信息--------------");
printf("\n\t\t 姓名:%s",emp[i].xingming);
printf("\n\t\t 地址:%s",emp[i].dizhi);
printf("\n\t\t 电话:%s",emp[i].dianhua);
printf("\n\t\t 邮政编码:%s",emp[i].youzhengbianma);
printf("\n\t\t QQ号码:%s",emp[i].qqhaoma);
printf("\n\t\t----------------------------------");
mark++;
getch();
return;
}
}
if(mark==0)
{
printf("\n\t\t没有找到联系人的信息");
printf("\n\t\t 按任意键返回主菜单");
getch();
return;
}
}
void xiugai_xingming(txl emp[],int &n)
{
char c;
int i,mark=0;
char name[20];
printf("\n\t\t请输入要修改的联系人姓名:");
scanf("%s",name);
if(n==0)
{
printf("\n\t\t文件中无任何联系人");
getchar();
mark++;
return;
}
for(i=0;i<n;i++)
{
if(strcmp(emp[i].xingming.name)==0)
{
printf("\n\t\t以下是您要修改的联系人信息");
printf("\n\t\t姓名: %s",emp[i].xingming);
printf("\n\t\t电话号码: %s",emp[i].dianhuahaoma);
printf("\n\t\t地址: %s",emp[i].dizhi);
printf("\n\t\t邮政编码:%s",emp[i].youzhengbianma);
printf("\n\t\tqq号码:%s",emp[i].qqhaoma);
printf("\n\t\t是否修改(y/n)");
if(getchar()=='y')
{
printf("\n\t------------请选择修改信息---------------");
printf("\n\t 1-修改姓名 2-修改电话");
printf("\n\t 3-修改地址 4-修改邮政编码");
printf("\n\t 5-修改qq号码");
printf("\n\t-----------------------------------------");
printf("\n\t请选择您所所要的服务:");
scanf("%s",&c);
switch(c)
{
case '1': printf("\n\t请输入新姓名:");
scanf("%s",emp[i].xingming);break;
case '2':printf("\n\t请输入新电话:");
scanf("%s",emp[i].dianhuahaoma);break;
case '3':printf("\n\t请输入新地址:");
scanf("%s",emp[i].dizhi);break;
case '4':printf("\n\t请输入新邮政编码:");
scanf("%s",emp[i].youzhengbianma);break;
case '5':printf("\n\t请输入新qq号码:");
scanf("%s",emp[i].qqhaoma);break;
}
}
}
}
if (mark==0)
{
printf("\n\t\t没有找到联系人信息");
printf("\n\t是否继续修改?(Y/N):");
if(getchar()=='y')
xiugai_xingming(txl emp[]);
return;
}
void zengjia(txl emp[],int &n)
{
printf("\n\t\t------------------ 请输入联系人信息--------------------\n");
printf("\n\t\t输入联系人姓名:");
scanf("%s",emp[n].xingming);
printf("\n\t\t输入联系人电话号码:");
scanf("%s",emp[n].dianhua);
printf("\n\t\t输入联系人地址:");
scanf("%s",emp[n].dizhi);
printf("\n\t\t输入联系人邮政编码:");
scanf("%s",emp[n].youzhengbianma);
printf("\n\t\t输入联系人qq号码:");
scanf("%s",emp[n].qqhaoma);
n++;
printf("\n\t\t是否继续添加联系人?(Y/N):");
if (getchar()=='y')
zengjia(txl emp[]);
return;
}
void delect(txl emp[],int &n) /*删除某人的信息记录*/
{int i,No,j;
if(n<1)
{
printf("没有信息记录!!!");
return;
}
printf("请输入你要删除的人的序号:\n");
scanf("%d",&No);
for(i=0;i<=n;i++)
{ if(i==NO)
{
for(j=i;j<n;j++)
emp[j]=emp[j+1];
}
}
n--;
printf("==================================================================================================\n");
printf("\n\t\t是否继续删除联系人?(Y/N):");
if (getchar()=='y')
delect(txl emp[]);
return;
}
void main()
{int a,n;
txl emp[];
printf(" 欢迎登陆个人通讯录管理系统!!!\n");
printf("===================================================================================================\n");
readfile(emp,n);
do {
printf("\n\t\t1.显示\n");
printf("\t\t\t2.查找联系人\n");
printf("\t\t\t3.清除记录\n");
printf("\t\t\t4.增加记录\n");
printf("\t\t\t5.按照姓名修改联系人\n");
printf("\t\t\t6.删除记录\n");
printf("\t\t\t7.存储\n");
printf("\t\t**************************************\n\n");
printf("enter your choice(1~7):");
scanf("%d",&a);
switch(a)
{case 1: xianshi(txl emp[],int n) ;break;
case 2: chazhao(txl emp[],int n);break;
case 3: Cleanup(txl emp[],int &n);break;
case 4: zengjia(txl emp[],int &n) ;break;
case 5: xiugai_xingming(txl emp[],int &n) ;break;
case 6: delect(txl emp[],int & n) ;break;
case 7: SaveFile(txl emp[],int &n);break;
}
}while(a!=0) ;
printf(" 谢谢使用!!!\n");
printf("=====================================================================================================\n");
}
}