1、 /*基本工资*/ float jj; /*奖金*/ float kk; /*扣款*/ float yfgz; /*应发工资*/ float sk; /*税款*/ float sfgz; /*实发工资*/RSDA;void menu() /*主菜单*/ system(cls); /*调用DOS命令,清屏。与clrscr()功能相同*/;cprintf( THE EMPLOYEE Management System n *Menu*n * 1 input record 2 delete record *n * 3 search record 4 modify record *n * 5 inse
2、rt record 6 count record *n * 7 sort record 8 save record *n * 9 sort record 0 quit system *n /*cprintf()送格式化输出至文本窗口屏幕中*/ 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)
3、 /*显示数组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! /*作用:用于定位数组中符合要求的记录,并返回保存该记录的数组元素下标值 参数:findmess保存要查找的具体内容;nameornum保存按什
4、么数组中查找*/int Locate (RSDA tp,int n,char findmess,char nameornum) int i=0; if(strcmp(nameornum,num)=0) /*按职工编号查询*/ while (ilens) printf(n exceed the required length! n /*进行长度校验,超过lens值重新输入*/while (strlen(n)lens);strcpy(t,n); /*讲输入的字符串复制到自复查un个t中*/ /*输入数值,=树枝*/float numberinput(char *notice) float t=0.
5、00; do printf(notice); scanf(%f,&t); /*输入如工资等数值型的值*/ if(t=0! /*进行数值校验*/ while(t0); return t;int Add(RSDA tp,int n) char ch,num10; int i,flag=0; system ( Disp (tp,n); /*先打印出已有的职工工资信息*/ while(1) /*一次可输入多条记录,直至输入职工编号为的记录才结束添加操作*/ while(1) /*输入职工编号,保证该编号没有被使用,若输入编号为,则推出添加记录操作*/ stringinput(num,10,input
6、number(press 0 return menu):/*格式化输入编号并校验*/ flag=0; if(strcmp(num,0)=0) /*输入为,则推出添加草i做,返回主界面*/ return n; i=0; while(iThe number %s is existing,try again?(y/n):,num); scanf(%cch); if(ch=y|ch=Y continue; else return n; else break; strcpy(tpn.num,num); /*就爱那个字符串num复制到tp.num中*/ stringinput(tpn.name,15,Na
7、me: tpn.jbgz=numberinput(jbgz: /*输入并检验基本工资*/ tpn.jj=numberinput(jiangjin: /*输入并检验奖金*/ tpn.kk=numberinput(koukuan: /*输入并检验扣款*/ tpn.yfgz=tpn.jbgz+tpn.jj-tpn.kk; /*计算应发工资*/ tpn.sk=tpn.yfgz*0.12; /*计算税金,这里取应发工资的%*/ tpn.sfgz=tpn.yfgz-tpn.sk; /*计算实发工资*/ saveflag=1; n+; return n; /*按职工编号或姓名,查询记录*/ void Qur
8、 (RSDA tp,int n) int select; /*1:按编号查,:按姓名查,其他:返回主界面*/ char searchinput20; /*保存用户输入的查询内容*/ int p=0; if(n1 Search by number =2 Search by namen please choice1,2:%dselect); if(select=1) /*按编号查询*/ stringinput(searchinput,10,input the existing employee number: p=Locate(tp,n,searchinput, /*在数组tp中查找编号为sear
9、chinput值的元素,并返回该数组元素的下标值*/ if (p!=-1) /*若找到该记录*/ printheader(); printdata(tpp); printf(END);press any key to return Nofind(); getchar(); else if(select=2) /*按姓名查询*/ stringinput(searchinput,15,input the existing emp;oyee name: if(p!=-1) else Wrong(); /*删除记录:先找到保存该记录的数组元素的先标值,然后在数组中删除该数组元素*/ int Del(R
10、SDA tp,int n) int sel; char findmess20; int p=0,i=0; if(n1 Delect by number =2 Delect by name n please chioce1,2:sel); if(sel=1) stringinput(findmess,10, p=Locate(tp,n,findmess, for(i=p+1;idelete success! n-; saveflag=1; else if(sel=2) /*先按姓名查询到该记录所在的数组元素的下标值*/ stringinput(findmess,15, p=Locate(tp,n
11、,findmess, if(p!=1) for(i=p+1; strcpy(tpi-1.num,tpi.num); Nofind(); return n; /*修改记录。先按输入的职工编号查询到该记录,然后提示用户修改编号之外的值,编号不能修改*/ void Modify(RSDA tp,int n) char findmess20; int p=0; return ;modify employee recorder stringinput(findmess,10, /*输入并检验该编号*/ /*查询到该数组,并返回下标值*/=-1) /*若p!=-1,表明已经找到该数组元素*/Number
12、:%s,n,tpp.num);%s,tpp.name); stringinput(tpp.name,15,input new name:%8.2f,tpp.jbgz); tpp.jbgz=numberinput( ,tpp.jj); tpp.jj=numberinput(,tpp.kk); tpp.kk=numberinput( tpn.yfgz=tpn.jbgz+tpn.jj-tpn.kk; tpn.sk+tpn.yfgz*0.12; tpn.sfgz=tpn.yfgz-tpn.sk;modify success! Disp(tp,n); return; /*插入记录:按职工编号查询到要插入
13、的数组元素的位置,然后在该编号之后插入一个新元组*/ int Insert(RSDA tp,int n) char ch,num10,s10; /*s保存插入点位置之前的编号,num保存输入的新记录的编号*/ RSDA newinfo; int flag=0,i=0,kkk=0; Disp (tp,n); while(1) stringinput(s,10,please input insert location sfter the Number:i=0;n) /*查询该编号是够存在,则进行插入之前的新记输入操作*/ if(strcmp(tpi.num,s)=0) kkk=i;flag=1;b
14、reak; if(flag=1) break;The number %s is not existing,try again?,s); continue; return n; /*以下新记录的输入操作与Add()相同*/ stringinput (num,10,input new employee number: i=0;flag=0; while(in) /*查询该编号是否存在,flag=1表示该编号存在*/ if(strcmp (tpi.num,num)=0) flag=1; i+; if(flag=1) getchar();Sorry,The number %s is not existing,try again? else break; strcpy(newinfo.num,num); /*将字符串num复制到newinfo中*/ stringinput(newinfo.name,15,Name newinfo.jbgz=numberinput( newinfo.jj=numberinput( newinfo.kk=numberinput( newinfo.yfgz=newinfo.jbgz+newin
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1