职工信息管理系统c语言源代码教程文件Word格式.docx
《职工信息管理系统c语言源代码教程文件Word格式.docx》由会员分享,可在线阅读,更多相关《职工信息管理系统c语言源代码教程文件Word格式.docx(18页珍藏版)》请在冰豆网上搜索。
//声明修改函数
voidorder();
//声明排序函数
voidadd();
//声明添加函数
voidorder_wages();
voidorder_name();
voidmenu()/*菜单函数*/
printf("
\n"
);
welcometo\n"
职工信息管理系统"
******************************************************************************\n"
1.录入职工信息\n"
2.浏览职工信息\n"
3.查询职工信息\n"
4.删除职工信息\n"
5.修改职工信息\n"
6.职工信息排序\n"
7.添加职工信息\n"
8.退出\n"
*******************************************************************************\n"
}
/********************************************************************************************/
voidmain()
{
intn,f;
while
(1)
do
{
menu();
/*调用菜单函数*/
请输入你需要操作的序号(1—8):
scanf("
%d"
&
n);
if(n>
=1&
&
n<
=8)
f=1;
break;
}
else
f=0;
您输入有误,请重新选择!
"
}while(f==0);
switch(n)
case1:
printf("
录入职工信息\n"
type_in();
break;
case2:
浏览职工信息\n"
system("
cls"
scan();
case3:
查询职工信息\n"
search();
case4:
删除职工信息\n"
del();
case5:
修改职工信息\n"
change();
case6:
职工信息排序\n"
order();
case7:
添加职工信息\n"
sls"
add();
case8:
gotoloop;
/*用goto语句跳至跳至指定的行*/
default:
loop:
//行标
system("
\n\n\n\n\n\n------谢谢使用!
---------\n\n\n\n\n\n"
/***********************************************************************************/
voidtype_in()/*录入函数*/
inti,m;
请输入需要创建信息的职工人数(1--500):
m);
for(i=0;
i<
m;
i++)
请输入职工号:
"
work[i].num);
请输入姓名:
%s"
work[i].name);
getchar();
请输入职称:
work[i].zhicheng);
请输入基本工资:
work[i].wages);
请输入奖金:
work[i].reward);
请输入生日(格式如19900101):
work[i].birth);
\n一个职工的信息档案创建完毕!
请输入下一个职工的信息\n"
work[i].salary=work[i].wages+work[i].reward;
baocun(m);
/***************************************************************************/
voidbaocun(intm)/*保存文件函数*/
inti;
FILE*fp;
if((fp=fopen("
E:
\\worker_list.txt"
"
wb"
))==NULL)/*创建文件并判断是否能打开*/
printf("
此文件不能打开\n"
exit(0);
i++)/*将内存中职工的信息输出到磁盘文件中去*/
if(fwrite(&
work[i],sizeof(structworker),1,fp)!
=1)
filewriteerror\n"
fclose(fp);
intload()/*导入函数*/
FILE*fp;
inti=0;
if((fp=fopen("
rb"
))==NULL)
cannotopenfile\n"
else
do
fread(&
work[i],sizeof(structworker),1,fp);
i++;
while(feof(fp)==0);
fclose(fp);
return(i-1);
/*******************************************************************************/
voidscan()/*浏览函数*/
inti;
intm=load();
\n职工号\t姓名\t职称\t基本工资\t奖金\t实际工资\t生日\n"
for(i=0;
i++)
\n%d\t%s\t%s\t%d\t%d\t%d\t%ld\n"
work[i].num,work[i].name,
work[i].zhicheng,work[i].wages,work[i].reward,work[i].salary,work[i].birth);
按任意键继续\n"
getchar();
/********************************************************************************/
voiddel()/*删除函数*/
intm=load();
inti,j,n,t,f;
charname1[10];
\n原来的职工信息:
scan();
/*调用浏览函数*/
请输入要删除的职工的姓名:
scanf("
name1);
for(f=1,i=0;
f&
if(strcmp(work[i].name,name1)==0)
\n已找到此人,原始记录为:
\n确实要删除此人信息请按1,不删除请按0\n"
if(n==1)/*如果删除,则其他的信息都向前移一行*/
for(j=i;
j<
m-1;
j++)
work[j]=work[j+1];
if(!
f)
m=m-1;
else
\n对不起,查无此人!
\n浏览删除后的所有职工信息:
/*调用保存函数*/
/*调用浏览函数*/
\n继续删除请按1,不再删除请按0\n"
t);
switch(t)
case0:
}system("
/**********************************************************************************/
voidsearch()/*查询函数*/
intt,f;
\n按姓名查询请按1;
按职称查询请按2;
进入主函数按3\n"
if(t>
t<
=3)
while(f==1)
switch(t)
{
按姓名查询\n"
search_name();
按职称查询\n"
search_zhicheng();
main();
default:
voidsearch_name()/*按姓名查找函数*/
charname1[10];
inti,t;
请输入要查找的姓名:
for(i=0;
if(strcmp(name1,work[i].name)==0)
\n已找到此人,其记录为:
if(i==m)
\n对不起,查无此人\n"
返回查询函数请按1,继续查询职工号请按2\n"
/*************************************************************************************/
voidsearch_zhicheng()/*按职称查找函数*/
charzhicheng1[10];
请输入要查找的职称:
zhicheng1);
if(strcmp(zhicheng1,work[i].zhicheng)==0)
/***************************************************************************************/
voidchange()/*修改函数*/
intbirth;
intb,c,i,n,t,f;
/*导入文件内的信息*/
请输入要修改的职工的姓名:
name);
if(strcmp(work[i].name,name)==0)
\n确实要修改此人信息请按1;
不修改请按0\n"
if(n==1)
\n需要进行修改的选项\n1.职工号2.姓名3.职称4.基本工资5.奖金6.生日7.实际工资\n"
请输入你想修改的那一项序号:
c);
if(c>
7||c<
1)
\n选择错误,请重新选择!
if(f==1)
switch(c)/*因为当找到第i个职工时,for语句后i自加了1,所以下面的应该把改后的
信息赋值给第i-1个人*/
职工号改为:
num);
work[i-1].num=num;
姓名改为:
strcpy(work[i-1].name,name);
case3:
职称改为"
zhicheng);
strcpy(work[i-1].zhicheng,zhicheng);
基本工资改为:
wages);
work[i-1].wages=wages;
奖金改为:
reward);
work[i-1].reward=reward;
生日改为:
%ld"
birth);
work[i-1].birth=birth;
实际工资改为:
salary);
work[i-1].salary=salary;
}
\n是否确定所修改的信息?
\n是请按1;
\n不,重新修改请按2:
\n"
b);
}
while(b==2);
\n浏览修改后的所有职工信息:
\n继续修改请按1,不再修改请按0\n"
voidorder()/*排序函数*/
intk,f;
\n按姓名排序请按1;
按基本工资排序请按2;
k);
if(k>
k<
switch(k)
\n按姓名排序为(字母由小到大排列):
order_name();
\n按基本工资排序为(由高到低排列):
order_wages();
voidorder_name()/*按姓名排序函数*/
inti,j,k;
for(j=0;
m-1-i;
j++)/*起泡法排序*/
if(strcmp(work[j].name,work[j+1].name)>
0)
{work1=work[j];
work[j]=work[j+1];
work[j+1]=work1;
for(j=0;
j++)
work[j].num,work[j].name,
work[j].zhicheng,work[j].wages,work[j].reward,work[j].salary,work[j].birth