工资信息管理系统Word文件下载.docx
- 文档编号:17616265
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:16
- 大小:343.83KB
工资信息管理系统Word文件下载.docx
《工资信息管理系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《工资信息管理系统Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。
给出合理的测试数据及运行结果,要求能够体现程序的正确性和完备性及对错误输入的处理。
总结算法或系统的优缺点,给出算法或系统进一步改进的设想。
在附录中给出源代码,
3.附录
二、需求分析
根据题目要求,由于工资单信息是存放在文件中,所以应提供文件的输入、输出等操作;
在程序中需要浏览学生的信息,应提供录入、浏览、查询、统计等操作;
另外还应提供键盘式选择菜单实现功能选择。
三、总体设计
根据上面的需求分析,可以将这个系统的设计分为以下几个模块:
数据输入,数据添加,数据浏览,数据查询,数据统计。
图一系统功能模块图
四、详细设计
1.主函数
主函数提供输入、处理和输出部分的函数调用。
其中各功能模块用菜单方式选择。
[流程图]
图二主函数模块功能流程图
[程序]
main()/********************主函数**********************/
{
intn,w;
/*变量n保存选择菜单数字,w判断输入的数字是否在功能菜单应对数字的范围内*/
do{puts("
\t\t**********MENU*************************\n\n"
);
puts("
\t\t\t\t1.Enternewdata"
\t\t\t\t2.addnewdata"
\t\t\t\t3.Browseall"
\t\t\t\t4.Searchbyname"
\t\t\t\t5.Searchbynum"
\t\t\t\t6.Countgongzi"
\t\t\t\t7.Exit"
\n\n\t\t**********************************\n"
printf("
Choiceyournumber(1-7):
[]\b\b"
scanf("
%d"
&
n);
if(n<
1||n>
7){w=1;
getchar();
}/*对选择的数字作判断*/
elsew=0;
}
while(w==1);
switch(n)
{case1:
enter();
break;
/*输入模块*/
case2:
add();
/*添加模块*/
case3:
browse();
/*浏览模块*/
case4:
search_name();
/*查询模块*/
case5:
search_num();
case6:
count();
/*统计模块*/
case7:
exit(0);
/*退出*/
}/*其中4和5两个模块式在查询要求的基础上加上的模块*/
2.各功能模块设计
(1)输入函数
【分析】
单独看各数据信息,姓名是字符型,可以采用字符型数组;
工资卡号和月份是整数,采用整型;
实发工资,水费,电费,税金,应发工资有可能是小数可采用实型。
数据信息存放在文件中,一条记录对应一个职工的工资单信息,既符合习惯也方便信息管理。
同时把职工的工资卡号,姓名,月份,应发工资,水费,电费,税金,实发工资作为结构体成员,用结构体数组存放若干个职工的工资信息。
structgz
{intnum;
charname[20];
intmonth;
longys;
longss;
longwf;
longef;
longtax;
}g[N];
/*g[N]中每个数组元素对应一个职工*/
【流程图】
图三输入模块流程图
【程序】
enter()
{inti,n;
Howmanygongzixinxi(0-%d)?
:
"
N-1);
\nEnterdatanow\n\n"
for(i=0;
i<
n;
i++)
{printf("
\nInput%dthgongzirecord.\n"
i+1);
input(i);
sort();
if(i!
=0)save(n);
printf_back();
}
(2)添加模块
该模块的功能是用户需要增加新的职工工资信息记录,从键盘输入并逐条写入到原来的输入文件中,注意采用追加而不是覆盖的方式。
图四添加模块流程图
add()
{inti,n,m,k;
FILE*fp;
n=load();
printf("
Hoemangpeopleareyouwanttoadd(0-%d):
N-n-1);
scanf("
m);
k=m+n;
for(i=n;
k;
{printf("
\ninput%dthsalaryrecord.\n"
i-n+1);
sort();
save(k);
printf_back();
(3)浏览模块
该模块的功能是显示所有职工工资信息记录。
图五浏览模块流程图
browse()
n=load();
printf_face();
{if(i%10==0){printf("
\n\nPassanykeytocontiune..."
getch();
\n\n"
printf_one(i);
\n"
\tThereare%drecord.\n"
n);
\nPassanykeytoback...."
menu();
(4)按姓名查找模块
该模块的功能是根据输入的职工姓名查找对应的工资信息记录。
图六按姓名查找模块流程图
search_name()
{inti,n,k,w1=1;
structgzs;
do
{k=-1;
\n\nEnternamethatyouwanttosearch!
name"
%s"
s.name);
if(strcmp(s.name,g[i].name)==0)
{k=i;
printf_one(k);
if(k==-1)
\n\nNoexist!
please"
\n\nAreyouagain?
\n\t1).Again2)Noandback[]\b\b"
w1);
}while(k==-1&
&
w1==1);
(5)按工资卡号查找模块
该模块的功能是根据输入的职工工资卡号查找对应的工资信息记录。
图七按工资卡号查找模块流程图
search_num()
\n\nEnternumberthatyouwanttosearch!
number"
s.num);
if(s.num==g[i].num)
(6)统计模块
该模块的功能是根据用户输入的职工姓名和所统计的月份来计算得出某个时间段的工资总额。
图八统计模块流程图
count()
{inti,j,k,n,sum=0;
charname[20];
\nEntertheenployer'
sname:
[]\t\t"
name);
\nEnterthefirstmonthtocount!
month:
j);
\nEnterthelastmonthtocount!
k);
for(i=0;
if(strcmp(name,g[i].name)==0&
g[i].month>
=j&
g[i].month<
=k)
{printf_one(i);
sum=sum+g[i].ss;
\ntheresultofcount:
sum=%d\n"
sum);
menu();
3.公共函数
(1)排序函数sort()
sort()
{
inti,j,n;
structgzt;
for(j=i+1;
j<
j++)
if(g[i].num>
g[j].num)
{t=g[i];
g[i]=g[j];
g[j]=t;
(2)输入函数input(inti)
input(inti)
{scanf("
%d%s%d%ld%ld%ld"
g[i].num,g[i].name,&
g[i].month,&
g[i].ys,&
g[i].wf,&
g[i].ef);
tax(i);
(3)保存函数save(intn)
save(intn)
{FILE*fp;
inti;
if((fp=fopen("
salary.txt"
"
w"
))==NULL)
{printf("
\nCannotopenfile\n"
returnNULL;
if(g[i].num!
=0)
if(fwrite(&
g[i],sizeof(structgz),1,fp)!
=1)
filewriteerror\n"
fclose(fp);
(4)税金计算函数tax(inti)
tax(inti)
if(g[i].ys<
800)g[i].tax=0;
elseif(800<
g[i].ys&
g[i].ys<
1400)g[i].tax=((g[i].ys-800)*5/100);
elseg[i].tax=((g[i].ys-1400)*5/100);
g[i].ss=g[i].ys-g[i].wf-g[i].ef-g[i].tax;
(5)加载函数load()
load()
{FILE*fp;
r"
!
feof(fp);
fread(&
g[i],sizeof(structgz),1,fp);
return(i-1);
(6)显示数据结构项目的函数printf_face()
printf_face()
\nnumnamemonthyswfefsstax\n"
(7)显示一个记录的函数
printf_one(inti)
%5d%10s%5d%10ld%10ld%10ld%10ld%10ld"
g[i].num,g[i].name,g[i].month,
g[i].ys,g[i].wf,g[i].ef,g[i].ss,g[i].tax);
(8)一个任务结束时的选择浏览还是返回的函数
printf_back()
{intk,w;
\n\n\tSuccessful.\n\n"
Whatdoyouwanttodo?
\n\n\t1).Browseallnow2).Back;
w);
elsemenu();
if(w==1)browse();
五、上机操作
1.数据源
2.编译、连接和运行
3.结果
下面是各个模块的界面图
(1)主菜单函数
(2)输入模块
在主界面出现后输入1回车看到下图
(3)添加模块
(4)浏览模块
(5)按姓名查找模块
(6)按工资卡号查找模块
(7)统计模块
六、总结
通过该实例的学习,可以进一步理解和运用结构化程序设计的思想和方法,初步掌握开发一个小型实用系统的基本方法,学会调试一个较长程序的的基本方法,学会利用流程图表示算法,进一步掌握和提高利用C语言进行程序设计的能力。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工资 信息管理 系统