工资信息管理系统总14页Word文档格式.docx

上传人:b****5 文档编号:17206500 上传时间:2022-11-28 格式:DOCX 页数:16 大小:348.13KB
下载 相关 举报
工资信息管理系统总14页Word文档格式.docx_第1页
第1页 / 共16页
工资信息管理系统总14页Word文档格式.docx_第2页
第2页 / 共16页
工资信息管理系统总14页Word文档格式.docx_第3页
第3页 / 共16页
工资信息管理系统总14页Word文档格式.docx_第4页
第4页 / 共16页
工资信息管理系统总14页Word文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

工资信息管理系统总14页Word文档格式.docx

《工资信息管理系统总14页Word文档格式.docx》由会员分享,可在线阅读,更多相关《工资信息管理系统总14页Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

工资信息管理系统总14页Word文档格式.docx

3.附录

二、需求分析

根据题目要求,由于工资单信息是存放在文件中,所以应提供文件的输入、输出等操作;

在程序中需要浏览学生的信息,应提供录入、浏览、查询、统计等操作;

另外还应提供键盘式选择菜单实现功能选择。

三、总体设计

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

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

图一系统功能模块图

四、详细设计

1.主函数

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

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

[流程图]

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

[程序]

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

{

intn,w;

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

do{puts("

\t\t**********MENU*************************\n\n"

);

puts("

\t\t\t\tnewdata"

\t\t\t\tall"

\t\t\t\tbyname"

\t\t\t\tbynum"

\t\t\t\tgongzi"

\t\t\t\t"

\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"

;

if(strcmp,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"

;

if==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("

"

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语言进行程序设计的能力。

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

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1