职工工资管理系统.doc
《职工工资管理系统.doc》由会员分享,可在线阅读,更多相关《职工工资管理系统.doc(28页珍藏版)》请在沃文网上搜索。
1、 目录一、系统开发的背景1二、系统分析与设计1(一)系统功能要求1(二)系统模块结构设计2三、系统的设计与实现3 (一) 输入职工基本信息3(二)显示职工信息4(三)添加新的职工信息4 (四) 修改职工信息5(五)删除职工信息9(六)查询职工信息11四、系统测试13(一)测试main()函数13(二)测试输入输出函数13(三)测试添加、删除、修改函数14(四)测试查询函数15五、总结17六、附件(代码、部分图表)17职工工资管理系统一、系统开发的背景工资管理是一个单位不可缺少的部分,因为工资是一个单位与职员之间最重要的关系纽带,它是职员辛勤劳动的主要成果,不同的职员工资不同,所产生的价值也不同
2、。一直以来人们都是使用传统的方式管理,但是这种方法效率低,管理不方便,随着计算机科学的不断发展,更加不能满足人们的需求,为了能合理的管理工资问题,使用计算机对单位工资信息进行管理成为人们的迫切需要。对企业源是企而言,全面开发和应用计算机管理信息系统就是近期不能回避的问题。在企业管理中,人力资业最宝贵的资源,也是企业的“生命线”,因此人事管理是企业的计算机管理信息系统重要组成部分。而工资管理又是人力资源管理的重中之重。二、系统分析与设计(一)系统功能要求 输入记录:将每一个职工的姓名、ID 号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。该软件能建立一个新的数据文件或给已
3、建立好的数据文件增加记录。 显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。 修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。 查找记录:对数据文件的任意记录进行查找。 删除记录:可删除数据文件中的任一记录。 统计:计算各项工资平均工资及总工资、统计符合指定条件(二)系统模块结构设计首先是定义了一个输入输出头文件,接着是一个宏定义,下面是函数声明部分,用结构体存储和录入该程序的所有数据,主函数部分包括设计的全部信息,之后是输出主菜单和调用函数,退出程序。此程序中包括:输入模块、查询模块、修改模块、删除模块、输出模块、追加模块。
4、 职 工 工 资 管 理 追加模块输出模块删除模块查询模块修改模块输入模块 图1 职工工资管理系统功能图通过上图的功能分析,把整个系统分为六个模块输入模块:该模块先是对职工的姓名、ID 号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据的录入并保存。查询模块:实现按姓名、ID 号查询每个职工的信息,查询显示 基本工资、职务工资、岗位津贴、医疗保险、公积金。修改模块:该模块实现按职工号对职工所有信息的修改。删除模块:该模块实现按职工号对职工所有信息的删除。输出模块: 该模块实现按职工号输出职工的所有信息。追加模块:该模块实现添加新的职工的信息。三、系统的设计与实现(一)输入职工基本信息分
5、析:通过结构体的数组来进行操作,先头定义数组str,先输入需要输入的职工人数m,然后进入循环,每次循环将各项输入结构体数组对应项的对应成员中,当循环次数等于人数时,完成全部员工的资料输入,退出循环。该模块的具体代码如下所示。void save() printf(n输入数据:n);system(cls);printf(职工人数(1-10):n);scanf(%d,&m);for(i=0;im;i+)/注:输入输出最好选用空格相隔scanf(%d %s %d %d %d %d %d,&stri.id,stri.xm,&stri.jbgz,&stri.zwgz,&stri.jt,&stri.yb,&
6、stri.gjj);if(fp=fopen(stu.data,wb)=NULL)printf(cannot open filen);exit(0);for(i=0;im;i+)fprintf(fp,%d %s %d %d %d %d %dn,stri.id,stri.xm,stri.jbgz,stri.zwgz,stri.jt,stri.yb,stri.gjj); fclose(fp);(二)显示职工信息先通过读取函数的返回值确定职工人数m,再通过循环将员工工资资料逐个打印,当循环次数达到m时退出循环。其中总工资由程序计算,总工资=基本工资+职务工资+津贴-医疗保险-公积金该模块的具体代码如下
7、所示。void display() /*浏览函数*/int i,sum=0;system(cls);printf(职工号 姓名 基本工资 职务工资 津贴 医疗保险 公积金 总工资 n);for(i=0;im;i+) /*m为输入部分的职工人数*/printf(n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ,stri.id,stri.xm,stri.jbgz,stri.zwgz,stri.jt,stri.yb,stri.gjj,stri.total);sum+=stri.total;/计算员工总工资之和 printf(nn职工平均工资为:%d n,sum/m)
8、;(三)添加新的职工信息打印原有职工资料,询问要添加的职工人数并询问是否确定添加。逐个逐项输入员工信息,之后程序计算其总工资。完成后显示“添加成功”,打印新的员工资料并自动保存。添加的方法为:定义一个相同类型的结构体数组,将原有项复制后增添新的项,并保存新的数组。该模块的具体代码如下所示。void crzgxx() int n;int count=0; int j;printf(n 原来的职工信息:n);sczgxx();display(); printf(n);printf(请输入想增加的职工数:n);/确定要加入的职工数nscanf(%d,&n);for (j=m;j(m+n);j+)/添
9、加n名员工的信息printf(n 请输入新增加职工的信息:n);printf(职工号 姓名 基本工资 职务工资 津贴 医疗保险 公积金n);scanf(%d %s %d %d %d %d %d,&strj.id,strj.xm,&strj.jbgz,&strj.zwgz,&strj.jt,&strj.yb,&strj.gjj);strj.total=( strj.jbgz+ strj.zwgz + strj.jt- strj.yb-strj.gjj);/计算该员工总工资printf(n);count=count+1;printf(已增加的人数:n);printf(%dn,count); pri
10、ntf(n添加成功n); m=m+count;/将新添加员工的人数加到总员工人数中printf(n增加后的所有职工信息:n);printf(n);display();/显示添加后的信息fclose(fp);(四) 修改职工信息打印员工信息并提示输入要修改资料的职工姓名。按提示确定要修改,确定要修改的项目,输入要修改成的结果并将该结果赋给对应项的对应成员,完成对特定职工特定项目的修改。该模块的具体代码如下所示。void xgzgxx() int id;char xm20;int jbgz; int zwgz;int jt;int yb;int gjj;int b,c,i,n,t,button;
11、system(cls);printf(n 原来的职工信息:n);display(); printf(n);printf(请输入要修改的职工的姓名:n);scanf(%s,xm);for(button=1,i=0;button&i8|c1) printf(n选择错误,请重新选择!n); button=0; if(button=1)printf(n查无此人n); do switch(c) /*因为当找到第i个职工时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人*/ case 1:printf(职工号改为: );scanf(%d,&id);stri-1.id=id;break
12、; case 2:printf(姓名改为: );scanf(%s,xm);strcpy(stri-1.xm,xm); break; case 3:printf(基本工资改为: );getchar();scanf(%d,&jbgz);stri-1.jbgz=jbgz;stri-1.total=( stri-1.jbgz+ stri-1.zwgz + stri-1.jt- stri-1.yb- stri-1.gjj); break; case 4:printf(职务工资改为: ); scanf(%d,&zwgz);stri-1.zwgz=zwgz;stri-1.total=( stri-1.jbg
13、z+ stri-1.zwgz + stri-1.jt- stri-1.yb- stri-1.gjj); break; case 5:printf(津贴改为: ); scanf(%d,&jt); stri-1.jt=jt; stri-1.total=( stri-1.jbgz+ stri-1.zwgz + stri-1.jt- stri-1.yb- stri-1.gjj);break; case 6:printf(医疗保险改为: );scanf(%d,&yb);stri-1.yb=yb;stri-1.total=( stri-1.jbgz+ stri-1.zwgz + stri-1.jt- st
14、ri-1.yb- stri-1.gjj);break; case 7:printf(公积金改为: );scanf(%d,&gjj);stri-1.gjj=gjj;stri-1.total=( stri-1.jbgz+ stri-1.zwgz + stri-1.jt- stri-1.yb- stri-1.gjj); break; case 8:xgzgxx(); break; printf(n);printf(nn 确定修改 请按1 ; 重新修改 请按2: n); scanf(%d,&b); while(b=2);printf(n修改后的所有职工信息:n);printf(n);display()
15、;printf(n按1 继续修改 ,不再修改请按0n);scanf(%d,&t);switch(t) case 1:xgzgxx();break;case 0:break;default :break; (五)删除职工信息打印员工资料并提示输入要删除职工的姓名,输入后若该职工不存在则打印“查无此人”;若存在,则显示该职工资料并询问是否确定删除。若确定,则删除。删除时,通过对比输入的姓名与资料中的姓名做对比从而确定要删除的项i,从第i项开始,将后一项的各成员的值赋给前一项各对应的成员,完成对第i项的删除。该模块的具体代码如下所示。void delet()/*删除函数 */ int i,j,n,t
16、,button; char xm20; printf(n 原来的职工信息:n); display(); /显示删除前的员工信息 printf(n);printf(按姓名删除:n); scanf(%s,xm); for(button=1,i=0;button&im;i+)/主函数中确定button=1时各函数才可以被调用 if(strcmp(stri.xm,xm)=0)/按员工姓名查找到某员工 并调出其资料 printf(n此人原始记录为:n);/显示选定员工的信息 printf(职工号 姓名 基本工资 职务工资 津贴 医疗保险 公积金 总工资 n);printf(n %-6d%-6s %-8d
17、 %-8d %-8d %-8d %-8d %-8d ,stri.id,stri.xm,stri.jbgz,stri.zwgz,stri.jt,stri.yb,stri.gjj,stri.total); printf(n确定删除 请按1,不删除请按0n); scanf(%d,&n);if(n=1)for(j=i;jm-1;j+)/从第i项开始 将后一项的各成员的值赋给前一项各对应的成员 完成对第i项的删除strcpy(strj.xm,strj+1.xm);strj.id=strj+1.id;strj.jbgz=strj+1.jbgz;strj.zwgz=strj+1.zwgz;strj.jt=s
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 职工工资 管理 系统