ImageVerifierCode 换一换
格式:DOCX , 页数:42 ,大小:189.56KB ,
资源ID:7845412      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-7845412.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(工资管理系统设计论文Word格式文档下载.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

工资管理系统设计论文Word格式文档下载.docx

1、输入记录模块主要实现将数据存入数组中。当从数据文件中读出记录时,它调用fread(&gzcount,sizeof(ZGGZ),1,fg)文件读取函数,执行一次从文件中读取一条工资记录信息存入某个数组元素中德操作,并且这个操作在main()中调用执行,即在工资管理系统进入显示菜单界面时,该操作已经执行了。假设该文件中没有数据,系统会提示数组为空,没有任何记录可操作,此时,用户应选择1,调用Add()函数,进行记录的输入,即完成在数组中添加元素的操作。查询记录模块主要实现在数组中按职工编号或查找满足相关条件记录。在查询函数Qur中,为了遵循模块化编程原则,我们将数组中进行的记录定位操作设计成了一个

2、单独函数int Locate(ZGGZ tp,char findmess,char nameornum),参数findmess保存要查找的具体内容,nameornum保存要查找的字段职位字符串类型的num或者name,假设找到该记录,则返回指向该记录的数组元素的下标,否则;返回一个1的值。 更新记录模块主要实现对记录的修改、删除、插入和排序操作。因为记录是以数组的结构形式储存的,所以这些操作都在数组中完成。下面分别介绍着4个功能模块。1)修改记录修改记录的操作需要对数组中目标元素的数域中的值进行修改,他分两步完成。第一步,输入要修改的职员编号,输入后调用定位函数Locate在数组中逐个对职员编

3、号字段的值进行比较,直到找到该职员的编号记录;第二步,假设找到该记录,则修改除职工编号之外的各字段的值,并将存盘标记变量savegflag置1,表示已经对记录进行了修改,但还未执行存盘操作。2)删除记录 删除记录操作完成删除指定职员编号或的记录,他也分两步完成。第一步,输入要修改的职员编号,输入后调用定位函数Locate在数组中逐个对职员编号字段的值进行比较,直到找到该职员的编号记录,并返回指向该记录的数组元素下标;第二步,假设找到该记录,则从该记录所在元素的后续元素起,依次向前移一个元素位置,有值的数组元素个数减1.3)插入记录 插入记录操作完成在指定职工编号的随后位置插入新的记录。搜先,他

4、要求用户输入某个职工的职工编号,新的记录将插入在该记录之后;然后,提示用户数输入一条新的记录的信息,这些信息保存在心结构体类型的数组元素的个字段中;最后,将该元素插入已经确认的位置的职工编号之后。它的具体插入执行过程如图7.3所示,新的元素B1准备插入至已有5个元素的数组中,插入位置为元素A2之后。具体过程为:先调用Locate函数找到A2在数组中的下标,从A4开始,往后移动,至A2停止移动,然后再原A3的位置插入元素B1.4)排序记录 冒泡排序法属于内部排序中的一种,这是运用数据值比较后,一句判断规则对数据位置进行交换以到达排序的目的。针对数组结构的特点,这里采用这种排序法莱实现按实发工资字

5、段的值从高到底对记录进行排序。 冒泡排序法的基本思想为:将相邻的两个数组远足的实发工资字段的值进行比较,假设左边的值小于右边的值,则将此两个元素的值进行交换;假设左边的值大于右边的值,则此两个值的位置不变。右边的值继续和下一个值做比较,重复此动作,直到比较到最后一个值。用伪代码描述如下: 插入B1A0A1A2A3A4插入B1前B1插入B1后图7.3 数据中插入记录示意图if (左边的值=右边的值*/此两个元素的位置不变:右边的元素继续和下一个元素比较;如图7.4所示,假设共有 个ZGGZ结构数组元素gz【0】至gz【n-1】,其具体比较过程如下。第一轮:从gz【0】比到gz【n-1】,实发工资

6、字段值最小的元素存放在gz【n-1】中。第二轮:从gz【0】比到gz【n-2】,实发工资字段值最小的元素存放在gz【n-2】中。第n-1轮:从gz【0】比到gz【1】,实发工资字段值最小的元素存放在gz【1】中。gzngz0gz1gz2gzn-2gzn-1图7.4 数组中对记录 因为是按实发工资的降序排序,所以每进行一轮比较都会以交换位置的方式将该轮的最小者移向数据的尾端。冒泡排序法的优点是,假设数组元素已有部分排好序,则使用冒泡排序法可以快速地完成排序。其缺点则是会反复扫描数据,比较相邻的两个元素,速度不快且没有效率。它属于稳定排序法。 该模块的实现比较简单,它主要通过依次读取数组中元素的数

7、据域中的实发工资的值进行比较判断的形式,完成工资在各个等级的人数统计。当把记录输出至文件时,调用fwrite(&tpi,sizeof(ZGGZ),1,fp)函数,将数组元素tpi中各字段的值,写入文件指针fp所指的文件;当把记录输出至屏幕时,调用void Disp()函数,将数组中存储的记录信息以表格的形式在屏幕上打印出来。图7.2 主控函数执行流程图7.3.2 数据结构设计本程序定义了结构体emplee,用于存放职工的基本信息和工资信息。typedef struct employee /*标记为employee*/ char num10; char name15; float jbgz;fl

8、oat jj;float kk;float yfgz;float sk;float sfgz;ZGGZ;其他字段的含义如下。 num10:保存职工编号。name10: 保存职工。jbgz: 保存职工基本工资。jj: 保存职工奖金。kk: 保存职工扣款。yfgz: 保存职工应发工资。sk: 保存职工税款。sfgz: 保存职工实发工资。7.33 函数功能描述1printheader()函数原型:void printheader()printheader()函数用于在以表格形式显示出记录时,打印输出表头信息。2printdata()void printada(ZGGZpp)函数用于在以表格形式显示的

9、方法,打印输出单个数组元素pp中的记录消息。3)Disp()void Disp(ZGGZtp,int n)Disp()函数用于显示 tp 数组中存储的n 条记录,内容为employee 结构中定义的内容。4numberinput()float numberinput(char*notice)numberinput()函数用于输入数值型数据,notice用于保存 printf()中输出的提示消息。5Stringinput()函数原型:void Stringinput(char*t,int lens,char*notice) 164Stringinput()函数用于输入字符串,并进行字符串长度验证

