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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

人事管理系统C源代码.docx

1、人事管理系统C源代码#include stdio.h /*标准输入输出函数库*/#include stdlib.h /*标准函数库*/#include string.h /*字符串函数库*/#include conio.h /*屏幕操作函数库*/#define HEADER1 -RSDA- n#define HEADER2 | number| name | jbgz | jj | kk | yfgz | sk | sfgz | n#define HEADER3 |-|-|-|-|-|-|-|-| n#define FORMAT |%-8s|%-10s |%8.2f|%8.2f|%8.2f|%8

2、.2f|%8.2f|%8.2f| n#define DATA p-num,p-name,p-jbgz,p-jj,p-kk,p-yfgz,p-sk,p-sfgz#define END - n#define N 60int saveflag=0; /*是否需要存盘的标志变量*/*定义与职工有关的数据结构*/typedef struct employee /*标记为employee*/char num10; /*职工编号*/char name15; /*职工姓名*/float jbgz; /*基本工资*/float jj; /*奖金*/float kk; /*扣款*/float yfgz; /*应发

3、工资*/float sk; /*税款*/float sfgz; /*实发工资*/RSDA;void menu() /*主菜单*/system(cls); /*调用DOS命令,清屏.与clrscr()功能相同*/ printf( The Employee Management System n);printf( *Menu*n);printf( * 1 input record 2 delete record *n);printf( * 3 search record 4 modify record *n);printf( * 5 insert record 6 count record *n)

4、;printf( * 7 sort record 8 save record *n);printf( * 9 display record 0 quit system *n);printf( *n);/*printf()送格式化输出至屏幕中*/void printheader() /*格式化输出表头*/ printf(HEADER1); printf(HEADER2); printf(HEADER3);void printdata(RSDA pp) /*格式化输出表中数据*/ RSDA* p; p=&pp; printf(FORMAT,DATA);void Disp(RSDA tp,int n

5、) /*显示数组tp中存储的记录,内容为employee结构中定义的内容*/int i;if(n=0) /*表示没有职工工资记录*/ printf(n=Not employee record!n); while(getchar()!=n) continue; getchar(); return;printf(nn);printheader(); /*输出表格头部*/i=0;while(iNot find this employee record!n);/*作用:用于定位数组中符合要求的记录,并返回保存该记录的数组元素下标值参数:findmess保存要查找的具体内容; nameornum保存按什

6、么在数组中查找*/int Locate(RSDA 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; i ; else if(strcmp(nameornum,name)=0) /*按职工姓名查询*/ while(in) if(strcmp(tpi.name,findmess)=0) /*若找到findmess值的姓名*/ re

7、turn i; i ; return -1; /*若未找到,返回一个整数-1*/*输入字符串,并进行长度验证(长度lens) printf(n exceed the required length! n); /*进行长度校验,超过lens值重新输入*/ while(strlen(n)lens); strcpy(t,n); /*将输入的字符串复制到字符串t中*/*输入数值,0数值)*/float numberinput(char *notice) float t=0.00; do printf(notice); /*显示提示信息*/ scanf(%f,&t); /*输入如工资等数值型的值*/ i

8、f(t=0! n); /*进行数值校验*/ while(t0); return t; /*增加职工工资记录*/int Add(RSDA tp,int n) char ch,num10; int i,flag=0; system(cls); Disp(tp,n); /*先打印出已有的职工工资信息*/ while(1) /*一次可输入多条记录,直至输入职工编号为0的记录结束添加操作*/ while(1) /*输入职工编号,保证该编号没有被使用,若输入编号为0,则退出添加记录操作*/ stringinput(num,10,input number(press 0return menu):); /*格

9、式化输入编号并检验*/ flag=0; if(strcmp(num,0)=0) /*输入为0,则退出添加操作,返回主界面*/ return n; i=0; while(iThe number %s is existing,try again?(y/n):,num); scanf(%c,&ch); if(ch=y|ch=Y) continue; else return n; else break; strcpy(tpn.num,num); /*将字符串num复制到tpn.num中*/ stringinput(tpn.name,15,Name:); tpn.jbgz=numberinput(jbg

10、z:); /*输入并检验基本工资*/ tpn.jj=numberinput(jiangjin:); /*输入并检验奖金*/ tpn.kk=numberinput(koukuan:); /*输入并检验扣款*/ tpn.yfgz=tpn.jbgz tpn.jj-tpn.kk; /*计算应发工资*/ tpn.sk=tpn.yfgz*0.12; /*计算税金,这里取应发工资的12%*/ tpn.sfgz=tpn.yfgz-tpn.sk; /*计算实发工资*/ saveflag=1; n ; return n;/*按职工编号或姓名,查询记录*/void Qur(RSDA tp,int n) int se

