学校让编一个通讯录系统,谁能帮我检查下
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct person
{
char name[10];
char num[15];
char email[20];
int age;
char adds[20];
};
typedef struct person Person;
Person pe[80];
int menu_select()
{
char c;
do{
system("cls");
printf("\t\t *****通讯录***** \n");
printf("\t\t┌───────┐\n");
printf("\t\t│1. 添加记录 │\n");
printf("\t\t│2. 显示记录 │\n");
printf("\t\t│3. 删除记录 │\n");
printf("\t\t│4. 查询记录 │\n");
printf("\t\t│5. 修改记录 │\n");
printf("\t\t│6. 保存记录 │\n");
printf("\t\t│0. 退出程序 │\n");
printf("\t\t└───────┘\n");
printf("\t\t请您选择(0-6):");
c=getchar();
}while(c<'0'||c>'6');
return(c-'0');
}
int Input(Person per[],int n)
{
printf("输入记录");
if(n>=80)
printf("\t***错误***\n");
int i=1,y=1;
char a='Y';
while(y)
{
printf("编号:%d",n);
printf("\t姓名:\n");
gets(per[n+i].name);
printf("\t号码:\n");
gets(per[n+i].num);
printf("\t电子邮箱地址:\n");
gets(per[n+i].email);
printf("\t年龄:\n");
scanf("%d",per[n+i].age);
printf("\t地址:\n");
gets(per[n+i].adds);
i++;
printf("是否继续添加 (Y/N):\n");
scanf("%c",a);
if(a=='N')
break;
if((n+1)==80)
printf("\t***错误,通讯录已满将溢出***\n");
}
system("pause");
return (n+i);
}
void Display(Person per[],int n)
{
printf("显示所有联系人\n");
int i;
for(i=1;i<n;i++)
{
printf("\t\t通讯录记录表\n");
printf("---------------------------\n");
printf("编号 姓名 年龄 电话号码 通讯地址 电子邮箱\n");
printf("---------------------------\n");
printf("%4d%8s%6d%13d%13s%13s",i,per[i].name,per[i].age,per[i].num,per[i].adds,per[i].email);
}
printf("----------------------------\n");
system("pause");
}
int Delete_a_record(Person per[],int n)
{
char name[10];
int i,sign;
printf("根据输入的联系人名,删除相应的记录!\n");
printf("请输入想删除记录中的名字\n");
puts(name);
for(i=1;i<n;i++)
{
if(strcmp(name,per[i].name)>0)
{
sign=i;
break;
}
}
if(sign==0)
printf("很抱歉,没有这个人\n");
else
for(i=sign;i<n-1;i++)
per[i]=per[i+1];
return (n-1);
}
void Query_a_record(Person per[],int n)
{
int i=0,sign=0;
char *p;
printf("请选择:\n");
printf("请选择查询方式\n");
printf("\t┌───────┐\n");
printf("\t丨1、-----姓名 丨\n");
printf("\t丨2、-----电话 丨\n");
printf("\t丨3、-----地址 丨\n");
printf("\t丨4、-----返回 丨\n");
printf("\t└───────┘\n");
switch(i)
{
case 1:
printf("\t请输入想查询的姓名:\n");
puts(p);
for(i=1;i<n;i++)
{
if(strcmp(p,per[i].name)>0)
sign=i;
}
free(p);
if(sign==0)
{
printf("错误,没有此人记录\n");
break;
}
printf("\t此人编号:%d\n",sign);
printf("\t此人年龄:%d\n",per[sign].age);
printf("\t电话号码:%s\n",per[sign].num);
printf("\t通信地址:%s\n",per[sign].adds);
printf("\t电子邮箱:%s\n",per[sign].email);
break;
case 2:
printf("\t请输入想查询的电话:\n");
puts(p);
for(i=1;i<n;i++)
{
if(strcmp(p,per[i].num)>0)
sign=i;
}
free(p);
if(sign==0)
{
printf("错误,没有此号码记录\n");
break;
}
printf("\t此人编号:%d\n",sign);
printf("\t此人姓名:%d\n",per[sign].name);
printf("\t此人年龄:%d\n",per[sign].age);
printf("\t通信地址:%s\n",per[sign].adds);
printf("\t电子邮箱:%s\n",per[sign].email);
break;
case 3:
printf("\t请输入想查询的地址:\n");
puts(p);
for(i=1;i<n;i++)
{
if(strcmp(p,per[i].adds)>0)
sign=i;
}
free(p);
if(sign==0)
{
printf("错误,没有地址记录\n");
break;
}
printf("\t此人编号:%d\n",sign);
printf("\t此人姓名:%s\n",per[sign].name);
printf("\t此人年龄:%d\n",per[sign].age);
printf("\t电话号码:%s\n",per[sign].num);
printf("\t电子邮箱:%s\n",per[sign].email);
break;
case 4:
break;
default:
printf("输入错误\n");
}
void Change(Person per[],int n)
{
int i,sign=0;
char name[10];
printf("\t输入想修改的记录中的名字:\n");
gets(name);
for(i=1;i<n;i++)
{
if(strcmp(name,per[i])>0)
{
sign=1;
break;
}
}
if(sign==0)
printf("通讯录中没有此人\n");
else
{
printf("\t编号:%d\n",sign);
printf("\t姓名:");
gets(per[sign].name);
printf("\t年龄:");
scanf("%d",per[sign].age);
printf("\t电话号码:");
gets(per[sign].num);
printf("\t通讯地址:");
gets(per[sign].adds);
printf("\t电子邮箱:");
gets(per[sign].email);
printf("\t修改成功!\n");
}
}
void WritetoText(Person per[],int n)
{
FILE *fp;
int i;
char *p;
printf("\t请输入所保存的文件名:");
gets(p);
printf("\t正在保存...\n");
if((fp=fopen("D:\\p","w"))==NULL)
printf("\t不能保存文件\n");
fprintf("******************************************************************");
fprintf("编号 姓名 年龄 电话号码 通讯地址 电子邮箱\n");
fprintf("---------------------------\n");
for(i=1;i<n;i++)
fprintf(fp,"%4d%8s%6d%13d%13s%13s",i,per[i].name,per[i].age,per[i].num,per[i].adds,per[i].email);
fprintf("---------------------------\n");
fprintf("******************************************************************");
fclose(fp);
}
int main() /*主函数*/
{
int n=0;
for(;;)
{
switch(menu_select())
{
case 1:
printf("\n\t添加记录到通讯录\n"); /*添加记录*/
n=Input(pe,n);
break;
case 2:
printf("\n\t\t\t 通讯录记录表\n"); /*显示记录*/
Display(pe,n);
break;
case 3:
printf("\n\t从通讯录中删除记录\n");
n=Delete_a_record(pe,n); /*删除记录*/
printf("\t");
system("pause");
break;
case 4:
printf("\n\t在通讯录中查找记录\n");
Query_a_record(pe,n); /*查找记录*/
printf("\t");
system("pause");
break;
case 5:
printf("\n\t修改通讯录中的记录\n");
Change(pe,n); /*修改数据*/
printf("\t");
system("pause");
break;
case 6:
printf("\n\t保存功能\n");
WritetoText(pe,n); /*保存数据*/
printf("\t");
system("pause");
break;
case 0:
printf("\n\t\t谢谢使用,再见!\n"); /*结束程序*/
printf("\n\t\t");
system("pause");
exit(0);
}
}
}
[解决办法]
Change函数之前少了个大括号;
fprintf()函数用错,函数完整形式: int fprintf(FILE *stream,char *format [,argument])
不止一个参数
[解决办法]
没有声明各个函数
[解决办法]