在函数void delete中出现问题
问题是在 void delete 之前需要使用非限定id,请问我需要怎么解决呢
我把void改成其他也不行,搜索过其他资料也不对
代码调试通过并且将问题解决。
#include<stdio.h>
#include <string.h>
#include<stdlib.h>
#include<string.h>
#define N 30
#pragma warning(disable:4996)
struct people
{
int jiankangma[32];//健康码
char number_id[36];//身份证
char name[18];//姓名
long long phone;//电话
char address[20];//所在地区
char sblb[30];//申报类别
char company[50];//所属单位名称
char jkzk[10];//健康状态
};
struct people peo[N];
void menu()
{
char ch;
printf("\n\n\t\t ** 欢迎使用健康申报系统 ** \n\n\n");
printf("\t\t请选择(1-6) :\n");
printf("\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("\t\t\t 1.查询人民信息\n");
printf("\t\t\t 2.修改人民信息\n");
printf("\t\t\t 3.添加人民信息\n");
printf("\t\t\t 4.删除人民信息\n");
printf("\t\t\t 5.浏览人民记录信息\n");
printf("\t\t\t 6.退出\n");
printf("\t\t************************************\n");
printf("\n\t\t你的选择是:");
//ch=getche();
};
void Findname() //用户自定义函数,实现对指定数据的查找功能。(名字)
{
char s[20]; //定义用户输入的学生姓名数据为char型,占20列。
int i=0;
printf("请输入要查询的姓名:");
scanf("%s",s);
while(strcmp(peo[i].name,s)!=0&&i<N)
i++; //当输入的姓名与当前姓名不相同时,i自增1,比较下一个成员。
if(i==N)
{
printf("未找到相关信息!\n");
}
printf("-------------------------------------------------------------------\n");
printf("健康码 身份证号 姓名 电话 所在地区 申报类别 所属单位名称 健康状况 \n");
printf("-------------------------------------------------------------------\n");
printf("%s %s %s %lld %s %s %s %s\n", peo[i].jiankangma, peo[i].number_id, peo[i].name, peo[i].phone, peo[i].address, peo[i].sblb, peo[i].company, peo[i].jkzk);
printf("-------------------------------------------------------------------\n");
} //以表列的形式输出查找到的成员的相关信息。
void Findnumber_id() //用户自定义函数,实现对指定数据的查找功能。(身份证)
{
char s[50]; //定义用户输入身份证号数据为char型,占20列。
int i=0;
printf("请输入要查询的人民身份证号:");
scanf("%s",s);
while(strcmp(peo[i].number_id,s)!=0&&i<N)
i++; //当输入的学号与当前学号不相同时,i自增1,比较下一个成员。
if(i==N)
{
printf("未找到相关学生信息!\n");
}
printf("-------------------------------------------------------------------\n");
printf("健康码 身份证号 姓名 电话 所在地区 申报类别 所属单位名称 健康状况 \n");
printf("-------------------------------------------------------------------\n");
printf("%s %s %s %lld %s %s %s %s\n", peo[i].jiankangma, peo[i].number_id, peo[i].name, peo[i].phone, peo[i].address, peo[i].sblb, peo[i].company, peo[i].jkzk);
printf("-------------------------------------------------------------------\n");
} //以表列的形式输出查找到的成员的相关信息。
void Insert() //用户自定义Insert函数,实现将学生信息插入指定位置的功能。
{
int i,j;
printf("请输入要插入的位置:");
scanf("%d",&i);
if(i>N)
{ //当要插入位置大于结构体数组元素总数时,直接将数据插入到结构体数组最后。
printf("输入人民健康码:");
scanf("%s",peo[N].jiankangma);
printf("输入人民身份证号:");
scanf("%s",peo[N].number_id);
printf("输入人民姓名:");
scanf("%s",peo[N].name);
printf("输入人民电话:");
scanf("%lld",&peo[N].phone);
printf("输入人民所在地区:");
scanf("%s",&peo[N].address);
printf("输入人民申报类别:");
scanf("%s",&peo[N].sblb);
printf("输入人民所属单位名称:");
scanf("%s",&peo[N].company);
printf("输入人民健康状况:");
scanf("%s",&peo[N].jkzk);
printf("信息输入成功!\n");
} //用户分别输入的各项信息,系统返回"输入成功"的信息。
else
{ //当要插入位置不大于结构体数组成员总数时,执行下述操作。
for(j=N-1;j>=i;j--)
{
j=j+1;
strcpy(peo[j+1].name,peo[j].name);
strcpy(peo[j+1].number_id,peo[j].number_id);
strcpy(peo[j+1].address,peo[j].address);
strcpy(peo[j+1].sblb,peo[j].sblb);
strcpy(peo[j+1].company,peo[j].company);
strcpy(peo[j+1].jkzk,peo[j].jkzk);
} //通过for循环语句,将第j+1项的各项数据赋值给第j项,直到要插入数据的位置为止,实现第i项之后的数据每项都向后移动一个位置。
printf("输入人民健康码:");
scanf("%s",peo[N].jiankangma);
printf("输入人民身份证号:");
scanf("%s",peo[N].number_id);
printf("输入人民姓名:");
scanf("%s",peo[N].name);
printf("输入人民电话:");
scanf("%d",&peo[N].phone);
printf("输入人民所在地区:");
scanf("%d",&peo[N].address);
printf("输入人民申报类别:");
scanf("%d",&peo[N].sblb);
printf("输入人民所属单位名称:");
scanf("%d",&peo[N].company);
printf("输入人民健康状况:");
scanf("%d",&peo[N].jkzk);
printf("信息输入成功!\n");
} //将用户输入的各项数据赋值到第i个位置中,实现数据的插入。
j++; //全局变量n自增1,保证插入的数据存储到结构体中。
i++;
}
void Input()//录入学生信息函数(添加)
{
int i;
FILE *fp;
//system("cls");
for (int i = 0; i < N; i++)
{//先将数据赋给结构体变量,而后再写入
printf("开始录入信息\n请先输入第%d名人民的健康码:\n", i + 1);
scanf("%s", peo[i].jiankangma);
printf("请输入第%d人民的身份证号:\n", i + 1);
scanf("%s", peo[i].number_id);
printf("请输入第%d名人民的姓名:\n", i + 1);
scanf("%s", peo[i].name);
printf("请输入第%d名人民的电话:\n", i + 1);
scanf("%lld", &peo[i].phone);
printf("请输入第%d名人民的地址:\n", i + 1);
scanf("%s", peo[i].address);
printf("请输入第%d名人民的申报类别:\n", i + 1);
scanf("%s", peo[i].sblb);
printf("请输入第%d名人民的所属单位名称:\n", i + 1);
scanf("%s", peo[i].company);
printf("请输入第%d名人民的健康状况:\n", i + 1);
scanf("%s", peo[i].jkzk);
// system("cls");
fp=fopen("D\\代码\\健康申报系统名单.txt","r");
fwrite(&peo[0],sizeof(peo[0]),N,fp);
fclose(fp);
}
// writeinfo();//调用文件写入函数写入数据
};
void Output() //用户自定义Output函数,实现数据的输出功能。M
{
int i;
printf("-------------------------------------------------------------------\n");
printf("健康码 身份证号 姓名 电话 所在地区 申报类别 所属单位名称 健康状况\n");
printf("-------------------------------------------------------------------\n");
for (i = 0; i < N; i++)
{
printf("%s %s %s %lld %s %s %s %s\n", peo[i].jiankangma, peo[i].number_id, peo[i].name, peo[i].phone, peo[i].address, peo[i].sblb, peo[i].company, peo[i].jkzk);
printf("-------------------------------------------------------------------\n");
} //使用for循环语句,输出结构体中所有成员信息。
};
void delete()
{
long x;
int j,i=0;
FILE *fp;
int n=0;
if((fp=fopen("D\\代码\\健康申报系统名单.txt","r"))==NULL){
printf("文件错误");
return;
}
while (!feof(fp))
{
if((fread(&peo[N],sizeof(struct people),1,fp)))
n++;
}
fclose(fp);
printf("输入要删除的身份证号:");
scanf("%s",&x);
while(peo[i].number_id!=x&&i<n)
i++; //比较输入的 x 数据与结构体中身份证号,若不相同,i 自增 1
if(i==n)
{
printf("未找到相关人员!\n");
return;
}
} //若 i 与 n 值相同,说明无此数据,输出“未找到信息!
void main()
{
char c;
for()
{
menu();
ch=getche();
switch(ch);
{
case 1:
switch(find())
{
case 1:findname();break;
case 2:Findnumber_id();break;
}
case 2:Insert();break;
case 3:Input();break;
case 4:delete();break;
case 5:Output();break;
case 0:exit(0);break;
default:printf("*输入错误!*");break;
}
}
}