沈师人事管理系统源代码Word文档下载推荐.docx
- 文档编号:16428092
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:22
- 大小:22.01KB
沈师人事管理系统源代码Word文档下载推荐.docx
《沈师人事管理系统源代码Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《沈师人事管理系统源代码Word文档下载推荐.docx(22页珍藏版)》请在冰豆网上搜索。
/*基本工资*/
floatjj;
/*奖金*/
floatkk;
/*扣款*/
floatyfgz;
/*应发工资*/
floatsk;
/*税款*/
floatsfgz;
/*实发工资*/
}RSDA;
voidmenu()/*主菜单*/
system("
cls"
);
/*调用DOS命令,清屏。
与clrscr()功能相同*/
;
cprintf("
THEEMPLOYEEManagementSystem\n"
*************************Menu***************************\n"
*1inputrecord2deleterecord*\n"
*3searchrecord4modifyrecord*\n"
*5insertrecord6countrecord*\n"
*7sortrecord8saverecord*\n"
*9sortrecord0quitsystem*\n"
/*cprintf()送格式化输出至文本窗口屏幕中*/
}
voidprintheader()/*格式化输出表头*/
{
printf(HEADER1);
printf(HEADER2);
printf(HEADER3);
voidprintdata(RSDApp)/*格式化输出表中数据*/
RSDA*p;
p=&
pp;
printf(FORMAT,DATA);
voidDisp(RSDAtp[],intn)/*显示数组tp[]中储存的记录,内容为employee结构中定义的内容*/
inti;
if(n==0)/*表示没有职工工资记录*/
{
printf("
\n====>
Notemployeerecord!
\n"
while(getchar()!
='
\n'
)
continue;
getchar();
return;
}
printf("
\n\n"
printheader();
/*输出表头头部*/
i=0;
while(i<
n)/*逐条输出数组中储存的职工信息*/
printdata(tp[i]);
i++;
printf(HEADER3);
while(getchar()!
continue;
getchar();
voidWrong()/*输出按键错误信息*/
\n\n\n\n\n********Error:
inputhaswrong!
pressanykeytocontinue**********\n"
while(getchar()!
continue;
getchar();
voidNofind()/*输出未查找次职工的信息*/
\n=====>
Notfindthisemployeerecord!
/*作用:
用于定位数组中符合要求的记录,并返回保存该记录的数组元素下标值
参数:
findmess[]保存要查找的具体内容;
nameornum[]保存按什么数组中查找*/
intLocate(RSDAtp[],intn,charfindmess[],charnameornum[])
inti=0;
if(strcmp(nameornum,"
num"
)==0)/*按职工编号查询*/
while(i<
n)
{
if(strcmp(tp[i].num,findmess)==0)/*若找到findmess值的职工编号*/
returni;
i++;
}
elseif(strcmp(nameornum,"
name"
)==0)/*按职工姓名查询*/
if(strcmp(tp[i].name,findmess)==0)/*若找到findmess值的姓名*/
return-1;
/*若未找到,返回一个整数-1*/
voidstringinput(char*t,intlens,char*notice)
charn[255];
do{
printf(notice);
/*显示提示信息*/
scanf("
%s"
n);
/*输入字符串*/
if(strlen(n)>
lens)printf("
\nexceedtherequiredlength!
\n"
/*进行长度校验,超过lens值重新输入*/
}while(strlen(n)>
lens);
strcpy(t,n);
/*讲输入的字符串复制到自复查un个t中*/
/*输入数值,<
=树枝*/
floatnumberinput(char*notice)
floatt=0.00;
do{
printf(notice);
scanf("
%f"
&
t);
/*输入如工资等数值型的值*/
if(t<
0)printf("
\nscoremust>
=0!
/*进行数值校验*/
}while(t<
0);
returnt;
intAdd(RSDAtp[],intn)
charch,num[10];
inti,flag=0;
system("
Disp(tp,n);
/*先打印出已有的职工工资信息*/
while
(1)/*一次可输入多条记录,直至输入职工编号为的记录才结束添加操作*/
while
(1)/*输入职工编号,保证该编号没有被使用,若输入编号为,则推出添加记录操作*/
stringinput(num,10,"
inputnumber(press'
0'
returnmenu):
"
/*格式化输入编号并校验*/
flag=0;
if(strcmp(num,"
0"
)==0)/*输入为,则推出添加草i做,返回主界面*/
{returnn;
i=0;
while(i<
n)/*查询改编号是否已经存在,若存在则要求重新输入一个未被占用的编号*/
{
if(strcmp(tp[i].num,num)==0)
{
flag=1;
break;
}
i++;
}
if(flag==1)/*提示用户是否重新输入*/
getchar();
printf("
==>
Thenumber%sisexisting,tryagain?
(y/n):
num);
scanf("
%c"
ch);
if(ch=='
y'
||ch=='
Y'
continue;
else
returnn;
else
{break;
strcpy(tp[n].num,num);
/*就爱那个字符串num复制到tp[].num中*/
stringinput(tp[n].name,15,"
Name:
tp[n].jbgz=numberinput("
jbgz:
/*输入并检验基本工资*/
tp[n].jj=numberinput("
jiangjin:
/*输入并检验奖金*/
tp[n].kk=numberinput("
koukuan:
/*输入并检验扣款*/
tp[n].yfgz=tp[n].jbgz+tp[n].jj-tp[n].kk;
/*计算应发工资*/
tp[n].sk=tp[n].yfgz*0.12;
/*计算税金,这里取应发工资的%*/
tp[n].sfgz=tp[n].yfgz-tp[n].sk;
/*计算实发工资*/
saveflag=1;
n++;
returnn;
/*按职工编号或姓名,查询记录*/
voidQur(RSDAtp[],intn)
intselect;
/*1:
按编号查,:
按姓名查,其他:
返回主界面*/
charsearchinput[20];
/*保存用户输入的查询内容*/
intp=0;
if(n<
=0)/*若数组为空*/
system("
Noemployeerecord!
system("
\n=====>
1Searchbynumber=====>
2Searchbyname\n"
pleasechoice[1,2]:
%d"
select);
if(select==1)/*按编号查询*/
stringinput(searchinput,10,"
inputtheexistingemployeenumber:
p=Locate(tp,n,searchinput,"
/*在数组tp中查找编号为searchinput值的元素,并返回该数组元素的下标值*/
if(p!
=-1)/*若找到该记录*/
printheader();
printdata(tp[p]);
printf(END);
pressanykeytoreturn"
Nofind();
getchar();
elseif(select==2)/*按姓名查询*/
stringinput(searchinput,15,"
inputtheexistingemp;
oyeename:
if(p!
=-1)
else
Wrong();
/*删除记录:
先找到保存该记录的数组元素的先标值,然后在数组中删除该数组元素*/
intDel(RSDAtp[],intn)
intsel;
charfindmess[20];
intp=0,i=0;
if(n<
=0)
system("
printf("
returnn;
system("
Disp(tp,n);
\n=====>
1Delectbynumber=====>
2Delectbyname\n"
pleasechioce[1,2]:
sel);
if(sel==1)
stringinput(findmess,10,"
p=Locate(tp,n,findmess,"
{
for(i=p+1;
i<
n;
i++)/*删除此记录,后面记录向前移*/
strcpy(tp[i-1].num,tp[i].num);
strcpy(tp[i-1].name,tp[i].name);
tp[i-1].jbgz=tp[i].jbgz;
tp[i-1].jj=tp[i].jj;
tp[i-1].kk=tp[i].kk;
tp[i-1].yfgz=tp[i].yfgz;
tp[i-1].jbgz=tp[i].sk;
tp[i-1].sfgz=tp[i].sfgz;
\n==>
deletesuccess!
n--;
saveflag=1;
elseif(sel==2)/*先按姓名查询到该记录所在的数组元素的下标值*/
stringinput(findmess,15,"
p=Locate(tp,n,findmess,"
if(p!
=1)
for(i=p+1;
{
strcpy(tp[i-1].num,tp[i].num);
}
Nofind();
returnn;
/*修改记录。
先按输入的职工编号查询到该记录,然后提示用户修改编号之外的值,编号不能修改*/
voidModify(RSDAtp[],intn)
charfindmess[20];
intp=0;
return;
modifyemployeerecorder"
stringinput(findmess,10,"
/*输入并检验该编号*/
/*查询到该数组,并返回下标值*/
=-1)/*若p!
=-1,表明已经找到该数组元素*/
Number:
%s,\n"
tp[p].num);
%s,"
tp[p].name);
stringinput(tp[p].name,15,"
inputnewname:
%8.2f,"
tp[p].jbgz);
tp[p].jbgz=numberinput("
tp[p].jj);
tp[p].jj=numberinput("
tp[p].kk);
tp[p].kk=numberinput("
tp[n].yfgz=tp[n].jbgz+tp[n].jj-tp[n].kk;
tp[n].sk+tp[n].yfgz*0.12;
tp[n].sfgz=tp[n].yfgz-tp[n].sk;
modifysuccess!
Disp(tp,n);
return;
/*插入记录:
按职工编号查询到要插入的数组元素的位置,然后在该编号之后插入一个新元组*/
intInsert(RSDAtp[],intn)
charch,num[10],s[10];
/*s[]保存插入点位置之前的编号,num[]保存输入的新记录的编号*/
RSDAnewinfo;
intflag=0,i=0,kkk=0;
Disp(tp,n);
while
(1)
stringinput(s,10,"
pleaseinputinsertlocationsftertheNumber:
i=0;
n)/*查询该编号是够存在,则进行插入之前的新记输入操作*/
if(strcmp(tp[i].num,s)==0){kkk=i;
flag=1;
break;
if(flag==1)
break;
Thenumber%sisnotexisting,tryagain?
s);
{continue;
{returnn;
/*以下新记录的输入操作与Add()相同*/
stringinput(num,10,"
inputnewemployeenumber:
i=0;
flag=0;
while(i<
n)/*查询该编号是否存在,flag=1表示该编号存在*/
if(strcmp(tp[i].num,num)==0){flag=1;
i++;
if(flag=1)
getchar();
Sorry,Thenumber%sisnotexisting,tryagain?
else
break;
strcpy(newinfo.num,num);
/*将字符串num复制到newinfo中*/
stringinput(newinfo.name,15,"
Name"
newinfo.jbgz=numberinput("
newinfo.jj=numberinput("
newinfo.kk=numberinput("
newinfo.yfgz=newinfo.jbgz+newin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 人事管理系统 源代码