要写一个职工工资管理系统;
1. 职工工资项目信息的基本结构如下:
char *ITEM[MAXI] //职工工资项目数组,存放工资项目名称。(字符串数组)
说明:工资项目可包括:基本工资、职务工资、岗位津贴、医疗保险、公积金、
奖金、住房补贴等。工资项目可以按需要增加、修改和删除,不固定。工资项目
最多 50 项, 0~49。
2.系统基本功能:提供工资项目信息的录入、修改和删除;职工工资信息的录
入、修改、查询和统计等,工资项目及职工工资信息可保存在文件中,系统启动
时打开文件可新增职工工资信息并保存。
结构体:
typedef struct staff {
int num; /* 职工编号 */
char name[20]; /* 姓名 */
char dept[50]; /* 所属部门 */
double S[MAXI]; /* 工资项目数组,与数组 ITEM[MAXI]的标号对应,0~49*/
double total; /* 工资合计 */
struct stuff *next;
}EMPLOYEE;
主程序中全局变量:
EMPLOYEE* head = NULL, * tail = NULL;
char ITEM[MAXI][20];
int count1 = -1; /*项目数量计数*/ /*count1 +1 是真实的项目数量*/
int count_staffnum = 0; /*职工数量统计*/
相关函数:
extern EMPLOYEE* head;
extern int count1;
extern char ITEM[MAXI][20];
int fun31()
{
int num;
int cnt=0;
char re[10];
EMPLOYEE* p1=NULL;
if (head == NULL) /*职工信息为空*/
{
printf("职工信息记录为空,请先添加职工信息\n");
printf("请按任意键返回上一级\n");
printf(">>");
getch(re);
return NULL;
}
else{
printf("请输入要新增工资项目的职工编号\n");
printf(">>");
scanf("%d", &num);
p1 = (EMPLOYEE*)malloc(sizeof(EMPLOYEE*));
p1 = head;
while (p1 != NULL) /*判断是否存在该职工*/
{
if (p1->num == num)
{
cnt++;
break;
}
p1 = p1->next;
}
if (cnt == 1)
{
printf("以下是已有的工资项目,请按顺序填入,按空格输入下一项\n");
for (int i = 0; i < count1 + 1; i++)
{
printf("%s ", ITEM[i]);
}
printf("\n");
for (int i = 0; i < count1 + 1; i++)
{
scanf("%d", p1->S[i]);
}
printf("添加成功!\n");
printf("请按任意键返回上一级\n");
printf(">>");
getch(re);
return NULL;
}
else
{
printf("该职工信息不存在,添加失败!\n");
printf("请按任意键返回上一级\n");
printf(">>");
getch(re);
return NULL;
}
}
}
建立链表用于储存职工的ID、姓名、部门、工资项目等;
我想通过指针p1来寻找到链表里面想要添加工资项目的职工,从而可以将工资输入到该职工的信息中,但是出现如下错误:
请教一下各位,这个怎么解决?