11、lect; /*1:按编号查,2:按姓名查,其他:返回主界面(菜单)*/ char searchinput20; /*保存用户输入的查询内容*/ int p=0; if(nNo employee record!n); getchar(); return; system(cls); printf(n =1 Search by number =2 Search by namen); printf( please choice1,2:); scanf(%d,&select); if(select=1) /*按编号查询*/ stringinput(searchinput,10,input the ex

12、isting employee number:); p=Locate(tp,n,searchinput,num);/*在数组tp中查找编号为searchinput值的元素,并返回该数组元素的下标值*/ if(p!=-1) /*若找到该记录*/ printheader(); printdata(tpp); printf(END); printf(press any key to return); getchar(); else Nofind(); getchar();else if(select=2) /*按姓名查询*/ stringinput(searchinput,15,input the

13、existing employee name:); p=Locate(tp,n,searchinput,name); if(p!=-1) printheader(); printdata(tpp); printf(END); printf(press any key to return); getchar(); else Nofind(); getchar();else Wrong(); getchar(); /*删除记录:先找到保存该记录的数组元素的下标值,然后在数组中删除该数组元素*/int Del(RSDA tp,int n)int sel;char findmess20;int p=0

14、,i=0;if(nNo employee record!n); getchar(); return n;system(cls);Disp(tp,n);printf(n =1 Delete by number =2 Delete by namen);printf( please choice1,2:);scanf(%d,&sel);if(sel=1) stringinput(findmess,10,input the existing employee number:); p=Locate(tp,n,findmess,num); getchar(); if(p!=-1) for(i=p 1;id

15、elete success!n); n-; getchar(); saveflag=1; else Nofind(); getchar(); else if(sel=2) /*先按姓名查询到该记录所在的数组元素的下标值*/ stringinput(findmess,15,input the existing employee name:); p=Locate(tp,n,findmess,name); getchar(); if(p!=-1) for(i=p 1;idelete success!n); n-; getchar(); saveflag=1; else Nofind(); getch

16、ar(); return n;/*修改记录:先按输入的职工编号查询到该记录,然后提示用户修改编号之外的值,编号不能修改*/void Modify(RSDA tp,int n) char findmess20; int p=0; if(nNo employee record!n); getchar(); return ; system(cls); printf(modify employee recorder); Disp(tp,n); stringinput(findmess,10,input the existing employee number:); /*输入并检验该编号*/ p=Loc

17、ate(tp,n,findmess,num); /*查询到该数组元素,并返回下标值*/ if(p!=-1) /*若p!=1,表明已经找到该数组元素*/ printf(Number:%s,n,tpp.num); printf(Name:%s,tpp.name); stringinput(tpp.name,15,input new name:); printf(jbgz:%8.2f,tpp.jbgz); tpp.jbgz=numberinput(jbgz:); printf(jiangjin:%8.2f,tpp.jj); tpp.jj=numberinput(jiangjin:); printf(

18、koukuan:%8.2f,tpp.kk); tpp.kk=numberinput(koukuan:); tpn.yfgz=tpn.jbgz tpn.jj-tpn.kk; tpn.sk=tpn.yfgz*0.12; tpn.sfgz=tpn.yfgz-tpn.sk; printf(n=modify success!n); getchar(); Disp(tp,n); getchar(); saveflag=1; else Nofind(); getchar(); return ;/*插入记录:按职工编号查询到要插入的数组元素的位置,然后在该编号之后插入一个新数组元素。*/int Insert(

19、RSDA tp,int n) char ch,num10,s10; /*s保存插入点位置之前的编号,num保存输入的新记录的编号*/ RSDA newinfo; int flag=0,i=0,kkk=0; system(cls); Disp(tp,n); while(1) stringinput(s,10,please input insert location after the Number:); flag=0;i=0; while(iThe number %s is not existing,try again?(y/n):,s); scanf(%c,&ch); if(ch=y|ch=Y

20、) continue; else return n; /*以下新记录的输入操作与Add()相同*/ while(1) stringinput(num,10,input new employee Number:); i=0;flag=0; while(iSorry,The number %s is existing,try again?(y/n):,num); scanf(%c,&ch); if(ch=y|ch=Y) continue; else return n; else break; strcpy(newinfo.num,num); /*将字符串num复制到newinfo.num中*/ s

21、tringinput(newinfo.name,15,Name:); newinfo.jbgz=numberinput(jbgz:); /*输入并检验jbgz*/ newinfo.jj=numberinput(jiangjin:); /*输入并检验jiangjin*/ newinfo.kk=numberinput(koukuan:); /*输入并检验koukuan*/ newinfo.yfgz=newinfo.jbgz newinfo.jj-newinfo.kk; /*计算yfgz*/ newinfo.sk=newinfo.yfgz*0.12; /*计算sk*/ newinfo.sfgz=ne

22、winfo.yfgz-newinfo.sk; saveflag=1; /*在main()有对该全局变量的判断,若为1,则进行存盘操作*/ for(i=n-1;ikkk;i-) /*从最后一个组织元素开始往向移动一个元素的位置*/ strcpy(tpi 1.num,tpi.num); strcpy(tpi 1.name,tpi.name); tpi 1.jbgz=tpi.jbgz; tpi 1.jj=tpi.jj; tpi 1.kk=tpi.kk; tpi 1.yfgz=tpi.yfgz; tpi 1.sk=tpi.sk; tpi 1.sfgz=tpi.sfgz; strcpy(tpkkk 1.num,new

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

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