C课程设计职工工资管理说明书正文.docx
《C课程设计职工工资管理说明书正文.docx》由会员分享,可在线阅读,更多相关《C课程设计职工工资管理说明书正文.docx(17页珍藏版)》请在冰豆网上搜索。
C课程设计职工工资管理说明书正文
1.引言
1.1如何解决职工工资的分发问题
现如今我们进入了二十一世纪,信息技术越趋变为人们生活中不可缺少的抽象资源!
大公司人员众多,工资分发问题艰难,而编程人员专为其设计的职工工资管理系统解决了这一难题!
网络化就是通过网络将人们联系在一起,一起解决问题,一起分享资源!
将复杂的问题分解开,然后组合在一起!
1.2国内外研究的现状
国外在发展网络的时间比我们早,也比我们快!
而我们作为发展迅速的发展中国家,我们的人力资源丰富,而且出现不少的优秀人才,为我国的网络事业做出了巨大的贡献!
因而我们有信心且有实力追上他们且赶过他们!
1.3任务与分析
本次课程的主要任务是编出一个程序来解决日常生活中一些问题!
我们将要编的程序是一个关于如何解决一些大公司中职工工资分发系统!
在大公司中人员多,资金数量大,需要一个简单,容易的方法来处理工资分发问题,现在是信息时代,不在像以前了体力劳动为主,现在要用脑解决问题!
我们将用我大一学的知识来解决问题!
如:
链表,结构数组,以及函数!
根据其不通的功能一起来解决问题!
2.程序的主要功能
2.1职工工资信息录入功能
添加职工的基本信息:
如其编号,姓名,每月固定工资,其它浮动工资,应该扣除的杂费!
2.2职工工资信息浏览
进入职工工资管理系统中按照菜单上的提示可以浏览职工信息及输出。
2.3职工工资信息删除
在职工工资管理系统可以对职工信息删除!
2.4查询和排序功能
通过查找输入编号可以查询任意职工的全部信息,还可以进行排序功能!
3.系统设计
系统总体框架图如图
4.模块分析及说明
4.1主程序模块
这是主控制模块它调用,修改职工工资信息模块.
其原代码如下:
voidmain()
{
charch;
while
(1)
{
menu();//显示菜单
ch=getchar();//选择菜单
if(ch=='0')break;
switch(ch)//判断功能项
{
case'1':
input();break;
case'2':
print();break;
case'3':
clean();break;
case'4':
save();break;
case'5':
search();break;
case'6':
order();break;
case'0':
break;
}
}
printf("\n欢迎使用!
!
!
\n");
}
4.2菜单模块
包括对职工工资及本人信息的编辑,并调用其它功能模块:
其原代码如下:
voidmenu()
{
system("cls");
printf("\n\n\n\n\n\n\n");
printf("\t\t\t\t*主菜单选项*\n\n");
printf("\t\t\t\t1:
创建工资档案\n");
printf("\t\t\t\t2:
输出工资信息\n");
printf("\t\t\t\t3:
删除工资信息\n");
printf("\t\t\t\t4:
保存信息\n");
printf("\t\t\t\t5:
查找工资信息\n");
printf("\t\t\t\t6:
信息列表排序\n");
printf("\t\t\t\t0:
退出\n");
printf("\n\n\n\n\n\n\n\n");
}
4.3输入模块
输入职工的基本信息!
包括工资,编号姓名等!
!
voidinput()
{
inti;
FILE*fp;
if((fp=fopen("sta_dat","wb"))==NULL){printf("can'topenfile!
\n");exit(0);}
printf("NOnamebu_mgu_dfu_dbu_tshui_fbao_xdai_j\n");
for(i=0;i{
scanf("%d",&staf[i].num);
scanf("%s",staf[i].name);
scanf("%s",staf[i].bu_m);
scanf("%d%d%d",&staf[i].gu_d,&staf[i].fu_d,&staf[i].bu_t);
scanf("%d%d%d",&staf[i].shui_f,&staf[i].bao_x,&staf[i].dai_j);
fwrite(&staf[i],sizeof(structstaff),1,fp);//将成绩信息写入文件
}
}
4.4输出模块
输出职工的基本信息!
包括工资,编号姓名等!
!
//职工信息输出:
voidprint()
{
inti;
printf("职工信息输出:
\n");
FILE*fp;
if((fp=fopen("sta_dat","rb"))==NULL)
{
printf("cannotopenfile\n");
return;
}
for(i=0;ifread(&staf[i],sizeof(structstaff),1,fp);
fclose(fp);
printf("NOnamebu_mgu_dfu_dbu_tying_fshui_fbao_xdai_jkou_kshi_f\n");
for(i=0;i{
printf("%d%s%s%d%d%d%d%d%d%d%d%d\n",
staf[i].num,staf[i].name,
staf[i].bu_m,staf[i].gu_d,staf[i].fu_d,staf[i].bu_t,
staf[i].gu_d+staf[i].fu_d+staf[i].bu_t,
staf[i].shui_f,staf[i].bao_x,staf[i].dai_j,
staf[i].shui_f+staf[i].bao_x+staf[i].dai_j,
staf[i].gu_d+staf[i].fu_d+staf[i].bu_t-staf[i].shui_f-staf[i].bao_x-staf[i].dai_j);
}
getch();
}
4.5删除文件
将信息删除
其源码如下:
//职工信息删除:
voidclean()
{FILE*fp;
inti,j,m,n=0;
printf("职工信息删除:
\n");
printf("删除的数m=:
\n");
scanf("%d",&m);
if((fp=fopen("sta_dat","rb"))==NULL)
{
printf("cannotopenfile\n");
return;
}
for(i=0;ifread(&staf[i],sizeof(structstaff),1,fp);
fclose(fp);
for(i=0;i{
if(m!
=staf[i].num)
n=1;
else
{n=0;break;}
}
if(n==0)
{
for(j=i;jstaf[j]=staf[j+1];
printf("NOnamebu_mgu_dfu_dbu_tying_fshui_fbao_xdai_jkou_kshi_f\n");
for(i=0;iprintf("%d%s%s%d%d%d%d%d%d%d%d%d\n",
staf[i].num,staf[i].name,
staf[i].bu_m,staf[i].gu_d,staf[i].fu_d,staf[i].bu_t,
staf[i].gu_d+staf[i].fu_d+staf[i].bu_t,
staf[i].shui_f,staf[i].bao_x,staf[i].dai_j,
staf[i].shui_f+staf[i].bao_x+staf[i].dai_j,
staf[i].gu_d+staf[i].fu_d+staf[i].bu_t-staf[i].shui_f-staf[i].bao_x-staf[i].dai_j);
}
else
printf("connotfound!
");getch();
}
4.6保存文件
将文件保存。
//职工信息存盘:
voidsave()
{
FILE*fp;
inti;
if((fp=fopen("sta.dat","wb"))==NULL)
{
printf("cannotopenfile\n");
return;
}
for(i=1;iif(fwrite(&staf[i],sizeof(structstaff),1,fp)!
=1)
printf("filewriteerror\n");
fclose(fp);
}
4.7查找模块
流程图如下:
源码如下:
//职工信息查找:
voidsearch()
{printf("职工信息查找:
\n");
FILE*fp;
inti,m,n=0;
printf("查找的数m=:
\n");
scanf("%d",&m);
if((fp=fopen("sta_dat","rb"))==NULL)
{
printf("cannotopenfile\n");
return;
}
for(i=1;ifread(&staf[i],sizeof(structstaff),1,fp);
fclose(fp);
for(i=1;i{if(m!
=staf[i].num)
n=1;
else
{n=0;break;}
}
if(n==0)
{printf("NOnamebu_mgu_dfu_dbu_tying_fshui_fbao_xdai_jkou_kshi_f\n");
printf("%d%s%s%d%d%d%d%d%d%d%d%d\n",
staf[i].num,staf[i].name,
staf[i].bu_m,staf[i].gu_d,staf[i].fu_d,staf[i].bu_t,
staf[i].gu_d+staf[i].fu_d+staf[i].bu_t,
staf[i].shui_f,staf[i].bao_x,staf[i].dai_j,
staf[i].shui_f+staf[i].bao_x+staf[i].dai_j,
staf[i].gu_d+staf[i].fu_d+staf[i].bu_t-staf[i].shui_f-staf[i].bao_x-staf[i].dai_j);
}
else
printf("cannotfound!
");getch();
}
4.8查找模块
4.9排序模块
源码如下:
//职工信息排序:
voidorder()
{
printf("职工信息排序:
\n");
inti,j,k;
FILE*fp;
structstaffsta;
if((fp=fopen("sta.dat","rb"))==NULL)
{
printf("cannotopenfile\n");return;
}
for(i=1;i{fread(&staf[i],sizeof(structstaff),1,fp);
staf[i].shi_f=staf[i].gu_d+staf[i].fu_d+staf[i].bu_t-staf[i].shui_f-staf[i].bao_x-staf[i].dai_j;}
fclose(fp);
for(i=1;i{
k=i;
for(j=i+1;jif(staf[k].shi_f>staf[j].shi_f)
k=j;
if(k!
=i)
{
sta=staf[i];
staf[i]=staf[k];
staf[k]=sta;
}
}
printf("NOnamebu_mgu_dfu_dbu_tying_fshui_fbao_xdai_jkou_kshi_f\n");
for(i=1;iprintf("%d%s%s%d%d%d%d%d%d%d%d%d\n",
staf[i].num,staf[i].name,
staf[i].bu_m,staf[i].gu_d,staf[i].fu_d,staf[i].bu_t,
staf[i].gu_d+staf[i].fu_d+staf[i].bu_t,
staf[i].shui_f,staf[i].bao_x,staf[i].dai_j,
staf[i].shui_f+staf[i].bao_x+staf[i].dai_j,
staf[i].gu_d+staf[i].fu_d+staf[i].bu_t-staf[i].shui_f-staf[i].bao_x-staf[i].dai_j);
getch();
}
5.比较有特色的函数
1、define宏观定义函数,让复杂而多的说明性东西简单化!
2、对结构体函数也得到很好的应用,使较大的程规模集中放到一个头文件中,这样便于装配,便于修改,便于使用。
3、文件的使用程序更加清晰,能够提高程序的运行。
6.程序测试
如下图所展示:
图6-1主界面
图6-2输入信息
图6-3输出信息
图6-4删除信息
图6-5查找信息
图6-6排序信息
图6-7退出
结论
该程序能进行职工信息的输入和输出,删除,查找,排序等功能,使职工信息明确,便于查看。
通过这次课程设计,我了解了很多实用的东西,并进一步掌握了C语言进行软件设计的过程,为以后用各种语言编辑软件指引了方向。
设计出此软件也让我明白要有坚持不懈的精神和积极进取的动力,面对设计中的各种困难一定要查阅资料和询问老师,并且合作是不可缺少的,团队合作的力量超乎我们的想象,设计软件也是一个学习的过程,一步一步地提高自己的能力及知识面。
参考文献
[1]谭浩强.程序设计题解与上机指导[M].北京:
清华大学出版社.2005.
[2]黄明,梁旭等编撰的C语言程序设计[M].北京:
电子出版社.2006.
[3]陈清华.VISUALC++课程设计案例与编程指导[M].南京:
东南大学出版社.2000.
[4]李春葆.C语言习题与解析A级[M].北京:
人民出版社.1994.