C-员工工资管理系统的源代码
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
职工基本信息:如工资卡号、身份证号、姓名、性别、年龄、工龄、部 门、技术职称、技术职称编号、家庭电话号码、手机号码等。 工资基础信息:技术职称编号、技术职称、基本工资、职务工资、各种 补助等。 费用扣除信息:工资卡号、水费、电费、清洁费(5元/月)、闭路电视 费(10元/月)等。 工资单数据:工资卡号、姓名、应发工资、水费、电费、清洁费、闭路 电视费、税金、实发工资、特别奖励。其中:税金计算方法为:应发工 资<800元,税金=0; 800<5%1400元, 税金=(应发工资-800)应发工 资 应发工资>10%1400元, 税金=(应发工资-1400)
Βιβλιοθήκη Baidu
return -1; /*若未找到,返回一个整数-1*/ } /*输入字符串,并进行长度验证(长度<lens)*/ void stringinput(char *t,int lens,char *notice) { char n[255]; do{ printf(notice); /*显示提示信息*/ scanf("%s",n); /*输入字符串*/ if(strlen(n)>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); /*输入如工资等数值型的值*/ if(t<0) printf("\n score must >=0! \n"); /*进行数值校验*/ }while(t<0); return t; } /*增加职工工资记录*/ int Add(ZGGZ tp[],int n) { char ch,num[10]; int i,flag=0; system("cls"); Disp(tp,n); /*先打印出已有的职工工资信息*/ while(1) /*一次可输入多条记录,直至输入职工编号为0的记录才结束 添加操作*/
{ while(1) /*输入职工编号保证该编号没有被使用,若输入编号为0,则 退出添加记录操作*/ { stringinput(num,10,"input number(press '0'return menu):"); /*格 式化输入编号并检验*/ flag=0; if(strcmp(num,"0")==0) /*输入为0,则退出添加操作,返回主界面 */ { return n; } i=0; while(i<n) /*查询该编号是否已经存在,若存在则要求重新输入一个未 被占用的编号*/ { if(strcmp(tp[i].num,num)==0) { flag=1; break; } i++; } if(flag==1) /*提示用户是否重新输入*/ { getchar(); printf("==>The number %s is existing,try again?(y/n):",num); scanf("%c",&ch); if(ch=='y'||ch=='Y') continue; else return n; } else { break;
{ char num[10]; /*职工编号*/ char name[15]; /*职工姓名*/ float jbgz; /*基本工资*/ float jj; /*奖金*/ float kk; /*扣款*/ float yfgz; /*应发工资*/ float sk; /*税款*/ float sfgz; /*实发工资*/ }ZGGZ; void menu() /*主菜单*/ { system("cls"); /*调用DOS命令,清屏.与clrscr()功能相同*/ textcolor(10); /*在文本模式中选择新的字符颜色*/ gotoxy(10,5); /*在文本窗口中设置光标*/ cprintf(" The Employee' Salary Management System \n"); gotoxy(10,8); cprintf("**********************Menu*****************************\n"); gotoxy(10,9); cprintf(" * 1 input record 2 delete record *\n"); gotoxy(10,10); cprintf(" * 3 search record 4 modify record *\n"); gotoxy(10,11); cprintf(" * 5 insert record 6 count record *\n"); gotoxy(10,12); cprintf(" * 7 sort reord 8 save record *\n"); gotoxy(10,13); cprintf(" * 9 display record 0 quit system *\n"); gotoxy(10,14); cprintf("********************************************************\n"); /*cprintf()送格式化输出至文本窗口屏幕中*/ }
{ printf("\n\n\n\n\n*******Error:input has wrong! press any key to continue*******\n"); getchar(); } void Nofind() /*输出未查找此职工的信息*/ { printf("\n=====>Not find this employee record!\n"); } /* 作用:用于定位数组中符合要求的记录,并返回保存该记录的数组元 素下标值 ,参数:findmess[]保存要查找的具体内容; nameornum[] 保存按什么在数组中查找; */ int Locate(ZGGZ tp[],int n,char findmess[],char nameornum[]) { int i=0; if(strcmp(nameornum,"num")==0) /*按职工编号查询*/ { while(i<n) { if(strcmp(tp[i].num,findmess)==0) /*若找到findmess值的 职工编号*/ return i; i++; } }else if(strcmp(nameornum,"name")==0) /*按职工姓名查询*/ { while(i<n) { if(strcmp(tp[i].name,findmess)==0) /*若找到findmess 值的姓名*/ return i; i++; } }
/*这是我开始做课程设计时写的*/ #include "stdio.h" /*标准输入输出函数库*/ #include "stdlib.h" /*标准函数库*/ #include "string.h" /*字符串函数库*/ #include "conio.h" /*屏幕操作函数库*/ #define HEADER1 " -------------------------------ZGGZ--------------------------------------- \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.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 60 int saveflag=0; /*是否需要存盘的标志变量*/ /*定义与职工有关 的数据结构*/ typedef struct employee /*标记为employee*/
void printheader() /*格式化输出表头*/ { 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) /*表示没有职工工资记录*/ { printf("\n=====>Not employee record!\n"); getchar(); return; } printf("\n\n"); printheader(); /*输出表格头部*/ i=0; while(i<n) /*逐条输出数组中存储的职工信息*/ { printdata(tp[i]); i++; printf(HEADER3); } getchar(); } Void Wrong() /*输出按键错误信息*/
} } strcpy(tp[n].num,num); /*将字符串num拷贝到tp[n].num中*/ stringinput(tp[n].name,15,"Name:"); tp[n].jbgz=numberinput("jbgz:"); /*输入并检验基本工资*/ tp[n].jj=numberinput("jiangjin:"); /*输入并检验奖金*/ tp[n].kk=numberinput("koukuan:"); /*输入并检验扣款*/ tp[n].yfgz=tp[n].jbgz+tp[n].jj-tp[n].kk; /*计算应发工资*/ tp[n].sk=tp[n].yfgz*0.12; /*计算税金,这里取应发工资的百分之一十 二*/ tp[n].sfgz=tp[n].yfgz-tp[n].sk; /*计算实发工资*/ saveflag=1; n++; } return n; } /*按职工编号或姓名,查询记录*/ void Qur(ZGGZ tp[],int n) { int select; /*1:按编号查,2:按姓名查,其他:返回主界面(菜 单)*/ char searchinput[20]; /*保存用户输入的查询内容*/ int p=0; if(n<=0) /*若数组为空*/ { system("cls"); printf("\n=====>No employee record!\n"); getchar(); return; } system("cls"); printf("\n =====>1 Search by number =====>2 Search by name\n"); printf(" please choice[1,2]:"); scanf("%d",&select);
Βιβλιοθήκη Baidu
return -1; /*若未找到,返回一个整数-1*/ } /*输入字符串,并进行长度验证(长度<lens)*/ void stringinput(char *t,int lens,char *notice) { char n[255]; do{ printf(notice); /*显示提示信息*/ scanf("%s",n); /*输入字符串*/ if(strlen(n)>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); /*输入如工资等数值型的值*/ if(t<0) printf("\n score must >=0! \n"); /*进行数值校验*/ }while(t<0); return t; } /*增加职工工资记录*/ int Add(ZGGZ tp[],int n) { char ch,num[10]; int i,flag=0; system("cls"); Disp(tp,n); /*先打印出已有的职工工资信息*/ while(1) /*一次可输入多条记录,直至输入职工编号为0的记录才结束 添加操作*/
{ while(1) /*输入职工编号保证该编号没有被使用,若输入编号为0,则 退出添加记录操作*/ { stringinput(num,10,"input number(press '0'return menu):"); /*格 式化输入编号并检验*/ flag=0; if(strcmp(num,"0")==0) /*输入为0,则退出添加操作,返回主界面 */ { return n; } i=0; while(i<n) /*查询该编号是否已经存在,若存在则要求重新输入一个未 被占用的编号*/ { if(strcmp(tp[i].num,num)==0) { flag=1; break; } i++; } if(flag==1) /*提示用户是否重新输入*/ { getchar(); printf("==>The number %s is existing,try again?(y/n):",num); scanf("%c",&ch); if(ch=='y'||ch=='Y') continue; else return n; } else { break;
{ char num[10]; /*职工编号*/ char name[15]; /*职工姓名*/ float jbgz; /*基本工资*/ float jj; /*奖金*/ float kk; /*扣款*/ float yfgz; /*应发工资*/ float sk; /*税款*/ float sfgz; /*实发工资*/ }ZGGZ; void menu() /*主菜单*/ { system("cls"); /*调用DOS命令,清屏.与clrscr()功能相同*/ textcolor(10); /*在文本模式中选择新的字符颜色*/ gotoxy(10,5); /*在文本窗口中设置光标*/ cprintf(" The Employee' Salary Management System \n"); gotoxy(10,8); cprintf("**********************Menu*****************************\n"); gotoxy(10,9); cprintf(" * 1 input record 2 delete record *\n"); gotoxy(10,10); cprintf(" * 3 search record 4 modify record *\n"); gotoxy(10,11); cprintf(" * 5 insert record 6 count record *\n"); gotoxy(10,12); cprintf(" * 7 sort reord 8 save record *\n"); gotoxy(10,13); cprintf(" * 9 display record 0 quit system *\n"); gotoxy(10,14); cprintf("********************************************************\n"); /*cprintf()送格式化输出至文本窗口屏幕中*/ }
{ printf("\n\n\n\n\n*******Error:input has wrong! press any key to continue*******\n"); getchar(); } void Nofind() /*输出未查找此职工的信息*/ { printf("\n=====>Not find this employee record!\n"); } /* 作用:用于定位数组中符合要求的记录,并返回保存该记录的数组元 素下标值 ,参数:findmess[]保存要查找的具体内容; nameornum[] 保存按什么在数组中查找; */ int Locate(ZGGZ tp[],int n,char findmess[],char nameornum[]) { int i=0; if(strcmp(nameornum,"num")==0) /*按职工编号查询*/ { while(i<n) { if(strcmp(tp[i].num,findmess)==0) /*若找到findmess值的 职工编号*/ return i; i++; } }else if(strcmp(nameornum,"name")==0) /*按职工姓名查询*/ { while(i<n) { if(strcmp(tp[i].name,findmess)==0) /*若找到findmess 值的姓名*/ return i; i++; } }
/*这是我开始做课程设计时写的*/ #include "stdio.h" /*标准输入输出函数库*/ #include "stdlib.h" /*标准函数库*/ #include "string.h" /*字符串函数库*/ #include "conio.h" /*屏幕操作函数库*/ #define HEADER1 " -------------------------------ZGGZ--------------------------------------- \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.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 60 int saveflag=0; /*是否需要存盘的标志变量*/ /*定义与职工有关 的数据结构*/ typedef struct employee /*标记为employee*/
void printheader() /*格式化输出表头*/ { 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) /*表示没有职工工资记录*/ { printf("\n=====>Not employee record!\n"); getchar(); return; } printf("\n\n"); printheader(); /*输出表格头部*/ i=0; while(i<n) /*逐条输出数组中存储的职工信息*/ { printdata(tp[i]); i++; printf(HEADER3); } getchar(); } Void Wrong() /*输出按键错误信息*/
} } strcpy(tp[n].num,num); /*将字符串num拷贝到tp[n].num中*/ stringinput(tp[n].name,15,"Name:"); tp[n].jbgz=numberinput("jbgz:"); /*输入并检验基本工资*/ tp[n].jj=numberinput("jiangjin:"); /*输入并检验奖金*/ tp[n].kk=numberinput("koukuan:"); /*输入并检验扣款*/ tp[n].yfgz=tp[n].jbgz+tp[n].jj-tp[n].kk; /*计算应发工资*/ tp[n].sk=tp[n].yfgz*0.12; /*计算税金,这里取应发工资的百分之一十 二*/ tp[n].sfgz=tp[n].yfgz-tp[n].sk; /*计算实发工资*/ saveflag=1; n++; } return n; } /*按职工编号或姓名,查询记录*/ void Qur(ZGGZ tp[],int n) { int select; /*1:按编号查,2:按姓名查,其他:返回主界面(菜 单)*/ char searchinput[20]; /*保存用户输入的查询内容*/ int p=0; if(n<=0) /*若数组为空*/ { system("cls"); printf("\n=====>No employee record!\n"); getchar(); return; } system("cls"); printf("\n =====>1 Search by number =====>2 Search by name\n"); printf(" please choice[1,2]:"); scanf("%d",&select);