请求高手帮我修正程序!!!
输入了员工信息后,按6保存退出,然后关掉,再进入运行,按5显示出来.在文件读入那里,读入信息异常!请帮我改正下,我找不出答案!!!!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100
typedef struct //定义结构体
{
int num;
char name[30];
char sex[10];
int age;
float salary;
long int tel;
}emt;
emt em[N];
static int l=0;
int caidan(); //自定义菜单函数
int addem(); //自定义工资录入函数
int modifyem(); //自定义工资修改函数
int modify(int i);
int delem(); //自定义成员删除函数
int del(int local);
int searchem(); //自定义查询函数
int printem(); //输出成员函数
int readFile(); //读取文件
int saveExit(); //保存退出文件
/*以下自定义函数设计*/
int caidan()
{
int m=0;
printf("**********工资管理程序*********\n");
printf("1.员工录入\n");
printf("2.工资修改\n");
printf("3.删除员工\n");
printf("4.查询员工\n");
printf("5.显示所有员工\n");
printf("6.保存并退出\n");
printf("********************************\n");
printf("请选择:");
scanf("%d",&m);
return m;
}
int addem()
{
printf("职工号:"); //输入第一个成员的信息
scanf("%d",&em[l].num);
printf("姓名:");
scanf("%s",&em[l].name);
printf("性别:");
scanf("%s",&em[l].sex);
printf("年龄:");
scanf("%d",&em[l].age);
printf("工资:");
scanf("%f",&em[l].salary);
printf("电话:");
scanf("%ld",&em[l].tel);
++l;
system("pause");
return 1; //操作成功
}
int modifyem() //判断符合修改工资的员工
{
char name[30];
int i;
printf("输入要修改员工的名字:");
scanf("%s",name);
for(i=0;i<l;i++)
{
if(strcmp(em[i].name,name)==0) //用来比较两字符串的大小
modify(i);
}
system("pause");
return 1;
}
int modify(int i)
{
float salary;
printf("其工资为:%.2f",em[i].salary);
printf("\t输入要修改的工资:");
scanf("%f",&salary);
em[i].salary=salary;
return 1;
}
int delem()//判断符合删除的员工
{
char name[30];
int i;
printf("请输入要删除的人的名字:");
scanf("%s",name);
for(i=0;i<l;i++)
{
if(strcmp(em[i].name,name)==0)
del(i);
}
system("pause");
return 1;
}
int del(int local)
{
int i;
for(i=local;i<l;i++)
{
strcpy(em[i].name,em[i+1].name);//把后面所指的字符串复制到前面所指的数组中
strcpy(em[i].sex,em[i+1].sex);
em[i].num=em[i+1].num;
em[i].salary=em[i+1].salary;
em[i].age=em[i+1].age;
em[i].tel=em[i+1].tel;
}
l--;
printf("删除成功\n");
return 1;
}
int searchem()//查询符合要求的员工并输出该员工信息
{
char name[30];
int i;
printf("请输入要查询的员工的名字:");
scanf("%s",&name);
for(i=1;i<l;i++)
{
if(strcmp(em[i].name,name)==0)
{
printf("职工号\t姓名\t性别\t年龄\t工资\t\t电话\t\n");
printf("%d\t%s\t%s\t%d\t%.2f\t\t%ld\t\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].salary,em[i].tel);
}
}
system("pause");
return 1;
}
int printem()//输出所有员工的信息
{
int i=1;
printf("职工号\t姓名\t性别\t年龄\t工资\t\t电话\t\n");
while(i<l)
{
printf("%d\t%s\t%s\t%d\t%.2f\t\t%ld\t\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].salary,em[i].tel);
++i;
}
getchar();
getchar();
return 1;
}
int readFile()//读取文件
{
FILE *fp=fopen("data.txt","a+");
int i=0;
l=0;
float salary;
while(!feof(fp))
{
fscanf(fp,"%d\t",&em[i].num);
fscanf(fp,"%s\t",em[i].name);
fscanf(fp,"%s\t",em[i].sex);
fscanf(fp,"%d\t",&em[i].age);
fscanf(fp,"%f\t",&salary);
fscanf(fp,"%ld\t",&em[i].tel);
em[i].salary=salary;
++i;
++l;
}
fclose(fp);
printf("读入信息成功...\n\n");
return 1;
}
int saveExit()//保存退出文件
{
FILE *fp=fopen("data.txt","w"); //以新建方式打开一个文件
int i;
fprintf(fp,"职工号\t姓名\t性别\t年龄\t工资\t\t电话\t\n"); //传送格式化输出到一个文件中
for(i=1;i<l;i++)
{
fprintf(fp,"%d\t%s\t%s\t%d\t%.2f\t\t%ld\t\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].salary,em[i].tel);
}
fclose(fp);
exit(0); //结束程序
return 1;
}
/*主函数调用设计*/
int main ()
{
int i;
readFile();
while(1)
{
i=caidan();
if(i==1)
{
addem();
system("cls");
}
if(i==2)
{
modifyem();
system("cls");
}
if(i==3)
{
delem();
system("cls");
}
if(i==4)
{
searchem();
system("cls");
}
if(i==5)
{
printem();
system("cls");
}
if(i==6)
saveExit();
}
system("pause");
return 0;
}