功能要求:
① 职工基本信息的录入、增加、删除、修改;
② 按各种条件查询职工信息;
③ 应发工资计算;
④ 其它功能,如工资分布情况统计,代交税金计算,津贴发放,工资晋级等。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int n;
void member_putin_info();
void member_seaech_info(struct member member[100],int n);
void member_add_info();
void member_modify_info();
void member_delete_info();
char Readspecailline_info(int i);
struct member{
char name[20];
char post[20];
int age,wages;
int WorkingHours;
};
void member_putin_info(){
int i;
FILE *fp1,*fp2;
struct member member[100];
printf("Input n:");
scanf("%d",&n);
if((fp2=fopen("D:\\VC data\\salary1.txt","w"))==NULL)
{printf("File open error!\n");
exit(0);
}
fprintf(fp2,"%d",n);
if(fclose(fp2)){
printf("can not close the file!\n");
exit(0);
}
if((fp1=fopen("D:\\VC data\\salary.txt","w"))==NULL)
{printf("File open error!\n");
exit(0); //*打开文件*//
}
for(i=0;i<n;i++){ //*职工信息录入功能*//
printf("Input name:\n");
scanf("%s",&member[i].name);
fprintf(fp1,"%s ",member[i].name);
printf("Input post:\n");
scanf("%s",&member[i].post);
fprintf(fp1,"%s ",member[i].post);
printf("Input age:\n");
scanf("%d",&member[i].age);
fprintf(fp1,"%d ",member[i].age);
printf("Input wages:\n");
scanf("%d",&member[i].wages);
fprintf(fp1,"%d ",member[i].wages);
printf("Input WorkingHours:\n");
scanf("%d",&member[i].WorkingHours);
fprintf(fp1,"%d ",member[i].WorkingHours);
printf("\n");
fprintf(fp1,"\n");
}
if(fclose(fp1)){ //*关闭文件*//
printf("can not close the file!\n");
exit(0);
}
}
void member_seaech_info() //*职工信息查询功能*//
{
struct member member[100];
FILE *fp1,*fp2,*fp3;
if((fp2=fopen("D:\\Vc data\\salary.txt","r"))==NULL)
{printf("File open error!\n");
exit(0); }
fscanf(fp2,"%d",&n);
if((fp1=fopen("D:\\Vc data\\salary.txt","r"))==NULL)
{printf("File open error!\n");
exit(0); }
int i;
char Sname[20];
char Spost[20];
int choice;
int age;
char ch[2];
printf("[1]Select name\n");
printf("[2]Select post\n");
printf("[3]Select age\n");
printf("[4]Selcet wages\n");
printf("[5]Select WorkingHours\n");
printf("Enter choice:");
scanf("%d",&choice);
if(choice<1||choice>5)
printf("输入错误!\n");
if(choice==1){
printf("Enter the name:");
scanf("%s",&Sname);
for(i=0;i++;i<n){
if(strcmp(Sname,member[i].name)==0){
break;
}
}
}
if(fclose(fp1)){
printf("can not close the file!\n");
exit(0);
}
if(fclose(fp2)){
printf("can not close the file!\n");
exit(0);}
}
int main(void)
{ int choice;
printf("enter your choice:");
scanf("%d",&choice);
switch(choice){
case 1:member_putin_info();break;
case 2:member_seaech_info();break;
}
return 0;
}
我就用名字进行对比,完了之后找到第几个结构有相同的名字,想输出这个结构体的所有元素,但是用scanf(fp1,"%s",member[i].name)这样的做法貌似永远只取值我文件中的第一行,求大神教教我方法!!
只要方法能行可靠就okk!!