职工工资管理系统.docx
- 文档编号:7024036
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:13
- 大小:117.41KB
职工工资管理系统.docx
《职工工资管理系统.docx》由会员分享,可在线阅读,更多相关《职工工资管理系统.docx(13页珍藏版)》请在冰豆网上搜索。
职工工资管理系统
设计人:
蔡晓春
指导老师:
周杨萍
时间:
第13周(2011.11.28~2011.12.2)
一、实训目的
C语言程序设计实训是C语言程序设计课程教学的重要组成部分。
本课程通过提供学生一个实训练习的机会,巩固、提高学生的基本编程能力,同时通过训练编写综合程序的方式,提高学生分析问题和解决问题的能力,为后续课程的学习打下良好的基础。
二、实训题目和程序清单(包括程序运行截图界面)
(一)实训题目:
职工工资管理系统。
参考运行界面如下:
具体要求:
出现上述界面后,用户可以通过输入1-6之间的数字完成所提示的功能。
循环往复,直到输入7,退出系统。
本系统具有职工的工资基本信息(职工号、姓名、应发工资、奖金、水电费、公积金、医疗保险、扣款合计、实发工资),能够根据需要追加、查询、修改、删除、统计并浏览职工的工资信息。
具体功能如下:
1.初始化信息(职工信息的输入,包括职工号、姓名、应发工资、奖金、水电费、公积金、医疗保险);
2.追加职工信息(继续添加职工的信息,要求职工号不重复);
3.根据职工号查询(完成按职工号查询指定职工的工资信息);
4.根据职工号修改(完成按职工号修改指定职工的工资信息);
5.根据职工号删除(完成按职工号删除指定职工的工资信息);
6.统计并浏览(完成扣款合计和实发工资的统计,并显示所有职工的工资信息);
7.退出(退出系统)。
(提示:
在使用字符界面的菜单编程时,需要清屏,可以使用system("cls")函数将屏幕清屏。
需要退出系统时,可以使用exit(0)函数退出。
需要暂停程序的执行时,可以使用system("pause")函数暂停。
使用这些函数时应包含"stdlib.h"系统函数头文件。
)
(二)
程序清单:
#include
#include
#include
#defineN100//定义常量n的值为
structworker//定义结构体
{
intzgh;
charxm[10];
floatyfgz;
floatjj;
floatsdf;
floatgjj;
floatylbx;
floatkkhj;
floatsfgz;
}work[N];
intcount=1;//计数
voidcsh()//***************初始化信息***************
{
/*对第一位进行初始化*/
work[1].zgh=001;
strcpy(work[1].xm,"aa");
work[1].yfgz=1000;
work[1].jj=500;
work[1].sdf=200;
work[1].gjj=100;
work[1].ylbx=98;
work[1].kkhj=work[1].sdf+work[1].gjj+work[1].ylbx;
work[1].sfgz=work[1].yfgz+work[1].jj-work[1].kkhj;
/****对第二位进行初始化****/
work[2].zgh=002;
strcpy(work[2].xm,"bb");
work[2].yfgz=2000;
work[2].jj=300;
work[2].sdf=200;
work[2].gjj=100;
work[2].ylbx=90;
work[2].kkhj=work[2].sdf+work[2].gjj+work[2].ylbx;
work[2].sfgz=work[2].yfgz+work[2].jj-work[2].kkhj;
/****对第三位进行初始化****/
work[3].zgh=003;
strcpy(work[3].xm,"cc");
work[3].yfgz=1000;
work[3].jj=500;
work[3].sdf=200;
work[3].gjj=100;
work[3].ylbx=98;
work[3].kkhj=work[3].sdf+work[3].gjj+work[3].ylbx;
work[3].sfgz=work[3].yfgz+work[3].jj-work[3].kkhj;
/****对第四位进行初始化****/
work[4].zgh=004;
strcpy(work[4].xm,"dd");
work[4].yfgz=1000;
work[4].jj=500;
work[4].sdf=200;
work[4].gjj=100;
work[4].ylbx=98;
work[4].kkhj=work[4].sdf+work[4].gjj+work[4].ylbx;
work[4].sfgz=work[4].yfgz+work[4].jj-work[4].kkhj;
count=5;
printf("..................初始化成功....................\n");
system("pause");
}
voidzjxx()//***************追加职工信息***************
{
chari;
system("cls");
printf("请输入第%d个职工信息\n",count);
printf("输入职工号:
\n");
scanf("%d",&work[count].zgh);
printf("输入姓名:
\n");
scanf("%s",work[count].xm);
printf("输入应发工资:
\n");
scanf("%f",&work[count].yfgz);
printf("输入奖金:
\n");
scanf("%f",&work[count].jj);
printf("输入水电费:
\n");
scanf("%f",&work[count].sdf);
printf("输入公积金:
\n");
scanf("%f",&work[count].gjj);
printf("输入医疗保险:
\n");
scanf("%f",&work[count].ylbx);
work[count].kkhj=work[count].sdf+work[count].gjj+work[count].ylbx;
work[count].sfgz=work[count].yfgz+work[count].jj-work[count].kkhj;
count++;
printf("还需要再添加吗?
(Y/N)\n");
scanf("\n%c",&i);
if(i=='y'||i=='Y')
zjxx();
else
return;
system("pause");
}
voidcx()//***************根据职工号查询***************
{
inti,zgh;
printf("请输入要查询的职工号\n");
scanf("%d",&zgh);
for(i=1;i<=count;i++)
{
if(work[i].zgh==zgh)break;
}
if(i<=count)
{
printf("....................职工的所有信息...........................\n");
printf("职工号:
%d\n姓名:
%s\n应发工资:
%.2f\n奖金:
%.2f\n水电费:
%.2f\n公积金:
%.2f\n医疗保险:
%.2f\n扣款合计:
%.2f\n实发工资:
%.2f\n",
work[i].zgh,work[i].xm,work[i].yfgz,work[i].jj,work[i].sdf,work[i].gjj,
work[i].ylbx,work[i].kkhj,work[i].sfgz);
}
else
printf("sorry,meiyouciren");
system("pause");
}
voidxg()//***************根据职工号修改***************
{
inti,zgh;
printf("请输入要修改的职工号\n");
scanf("%d",&zgh);
for(i=1;i<=count;i++)
{
if(work[i].zgh==zgh)break;
}
if(i<=count)
{
printf("....................职工的所有信息...........................\n");
printf("职工号:
%d\n姓名:
%s\n应发工资:
%.2f\n奖金:
%.2f\n水电费:
%.2f\n公积金:
%.2f\n医疗保险:
%.2f\n扣款合计:
%.2f\n实发工资:
%.2f\n",
work[i].zgh,work[i].xm,work[i].yfgz,work[i].jj,work[i].sdf,work[i].gjj,
work[i].ylbx,work[i].kkhj,work[i].sfgz);
}
else
{
printf("sorry,meiyouciren");
}
printf("请重新输入姓名");
scanf("%s",&work[i].xm);
printf("请重新输入应发工资:
\n");
scanf("%f",&work[i].yfgz);
printf("请重新输入奖金:
\n");
scanf("%f",&work[i].jj);
printf("请重新输入水电费:
\n");
scanf("%f",&work[i].sdf);
printf("请重新输入公积金:
\n");
scanf("%f",&work[i].gjj);
printf("请重新输入医疗保险:
\n");
scanf("%f",&work[i].ylbx);
}
voidsc()//***************根据职工号删除***************
{
inti,zgh;
chars;
printf("请输入要删除的员工所在的职工号");
scanf("%d",&zgh);
for(i=1;i<=count;i++)
{
if(work[i].zgh==zgh)break;
}
if(i<=count)
{
printf("....................职工的所有信息...........................\n");
printf("职工号:
%d\n姓名:
%s\n应发工资:
%.2f\n奖金:
%.2f\n水电费:
%.2f\n公积金:
%.2f\n医疗保险:
%.2f\n扣款合计:
%.2f\n实发工资:
%.2f\n",
work[i].zgh,work[i].xm,work[i].yfgz,work[i].jj,work[i].sdf,work[i].gjj,
work[i].ylbx,work[i].kkhj,work[i].sfgz);
printf("确定要删除吗?
请输入Y/N确认\n");
setbuf(stdin,NULL);//清除输入缓冲区数据(回车)
scanf("%c",&s);
if(s=='Y'||s=='y')
{
for(i=0;i<=count;i++)
{
work[i].zgh=work[i+1].zgh;
strcpy(work[i].xm,work[i+1].xm);
work[i].yfgz=work[i+1].yfgz;
work[i].jj=work[i+1].jj;
work[i].sdf=work[i+1].sdf;
work[i].gjj=work[i+1].gjj;
work[i].ylbx=work[i+1].ylbx;
work[i].kkhj=work[i+1].kkhj;
work[i].sfgz=work[i+1].sfgz;
}
work[i].zgh=0;
strcpy(work[i].xm,"0");
work[i].yfgz=0;
work[i].jj=0;
work[i].sdf=0;
work[i].gjj=0;
work[i].ylbx=0;
work[i].kkhj=0;
work[i].sfgz=0;
count--;
printf("所选信息已删除");
}
}
else
printf("sorry!
meiyouciren");
system("pause");
}
voidtjll()//***************统计浏览*****************
{
inti;
floatyfgz=0,jj=0,sdf=0,gjj=0,ylbx=0,kkhj=0,sfgz=0;
system("cls");
printf("职工号姓名应发工资奖金水电费公积金医疗保险扣款合计实发工资\n");
printf("--------------------------------------------------------------------------\n");
for(i=1;i<=count;i++)
{
printf("%d%s%.2f%.2f%.2f%.2f%.2f%.2f%.2f\n",work[i].zgh,
work[i].xm,work[i].yfgz,work[i].jj,work[i].sdf,work[i].gjj,
work[i].ylbx,work[i].kkhj,work[i].sfgz);
printf("------------------------------------------------------------------\n");
yfgz=yfgz+work[i].yfgz;
jj=jj+work[i].jj;
sdf=sdf+work[i].sdf;
gjj=gjj+work[i].gjj;
ylbx=ylbx+work[i].ylbx;
}
kkhj=sdf+gjj+ylbx;
sfgz=yfgz+jj-kkhj;
printf("汇总:
职工人数%d\n",count-1);
printf("应发工资%.2f\n",yfgz);
printf("奖金%.2f\n",jj);
printf("水电费%.2f\n",sdf);
printf("公积金%.2f\n",gjj);
printf("医疗保险%.2f\n",ylbx);
printf("------------------------\n");
printf("扣款合计%.2f\n",kkhj);
printf("实发工资%.2f\n",sfgz);
system("pause");
}
voidmain()//***************主函数,主界面**************
{intxz;
do
{system("cls");//清屏,清除屏幕上的所有信息
printf("********《职工工资管理系统》制作人:
********\n");
printf("1-----初始化信息\n");
printf("2-----追加职工信息\n");
printf("3-----根据职工号查询\n");
printf("4-----根据职工号修改\n");
printf("5-----根据职工号删除\n");
printf("6-----统计并浏览\n");
printf("7-----退出\n");
printf("**********************************************\n");
printf("输入您的选择(-7):
");
scanf("%d",&xz);
switch(xz)
{case1:
csh();break;//执行子函数csh(完成初始化功能)
case2:
zjxx();break;//执行子函数zjxx(完成追加职工信息)
case3:
cx();break;//执行子函数cx(完成根据职工号查询)
case4:
xg();break;//执行子函数xg(完成根据职工号修改)
case5:
sc();break;//执行子函数sc(完成根据职工号删除)
case6:
tjll();break;//执行子函数tjll(完成统计并浏览)
case7:
printf("\n-----------谢谢,欢迎下次光临!
----------\n\n");
default:
exit(0);//退出系统,exit(0)函数功能是退出程序。
}
}
while
(1);
}
程序运行界面
1.运行主界面:
2追加职工
3查询职工信息:
4修改职工信息:
5统计浏览:
三、实训心得体会
这C语言实训总体来说收获很大。
通过一个星期的学习,巩固和提高了基本编程能力。
当然其中遇到过很多问题,当在自己的思考中把这些问题一一解决之后,才发现只有自己认真对待了,没有解决不了的问题。
就像一开始根本就没有一点思路,因为毕竟是第一次做这么一个大题目,但我们到处都有学习的机会,通过同学们的相互讨论和老师的教导,终于找到了自己的解决方法。
虽然我们的专业不是编程,但老师也说过,最主要的通过这一次机会来提高自己。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 职工工资 管理 系统