10、长度num,p-name,p-jbgz,p-jj,p-kk,p-yfgz,p-sk,p-sfgz#define END - n#define N 60int saveflag=0; /*是否需要存盘的标志变量*/*定义与职工有关的数据结构*/char num10; /*职工编号*/char name15; /*职工*/float jbgz; /*基本工资*/ /*奖金*/ /*扣款*/ /*应发工资*/ /*税款*/ /*实发工资*/2.主函数main()main()函数主要实现了对整个程序的运行控制,以及相关功能模块的调用。详细分析可参考图7.2。void main() ZGGZ gzN;

11、/*定义ZGGZ结构体*/ FILE *fp; /*文件指针*/ int select; /*保存选择结果变量*/ char ch; /*保存(y,Y,n,N)*/ int count=0; /*保存文件中的记录条数或元素个数*/ fp=fopen(C:zggz,ab+); /*以追加方式打开二进制文件c:zggz,可读可写,假设此文件不存在,会创建此文件*/ if(fp=NULL) printf(n=can not open file!n exit(0); while(!feof(fp) if(fread(&gzcount,sizeof(ZGGZ),1,fp)=1) /*一次从文件中读取一条

12、职工工资记录*/ count+;fclose(fp); /*关闭文件*/printf(n=open file sucess,the total records number is : %d.n,count);getchar();menu();while(1) system(cls menu();n Please Enter your choice(09): /*显示提示信息*/ scanf(%d,&select); if(select=0) if(saveflag=1) /*假设对数组的数据有修改且未进行存盘操作,则此标志为1*/ getchar();Whether save the modi

13、fied record to file?(y/n):%cch); if(ch=y|ch=Y) Save(gz,count);n=thank you for useness! getchar(); break; switch(select) case 1:count=Add(gz,count);break; /*增加职工工资记录*/ case 2:count=Del(gz,count); /*删除职工工资记录*/ case 3:Qur(gz,count); /*查询职工工资记录*/ case 4:Modify(gz,count); /*修改职工工资记录*/ case 5:count=Insert

14、(gz,count); /*插入职工工资记录*/case 6:Tongji(gz,count); /*统计职工工资记录*/ case 7:Sort(gz,count); /*排序职工工资记录*/ case 8:Save(gz,count); /*保存职工工资记录*/ case 9:system(Disp(gz,count); /*显示职工工资记录*/ default: Wrong(); /*按键有误,必须为数值0-9*/用户进入工资管理系统时,需要显示主菜单,提示用户进行选择,完成相应任务。此代码被main()函数调用。void menu() /*主菜单*/ /*调用DOS命令,清屏.与clr

15、scr()功能相同*/textcolor(10); /*在文本模式中选择新的字符颜色*/gotoxy(10,5); /*在文本窗口中设置光标*/cprintf( The Employee Salary Management System ngotoxy(10,8); *Menu*ngotoxy(10,9); * 1 input record 2 delete record *ngotoxy(10,10); * 3 search record 4 modify record *ngotoxy(10,11); * 5 insert record 6 count record *ngotoxy(10

16、,12); * 7 sort reord 8 save record *ngotoxy(10,13); * 9 display record 0 quit system *ngotoxy(10,14); *n/*cprintf()送格式化输出至文本窗口屏幕中*/由于记录显示操作经常进行,所以我们将这部分由独立的函数来实现,以减少代码的重复。过程如下。(1)调用 Disp(ZGGZ tp,int n)函数,它将显示从数组 tp 第一个元素开始的 n条记录。(2)调用 printdata(ZGGZ pp)函数,它将显示数组元素pp中的记录信息。void printheader() /*格式化输出表

17、头*/ printf(HEADER1); printf(HEADER2); printf(HEADER3);void printdata(ZGGZ pp) /*格式化输出表中数据*/ ZGGZ* p; p=&pp; printf(FORMAT,DATA);void Disp(ZGGZ tp,int n) /*显示数组tp中存储的记录,内容为employee结构中定义的内容*/int i;if(n=0) /*表示没有职工工资记录*/Not employee record! return;nnprintheader(); /*输出表格头部*/i=0;while(in) /*逐条输出数组中存储的职工

18、信息*/ printdata(tpi); i+;void Wrong() /*输出按键错误信息*/nnnnn*Error:input has wrong! press any key to continue*nvoid Nofind() /*输出未查找此职工的信息*/Not find this employee record!用户进入工资管理系统时,在对某个记录进行处理前,需要按照条件找到这条记录,Locate() 函数完成了记录定位的功能。这里可以按照职工编号或职工进行记录查找定位。/*作用:用于定位数组中符合要求的记录,并返回保存该记录的数组元素下标值参数:findmess保存要查找的具体内容; nameornum保存按什么在数组中查找;*/int Locate(ZGGZ tp,int n,char findmess,char nameornum)int i=0;if(strcmp(nameornum,num)=0) /*按职工编号查询*/ while(in) if(strcmp(tpi.num,findmess)=0) /*假设找到findmess值的职工编号*/ return i;else if(strcmp(nameornum,name)=

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

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