void gx()
{
FILE *p;
struct st s[N];
void gx()
{
FILE *p;
struct st s[N];
int i=0,c,flag; p=fopen("staff.dat","rb"); if(p==NULL)
{
printf("文件不存在!\n"); exit(-1);
}
while(fread(&s[i],sizeof(struct st),1,p)==1)
{
i++;
}
fclose(p);over: system("cls");
printf("请选择功能:\n"); printf("**----------------按1:追加员工信息-----------------**\n");
printf("**----------------按2:删除员工信息-----------------**\n");
printf("**----------------按3:修改员工信息-----------------**\n");
printf("**-----------------按0:返回主菜单------------------**\n"); fflush(stdout);rewind(stdin); scanf("%d",&c); switch(c)
{ case 1:
flag=0; printf("请输入追加员工人数:"); int zj,n; scanf("%d",&zj); getchar();
for(i=n; i<n+zj; i++) {
printf("请输入第%d人的信息:\n",i-n+1); printf("请输入工号:\n"); scanf("%s",s[i].num); printf("请输入姓名:\n"); scanf("%s",s[i].name); printf("请输入年龄:\n"); scanf("%s",s[i].age); //getchar(); printf("请输入职位:\n"); scanf("%s",s[i].work); printf("请输入性别:\n"); scanf("%s",s[i].sex); printf("请输入地址:\n"); scanf("%s",s[i].add); printf("请输入电话:\n"); scanf("%s",s[i].phone); printf("请输入入职时间(年月日):"); scanf("%s%s%s",s[i].hiredate.year,s[i].hiredate.month,s[i].hiredate.day);
}
n=n+zj;
printf("追加成功 按回车继续······"); getchar();
break;
case 2: flag=0; printf("请输入删除员工人数:"); int sc,j,k; scanf("%d",&sc); getchar(); char gh[13]; for(i=0; i<sc; i++) { printf("请输入删除的员工工号:"); scanf("%d",&gh); for(j=0; j<n; j++) { if(strcmp(gh,s[j].num)==0) { if(j==n-1) { flag=1; n=n-1; } else { flag=1; for(k=j; k<n; k++) { s[k]=s[k+1]; } n=n-1; } } } } if(flag==0) { printf("查无此人 请重新选择!\n按回车继续······"); getchar(); getchar(); goto over; } printf("删除成功 按回车继续······"); getchar(); break; case 3: flag=0; printf("请输入要修改员工的工号:"); char gh1[13]; getchar(); scanf("%s",&gh1); for(i=0; i<n; i++) { if(strcmp(gh1,s[i].num)==0) { printf("请输入工号:\n"); scanf("%s",s[i].num); printf("请输入姓名:\n"); scanf("%s",s[i].name); printf("请输入年龄:\n"); scanf("%s",s[i].age); getchar(); printf("请输入职位:\n"); scanf("%s",s[i].work); printf("请输入性别:\n"); scanf("%s",s[i].sex); printf("请输入地址:\n"); scanf("%s",s[i].add); printf("请输入电话:\n"); scanf("%s",s[i].phone); printf("请输入入职时间(年月日):"); scanf("%s%s%s",s[i].hiredate.year,s[i].hiredate.month,s[i].hiredate.day); flag=1;
}
}
if(flag==0)
{
printf("查无此人 请重新选择!\n按回车继续······"); getchar();
}
break;
case 0:
FILE *fp;
printf("正在保存至staff.dat"); if((fp=fopen("staff.dat", "wb"))==NULL)
{
printf("文件无法打开...\n"); }
fwrite(s, sizeof(struct st),n,p); fclose(fp);
printf("数据成功写入文件...\n"); printf("请按回车键继续······"); getchar();
default:
printf("输入出错 请重新输入!!\n按回车继续······");
}
goto over;
system("pause");
}
int i=0,c,flag; p=fopen("staff.dat","rb"); if(p==NULL)
{
printf("文件不存在!\n"); exit(-1);
}
while(fread(&s[i],sizeof(struct st),1,p)==1)
{
i++;
}
fclose(p);over: system("cls");
printf("请选择功能:\n");
printf("**----------------按1:追加员工信息-----------------**\n");
printf("**----------------按2:删除员工信息-----------------**\n");
printf("**----------------按3:修改员工信息-----------------**\n");
printf("**-----------------按0:返回主菜单------------------**\n"); fflush(stdout);rewind(stdin); scanf("%d",&c); switch(c)
{ case 1:
flag=0; printf("请输入追加员工人数:"); int zj,n; scanf("%d",&zj); getchar();
for(i=n; i<n+zj; i++) {
printf("请输入第%d人的信息:\n",i-n+1); printf("请输入工号:\n"); scanf("%s",s[i].num); printf("请输入姓名:\n"); scanf("%s",s[i].name); printf("请输入年龄:\n"); scanf("%s",s[i].age); //getchar(); printf("请输入职位:\n"); scanf("%s",s[i].work); printf("请输入性别:\n"); scanf("%s",s[i].sex); printf("请输入地址:\n"); scanf("%s",s[i].add); printf("请输入电话:\n"); scanf("%s",s[i].phone); printf("请输入入职时间(年月日):"); scanf("%s%s%s",s[i].hiredate.year,s[i].hiredate.month,s[i].hiredate.day);
}
n=n+zj;
printf("追加成功 按回车继续······"); getchar();
break;
case 2: flag=0; printf("请输入删除员工人数:"); int sc,j,k; scanf("%d",&sc); getchar(); char gh[13]; for(i=0; i<sc; i++) { printf("请输入删除的员工工号:"); scanf("%d",&gh); for(j=0; j<n; j++) { if(strcmp(gh,s[j].num)==0) { if(j==n-1) { flag=1; n=n-1; } else { flag=1; for(k=j; k<n; k++) { s[k]=s[k+1]; } n=n-1; } } } } if(flag==0) { printf("查无此人 请重新选择!\n按回车继续······"); getchar(); getchar(); goto over; } printf("删除成功 按回车继续······"); getchar(); break; case 3: flag=0; printf("请输入要修改员工的工号:"); char gh1[13]; getchar(); scanf("%s",&gh1); for(i=0; i<n; i++) { if(strcmp(gh1,s[i].num)==0) { printf("请输入工号:\n"); scanf("%s",s[i].num); printf("请输入姓名:\n"); scanf("%s",s[i].name); printf("请输入年龄:\n"); scanf("%s",s[i].age); getchar(); printf("请输入职位:\n"); scanf("%s",s[i].work); printf("请输入性别:\n"); scanf("%s",s[i].sex); printf("请输入地址:\n"); scanf("%s",s[i].add); printf("请输入电话:\n"); scanf("%s",s[i].phone); printf("请输入入职时间(年月日):"); scanf("%s%s%s",s[i].hiredate.year,s[i].hiredate.month,s[i].hiredate.day); flag=1;
}
}
if(flag==0)
{
printf("查无此人 请重新选择!\n按回车继续······"); getchar();
}
break;
case 0:
FILE *fp;
printf("正在保存至staff.dat"); if((fp=fopen("staff.dat", "wb"))==NULL)
{
printf("文件无法打开...\n"); }
fwrite(s, sizeof(struct st),n,p); fclose(fp);
printf("数据成功写入文件...\n"); printf("请按回车键继续······"); getchar();
default:
printf("输入出错 请重新输入!!\n按回车继续······");
}
goto over;
system("pause");
}
修改如下,供参考:
void gx()
{
FILE *p;
struct st s[N];
int i=0,c,flag,n;
p=fopen("staff.dat","rb");
if(p==NULL)
{
printf("文件不存在!\n");
exit(-1);
}
while(fread(&s[i],sizeof(struct st),1,p)==1)
{
i++;
}
fclose(p);
n=i; //这里将文件里读入的记录条数赋值给 n
over:system("cls");
printf("请选择功能:\n");
printf("**----------------按1:追加员工信息-----------------**\n");
printf("**----------------按2:删除员工信息-----------------**\n");
printf("**----------------按3:修改员工信息-----------------**\n");
printf("**-----------------按0:返回主菜单------------------**\n");
fflush(stdout);rewind(stdin);
scanf("%d",&c);
switch(c)
{
case 1:
flag=0;
printf("请输入追加员工人数:");
int zj;
scanf("%d",&zj);
getchar();
for(i=n; i<n+zj; i++){
printf("请输入第%d人的信息:\n",i-n+1);
printf("请输入工号:\n");
fflush(stdout);rewind(stdin);
scanf("%s",s[i].num);
printf("请输入姓名:\n");
fflush(stdout);rewind(stdin);
scanf("%s",s[i].name);
printf("请输入年龄:\n");
fflush(stdout);rewind(stdin);
scanf("%s",s[i].age);
//getchar();
printf("请输入职位:\n");
fflush(stdout);rewind(stdin);
scanf("%s",s[i].work);
printf("请输入性别:\n");
fflush(stdout);rewind(stdin);
scanf("%s",s[i].sex);
printf("请输入地址:\n");
fflush(stdout);rewind(stdin);
scanf("%s",s[i].add);
printf("请输入电话:\n");
fflush(stdout);rewind(stdin);
scanf("%s",s[i].phone);
printf("请输入入职时间(年月日):");
fflush(stdout);rewind(stdin);
scanf("%s%s%s",s[i].hiredate.year,s[i].hiredate.month,s[i].hiredate.day);
}
n=n+zj;
printf("追加成功 按回车继续······");
getchar();
break;
case 2:
int sc,j,k;
char gh[13];
printf("请输入删除员工人数:");
fflush(stdout);rewind(stdin);
scanf("%d",&sc);
for(i=0; i<sc; i++){
flag=0;
printf("请输入第%d个删除的员工工号:",i+1);
fflush(stdout);rewind(stdin);
scanf("%s",gh); //scanf("%d",&gh);
for(j=0; j<n; j++){
if(strcmp(gh,s[j].num)==0){
if(j==n-1) {
flag=1;
n=n-1;
}else{
flag=1;
for(k=j; k<n-1; k++){
s[k]=s[k+1];
}
n=n-1;
}
}
}
if(flag==0){
printf("查无此人 请选择下一个!\n按回车继续······");
getchar();
}
}
printf("删除成功 按回车继续······");
getchar();
break;
case 3:
flag=0;
char gh1[13];
printf("请输入要修改员工的工号:");
fflush(stdout);rewind(stdin);
scanf("%s",gh1); //scanf("%s",&gh1);
for(i=0; i<n; i++) {
if(strcmp(gh1,s[i].num)==0){
flag=1;
printf("请输入工号:\n");
fflush(stdout);rewind(stdin);
scanf("%s",s[i].num);
printf("请输入姓名:\n");
fflush(stdout);rewind(stdin);
scanf("%s",s[i].name);
printf("请输入年龄:\n");
fflush(stdout);rewind(stdin);
scanf("%s",s[i].age);
printf("请输入职位:\n");
fflush(stdout);rewind(stdin);
scanf("%s",s[i].work);
}
}
if(flag==0){
printf("查无此人 请重新选择!\n按回车继续······");
getchar();
}
break;
case 0:
FILE *fp;
printf("正在保存至staff.dat");
if((fp=fopen("staff.dat", "wb"))==NULL){
printf("文件无法打开...\n");
}
fwrite(s, sizeof(struct st),n,p);
fclose(fp);
printf("数据成功写入文件...\n");
printf("请按回车键继续······");
getchar();
break;
default:
printf("输入出错 请重新输入!!\n按回车继续······");
break;
}
//goto over;
//system("pause");
}