📄 职工管理系统.cpp
字号:
if((p2->age)>(p1->age))
{
BUG1(p1)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BUG1(p2)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
fseek(fp,-L,SEEK_CUR);
fwrite(p1,L,1,fp);
fseek(fp,-(L*2),SEEK_CUR);
fwrite(p2,L,1,fp);
fseek(fp,L,SEEK_CUR);
}
break;
case 5:
if((p2->pay)<(p1->pay))
{
BUG1(p1)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BUG1(p2)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
fseek(fp,-L,SEEK_CUR);
fwrite(p1,L,1,fp);
fseek(fp,-(L*2),SEEK_CUR);
fwrite(p2,L,1,fp);
fseek(fp,L,SEEK_CUR);
}
break;
case 6:
if((p2->pay)>(p1->pay))
{
BUG1(p1)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BUG1(p2)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
fseek(fp,-L,SEEK_CUR);
fwrite(p1,L,1,fp);
fseek(fp,-(L*2),SEEK_CUR);
fwrite(p2,L,1,fp);
fseek(fp,L,SEEK_CUR);
}
break;
}
free(p1);
free(p2);
fseek(fp,-L,SEEK_CUR);
p1=(employee *)malloc(L);
p2=(employee *)malloc(L);
fread(p1,L,1,fp);
fread(p2,L,1,fp);
BUG2(p1)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BUG2(p2)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
free(p1);
free(p2);
}
system("cls");
printf("排列完成!\n");
printf("\n按任意键返回...\n");
reopen();
fflush(stdin);
getch();
}
void compositor()
{
int i;
again10:
system("cls");
printf("\n\n\n\n\n");
printf(" ╔════════════╗\n");
printf(" ║ 按 1 职工号小到大排序 ║\n");
printf(" ╠════════════╣\n");
printf(" ║ 按 2 职工号大到小排序 ║\n");
printf(" ╠════════════╣\n");
printf(" ║ 按 3 年龄小到大排序 ║\n");
printf(" ╠════════════╣\n");
printf(" ║ 按 4 年龄大到小排序 ║\n");
printf(" ╠════════════╣\n");
printf(" ║ 按 5 工资低到高排序 ║\n");
printf(" ╠════════════╣\n");
printf(" ║ 按 6 工资高到低排序 ║\n");
printf(" ╠════════════╣\n");
printf(" ║ 按 7 返回上一级 ║\n");
printf(" ╠════════════╣\n");
printf(" ║ 按 8 退出程序 ║\n");
printf(" ╚════════════╝\n");
fflush(stdin);
i=getch();
switch(i)
{
case 49:
compositor_(1);
goto again10;
case 50:
compositor_(2);
goto again10;
case 51:
compositor_(3);
goto again10;
case 52:
compositor_(4);
goto again10;
case 53:
compositor_(5);
goto again10;
case 54:
compositor_(6);
goto again10;
case 55:
return;
case 56:
fclose(fp);
exit(0);
default:
goto again10;
}
}
void search()
{
int i;
again8:
system("cls");
printf("\n\n\n\n\n\n\n\n");
printf(" ╔════════════╗\n");
printf(" ║ 按 1 搜索职工信息 ║\n");
printf(" ╠════════════╣\n");
printf(" ║ 按 2 职工信息排序 ║\n");
printf(" ╠════════════╣\n");
printf(" ║ 按 3 返回上一级 ║\n");
printf(" ╠════════════╣\n");
printf(" ║ 按 4 退出程序 ║\n");
printf(" ╚════════════╝\n");
fflush(stdin);
i=getch();
switch(i)
{
case 49:
search_();
goto again8;
case 50:
compositor();
goto again8;
case 51:
return;
case 52:
fclose(fp);
exit(0);
default:
goto again8;
}
}
void add()
{
employee *p;
system("cls");
printf(" ╔══════════════════╗\n");
printf(" ║ 请输入需要添加的职工信息 ║\n");
printf(" ╠══════════════════╣\n");
printf(" ║各项数据之间用空格或Tab(制表符)隔开 ║\n");
printf(" ╚══════════════════╝\n");
printf("输入顺序:职工号-->>姓名-->>性别-->>年龄-->>学历-->>工资-->>地址-->>电话号码\n");
fflush(stdin);
p=(employee *)malloc(L);
fseek(fp,0l,SEEK_END);
scanf("%d%s%s%d%s%d%s%s",&p->num,p->name,p->sex,&p->age,p->sclrec,&p->pay,p->address,p->phonenum);
BUG1(p)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
fwrite(p,L,1,fp);
free(p);
system("cls");
printf("添加成功!\n\n按任意键返回...\n");
fflush(stdin);
getch();
}
void del_(int n)
{
int i;
int num_;
char name_[10];
char address_[40];
char phonenum_[12];
employee *p;
system("cls");
fflush(stdin);
switch(n)
{
case 1:
printf("请输入你要删除的职工的职工号:");
scanf("%d",&num_);
break;
case 2:
printf("请输入你要删除的职工的姓名:");
scanf("%s",name_);
break;
case 3:
printf("请输入你要删除的职工的地址:");
scanf("%s",address_);
break;
case 4:
printf("请输入你要删除的职工的电话号码:");
scanf("%s",phonenum_);
break;
}
p=(employee *)malloc(L);
tempfp=tmpfile();//建立临时文件
rewind_(fp);
for(i=0;fread(p,L,1,fp);)
{
BUG2(p)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
switch(n)
{
case 1:
if(p->num==num_)
{
if(i==0)
printf("\n职工号--姓名-----性别--年龄---学历---工资-----地址----------------电话号码------\n");
printf(" %-3d %-9s %-4s %-3d %-6s %-6d %-20s %-12s\n\n",p->num,p->name,p->sex,p->age,p->sclrec,p->pay,p->address,p->phonenum);
i++;
}
else
{
BUG1(p)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
fwrite(p,L,1,tempfp);
}
break;
case 2:
if(!strcmp(p->name,name_))
{
if(i==0)
printf("\n职工号--姓名-----性别--年龄---学历---工资-----地址----------------电话号码------\n");
printf(" %-3d %-9s %-4s %-3d %-6s %-6d %-20s %-12s\n\n",p->num,p->name,p->sex,p->age,p->sclrec,p->pay,p->address,p->phonenum);
i++;
}
else
{
BUG1(p)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
fwrite(p,L,1,tempfp);
}
break;
case 3:
if(!strcmp(p->address,address_))
{
if(i==0)
printf("\n职工号--姓名-----性别--年龄---学历---工资-----地址----------------电话号码------\n");
printf(" %-3d %-9s %-4s %-3d %-6s %-6d %-20s %-12s\n\n",p->num,p->name,p->sex,p->age,p->sclrec,p->pay,p->address,p->phonenum);
i++;
}
else
{
BUG1(p)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
fwrite(p,L,1,tempfp);
}
break;
case 4:
if(!strcmp(p->phonenum,phonenum_))
{
if(i==0)
printf("\n职工号--姓名-----性别--年龄---学历---工资-----地址----------------电话号码------\n");
printf(" %-3d %-9s %-4s %-3d %-6s %-6d %-20s %-12s\n\n",p->num,p->name,p->sex,p->age,p->sclrec,p->pay,p->address,p->phonenum);
i++;
}
else
{
BUG1(p)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
fwrite(p,L,1,tempfp);
}
break;
}
}
free(p);
again13:
if(i>0)
{
printf("共有%d条符合要求的信息!\n",i);
printf(" ╔════════╗\n");
printf(" ║ 按 1 确认删除 ║\n");
printf(" ╠════════╣\n");
printf(" ║ 按 2 返回 ║\n");
printf(" ╚════════╝\n");
fflush(stdin);
n=getch();
switch(n)
{
case 49:
system("cls");
fclose(fp);
fp=fopen(filename,"w+");
p=(employee *)malloc(L);
rewind_(tempfp);
for(;fread(p,L,1,tempfp);)
fwrite(p,L,1,fp);
free(p);
fclose(tempfp);
printf("删除成功!\n\n按任意键返回...\n");
fflush(stdin);
getch();
return;
case 50:
fclose(tempfp);
return;
default:
system("cls");
goto again13;
}
}
else
{
system("cls");
printf("\n没有你要删除的职工信息!\n");
printf("\n按任意键返回...");
fflush(stdin);
getch();
}
}
void del()
{
int i;
again12:
system("cls");
printf("\n\n\n\n\n\n");
printf(" ╔════════════╗\n");
printf(" ║ 按 1 以职工号进行删除 ║\n");
printf(" ╠════════════╣\n");
printf(" ║ 按 2 以姓名进行删除 ║\n");
printf(" ╠════════════╣\n");
printf(" ║ 按 3 以地址进行删除 ║\n");
printf(" ╠════════════╣\n");
printf(" ║ 按 4 以电话号码进行删除║\n");
printf(" ╠════════════╣\n");
printf(" ║ 按 5 返回上一级 ║\n");
printf(" ╠════════════╣\n");
printf(" ║ 按 6 退出程序 ║\n");
printf(" ╚════════════╝\n");
fflush(stdin);
i=getch();
switch(i)
{
case 49:
del_(1);
reopen();
goto again12;
case 50:
del_(2);
reopen();
goto again12;
case 51:
del_(3);
reopen();
goto again12;
case 52:
del_(4);
reopen();
goto again12;
case 53:
return;
case 54:
exit(0);
default:
goto again12;
}
}
void amend_1(int n)
{
int i,j;
int num_; //职工号
employee *p;
system("cls");
fflush(stdin);
printf("请输入你要修改的职工的职工号:");
scanf("%d",&num_);
p=(employee *)malloc(L);
rewind_(fp);
for(i=0;fread(p,L,1,fp);)
{
BUG2(p)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(p->num==num_)
{
i++;
break;
}
}
again15:
if(i>0)
{
system("cls");
printf(" ╔════════════╗\n");
printf(" ║ 你要修改的职工信息如下 ║\n");
printf(" ╚════════════╝\n");
printf("\n职工号--姓名-----性别--年龄---学历---工资-----地址----------------电话号码------\n");
printf(" %-3d %-9s %-4s %-3d %-6s %-6d %-20s %-12s\n\n",p->num,p->name,p->sex,p->age,p->sclrec,p->pay,p->address,p->phonenum);
printf(" ╔════════╗\n");
printf(" ║ 按 1 确认修改 ║\n");
printf(" ╠════════╣\n");
printf(" ║ 按 2 返回 ║\n");
printf(" ╚════════╝\n");
fflush(stdin);
j=getch();
switch(j)
{
case 49:
{
switch(n)
{
case 49:
printf("请输入新的职工号:");
fflush(stdin);
scanf("%d",&p->num);
break;
case 50:
printf("请输入新的姓名:");
fflush(stdin);
scanf("%s",p->name);
break;
case 51:
printf("请输入新的性别:");
fflush(stdin);
scanf("%s",p->sex);
break;
case 52:
printf("请输入新的年龄:");
fflush(stdin);
scanf("%d",&p->age);
break;
case 53:
printf("请输入新的学历:");
fflush(stdin);
scanf("%s",p->sclrec);
break;
case 54:
printf("请输入新的工资:");
fflush(stdin);
scanf("%d",&p->pay);
break;
case 55:
printf("请输入新的地址:");
fflush(stdin);
scanf("%s",p->address);
break;
case 56:
printf("请输入新的电话号码:");
fflush(stdin);
scanf("%s",p->phonenum);
break;
case 57:
system("cls");
printf(" ╔══════════════════╗\n");
printf(" ║ 请输入新的职工信息替换原来的 ║\n");
printf(" ╠══════════════════╣\n");
printf(" ║各项数据之间用空格或Tab(制表符)隔开 ║\n");
printf(" ╚══════════════════╝\n");
printf("输入顺序:职工号-->>姓名-->>性别-->>年龄-->>学历-->>工资-->>地址-->>电话号码\n");
fflush(stdin);
scanf("%d%s%s%d%s%d%s%s",&p->num,p->name,p->sex,&p->age,p->sclrec,&p->pay,p->address,p->phonenum);
break;
}
fflush(stdin);
fseek(fp,-L,SEEK_CUR);
BUG1(p)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
fwrite(p,L,1,fp);
free(p);
system("cls");
printf("修改成功!\n");
printf("\n按任意键返回...");
fflush(stdin);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -