70,020
社区成员




#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <string.h>
typedef struct Emp
{
int EmpId; // 员工编号
char EmpName[200]; // 姓名
char Position[200]; // 职务
int Pay; // 工资
int SalesVolume; // 销售量
int GrossSales; // 销售总额
}Emp;
struct
{
Emp employee[100];
int usedFlag[100]; // 这个标志为用于标志相同索引的 employee数组中的变量 是否被使用。 1 --- 使用了, 0 --- 未使用
int sortByWorkYears[100];
}EmpArray;
FILE *fw;
void menu()
{
printf("\n**************************MENU********************\n");
printf("V|v ---- 显示:\n");
printf("F|f ---- 查询:\n");
printf("I|i ---- 录入:\n");
printf("D|d ---- 删除:\n");
printf("C|c ---- 修改:\n");
printf("S|s ---- 保存:\n");
printf("Q|q ---- 退出程序\n");
printf("请选择操作的种类:\n");
}
void menuFind()
{
printf("a. 按姓名查找职工记录\n");
printf("b. 按编号查找职工记录\n");
printf(" 其他键返回上级菜单! \n");
printf("请选择操作的种类:\n");
}
Emp* AllocateEmp()
{
int i = 0;
for (i = 0; i < 100; i++)
{
if (0 == EmpArray.usedFlag[i])
{
EmpArray.usedFlag[i] = 1;
return &EmpArray.employee[i];
}
}
return 0;
}
void show(Emp* pEmp)
{
printf("\n-------------------------员工信息---------------------------\n");
printf("员工号:%d\n",pEmp->EmpId);
printf("姓名:%s\n", pEmp->EmpName);
printf("职务:%s\n",pEmp->Position);
printf("工资:%d\n",pEmp->Pay);
printf("销售量:%d\n",pEmp->SalesVolume);
printf("销售总额:%d\n",pEmp->GrossSales);
}
void Edit(Emp* pEmp)
{
int flag;
printf("choice class(1_manager,2_salesman or informal_salesman):\n");
scanf("%d",&flag);
if(flag == 1)
{
printf("请输入员工号:");
scanf("%d", &pEmp->EmpId);
printf("\n请输入姓名:");
scanf("%s", &pEmp->EmpName);
printf("\n请输入职务:manager");
printf("\n工资=10000RMB");
pEmp->Pay=10000;
strcpy(pEmp->Position, 'm');
}
if(flag == 2)
{
printf("请输入员工号:");
scanf("%d", &pEmp->EmpId);
printf("\n请输入姓名:");
scanf("%s", &pEmp->EmpName);
printf("\n请输入销售量:");
scanf("%d",&pEmp->SalesVolume);
printf("\n请输入销售总额:");
scanf("%d",&pEmp->GrossSales);
pEmp->Pay=pEmp->GrossSales/10;
printf("\n工资=%dRMB",pEmp->Pay);
if(pEmp->GrossSales >= 5000)
{
strcpy(pEmp->Position, 'fs');
}
else
{
strcpy(pEmp->Position, 'infs');
}
printf("\n职务:%s",pEmp->Position);
}
}
void inputEmpInfo()
{
Emp* pEmp = 0;
pEmp = AllocateEmp();
Edit(pEmp);
}
void showAll()
{
int i = 0;
for (i = 0; i < 100; i++)
{
if (1 == EmpArray.usedFlag[i])
{
show(&EmpArray.employee[i]);
}
}
}
void deleteEmp()
{
int i;
int empNo = 0;
printf("\n请输入要删除的员工的员工号:");
scanf("%d", &empNo);
for (i = 0; i < 100; i++)
{
if (EmpArray.employee[i].EmpId == empNo)
{
EmpArray.usedFlag[i] = 0;
printf("删除成功!\n");
break;
}
}
}
Emp* findByEmpNo(int empNo)
{
int i;
for (i = 0; i < 100; i++)
{
if (EmpArray.employee[i].EmpId == empNo)
{
return &EmpArray.employee[i];
}
}
return 0;
}
void changeEmp()
{
Emp* pEmp;
int empNo = 0;
printf("\n请输入要修改的员工的员工号:");
scanf("%d", &empNo);
pEmp = findByEmpNo(empNo);
if (0 == pEmp)
{
printf("没有找到输入的员工号\n");
}
else
{
Edit(pEmp);
}
}
void saveall(Emp* pEmp)
{
fw=fopen("information.txt","w");
fprintf(fw,"\n-------------------------员工信息---------------------------\n");
fprintf(fw,"员工号:%d\n",pEmp->EmpId);
fprintf(fw,"姓名:%s\n", pEmp->EmpName);
fprintf(fw,"职务:%s\n",pEmp->Position);
fprintf(fw,"工资:%d\n",pEmp->Pay);
fprintf(fw,"销售量:%d\n",pEmp->SalesVolume);
fprintf(fw,"销售总额:%d\n",pEmp->GrossSales);
fclose(fw);
}
void saveEmp()
{
int i = 0;
for (i = 0; i < 100; i++)
{
if (1 == EmpArray.usedFlag[i])
{
saveall(&EmpArray.employee[i]);
}
}
}
void findByName()
{
char EmpName[200];
int i;
int findCount;
findCount = 0;
printf("\n请输入员工的姓名:");
scanf("%s", EmpName);
for (i = 0; i < 100; i++)
{
if (0 == strcmp(EmpArray.employee[i].EmpName, EmpName))
{
show(&EmpArray.employee[i]);
findCount++;
}
}
printf("\n一共找到%d个员工。\n",findCount);
}
void findByNumber()
{
int EmpId=0;
int i;
int findCount = 0;
printf("\n请输入员工的编号:");
scanf("%d", EmpId);
for (i = 0; i < 100; i++)
{
if (0 == strcmp(EmpArray.employee[i].EmpId,EmpId))
{
show(&EmpArray.employee[i]);
findCount++;
}
}
printf("\n一共找到%d个员工。\n",findCount);
}
void FindEmp()
{
char o[10];
menuFind();
scanf("%s", o);
switch(*o)
{
case 'a':
findByName();
break;
case 'b':
findByNumber();
break;
default:
break;
}
}
int main(int argc, char *argv[])
{
char op;
while(1)
{
menu();
scanf("%s", &op);
//op = getchar();
if ( ('I' == op) || ('i' == op))
{
inputEmpInfo();
}
else if ( ('D' == op) || ('d' == op))
{
deleteEmp();
}
else if ( ('C' == op) || ('c' == op))
{
changeEmp();
}
else if ( ('V' == op) || ('v' == op))
{
showAll();
}
else if ( ('F' == op) || ('f' == op))
{
FindEmp();
}
else if ( ('S' == op) || ('s' == op))
{
saveEmp();
}
else if ( ('Q' == op) || ('q' == op))
{
break;
}
else
{
printf("Invalidate operation!");
}
}
return 0;
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <string.h>
typedef struct Emp
{
int EmpId; // 员工编号
char EmpName[200]; // 姓名
char Position[200]; // 职务
int Pay; // 工资
int SalesVolume; // 销售量
int GrossSales; // 销售总额
}Emp;
struct
{
Emp employee[100];
int usedFlag[100]; // 这个标志为用于标志相同索引的 employee数组中的变量 是否被使用。 1 --- 使用了, 0 --- 未使用
int sortByWorkYears[100];
}EmpArray;
FILE *fw;
void menu()
{
printf("\n**************************MENU********************\n");
printf("V|v ---- 显示:\n");
printf("F|f ---- 查询:\n");
printf("I|i ---- 录入:\n");
printf("D|d ---- 删除:\n");
printf("C|c ---- 修改:\n");
printf("S|s ---- 保存:\n");
printf("Q|q ---- 退出程序\n");
printf("请选择操作的种类:\n");
}
void menuFind()
{
printf("a. 按姓名查找职工记录\n");
printf("b. 按编号查找职工记录\n");
printf(" 其他键返回上级菜单! \n");
printf("请选择操作的种类:\n");
}
Emp* AllocateEmp()
{
int i = 0;
for (i = 0; i < 100; i++)
{
if (0 == EmpArray.usedFlag[i])
{
EmpArray.usedFlag[i] = 1;
return &EmpArray.employee[i];
}
}
return 0;
}
void show(Emp* pEmp)
{
printf("\n-------------------------员工信息---------------------------\n");
printf("员工号:%d\n",pEmp->EmpId);
printf("姓名:%s\n", pEmp->EmpName);
printf("职务:%s\n",pEmp->Position);
printf("工资:%d\n",pEmp->Pay);
printf("销售量:%d\n",pEmp->SalesVolume);
printf("销售总额:%d\n",pEmp->GrossSales);
}
void Edit(Emp* pEmp)
{
int flag;
printf("choice class(1_manager,2_salesman or informal_salesman):\n");
scanf("%d",&flag);
if(flag == 1)
{
printf("请输入员工号:");
scanf("%d", &pEmp->EmpId);
printf("\n请输入姓名:");
scanf("%s", &pEmp->EmpName);
printf("\n请输入职务:manager");
printf("\n工资=10000RMB");
pEmp->Pay=10000;
strcpy(pEmp->Position, "m");
}
if(flag == 2)
{
printf("请输入员工号:");
scanf("%d", &pEmp->EmpId);
printf("\n请输入姓名:");
scanf("%s", &pEmp->EmpName);
printf("\n请输入销售量:");
scanf("%d",&pEmp->SalesVolume);
printf("\n请输入销售总额:");
scanf("%d",&pEmp->GrossSales);
pEmp->Pay=pEmp->GrossSales/10;
printf("\n工资=%dRMB",pEmp->Pay);
if(pEmp->GrossSales >= 5000)
{
strcpy(pEmp->Position, "fs");
}
else
{
strcpy(pEmp->Position, "infs");
}
printf("\n职务:%s",pEmp->Position);
}
}
void inputEmpInfo()
{
Emp* pEmp = 0;
pEmp = AllocateEmp();
Edit(pEmp);
}
void showAll()
{
int i = 0;
for (i = 0; i < 100; i++)
{
if (1 == EmpArray.usedFlag[i])
{
show(&EmpArray.employee[i]);
}
}
}
void deleteEmp()
{
int i;
int empNo = 0;
printf("\n请输入要删除的员工的员工号:");
scanf("%d", &empNo);
for (i = 0; i < 100; i++)
{
if (EmpArray.employee[i].EmpId == empNo)
{
EmpArray.usedFlag[i] = 0;
printf("删除成功!\n");
break;
}
}
}
Emp* findByEmpNo(int empNo)
{
int i;
for (i = 0; i < 100; i++)
{
if (EmpArray.employee[i].EmpId == empNo)
{
return &EmpArray.employee[i];
}
}
return 0;
}
void changeEmp()
{
Emp* pEmp;
int empNo = 0;
printf("\n请输入要修改的员工的员工号:");
scanf("%d", &empNo);
pEmp = findByEmpNo(empNo);
if (0 == pEmp)
{
printf("没有找到输入的员工号\n");
}
else
{
Edit(pEmp);
}
}
void saveall(Emp* pEmp)
{
fw=fopen("information.txt","w");
fprintf(fw,"\n-------------------------员工信息---------------------------\n");
fprintf(fw,"员工号:%d\n",pEmp->EmpId);
fprintf(fw,"姓名:%s\n", pEmp->EmpName);
fprintf(fw,"职务:%s\n",pEmp->Position);
fprintf(fw,"工资:%d\n",pEmp->Pay);
fprintf(fw,"销售量:%d\n",pEmp->SalesVolume);
fprintf(fw,"销售总额:%d\n",pEmp->GrossSales);
fclose(fw);
}
void saveEmp()
{
int i = 0;
for (i = 0; i < 100; i++)
{
if (1 == EmpArray.usedFlag[i])
{
saveall(&EmpArray.employee[i]);
}
}
}
void findByName()
{
char EmpName[200];
int i;
int findCount;
findCount = 0;
printf("\n请输入员工的姓名:");
scanf("%s", EmpName);
for (i = 0; i < 100; i++)
{
if (0 == stricmp(EmpArray.employee[i].EmpName, EmpName))
{
show(&EmpArray.employee[i]);
findCount++;
}
}
printf("\n一共找到%d个员工。\n",findCount);
}
void findByNumber()
{
int EmpId=0;
int i;
int findCount = 0;
printf("\n请输入员工的编号:");
scanf("%d", EmpId);
for (i = 0; i < 100; i++)
{
if (EmpArray.employee[i].EmpId == EmpId)
{
show(&EmpArray.employee[i]);
findCount++;
}
}
printf("\n一共找到%d个员工。\n",findCount);
}
void FindEmp()
{
char o[10];
menuFind();
scanf("%s", o);
switch(*o)
{
case 'a':
findByName();
break;
case 'b':
findByNumber();
break;
default:
break;
}
}
int main(int argc, char *argv[])
{
char op;
while(1)
{
menu();
scanf("%s", &op);
//op = getchar();
if ( ('I' == op) || ('i' == op))
{
inputEmpInfo();
}
else if ( ('D' == op) || ('d' == op))
{
deleteEmp();
}
else if ( ('C' == op) || ('c' == op))
{
changeEmp();
}
else if ( ('V' == op) || ('v' == op))
{
showAll();
}
else if ( ('F' == op) || ('f' == op))
{
FindEmp();
}
else if ( ('S' == op) || ('s' == op))
{
saveEmp();
}
else if ( ('Q' == op) || ('q' == op))
{
break;
}
else
{
printf("Invalidate operation!");
}
}
return 0;
}