职工信息管理系统源代码.docx
《职工信息管理系统源代码.docx》由会员分享,可在线阅读,更多相关《职工信息管理系统源代码.docx(17页珍藏版)》请在冰豆网上搜索。
![职工信息管理系统源代码.docx](https://file1.bdocx.com/fileroot1/2023-2/21/29303df8-7bd9-472e-87ec-65a6557e32d0/29303df8-7bd9-472e-87ec-65a6557e32d01.gif)
职工信息管理系统源代码
#include
#include
#include
intN=2;
structworker/*定义一个职工信息的结构体*/
{
intnum;/*定义一个职工信息的结构体*/
charname[20];/*定义一个职工信息的结构体*/
charsex[10];//用字符串存放职工的性别数据
charbirth[20];//用字符串存放职工的出生年月数据
chardeta[20];//用字符串存放职工的工作年月数据
chareducation[20];//用字符串存放职工的学历数据
doublesalary;//用字符串存放职工的性别数据
charwork[30];//用字符串存放职工的职务数据
charaddr[20];//用字符串存放职工的地址数据
chartel[20];//用字符串存放职工的电话数据
}worker[100];//用结构体数组存放职工的所有信息
voidmenu();
voidinput();
voidsave();
voidread();
voiddisplay();
voidadd();
voidsearch();
voidsearch_education();
voidsearch_num();
voiddel();
voidmodify();
voidmain()
{
chars;
system("color3f");
printf("\n\n");
printf("\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("\t┃**********************************************************┃\n");
printf("\t┃***┏━━━━━━━━━━━━━━━━━━━━━━━━┓***┃\n");
printf("\t┃***┃************************************************┃***┃\n");
printf("\t┃***┃*******┃***┃\n");
printf("\t┃***┃***欢迎使用职工信息管理系统****┃***┃\n");
printf("\t┃***┃*******┃***┃\n");
printf("\t┃***┃*******┃***┃\n");
printf("\t┃***┃***制作人吴青伶****┃***┃\n");
printf("\t┃***┃*******┃***┃\n");
printf("\t┃***┃***2013.12.28****┃***┃\n");
printf("\t┃***┃*******┃***┃\n");
printf("\t┃***┃************************************************┃***┃\n");
printf("\t┃***┗━━━━━━━━━━━━━━━━━━━━━━━━┛***┃\n");
printf("\t┃**********************************************************┃\n");
printf("\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
do
{
menu();
printf("Doyouwanttocontinue?
(y/n)");
s=getchar();
}while(s=='Y'||s=='y');
}
voidmenu()/*菜单函数*/
{
intb;
printf("\t\n");
printf("\t\n");
printf("\t\n");
printf("\t\n");
printf("\t\n");
printf("\t请选择\n");
printf("\t------------------------------\n");
printf("\t||||\n");
printf("\t||1.职工信息录入||\n");
printf("\t||2.职工信息浏览||\n");
printf("\t||3.职工信息添加||\n");
printf("\t||4.职工信息查询||\n");
printf("\t||5.职工信息删除||\n");
printf("\t||6.职工信息修改||\n");
printf("\t||0.退出||\n");
printf("\t-------------------------------\n");
printf("\n输入你的选择项(0~6):
\n");
scanf("%d",&b);
switch(b)
{
case1:
//职工信息录入、保存
input();
save();
getchar();
break;
case2:
//读入职工信息并显示
read();
display();
getchar();
break;
case3:
//添加职工信息
add();getchar();
break;
case4:
//查询职工信息
search();getchar();
break;
case5:
//读入职工信息并实现职工信息删除功能
read();
del();
getchar();
break;
case6:
//读入职工信息并修改职工信息
read();modify();getchar();
break;
case0:
exit(0);//退出
default:
break;
}
}
voidinput()//录入职工信息
{
inti,flag,j;
printf("输入职工个数(默认个数为2):
");
scanf("%d",&N);
fflush(stdin);//清除缓存
for(i=0;i{
loop:
printf("职工号:
");
scanf("%d",&worker[i].num);fflush(stdin);
flag=1;
if(worker[N].num<0)
printf("请输入正整数:
\n");
else
for(j=0;j
{
if(worker[i].num==worker[j].num)
{
flag=0;
printf("工号重复,请重新输入!
\n");
gotoloop;
}
}
printf("姓名:
");scanf("%s",worker[i].name);fflush(stdin);
printf("性别:
");scanf("%s",worker[i].sex);fflush(stdin);
printf("出生年月:
");scanf("%d",&worker[i].birth);fflush(stdin);
printf("工作年月:
");scanf("%lf",&worker[i].deta);fflush(stdin);
printf("请输入学历(中专=zz,大专=dz,本科=bk,研究生=yjs):
\n");
scanf("%s",worker[i].education);fflush(stdin);
printf("工资:
");scanf("%lf",worker[i].salary);fflush(stdin);
printf("职务:
");scanf("%s",worker[i].work);fflush(stdin);
printf("住址:
");scanf("%s",worker[i].addr);fflush(stdin);
printf("电话:
");scanf("%s",worker[i].tel);fflush(stdin);
}
printf("\n创建完毕!
\n");
}
voidsave()//保存函数
{
FILE*fp;
inti;
if((fp=fopen("worker.txt","wb"))==NULL)//以只写方式打开一个二进制文件
{
printf("\ncannotopenfile\n");
exit(0);
}
for(i=0;ifwrite(&worker[i],sizeof(structworker),1,fp);//将内存中的职工信息数据输出到磁盘文件中去(二进制)
fclose(fp);
}
voidread()//读入函数
{
FILE*fp;
inti=0;
if((fp=fopen("worker.txt","rb"))==NULL)//以只读方式为输出打开磁盘文件中的一个二进制文件
{
printf("\ncannotopenfile\n");
exit(0);
}
do{
fread(&worker[i],sizeof(structworker),1,fp);//从worker.txt文件向内存读入数据(二进制)
i++;
}while(!
feof(fp));
fclose(fp);
N=i-1;
}
voiddisplay()//信息浏览函数
{
inti;
for(i=0;i{
printf("职工号:
%d\n",worker[i].num);
printf("姓名:
%s\n",worker[i].name);
printf("性别:
%s\n",worker[i].sex);
printf("出生年月:
%d\n",worker[i].birth);
printf("工作年月:
%d\n",worker[i].deta);
printf("学历:
%s\n",worker[i].education);
printf("工资:
%lf\n",worker[i].salary);
printf("职务:
%d\n",worker[i].work);
printf("住址:
%s\n",worker[i].addr);
printf("电话:
%s\n",worker[i].tel);
}
}
voidadd()//添加函数
{
FILE*fp;
inti;
structworkerp;
doublet;
printf("\n请输入新增加职工的信息:
\n");
printf("请输入职工号:
\n");
scanf("%d",&p.num);
for(i=0;i{
while(worker[i].num==p.num)
{
printf("工号重复,请重新输入!
\n");
scanf("%d",&p.num);
}
}
printf("请输入姓名:
\n");scanf("%s",p.name);
printf("请输入性别:
\n");scanf("%s",p.sex);
printf("请输入出生年月:
\n");scanf("%d",&p.birth);
printf("请输入工作年月:
\n");scanf("%d",&p.deta);
printf("请输入学历(中专=zz,大专=dz,本科=bk,研究生=yjs:
):
\n");scanf("%s",p.education);
printf("请输入工资:
\n");scanf("%lf",&t);
p.salary=t;
printf("请输入职务:
\n");scanf("%s",p.work);
printf("请输入住址:
\n");scanf("%s",p.addr);
printf("请输入电话:
\n");scanf("%s",p.tel);
printf("\n添加完毕!
\n");
if((fp=fopen("worker.txt","ab"))==NULL)//以追加方式打开一个二进制文件尾部
{
printf("\ncannotopenfile\n");
exit(0);
}
fwrite(&p,sizeof(structworker),1,fp);
fclose(fp);
}
voidsearch()//查询函数
{
intc;
do
{
puts("\nsearchby=>\n1.学历2.职工号3.取消并返回");
printf("Whichyouneeded?
:
\n");
scanf("%d",&c);
if(c>3||c<1)
{
puts("\nchoiceerror!
pleaseagain!
");
getchar();//此语句用于接受在执行上一句时最后输出的回车符
}
}
while(c>3||c<1);
{
switch(c)
{
case1:
search_education();break;
case2:
search_num();break;
case3:
menu();break;
}
}
}
voidsearch_education()//按学历查询函数
{
inti,flag=0;
chars[10];
printf("\n请输入你要查询的学历:
\n");
scanf("%s",s);
for(i=0;i{
if(strcmp(s,worker[i].education)==0)
{
printf("职工号:
%d\n",worker[i].num);
printf("姓名:
%s\n",worker[i].name);
printf("性别:
%s\n",worker[i].sex);
printf("出生年月:
%d\n",worker[i].birth);
printf("工作年月:
%d\n",worker[i].deta);
printf("学历(中专=zz,大专=dz,本科=bk,研究生=yjs):
%s\n",worker[i].education);
printf("工资:
%lf\n",worker[i].salary);
printf("职务:
%lf\n",worker[i].work);
printf("住址:
%s\n",worker[i].addr);
printf("电话:
%s\n",worker[i].tel);
flag++;
}
}
if(flag==0)
printf("\n对不起没有找到!
\n");
getchar();
}
voidsearch_num()//按工号查询函数
{
inti,s,flag=0;
printf("\n输入要查询的职工号!
:
\n");
scanf("%d",&s);
for(i=0;i{
if(s==worker[i].num)
{
printf("职工号:
%d\n",worker[i].num);
printf("姓名:
%s\n",worker[i].name);
printf("性别:
%s\n",worker[i].sex);
printf("出生年月:
%d\n",worker[i].birth);
printf("工作年月:
%d\n",worker[i].deta);
printf("学历(中专=zz,大专=dz,本科=bk,研究生=yjs):
%s\n",worker[i].education);
printf("工资:
%lf\n",worker[i].salary);
printf("职务:
%lf\n",worker[i].work);
printf("住址:
%s\n",worker[i].addr);
printf("电话:
%s\n",worker[i].tel);
flag++;
}
}
if(flag==0)
printf("\n对不起没有找到!
please");
getchar();
}
voiddel()//删除函数
{
inti,j;
FILE*fp;
charname[20];
charc;
if((fp=fopen("worker.txt","wb"))==NULL)//以只写方式打开一个二进制文件
{
printf("\ncannotopenfile\n");
exit(0);
}
printf("请输入要删除的职工的姓名:
");
scanf("%s",name);
for(i=0;i{
if(strcmp(name,worker[i].name)==0)//判断输入的姓名和原来的姓名是否相同
{
printf("找到该职工,是否删除?
(y/n)");
fflush(stdin);
scanf("%c",&c);
if(c=='Y'||c=='y')
{
for(j=i;jworker[j]=worker[j+1];
printf("删除成功!
\n");
//break;
}
}
}
if(i>=N)
{
printf("没有找到该职工!
\n");
return;
}
else
{
N=N-1;
for(i=0;iif(fwrite(&worker[i],sizeof(structworker),1,fp)!
=1)
{
printf("\ncannotsavefile\n");
getchar();
}
fclose(fp);
}
}
voidmodify()//修改函数
{
structworkerp;
FILE*fp;
inti,n;
doublet;
printf("\n输入要修改的职工号:
\n");
scanf("%d",&n);
for(i=0;i{
if(n==worker[i].num)
{
printf("找到该职工的信息(任意键继续)!
");
printf("\n请输入职工的信息!
\n");
printf("请输入姓名:
\n");scanf("%s",p.name);
printf("请输入性别:
\n");scanf("%s",p.sex);
printf("请输入出身年月:
\n");scanf("%d",&p.birth);
printf("请输入工作年月:
\n");scanf("%lf",&p.deta);
printf("请输入学历(中专=zz,大专=dz,本科=bk,研究生=yjs):
\n");scanf("%s",p.education);
printf("请输入工资:
\n");scanf("%lf",&t);
p.salary=t;
printf("请输入职务:
\n");scanf("%s",p.work);
printf("请输入住址:
\n");scanf("%s",p.addr);
printf("请输入电话:
\n");scanf("%s",p.tel);
p.num=n;
if((fp=fopen("worker.txt","r+"))==NULL)//以读写的方式将修改的信息写入磁盘文件
{
printf("\ncannotopenfile\n");
exit(0);
}
fseek(fp,i*sizeof(structworker),0);//将位置指针移到i*sizeof(structworker)个字节处
fwrite(&p,sizeof(structworker),1,fp);
fclose(fp);
printf("修改成功!
\n");
break;
}
}
if(i>=N)
printf("\n未找到该职工!
\n");
}