C语言课程设计工资管理系统.docx

上传人:b****4 文档编号:4327353 上传时间:2023-05-07 格式:DOCX 页数:19 大小:330.07KB
下载 相关 举报
C语言课程设计工资管理系统.docx_第1页
第1页 / 共19页
C语言课程设计工资管理系统.docx_第2页
第2页 / 共19页
C语言课程设计工资管理系统.docx_第3页
第3页 / 共19页
C语言课程设计工资管理系统.docx_第4页
第4页 / 共19页
C语言课程设计工资管理系统.docx_第5页
第5页 / 共19页
C语言课程设计工资管理系统.docx_第6页
第6页 / 共19页
C语言课程设计工资管理系统.docx_第7页
第7页 / 共19页
C语言课程设计工资管理系统.docx_第8页
第8页 / 共19页
C语言课程设计工资管理系统.docx_第9页
第9页 / 共19页
C语言课程设计工资管理系统.docx_第10页
第10页 / 共19页
C语言课程设计工资管理系统.docx_第11页
第11页 / 共19页
C语言课程设计工资管理系统.docx_第12页
第12页 / 共19页
C语言课程设计工资管理系统.docx_第13页
第13页 / 共19页
C语言课程设计工资管理系统.docx_第14页
第14页 / 共19页
C语言课程设计工资管理系统.docx_第15页
第15页 / 共19页
C语言课程设计工资管理系统.docx_第16页
第16页 / 共19页
C语言课程设计工资管理系统.docx_第17页
第17页 / 共19页
C语言课程设计工资管理系统.docx_第18页
第18页 / 共19页
C语言课程设计工资管理系统.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C语言课程设计工资管理系统.docx

《C语言课程设计工资管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计工资管理系统.docx(19页珍藏版)》请在冰点文库上搜索。

C语言课程设计工资管理系统.docx

C语言课程设计工资管理系统

C语言课程设计报告

工资管理系统

 

姓名:

______

班级:

______

指导老师:

______

日期:

______

 

一、题目要求

工资信息管理系统

【要求】

该系统能够实现工资信息管理。

系统包括录入、浏览、查询、统计等功能。

其中录入功能要求能够添加新的工资信息到文件;浏览功能要求能按照工资卡号、姓名分类浏览,提供分屏显示;有排序功能,排序后按照工资卡号升序或实发工资降序输出;查询功能要求能够按照工资卡号、姓名查询;统计功能要求能够按照月份累计统计某职工在某时间段实发工资总金额。

【提示】

1.文件中一行数据对应一个职工工资信息

2.工资信息的数据结构采用结构体数组,一个数组元素对应一条工资单记录

3.工资单信息包括工资卡号、姓名、月份、应发工资、水费、电费、税金、实发工资等

4.实发工资=应发工资-水费-电费-税金,其中税金的计算方法为

a.应发工资<800元,税金=0

b.800<应发工资<1400元,税金=(应发工资-800)*5%

c.应发工资>1400元,税金=(应发工资-1400)*10%

另:

课程实习报告的参考格式

1.题目编号

2.写出系统总设计的思路、功能模块划分。

给出合理的测试数据及运行结果,要求能够体现程序的正确性和完备性及对错误输入的处理。

总结算法或系统的优缺点,给出算法或系统进一步改进的设想。

在附录中给出源代码,

3.附录

二、需求分析

根据题目要求,由于工资单信息是存放在文件中,所以应提供文件的输入、输出等操作;在程序中需要浏览学生的信息,应提供录入、浏览、查询、统计等操作;另外还应提供键盘式选择菜单实现功能选择。

三、总体设计

根据上面的需求分析,可以将这个系统的设计分为以下几个模块:

数据输入,数据添加,数据浏览,数据查询,数据统计。

图一系统功能模块图

四、详细设计

1.主函数

主函数提供输入、处理和输出部分的函数调用。

其中各功能模块用菜单方式选择。

[流程图]

图二主函数模块功能流程图

[程序]

main()/********************主函数**********************/

