先贴代码
int use_change()
{
char *szNo = {0};
char *szSalary = {0};
int count = 0;
int i = 0;
int j = 0;
int szcount = 0;
int flag = 0;
int fflag = 0;
int num = 0;
STAFF_T *p = NULL;
//开辟空间
szNo = (char *)malloc(sizeof(char *));
memset(szNo,0,sizeof(char *));
szSalary = (char *)malloc(sizeof(char *));
memset(szSalary,0,sizeof(char *));
//开辟结构体空间
p = (STAFF_T *)malloc(sizeof(STAFF_T));
printf("Please input the staff No.:");
while(1)
{
flag = 0;
glb_putString(szNo,10,3,1);
szcount = sizeof(szNo)/sizeof(szNo[0]);
//判断是否为数字
for(i = 0; i<szcount; i++)
{
if(szNo[i] >= 'a' && szNo[i] <= 'z' || szNo[i] >= 'A' && szNo[i] <= 'Z')
{
flag = 1;
}
}
if(flag == 1)
{
printf("\nErr:\nInput number only please:\n");
}
else
{
break;
}
}
//读取文件
head=FILE_read(staff_fp,sizeof(STAFF_T));
count = LIST_GetCount(head);
//判断是否为空
if(count == 0)
{
return -1;
}
fflag = 0;
num = 0;
//数据遍历打印
for(i = 1; i <= count; i++)
{
p = (STAFF_T *)LIST_GetNode(i,head); //因为它之前是void * 所以要进行强转
if(strcmp(p->NO,szNo)==0)
{
num++;
if(num == 1)
{
printf("\nNo Name Salary\n");
printf("----------------\n");
}
printf("%s %s %s\n",p->NO,p->Name,p->Salary);
printf("\nPlease input the staff Salary:\n");
while(1)
{
flag = 0;
glb_putString(szSalary,10,3,1);
szcount = sizeof(szSalary)/sizeof(szSalary[0]);
//判断是否为数字
for(j = 0; j<szcount; j++)
{
if(szSalary[j] >= 'a' && szSalary[j] <= 'z' || szSalary[j] >= 'A' && szSalary[j] <= 'Z')
{
flag = 1;
}
}
if(flag == 1)
{
printf("\nErr:\nInput number only please:\n");
}
else
{
break;
}
}
strcpy(p->Salary,szSalary); //对内存操作
//同步文件的数据
FILE_update(staff_fp,p,sizeof(STAFF_T),i);
printf("\n----------------\n");
printf("\nNo Name Salary\n");
printf("\n----------------\n");
printf("%s %s %s\n\n",p->NO,p->Name,p->Salary);
printf("按任意键回到上级菜单\n");
getch();
return 1;
fflag = 1;
}
}
if(fflag == 0)
{
printf("\n Err:\n Staff No. doesn't exist !\n");
printf("回到上级菜单\n");
}
return 0;
}
修改数据的思路,通过读文件,获取一条链表出来,然后通过我们输入的员工号,查询所修改的数据存于文件的哪一个位置,通过修改文件的数据来达到数据的修改。
员工管理系统代码连接:https://download.csdn.net/download/gaodes/10940115