c语言编写的工资管理系统.docx
- 文档编号:8942680
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:15
- 大小:17.29KB
c语言编写的工资管理系统.docx
《c语言编写的工资管理系统.docx》由会员分享,可在线阅读,更多相关《c语言编写的工资管理系统.docx(15页珍藏版)》请在冰点文库上搜索。
c语言编写的工资管理系统
/*程序名称:
工资管理系统*/
/*程序说明:
该系统在磁盘上储存了某单位上月全体员工的工资信息,对于每一位职工存储以下信息:
月份,职工编号,基本工资,津贴,岗贴,补贴,房贴,交通补贴,应发数,房租,储蓄,会费,个人所得税,应扣数,实发数。
个人所得税计算方法设定为:
工资少于800元为0,800-1000元的部分为5%,1000-5000元的部分为10%,5000元以上的部分为20%。
该系统功能如下:
1)创建存储职工工资信息的存储系统。
2)添加职工的工资信息(增加新职工时用)
3)删除某职工的工资信息(职工离职或者死亡时用)
4)修改某职工的部分工资信息(当月开始增加或减少某些项工资或扣款数变化)
5)输出指定编号职工的工资信息(查询用)
6)输出当月全体职工的工资信息(发工资用)*/
/*编写心得:
2006年9月26日19:
30-23:
00共计3小时30分钟。
由于时间仓促,没有对代码进行优化设计。
对于主要的结构体也是粗粗设计了一下。
在存储上只采用了结构体数组,没用运用到二叉树等复杂的数据结构,有点遗憾。
主程序采用模块化设计,用独立的函数把功能分解开来,便于调试和扩展。
假如用C++就可以多做几个构造函数,可能会更方便点。
不过最近在学JAVA,不敢乱用C++了,怕到时候知识搞混了。
感觉稍微麻烦一点的地方是文件的输入输出部分,因为一般的书上这一章都比较靠后,老师上课也就简单的带过的,格式有点忘记了。
个人感觉现在靠C语言来做数据库不是很合适,50个元素的数组应该够了吧。
反正只要弄清那些常用函数,还有怎么一个I/O方式就可以了。
让偶想起了教偶C语言的班主任老童,想起了偶美好的青春,以及那些为了听课和MM们一大早抢前排坐位的幸福日子...
总得来说还是比较轻松的,就是项目字段太多,写写麻烦(谁叫偶打字不快啊^_^)
BY雨田心梦
*/
/*为了调用FILE等函数*/
#include"stdio.h"
#include"conio.h"
/*为了调用atof()等函数*/
#include"stdlib.h"
#defineTRUE1
/*结构体声明 */
structzhigong
{
intmonth;
floatid;
floatjbgz;
floatjt;
floatgt;
floatbt;
floatft;
floatjtbt;
floatyfs;
floatfz;
floatcx;
floathf;
floatgrsds;
floatyks;
floatsfs;
};
/*建立50个元素的结构体数组 */
structzhigongzg[50];
/*建立结构体变量 */
structzhigongzgone;
/*职员列表中的数量 */
intn=0;
/*获得字符串 */
charnumstr[50];
main()
{
charch;
n=0;
/*rfile(); 使用后启动程序时系统会自动加载纪录*/
while(TRUE)
{
printf("\n");
printf("===========================================\n");
printf("Welcome!
Pleasechoice(1-6):
+\n");
printf("1.Addoneinfomation +\n");
printf("2.Deleteoneinfomation +\n");
printf("3.Modifyoneinfomation +\n");
printf("4.Printoutbyid +\n");
printf("5.Printoutall +\n");
printf("6.Savedate +\n");
printf("7.Loaddate +\n");
printf("8.Exit +\n");
printf("===========================================\n");
ch=getche();
switch(ch)
{
case'1':
addone();break;
case'2':
delone();break;
case'3':
modone();break;
case'4':
idone();break;
case'5':
listall();break;
case'6':
wfile();break;
case'7':
rfile();break;
case'8':
return;
default:
printf("Sorry,pleasechoiceagain!
\n");
}
}
}
/*计算个人所得税*/
floattgrsds(floatm)
{
floatsui1,sui2,sui3;
floattmp;
sui1=0;sui2=0;sui3=0;
if(m>=5000)
{
sui1=(m-5000)*0.2;
sui2=(5000-1000)*0.1;
sui3=(1000-800)*0.05;
}
elseif(m>=1000&&m<5000)
{
sui2=(m-1000)*0.1;
sui3=(1000-800)*0.05;
}
elseif(m>=800&&m<1000)
{
sui3=(m-800)*0.05;
}
tmp=sui1+sui2+sui3;
return(tmp);
}
/*添加职工的工资信息 */
addone(void)
{
printf("\n");
printf("RecordNO.%d\n",n+1);
printf("Pleaseputinmonth:
\n");
gets(numstr);
zg[n].month=atoi(numstr);
printf("Pleaseputinzhigongbianhao:
\n");
gets(numstr);
zg[n].id=atof(numstr);
printf("Pleaseputinjibengongzi:
\n");
gets(numstr);
zg[n].jbgz=atof(numstr);
printf("Pleaseputinjintie:
\n");
gets(numstr);
zg[n].jt=atof(numstr);
printf("Pleaseputingangtie:
\n");
gets(numstr);
zg[n].gt=atof(numstr);
printf("Pleaseputinbutie:
\n");
gets(numstr);
zg[n].bt=atof(numstr);
printf("Pleaseputinfangtie:
\n");
gets(numstr);
zg[n].ft=atof(numstr);
printf("Pleaseputinjiaotongbutie:
\n");
gets(numstr);
zg[n].jtbt=atof(numstr);
zg[n].yfs=(zg[n].jbgz)+(zg[n].jt)+(zg[n].gt)+(zg[n].bt)+(zg[n].ft)+(zg[n].jtbt);
printf("Pleaseputinfangzu:
\n");
gets(numstr);
zg[n].fz=atof(numstr);
printf("Pleaseputinchuxu:
\n");
gets(numstr);
zg[n].cx=atof(numstr);
printf("Pleaseputinhuifei:
\n");
gets(numstr);
zg[n].hf=atof(numstr);
zg[n].grsds=tgrsds(zg[n].yfs);
zg[n].yks=(zg[n].fz)+(zg[n].cx)+(zg[n].hf)+(zg[n].grsds);
zg[n].sfs=(zg[n].yfs)-(zg[n].yks);
n++;
}
/*删除个人纪录*/
delone(void)
{
structzhigongtmp[50];
floatzhigongid;
intj,k;
intflagfind;
flagfind=0;
k=0;
printf("\nPleaseputinzhigongbianhao:
\n");
gets(numstr);
zhigongid=atof(numstr);
for(j=0;j<=n;j++)
{
if(zg[j].id==zhigongid)
{
flagfind=1;
}
else
{
tmp[k]=zg[j];
k++;
}
}
if(flagfind==1)
{
for(j=0;j<=(n-1);j++)
{
zg[j]=tmp[j];
}
printf("\nRecorddeleted!
\n");
n=n-1;
}
else
{
printf("\nRecordnotfound!
\n");
}
return;
}
/*修改个人纪录*/
modone(void)
{
floatzhigongid;
intj;
intflagfind;
flagfind=0;
printf("\nPleaseputinzhigongbianhao:
\n");
gets(numstr);
zhigongid=atof(numstr);
for(j=0;j<=n;j++)
{
if(zg[j].id==zhigongid)
{
printf("NO.:
%d\n",j);
printf("month:
%d\n",zg[j].month);
printf("zhigongbianhao%10.0f\n",zg[j].id);
printf("jibengongzi:
%10.2f\n",zg[j].jbgz);
printf("Pleaseputinjibengongzi:
\n");
gets(numstr);
zg[j].jbgz=atof(numstr);
printf("jintie:
%10.2f\n",zg[j].jt);
printf("Pleaseputinjintie:
\n");
gets(numstr);
zg[j].jt=atof(numstr);
printf("gangtie:
%10.2f\n",zg[j].gt);
printf("Pleaseputingangtie:
\n");
gets(numstr);
zg[j].gt=atof(numstr);
printf("butie:
%10.2f\n",zg[j].bt);
printf("Pleaseputinbutie:
\n");
gets(numstr);
zg[j].bt=atof(numstr);
printf("fangtie:
%10.2f\n",zg[j].ft);
printf("Pleaseputinfangtie:
\n");
gets(numstr);
zg[j].ft=atof(numstr);
printf("jiaotongbutie:
%10.2f\n",zg[j].jtbt);
printf("Pleaseputinjiaotongbutie:
\n");
gets(numstr);
zg[j].jtbt=atof(numstr);
zg[j].yfs=(zg[j].jbgz)+(zg[j].jt)+(zg[j].gt)+(zg[j].bt)+(zg[j].ft)+(zg[j].jtbt);
printf("fangzu:
%10.2f\n",zg[j].fz);
printf("Pleaseputinfangzu:
\n");
gets(numstr);
zg[j].fz=atof(numstr);
printf("chuxu:
%10.2f\n",zg[j].cx);
printf("Pleaseputinchuxu:
\n");
gets(numstr);
zg[j].cx=atof(numstr);
printf("huifei:
%10.2f\n",zg[j].hf);
printf("Pleaseputinhuifei:
\n");
gets(numstr);
zg[j].hf=atof(numstr);
zg[j].grsds=tgrsds(zg[j].yfs);
zg[j].yks=(zg[j].fz)+(zg[j].cx)+(zg[j].hf)+(zg[j].grsds);
zg[j].sfs=(zg[j].yfs)-(zg[j].yks);
flagfind=1;
}
else
{
flagfind=0;
}
}
if(flagfind==0)printf("\nCannotfindrecord!
\n");
return;
}
/*随机从内存中查找纪录根据id*/
idone(void)
{
floatzhigongid;
intj;
intflagfind;
flagfind=0;
printf("\nPleaseputinzhigongbianhao:
\n");
gets(numstr);
zhigongid=atof(numstr);
for(j=0;j<=n;j++)
{
if(zg[j].id==zhigongid)
{
printf("\n%drecordfound!
\n|",j+1);
printf("month:
%d|",zg[j].month);
printf("zhigongbianhao%10.0f|",zg[j].id);
printf("jibengongzi:
%10.2f|",zg[j].jbgz);
printf("jintie:
%10.2f|",zg[j].jt);
printf("gangtie:
%10.2f|",zg[j].gt);
printf("butie:
%10.2f|",zg[j].bt);
printf("fangtie:
%10.2f|",zg[j].ft);
printf("jiaotongbutie:
%10.2f|",zg[j].jtbt);
printf("yingfashu:
%10.2f|",zg[j].yfs);
printf("fangzu:
%10.2f|",zg[j].fz);
printf("chuxu:
%10.2f|",zg[j].cx);
printf("huifei:
%10.2f|",zg[j].hf);
printf("gerensuodeshui:
%10.2f|",zg[j].grsds);
printf("yingkoushu:
%10.2f|",zg[j].yks);
printf("shifashu:
%10.2f\n",zg[j].sfs);
flagfind=1;
}
else
{
flagfind=0;
}
}
if(flagfind==0)printf("\nCannotfindrecord!
\n");
return;
}
/*输出当月全体职工的工资信息 */
listall(void)
{
intj;
if(n<1)
{
printf("\nNorecord!
\n");
}
else
{
for(j=0;j { printf("\nNO: %d|",j+1); printf("month: %d|",zg[j].month); printf("zhigongbianhao%10.0f|",zg[j].id); printf("jibengongzi: %10.2f|",zg[j].jbgz); printf("jintie: %10.2f|",zg[j].jt); printf("gangtie: %10.2f|",zg[j].gt); printf("butie: %10.2f|",zg[j].bt); printf("fangtie: %10.2f|",zg[j].ft); printf("jiaotongbutie: %10.2f|",zg[j].jtbt); printf("yingfashu: %10.2f|",zg[j].yfs); printf("fangzu: %10.2f|",zg[j].fz); printf("chuxu: %10.2f|",zg[j].cx); printf("huifei: %10.2f|",zg[j].hf); printf("gerensuodeshui: %10.2f|",zg[j].grsds); printf("yingkoushu: %10.2f|",zg[j].yks); printf("shifashu: %10.2f\n",zg[j].sfs); } } } /*把所有纪录从内存中写到磁盘gongzi.rec中 */ wfile(void) { FILE*fptr; printf("\nSavingdate...\n"); if(n<1) { printf("\nNorecord! \n"); return; } if((fptr=fopen("gongzi.rec","wb"))==NULL) printf("Cannotopenfilegongzi.rec! \n"); else { fwrite(zg,sizeof(zg[0]),n,fptr); fclose(fptr); printf("Fileof%drecordswritten! \n",n); } } /*把所有纪录从磁盘gongzi.rec读到数组gz中*/ rfile(void) { FILE*fptr; n=0; printf("\nLoadingdate...\n"); if((fptr=fopen("gongzi.rec","rb"))==NULL) printf("Cannotopenfilegongzi.rec! \n"); else { while(fread(&zg[n],sizeof(zg[n]),1,fptr)==1) n++; fclose(fptr); printf("Total%drecordsread! \n",n); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 编写 工资管理 系统