{

intn,w;/*变量n保存选择菜单数字,w判断输入的数字是否在功能菜单应对数字的范围内*/

do{puts("\t\t**********MENU*************************\n\n");

puts("\t\t\t\t1.Enternewdata");

puts("\t\t\t\t2.addnewdata");

puts("\t\t\t\t3.Browseall");

puts("\t\t\t\t4.Searchbyname");

puts("\t\t\t\t5.Searchbynum");

puts("\t\t\t\t6.Countgongzi");

puts("\t\t\t\t7.Exit");

puts("\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();break;/*添加模块*/

case3:

browse();break;/*浏览模块*/

case4:

search_name();break;/*查询模块*/

case5:

search_num();break;/*查询模块*/

case6:

count();break;/*统计模块*/

case7:

exit(0);break;/*退出*/

}/*其中4和5两个模块式在查询要求的基础上加上的模块*/

}

2.各功能模块设计

(1)输入函数

【分析】

单独看各数据信息,姓名是字符型,可以采用字符型数组;工资卡号和月份是整数,采用整型;实发工资,水费,电费,税金,应发工资有可能是小数可采用实型。

数据信息存放在文件中,一条记录对应一个职工的工资单信息,既符合习惯也方便信息管理。

同时把职工的工资卡号,姓名,月份,应发工资,水费,电费,税金,实发工资作为结构体成员,用结构体数组存放若干个职工的工资信息。

structgz

{intnum;

charname[20];

intmonth;

longys;

longss;

longwf;

longef;

longtax;

}g[N];/*g[N]中每个数组元素对应一个职工*/

【流程图】

图三输入模块流程图

【程序】

enter()

{inti,n;

printf("Howmanygongzixinxi(0-%d)?

:

",N-1);

scanf("%d",&n);

printf("\nEnterdatanow\n\n");

for(i=0;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("%d",&m);

k=m+n;

for(i=n;i

{printf("\ninput%dthsalaryrecord.\n",i-n+1);

input(i);

}

sort();

save(k);

printf_back();

}

(3)浏览模块

【分析】

该模块的功能是显示所有职工工资信息记录。

【流程图】

图五浏览模块流程图

【程序】

browse()

{inti,n;

n=load();

printf_face();

for(i=0;i

{if(i%10==0){printf("\n\nPassanykeytocontiune...");

getch();puts("\n\n");}

printf_one(i);printf("\n");

}

printf("\tThereare%drecord.\n",n);

printf("\nPassanykeytoback....");

getch();

menu();

}

(4)按姓名查找模块

【分析】

该模块的功能是根据输入的职工姓名查找对应的工资信息记录。

【流程图】

图六按姓名查找模块流程图

【程序】

search_name()

{inti,n,k,w1=1;

structgzs;

n=load();

do

{k=-1;

printf("\n\nEnternamethatyouwanttosearch!

name");

scanf("%s",s.name);

printf_face();

for(i=0;i

if(strcmp(s.name,g[i].name)==0)

{k=i;printf_one(k);}

if(k==-1)

{printf("\n\nNoexist!

please");

printf("\n\nAreyouagain?

\n\t1).Again2)Noandback[]\b\b");

scanf("%d",&w1);}

}while(k==-1&&w1==1);

menu();

}

(5)按工资卡号查找模块

【分析】

该模块的功能是根据输入的职工工资卡号查找对应的工资信息记录。

【流程图】

图七按工资卡号查找模块流程图

【程序】

search_num()

{inti,n,k,w1=1;

structgzs;

n=load();

do

{k=-1;

printf("\n\nEnternumberthatyouwanttosearch!

number");

scanf("%d",&s.num);

printf_face();

for(i=0;i

if(s.num==g[i].num)

{k=i;printf_one(k);}

if(k==-1)

{printf("\n\nNoexist!

please");

printf("\n\nAreyouagain?

\n\t1).Again2)Noandback[]\b\b");

scanf("%d",&w1);}

}while(k==-1&&w1==1);

menu();

}

(6)统计模块

【分析】

该模块的功能是根据用户输入的职工姓名和所统计的月份来计算得出某个时间段的工资总额。

【流程图】

图八统计模块流程图

【程序】

count()

{inti,j,k,n,sum=0;

charname[20];

n=load();

printf("\nEntertheenployer'sname:

[]\t\t");

scanf("%s",name);

printf("\nEnterthefirstmonthtocount!

month:

[]\t\t");

scanf("%d",&j);

printf("\nEnterthelastmonthtocount!

month:

[]\t\t");

scanf("%d",&k);

for(i=0;i

if(strcmp(name,g[i].name)==0&&g[i].month>=j&&g[i].month<=k)

{printf_one(i);

sum=sum+g[i].ss;}

printf("\ntheresultofcount:

sum=%d\n",sum);

menu();

}

3.公共函数

(1)排序函数sort()

【程序】

sort()

{

inti,j,n;

structgzt;

n=load();

for(i=0;i

for(j=i+1;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;}

for(i=0;i

if(g[i].num!

=0)

if(fwrite(&g[i],sizeof(structgz),1,fp)!

=1)

printf("filewriteerror\n");

fclose(fp);

}

(4)税金计算函数tax(inti)

【程序】

tax(inti)

{

if(g[i].ys<800)g[i].tax=0;

elseif(800

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;

inti;

if((fp=fopen("salary.txt","r"))==NULL)

{printf("\nCannotopenfile\n");

returnNULL;}

for(i=0;!

feof(fp);i++)

fread(&g[i],sizeof(structgz),1,fp);

fclose(fp);

return(i-1);

}

(6)显示数据结构项目的函数printf_face()

printf_face()

{printf("\nnumnamemonthyswfefsstax\n");}

(7)显示一个记录的函数

printf_one(inti)

{printf("%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;

printf("\n\n\tSuccessful.\n\n");

printf("Whatdoyouwanttodo?

\n\n\t1).Browseallnow2).Back;[]\b\b");

scanf("%d",&w);

elsemenu();

if(w==1)browse();

}

五、上机操作

1.数据源

2.编译、连接和运行

3.结果

下面是各个模块的界面图

(1)主菜单函数

(2)输入模块

在主界面出现后输入1回车看到下图

(3)添加模块

(4)浏览模块

(5)按姓名查找模块

(6)按工资卡号查找模块

(7)统计模块

六、总结

通过该实例的学习,可以进一步理解和运用结构化程序设计的思想和方法,初步掌握开发一个小型实用系统的基本方法,学会调试一个较长程序的的基本方法,学会利用流程图表示算法,进一步掌握和提高利用C语言进行程序设计的能力。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2