C语言程序设计报告职工工资管理系统.docx
《C语言程序设计报告职工工资管理系统.docx》由会员分享,可在线阅读,更多相关《C语言程序设计报告职工工资管理系统.docx(14页珍藏版)》请在冰豆网上搜索。
![C语言程序设计报告职工工资管理系统.docx](https://file1.bdocx.com/fileroot1/2022-12/12/b0891d63-2e52-4165-9a57-70d4f17eabbf/b0891d63-2e52-4165-9a57-70d4f17eabbf1.gif)
C语言程序设计报告职工工资管理系统
C语言程序设计报告
语言程序设计课程名称:
C
院系:
管理与经济学院
专业班级:
工业工程2012142班
学号:
学生姓名:
李海蛟
指导教师:
杨雪青
完成时间:
2013-06-20
报告成绩:
1、设计题目--------------------------------------------------------------------------2
2、设计要求(包括设计内容描述)--------------------------------------------2
3、设计作用与目的-----------------------------------------------------------------3
4、所用软件--------------------------------------------------------------------------3
5、系统设计--------------------------------------------------------------------------4
系统结构----------------------------------------------------------------------4
程序程序图-------------------------------------------------------------------4
产生源程序----------------------------------------------------------------------6
6、实验调试结果(附运行效果图)--------------------------------------------36
7、设计中的问题及解决方法-----------------------------------------------------39
8、设计心得--------------------------------------------------------------------------40
9、参考文献--------------------------------------------------------------------------41
职工工资管理系统的设计与实现
1.设计题目
题目:
工资管理系统
工资管理系统是企业不可缺少的一部分,它利用计算机对员工工资进行统一管理,实现工资管理系统的系统化、规范化和自动化,为企业提高工作效率。
本程序旨在训练读者的基本编程能力,了解管理.
信息系统的开发流程,熟悉C语言的文件和结构数组的各种基本操作。
本程序中涉及结构体、数组、文件等方面的知识。
2.设计要求
1、启动软件时,进行密码校验。
若出错三次,则自动退出系统。
2、实现简易的提示菜单界面,刚运行时应显示版本信息。
用所学的知识尽量实现良好的、美观的“人机界面”,便于软件的操作使用。
3、要求把所有录入的数据以文件的形式,保存在硬盘上。
4、系统包含以下基本功能:
登陆功能、显示主菜单功能、职工信息输入信息输出、职工信息查询、职工信息修改、工资排序、工资统计、导出数据、导入数据、退出等。
5、职工信息输入信息输出要求一个职工的基本信息(编号、姓名、基本工资)的录入,以文件形式保存——输入。
6、职工工资表浏览工资功能——输出。
7、计算职工的工资(输入基本工资、扣款、奖金后,马上算出应发工资、税金、实发工资、总工资)。
8、查询、排序功能——算法。
1)按编号查询、排序。
2)按姓名查询。
3)按工资排序。
4)基本信息的删除与修改(可选项)。
3.设计作用与目的
、通过这次专题实习,巩固和加深对所学相关知识点的理解。
1.
2、进一步熟悉基本流程控制结构——实现分支的if…else语句、switch语句和实现循环的for、while…、do…while语句、break、continue等。
3、基本数据类型、数组、结构体、自定义类、函数的应用。
4、加强对模块化程序设计和面向对象程序设计的理解。
5、掌握C语言程序设计的基本思想,了解简单的系统分析和
6、了解数据库系统的理论
7、掌握数据库设计的基本方法,熟悉数据库设计的步骤;
8、学习基本数据库编程方法。
9、进一步巩固、加深学生所学专业课程《C语言程序设计》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。
10全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。
11利用所学知识,开发小型应用系统,掌握运用C语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。
12对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。
13掌握面向对象的程序设计方法。
14进一步掌握在集成环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试)、修改程序和程序的测试。
4.运行环境及工具软件
WindowsXP;
(完整绿色版);VisualC++
5.系统设计
程序逻辑图
职工工资管理系
改出入息查
:
系统结构框图图1程序流程图
开始系统登录主页面初始化双链表选择操作录入职工工资1选择修改职工工资2选择
查询职工工资3
选择.
浏览职工工资4选择删除职工工5
选按编号删删插入职工工6
选职工工资排7
选保存职工工8
选安全退出系9
选结束
.源程序代码6#include<>um);
:
);ame);输入职工姓名牰湩晴尨\n);输入职工的工资信息牰湩晴尨printf(------------------------------\n);
:
);aid);printf(\
基本工资:
);iscount);扣款printf(\
:
);xtra);
printf(\
奖金:
);um=per[i].paid-per[i].discount+per[i].extra;printf(\
税金per[i].realpaid=per[i].paid-per[i].discount;
fprintf(fp,m%8s%\t%\t%\t%\t%\t\n,per[i].num,per[i].name,per[i].paid,per[i].discount,per[i].extra,per[i].realpaid,per[i].sum);
}
}
voidModifyper(structpersonper[])
{
pp=per;
intid,i=0;;
for(i=0;i<=15;i++)
{
Sleep(250);
printf(.);
}
for(i=0;i{
if(per[i].num==id)um);
printf(\
输入新职工姓名:
);ame);
牰湩晴尨输入职工的工资信息\n);
printf(------------------------------\n);
printf(\
基本工资:
);
scanf(%f,&per[i].paid);
fflush(stdin);
printf(\
扣款:
);
scanf(%f,&per[i].discount);
fflush(stdin);
printf(\
奖金:
);
scanf(%f,&per[i].extra);
printf(------------------------------\n);
per[i].sum=per[i].paid-per[i].discount+per[i].extra;
per[i].realpaid=per[i].paid-per[i].discount;
fprintf(fp,m%8s%\t%\t%\t%\t%\t\n,per[i].num,per[i].name,per[i].paid,per[i].discount,per[i].extra,per[i].realpaid,per[i].sum);
}
}
}
voidFindper(structpersonper[])um==id)um=per[i].paid-per[i].discount+per[i].extra;
per[i].realpaid=per[i].paid-per[i].discount;
printf(\
职工编号职工姓名基本工资扣款奖金应发工资税金实发工资总工资\n);
printf(\
m%8s%\t%\t%\t%\t%\t%\t%\t\n\n,per[i].num,per[i].name,per[i].paid,per[i].discount,per[i].extra,per[i].gotpaid,per[i].fare,per[i].realpaid,per[i].sum);
system(pause);
}
}
}
那么就把插入的信息放到结构数组最后voidInsertper(structpersonper[])um==id)um);
牰湩晴尨输入职工姓名:
);
fflush(stdin);
gets(per[shuru-1].name);
牰湩晴尨输入职工的工资信息\n);
printf(------------------------------\n);
printf(\
基本工资:
);
fflush(stdin);
scanf(%f,&per[shuru-1].paid);
printf(\
扣款:
);
fflush(stdin);
scanf(%f,&per[shuru-1].discount);
printf(\
奖金:
);um=per[i].paid-per[i].discount+per[i].extra;
per[i].realpaid=per[i].paid-per[i].discount;
fprintf(fp,m%8s%\t%\t%\t%\t%\t\n,per[shuru-1].num,per[shuru-1].name,per[shuru-1].paid,per[shuru-1].discount,per[shuru-1].extra,per[i].realpaid,per[shuru-1].sum);
Sleep(500);
牰湩晴尨插入数据成功!
\n);
getch();
}
}
voidListper(structpersonper[])otpaid=per[i].paid-per[i].discount;
if(per[i].gotpaid<2000)
per[i].fare=0;
elseif(per[i].gotpaid>=2000&&per[i].gotpaid<4999)
per[i].fare=per[i].gotpaid*;
elseif(per[i].gotpaid>=5000&&per[i].gotpaid<10000)
per[i].fare=per[i].gotpaid*;
elseif(per[i].gotpaid>=10000&&per[i].gotpaid<99999)
per[i].fare=per[i].gotpaid*;
elseif(per[i].gotpaid>=100000)
per[i].fare=per[i].gotpaid*;
per[i].sum=per[i].paid-per[i].discount+per[i].extra;
per[i].realpaid=per[i].paid-per[i].discount;
}
printf(\
职工编号职工姓名基本工资扣款奖金应发工资税金实发工资总工资\n);
for(i=0;i{
printf(\
m%8s%\t%\t%\t%\t%\t%\t%\t,per[i].num,per[i].name,per[i].paid,per[i].discount,per[i].extra,per[i].gotpaid,per[i].fare,per[i].realpaid,per[i].sum);
}
getch();
}
voidDelper(structpersonper[])um==delnum)
break;
}
if(i>shuru)
printf(\
\t没有你要删除的职工!
\n);
else
{
for(j=i;j{
temp=per[j];
per[j]=per[j+1];
per[j+1]=temp;
}
shuru--;um=per[i].paid-per[i].discount+per[i].extra;
per[i].realpaid=per[i].paid-per[i].discount;
fprintf(fp,m%8s\t%\t%\t%\t%\t%\n,per[i].num,per[i].name,per[i].paid,per[i].discount,per[i].extra,per[i].realpaid,per[i].sum);
getch();
}
}
voidSortper(structpersonper[])um,per[i].name,per[i].paid,per[i].discount,per[i].extra,per[i].realpaid,per[i].sum);
}
printf(\
1.按职工编号排序\t2.按总工资(高→低)排序\n);
printf(\
请您正确选择:
);
fflush(stdin);
scanf(%d,&chose);
if(chose==1)
{
for(i=0;i{
for(j=i+1;j{
if(per[i].num>per[j].num)
{
temp=per[i];
per[i]=per[j];
per[j]=temp;
}
}
}
printf(\
职工编号职工姓名基本工资扣款奖金应发工资税金实发工资总工资\n);
for(i=0;i{
printf(\
m%8s%\t%\t%\t%\t%\t\n,per[i].num,per[i].name,per[i].paid,per[i].discount,per[i].extra,per[i].realpaid,per[i].sum);
}
system(pause);
}
elseif(chose==2)
{
for(i=0;i{
for(j=i+1;j{
if(per[i].sum{
temp=per[i];
per[i]=per[j];
per[j]=temp;
}
}
}
printf(\
职工编号职工姓名基本工资扣款奖金应发工资税金实发工资总工资\n);
for(i=0;i{
printf(\
m%8s%\t%\t%\t%\t%\n,per[i].num,per[i].name,per[i].paid,per[i].discount,per[i].extra,per[i].realpaid,per[i].sum);
}
system(pause);
}
}
voidPassword();
}
system(cls);
printf(\
\n\n\n\n\n\n\n\n\t\t\t);
牰湩晴尨欢迎登陆职工工资管理系统!
\n\n);
start=time(NULL);
end=time(NULL);
while(end-start<2)入职工工资*\n);
printf(\\t**\n);
printf(\\t*2.修改职工工资*\n);
printf(\\t**\n);
printf(\\t*3.查询职工工资*\n);
printf(\\t**\n);
printf(\\t*4.浏览职工工资*\n);
printf(\\t**\n);
printf(\\t*5.删除职工工资*\n);
printf(\\t**\n);
printf(\\t*6.插入职工工资*\n);
printf(\\t**\n);
printf(\\t*7.职工工资排序*\n);
printf(\\t**\n);
*\n);
保存职工工资8.*printf(\\t
printf(\\t**\n);
printf(\\t*9.安全退出系统*\n);
printf(\\t=============================================\n);
printf(\\t请您正确选择:
);
if(!
(scanf(%d,&in)==1))
{
while((ch=getchar())!
='\n')
putchar(ch);
牰湩晴尨没有此选项,请正确选择!
);
getch();
continue;
}
fflush(stdin);
switch(in)
{
case1:
Inputper(per);;
}
printf(\
);
}
voidHelp()
{
printf(====================================================================\n);
printf(\
\n\t\t\t\t系统信息\n);
printf(====================================================================\n);
printf(\
\n\t\t本系统是职工工资管理系统,在职工的姓名栏可以输入汉字);
printf(\
\t\t如果在输入中没看到任何信息则是因为输入错误或无信息);
printf(\
\t\t系统中的:
实发工资=基本工资-扣款,不需要输入);
printf(\
\t\t实发工资,就可以直接输出实发工资,系统中的:
);
printf(\
\t\t总工资=基本工资-扣款+奖金。
);
printf(\
\t\t本系统制作者:
李海蛟\tQQ:
printf(\
\t\tE_mail:
);
printf(\
\t\t\++\t2013年6月18日\n);
printf(===================================================================\n);
printf(\
\n\t\t\t\t按进入);
getchar();
}
voidSave(structpersonper[]);
}
if((fp=fopen(\,wb+))==NULL)
{
printf(Cannotopenfilestrikeanykeyexit!
);
getch();
exit
(1);
}
灦楲瑮?
灦尬职工编号职工姓名基本工资扣款奖金应发工资税金实发工资总工资\n);
for(i=0;i{per[i].gotpaid=per[i].paid-per[i].discount;
if(per[i].gotpaid<2000)
per[i].fare=0;
elseif(per[i].gotpaid>=2000&&per[i].gotpaid<4999)
per[i].fare=per[i].gotpaid*;
elseif(per[i].gotpaid>=5000&&per[i].gotpaid<10000)
per[i].fare=per[i].gotpaid*;
elseif(per[i].gotpaid>=10000&&per[i].gotpaid<99999)
per[i].fare=per[i].gotpaid*;
elseif(per[i].gotpaid>=100000)
per[i].fare=per[i].gotpaid*;
per[i].sum=per[i].paid-per[i].discount+per[i].extra;
per[i].realpaid=per[i].paid-per[i].discount;
fprintf(fp,\
m%8s%\t%\t%\t%\t%\t%\t%\t,per[i].num,per[i].name,per[i].paid,per[i].discount,per[i].extra,per[i].gotpaid,per[i].fare,per[i].realpaid,per[i].sum);
}
}
7.设计中的问题及解决方法
由于浏览和查询模块中多定义了局部变量,且与全局变量同名将全局变量屏蔽,以至于这些模块不能达到预期效果,总是只输出最近一次的数据,经过修改后将其删除,达到了所要的效果。
使程序得以执行。
到目前程序中还有一小毛病,就是计算税金是实数双精度与单精度转换存在不足。
8.学习心得
工资管理系统对于决策者和管理者来说都至关重要,所以工资管理系统应该能够为用户提供充足的信息和快捷的查询手段。
但一直以来人们使用传统人工的方式管理文件工资档案,这种管理方式存在着许多缺点,如:
效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对工资信息进行管理,具有着手工管理检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命:
例如.所无法比拟的优点.
长、成本低等。
这些优点能够极大地提高工资管理的效率,也是科学化、正规化管理的重要条件。
这一个星期以来,在开发这个工资管理系统过程中我深刻地体会到了自学能力的重要性。
毕竟在学校学习到的知识是有限的,而在开发系统的过程中仅凭原有的一点点知识是远远不够的,只有翻阅大量的资料才能学到更多的知识,才能实现其预期的功能。
在开发过程中,遇到困难是在所难免的,期间我跟我的指导老师和同学进行交流,从中明白了很多。
开发一个系统,恒心和毅力也是不可缺少的,如果一遇到难题就心慌,想要放弃,那这样就不可能完成系