职工工资管理系统.docx
- 文档编号:7910564
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:27
- 大小:175.86KB
职工工资管理系统.docx
《职工工资管理系统.docx》由会员分享,可在线阅读,更多相关《职工工资管理系统.docx(27页珍藏版)》请在冰豆网上搜索。
职工工资管理系统
课程设计报告
课程设计名称C语言课程设计
专业计算机科学与技术
班级4班
学号10030405
姓名康强
指导教师许艺枢
成绩
2012年7月10日
目录
一、设计任务与要求1
1.1设计任务与要求1
1.2选题目的与意义1
二、需求分析2
2.1用户需求2
2.2开发环境2
三、系统概要设计2
3.1系统总体设计2
3.2功能模块设计3
3.3各功能函数的设计3
四、详细设计9
4.1程序流程图9
4.2关键算法与技术实现11
五、测试运行12
5.1系统测试方案12
5.2运行结果分析14
六、设计体会15
主要参考文献15
附录16
一、设计任务与要求
1.1设计任务与要求
本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计语言(C)》课程后进行的一次全面的综合练习。
本课程设计的目的和任务:
1.巩固和加深学生对C语言课程的基本知识的理解和掌握
2.掌握C语言编程和程序调试的基本技能
3.利用C语言进行基本的软件设计
4.掌握书写程序设计说明文档的能力
5.提高运用C语言解决实际问题的能力
1.2选题目的与意义
随着高等学校的快速发展,高校规模越来越大,教职工的数量也越来越多,高校工资管理更加的复杂,而工资管理是一项琐碎、复杂而又十分细致的工作,工资计算、发放、核算的工作量很大,一般不允许出错,如果实行手工操作,每月发放工资须手工填制大量的表格,这就会耗费工作人员大量的时间和精力,计算机进行工资发放工作,不仅能够保证工资核算准确无误、快速输出,而且还可以利用计算机对有关工资的各种信息进行统计,服务于财务部门其他方面的核算和财务处理,同时计算机具有着手工管理所无法比拟的优点.例如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高人事工资资管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。
这就对高校工资管理提出了新的要求,用计算机管理系统来管理高校工资已经成为目前的趋势,使用计算机可以高速,快捷地完成以上工作。
在计算机联网后,数据在网上传递,可以实现数据共享,避免重复劳动,规范数据管理行为,从而提高了管理效率和水平。
高校工资管理系统便是以计算机为工具,通过对工资管理所需的信息管理,不仅把管理人员从繁琐的数据计算处理中解脱出来,而且优化了管理体系,使其高效化,简易化,智能化,也提高了透明度和互动性。
二、需求分析
2.1用户需求
编写该文档是为了分析人工管理高校工资的流程,把人工模式抽象为可在计算机上处理的自动模式,对高校工资的科学管理进行分析与总结,便于开发小组成员对系统整体功能的认识,通过该文档,确定了系统的目的和功能,以及管理的流程和方法,同时也为使用者提供参考。
2.2开发环境
MicrosoftVisualC++6.0、2008;TC等
三、系统概要设计
3.1系统总体设计
本系统具有职工的工资基本信息(职工号、姓名、应发工资、奖金、水电费、公积金、医疗保险、扣款合计、实发工资),能够根据需要添加、查询、修改、删除、统计并浏览职工的工资信息。
具体功能如下:
1.初始化信息(职工信息的输入,包括职工号、姓名、应发工资、奖金、水电费、公积金、医疗保险);
2.添加职工信息(继续添加职工的信息,要求职工号不重复);
3.根据职工号查询(完成按职工号查询指定职工的工资信息);
4.根据职工号修改(完成按职工号修改指定职工的工资信息);
5.根据职工号删除(完成按职工号删除指定职工的工资信息);
6.统计并浏览(完成扣款合计和实发工资的统计,并显示所有职工的工资信息);
7.退出(退出系统)。
(提示:
在使用字符界面的菜单编程时,需要清屏,可以使用system("cls")函数将屏幕清屏。
需要退出系统时,可以使用exit(0)函数退出。
需要暂停程序的执行时,可以使用system("pause")函数暂停。
使用这些函数时应包含"stdlib.h"系统函数头文件。
)
3.2功能模块设计
3.3各功能函数的设计
1、主函数
voidmain()//***************主函数,主界面**************
{intxz;
do
{system("cls");//清屏,清除屏幕上的所有信息
printf("\t\t*********************************************\n");
printf("\t\t********《工资管理系统》********\n");
printf("\t\t********1-----初始化信息********\n");
printf("\t\t********2-----添加职工信息********\n");
printf("\t\t********3-----根据职工号查询********\n");
printf("\t\t********4-----根据职工号修改********\n");
printf("\t\t********5-----根据职工号删除********\n");
printf("\t\t********6-----统计并浏览********\n");
printf("\t\t********7-----退出********\n");
printf("\t\t*********************************************\n");
printf("\t\t输入您的选择(1-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);
}
2、添加
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");
}
3、查询
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");
}
4、修改
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);
}
5、删除
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");
}
6、统计浏览
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");
}
四、详细设计
4.1程序流程图
1、主函数(main())
2、数据的录入和保存(input())
3、数据的删除(delete())
4、数据的修改(change())
5、数据的查找(find())
4.2关键算法与技术实现
voidmain()//***************主函数,主界面**************
{intxz;do
{system("cls");//清屏,清除屏幕上的所有信息
printf("\t\t*********************************************\n");
printf("\t\t********《工资管理系统》********\n");
printf("\t\t********1-----初始化信息********\n");
printf("\t\t********2-----添加职工信息********\n");
printf("\t\t********3-----根据职工号查询********\n");
printf("\t\t********4-----根据职工号修改********\n");
printf("\t\t********5-----根据职工号删除********\n");
printf("\t\t********6-----统计并浏览********\n");
printf("\t\t********7-----退出********\n");
printf("\t\t*********************************************\n");
printf("\t\t输入您的选择(1-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);}
五、测试运行
5.1系统测试方案
1.运行主界面如图5-1
显示,初始化、添加、查询、修改、删除、统计并浏览职工的工资信息
图5-1
2.添加职工如图5-2
可以添加职工的信息,如员工号、应发工资、奖金、水电费、公积金、医疗保险等信息
图5-2
3.查询职工信息如图5-3
按职工号查询指定职工的工资信息,可以查询员工号、应发工资、奖金、水电费、公积金、医疗保险等
图5-3
4.修改职工信息如图5-4
职工号修改指定职工的工资信息,可以修改如员工号、应发工资、奖金、水电费、公积金、医疗保险等
图5-4
5.统计浏览如图5-5
完成扣款合计和实发工资的统计,并显示所有职工的工资信息
图5-5
5.2运行结果分析
1、将软件进行初始化。
2、进入程序菜单,界面如图5-6
图5-6
界面显示的是“工资管理系统”,总的操作流程有7个方面:
①初始化信息;
②添加职工信息;
③根据职工号查询;
④根据职工号修改;
⑤根据职工号删除;
⑥统计并浏览);
⑦退出(退出系统)。
3、输入和存取职工信息:
选择菜单界面的第2个选择,按Enter键进入此选择界面,出现的界面如图5-7
图5-7
六、设计体会
这C语言实训总体来说收获很大。
通过一个星期的学习,巩固和提高了基本编程能力。
当然其中遇到过很多问题,当在自己的思考中把这些问题一一解决之后,才发现只有自己认真对待了,没有解决不了的问题。
就像一开始根本就没有一点思路,因为毕竟是第一次做这么一个大题目,但我们到处都有学习的机会,通过同学们的相互讨论和老师的教导,终于找到了自己的解决方法。
虽然我们的专业不是编程,但老师也说过,最主要的通过这一次机会来提高自己。
主要参考文献
[1]夏涛.《C语言程序设计》[M].北京:
人民邮电出版社.2007.
[2]谭浩强.《C程序设计(第三版)》[M].北京:
清华大学出版社.2006
[3]苏仕华.《数据结构课程设计》[M].北京:
机械工业出版社.
附录
#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=50
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 职工工资 管理 系统