职工信息管理系统(HR怎样做员工信息管理更高效)
本文目录
- HR怎样做员工信息管理更高效
- e员工人事云,企业员工管理系统怎么样有人用过吗
- 为什么越来越多的企业要使用人事系统
- 用C++编写职工信息管理系统
- C语言 职工信息管理系统
- c++职工管理信息系统
- 职工信息管理系统
- 职工工资信息管理系统(C语言,TC环境下编译)
- 职工信息管理系统:(c++程序设计)详细如下
- c语言课程设计——职工信息管理系统
HR怎样做员工信息管理更高效
员工信息管理是每个公司人力资源部门必做的一项工作,但很多HR觉得这项工作很简单:员工的一些基本信息填下,之后统一保存就OK了。
其实不然!
员工信息除了包含基础的信息,还要包括员工在公司的发展轨迹,如员工岗位变动情况、员工奖罚情况、荣誉情况、学历晋升、职称变动等情况,这些信息数据如何处理,如何能快速的提取需要的数据是比较困难的。高段位的HR会十分重视员工信息管理,在新员工入职时就做好系统化的信息管理,这样每位员工在公司的成长轨迹都能清晰可见,同时避免很多不必要的麻烦~
薪人薪事人力资源系统的员工管理模块,可快捷添加、批量更新、随时归档员工信息,把HR从重复劳动中解放;灵活性地自定义员工信息,还能满足更多企业需求。为企业的高效管理打下坚实的基础。
添加入职员工
员工是整个系统使用核心和基础的一步,系统中有了员工,就可以做其他模块的操作,查看统计数据等。所以,使用系统的第一步就是添加员工信息。
▼ 在添加入职员工,或者初期测试时,可以选择单个添加员工的形式。
▼ 系统不仅可以录入中国大陆的手机号,还支持港澳台及国外的手机号录入,所以在添加员工时需要选择左侧对应的区号。
▼ 在添加员工信息中,带*为必填项,非必填项都可以先不用填,之后可以再进行完善。
▼ 添加完待入职员工后,可以在操作列点击“...”,进行入职、提醒、删除相关操作,注意删除操作是不可逆的哦~
▼ 操作入职后会自动进入在职表,提醒操作会向员工发送一封完善信息的邮件。
按照以上操作单个录入员工信息不难,但你可能会问:如果公司已经有上百人了,难道也要一个一个录入?当然不~在薪人薪事人力资源系统中,HR可以【批量添加员工信息】!
批量添加员工
▼ 批量添加员工信息:点击左侧导航栏【员工】➤进入员工模块➤选择【导入】,会出现各个批量添加的选项➤选择【批量添加员工】。
▼ 系统支持自有Excel上传或者下载系统模板完善信息后上传。下载系统内模板,把必填信息复制粘贴到模板中后,批量导入,节约时间精力。
(如果是自有表格,字段一般和系统内不一致,可以手动进行匹配。)
▼ 批量上传完之后,HR可批量直接在此页面开启【员工权限】、【给员工发送绑定通知短信】。
绿色代表开启,灰色代表关闭。信息确认无误后,点击【确认添加】即可成功添加员工信息。
上述功能既能保证员工关键信息录入不遗漏,又可节省HR的时间管理成本,BUT这可不是全部哦~
在薪人薪事人力资源系统的旗舰版本中还有【添加待入职员工】的功能,对于一些即将入职,但还不是公司员工的人员信息,HR也可以通过此功能进行管理~
添加待入职员工
▼ 点击添加待入职员工:同添加员工相同,HR需填写姓名、手机、入职时间、聘用形式等必填项。
▼ 其中HR还需要填写其个人邮箱,并启发送完善信息邮件的开关,以便待入职员工可以自主完善个人信息。
【发送完善信息邮件】开启后,可向待入职员工的个人邮箱发送一封邮件,通过邮件通知待入职人员提前完善个人信息。
在员工模块的【待入职人员库】,可用于存储、管理待入职人员,此外,在招聘模块的应聘者接受 offer 后也会同步到待入职员工中,HR管理更加方便快捷。
员工信息表的完善程度,决定着整个人力资源部数据分析的完整程度和效率,如人员异动分析;招聘、培训、薪酬、绩效等多维分析等。
而HR对员工信息的录入、整理、归纳程度,直接影响了以后的工作。HR千万不能忽略哦~选择专业化、系统化的薪人薪事人力资源系统,更能让工作效率翻倍!至于功能到底有多好,试试就知道啦:https://www.xinrenxinshi.com/
e员工人事云,企业员工管理系统怎么样有人用过吗
企业员工管理系统好用的有很多,涉及有员工信息管理、组织架构、考勤统计、薪资核算、绩效考核、招聘培训等等。好用的人力资源软件是可以根据企业的实际需求来定制,这样可以灵活选择自己所需的功能,不用花钱浪费在不必要的功能上。既然楼主问到e员工人事云,那么e员工人事云算不算的上是好用的企业员工管理系统呢?回答是肯定的,e员工人事云具备上述所有功能。既可以支持选择企业需要的功能,既可以支持个性化定制。
为什么越来越多的企业要使用人事系统
因为随着企业的管理越来越规范,人员规模越来越大,人事类的工作变得复杂繁琐。这就需要人事系统辅助管理。通过人事系统进行自动化,HR部门的工作将变得更加精简。具体表现在减少HR重复性的任务以及一些基本管理任务,光这些就为HR部门节省了不少的时间。那么省下时间来,HR又该做什么工作呢?HR可以专注于员工技能以及专业知识等更重要的工作。通过人事系统,HR还可以得到更多的数据,这些数据可以帮助HR的决策作出数据支持。人事系统带来的自动化可以为企业创造更多的价值。
用C++编写职工信息管理系统
#include《stdio.h》 #include《conio.h》 #include《malloc.h》 #include《string.h》 typedef struct ZHIGONG{ char zhigongNumber;/*职工号*/ char zhigongName;/*职工姓名*/ char zhigongsex; /*职工性别*/ char zhigongage; /*出生年月*/ char zhigongedu;/*学历*/ char zhigongposition; /*职务*/ char zhigongwage; /*工资*/ struct ZHIGONG *next; }ZHIGONG; ZHIGONG *headLink;/*链表表头指针*/ /*以下是函数声明*/ void ReadInfoFormFile(void); void DesplayMenu(void);void CreateHeadLink(void);ZHIGONG *MallocNode(void);void GetInformation(ZHIGONG *t);void InsertOneNode(ZHIGONG *t);void DesplayInfoByzhigongwage(void);void DesplayInfoByezhigongedu(void); void DesplayOneNode(ZHIGONG *t);void DeleteNodeByzhigongNumber(void);void OutputInformation(void);void ChangeMarkByzhigongName(void);void CompositorByTotalzhigongwage(void); void CompositorByTotalzhigongedu(void);void SaveLinkToFile(void); int choose;/*用于接受用户的选择*/ /*主函数*/ void main() { CreateHeadLink(); ReadInfoFormFile(); DesplayMenu(); SaveLinkToFile();} /************************************ 函数功能:从文件中读职工信息到链表中 ************************************/ void ReadInfoFormFile(void) { FILE *fp; ZHIGONG *p; fp=fopen("zhigong.txt","r"); if(!fp) { printf("文件不存在\n"); return; } p=MallocNode(); while(fscanf(fp,"%s%s%s%s%s%s%s",p-》zhigongNumber,p-》zhigongName,p-》zhigongsex, p-》zhigongage,p-》zhigongedu,p-》zhigongposition,p-》zhigongwage)) { InsertOneNode(p); p=MallocNode(); } fclose(fp); } /************************************ 函数功能:显示菜单,根据用户的输入 完成相应的功能 ************************************/ void DesplayMenu(void) { ZHIGONG *p; printf("-------请选择相应功能------------\n\n"); printf("| 1 录入职工信息 |\n"); printf("| 2 显示所有职工的信息 |\n"); printf("| 3按工资查询 |\n"); printf("| 4 按学历查询 |\n"); printf("| 5按工资排序 |\n"); printf("| 6 按学历排序 |\n"); printf("| 7 按职工号删除职工信息 |\n"); printf("| 8 按职工号修改职工信息 |\n"); printf("| 9 退出 |\n\n"); scanf("%d",&choose);/*取得用户的选择*/ switch(choose) { case 1: p=MallocNode();/*先申请一个新结点*/ GetInformation(p);/*要求用户输入信息到新结点中*/ InsertOneNode(p);/*将新结点加到链表中*/ break; case 2: OutputInformation();/*显示所有职工的信息*/ break; case 3: DesplayInfoByzhigongwage();/*根据用户输入的职工工资显示该职工的信息*/ break; case 4: DesplayInfoByezhigongedu(); /*根据用户输入的职工学历显示该职工的信息*/ break; case 5: CompositorByTotalzhigongwage();/* 按工资排序*/ break; case 6: CompositorByTotalzhigongedu();/* 按学历排序*/ break; case 7: DeleteNodeByzhigongNumber();/*根据用户输入的职工号删除该职工信息*/ break; case 8: ChangeMarkByzhigongName();/*根据用户输入的职工姓名修改该职工信息*/ break; case 9: SaveLinkToFile();/*保存数据后再退出*/ free(headLink); default: break; } DesplayMenu();/*递归调用*/ } /************************************ 函数功能:建立链表表头 ************************************/ void CreateHeadLink(void) { ZHIGONG *p; p=(ZHIGONG*)malloc(sizeof(ZHIGONG)); headLink=p; p-》next=NULL; } /**************************************** 函数功能:申请一个新结点,并将其初始化 *****************************************/ ZHIGONG *MallocNode(void) { ZHIGONG *p; int i; p=(ZHIGONG*)malloc(sizeof(ZHIGONG)); if(p==NULL) return NULL; for(i=0;i《10;i++) p-》zhigongNumber=’\0’; for(i=0;i《20;i++) p-》zhigongName=’\0’; for(i=0;i《4;i++) p-》zhigongsex=’\0’; for(i=0;i《10;i++) p-》zhigongage=’\0’; for(i=0;i《10;i++) p-》zhigongedu=’\0’; for(i=0;i《30;i++) p-》zhigongposition=’\0’; for(i=0;i《1000;i++) p-》zhigongwage=’\0’; p-》next=NULL; return p; } /************************************ 函数功能:取得用户输入的职工信息 ************************************/ void GetInformation(ZHIGONG *t) { printf("请输入职工号:\n"); scanf("%s",t-》zhigongNumber); printf("请输入职工姓名:\n"); scanf("%s",t-》zhigongName); printf("请输入职工性别:\n"); scanf("%s",t-》zhigongsex); printf("请输入职工出生年月:\n"); scanf("%s",t-》zhigongage); printf("请输入职工学历:\n"); scanf("%s",t-》zhigongedu); printf("请输入职工职位:\n"); scanf("%s",t-》zhigongposition); printf("请输入职工工资:\n"); scanf("%s",t-》zhigongwage); } /************************************ 函数功能:在链表的结尾处增加一个结点 ************************************/ void InsertOneNode(ZHIGONG *t) { ZHIGONG *p; p=headLink; while(p-》next) { p=p-》next; } p-》next=t; } /************************************************* 函数功能:根据用户输入的职工工资显示该职工的信息 **************************************************/ void DesplayInfoByzhigongwage(void) { ZHIGONG *p; char zhigongwage; char flag=0; p=headLink-》next; printf("请输入职工的工资:\n"); scanf("%s",zhigongwage); while(p) { if(strcmp(p-》zhigongwage,zhigongwage)==0) { printf("职工号\t姓名\t性别\t出生年月\t学历\t职务\t工资\n\n"); DesplayOneNode(p); flag=1; break; } p=p-》next; } if(!flag) printf("对不起,不存在工资为%s的职工\n",zhigongwage); } /************************************************ 函数功能:根据用户输入的职工学历显示该职工的信息 *************************************************/ void DesplayInfoByezhigongedu(void) { ZHIGONG *p; char zhigongedu; char flag=0; p=headLink-》next; printf("请输入职工学历:\n"); scanf("%s",zhigongedu); while(p) { if(strcmp(p-》zhigongedu,zhigongedu)==0) { printf("职工号\t姓名\t性别\t出生年月\t学历\t职务\t工资\n\n"); DesplayOneNode(p); flag=1; break; } p=p-》next; } if(!flag) printf("对不起,不存在学历为 %s 的职工\n",zhigongedu); } /************************************ 函数功能:输出一个结点的信息 ************************************/ void DesplayOneNode(ZHIGONG *t) { printf("%s\t",t-》zhigongNumber); printf("%s\t",t-》zhigongName); printf("%s\t",t-》zhigongsex); printf("%s\t",t-》zhigongage); printf("%s\t",t-》zhigongedu); printf("%s\t",t-》zhigongposition); printf("%s\t\n",t-》zhigongwage); } /************************************************* 函数功能:根据用户输入的职工号删除该职工的信息**************************************************/ void DeleteNodeByzhigongNumber(void) { char zhigongNumber; ZHIGONG *p,*q; char flag=0; printf("请输入要删除的职工的职工号:"); scanf("%s",zhigongNumber); p=headLink; q=headLink-》next; while(q) { if(strcmp(q-》zhigongNumber,zhigongNumber)==0) { p-》next=q-》next; free(q); flag=1; break; } p=p-》next; q=q-》next; } if(!flag) { printf("不存在该职工号的职工\n"); return; } printf("成功删除\n"); } /************************************ 函数功能:显示所有职工的信息 ************************************/ void OutputInformation(void) { ZHIGONG *p; p=headLink-》next; if(p==NULL) { printf("现在没有职工信息,请先输入职工信息\n\n"); return; } printf("职工号\t姓名\t性别\t出生年月\t学历\t职务\t工资\n\n"); while(p) { DesplayOneNode(p); p=p-》next; } } /********************************************* 函数功能:根据输入的职工姓名修改员工的信息**********************************************/ void ChangeMarkByzhigongName(void) { ZHIGONG *p; char zhigongName; char flag=0; char zhigongedu,zhigongwage,zhigongage,zhigongNumber,zhigongsex,zhigongposition; p=headLink-》next; printf("请输入职工姓名:\n"); scanf("%s",zhigongName); while(p) { if(strcmp(p-》zhigongName,zhigongName)==0) { printf("请输入新的职工号:\n"); scanf("%s",&zhigongNumber); printf("请输入新的学历:\n"); scanf("%s",&zhigongedu); printf("请输入新的工资:\n"); scanf("%s",&zhigongwage); printf("请输入新的出生年月:\n"); scanf("%s",&zhigongage); printf("请输入新的性别:\n"); scanf("%s",&zhigongsex); printf("请输入新的职位:\n"); scanf("%s",&zhigongposition); strcpy(p-》zhigongposition,&zhigongposition); strcpy(p-》zhigongsex,&zhigongsex); strcpy(p-》zhigongNumber,&zhigongNumber); strcpy(p-》zhigongedu,&zhigongedu); strcpy(p-》zhigongwage,&zhigongwage); strcpy(p-》zhigongage,&zhigongage); flag=1; printf("修改成功\n"); break; } p=p-》next; } if(!flag) printf("对不起,不存在姓名为 %s 的职工\n",zhigongName); } /************************************ 函数功能:保存链表数据到文件中 ************************************/ void SaveLinkToFile(void) { ZHIGONG *p; FILE *fp; p=headLink-》next; if(p==NULL) { printf("现在没有职工信息,请先输入职工信息\n\n"); return; } fp=fopen("zhigong.txt","w+"); if(!fp) { printf("文件不存在\n"); return; } while(p) { fprintf(fp,"%s%s%s%s%s%s%s",p-》zhigongNumber,p-》zhigongName,p-》zhigongsex, p-》zhigongage,p-》zhigongedu,p-》zhigongposition,p-》zhigongwage); p=p-》next; } fclose(fp); } /************************************ 函数功能:按职工工资排序 ************************************/ void CompositorByTotalzhigongwage(void) { ZHIGONG exchange,*r,*p,*q; r=headLink-》next; if(r==NULL) { printf("现在还没职工信息,请先输入职工信息\n"); return; } while(r)/*两层while循环实现排序*/ { p=r; q=r-》next; while(q) { if((p-》zhigongwage)》(p-》zhigongwage)) { strcpy(exchange.zhigongNumber,q-》zhigongNumber);/*先复制q结点信息到exchange*/ strcpy(exchange.zhigongName,q-》zhigongName); strcpy(exchange.zhigongsex,q-》zhigongsex); strcpy(exchange.zhigongage,q-》zhigongage); strcpy(exchange.zhigongedu,q-》zhigongedu); strcpy(exchange.zhigongposition,q-》zhigongposition); strcpy(exchange.zhigongwage,q-》zhigongwage); strcpy(q-》zhigongNumber,p-》zhigongNumber);/*再复制p结点信息到q*/ strcpy(q-》zhigongName,p-》zhigongName); strcpy(q-》zhigongsex,p-》zhigongsex); strcpy(q-》zhigongage,p-》zhigongage); strcpy(q-》zhigongedu,p-》zhigongedu); strcpy(q-》zhigongposition,p-》zhigongposition); strcpy(q-》zhigongwage,p-》zhigongwage); strcpy(p-》zhigongNumber,exchange.zhigongNumber);/*最后复制exchange结点信息到p*/ strcpy(p-》zhigongName,exchange.zhigongName); strcpy(p-》zhigongsex,exchange.zhigongsex); strcpy(p-》zhigongage,exchange.zhigongage); strcpy(p-》zhigongedu,exchange.zhigongedu); strcpy(p-》zhigongposition,exchange.zhigongposition); strcpy(p-》zhigongwage,exchange.zhigongwage); } q=q-》next; } r=r-》next; } OutputInformation(); }/************************************ 函数功能:按职工学历排序 ************************************/ void CompositorByTotalzhigongedu(void) { ZHIGONG exchange,*r,*p,*q; r=headLink-》next; if(r==NULL) { printf("现在还没职工信息,请先输入职工信息\n"); return; } while(r)/*两层while循环实现排序*/ { p=r; q=r-》next; while(q) { if((q-》zhigongedu)》(p-》zhigongedu)) { strcpy(exchange.zhigongNumber,q-》zhigongNumber);/*先复制q结点信息到exchange*/ strcpy(exchange.zhigongName,q-》zhigongName); strcpy(exchange.zhigongsex,q-》zhigongsex); strcpy(exchange.zhigongage,q-》zhigongage); strcpy(exchange.zhigongedu,q-》zhigongedu); strcpy(exchange.zhigongposition,q-》zhigongposition); strcpy(exchange.zhigongwage,q-》zhigongwage); strcpy(q-》zhigongNumber,p-》zhigongNumber);/*再复制p结点信息到q*/ strcpy(q-》zhigongName,p-》zhigongName); strcpy(q-》zhigongsex,p-》zhigongsex); strcpy(q-》zhigongage,p-》zhigongage); strcpy(q-》zhigongedu,p-》zhigongedu); strcpy(q-》zhigongposition,p-》zhigongposition); strcpy(q-》zhigongwage,p-》zhigongwage); strcpy(p-》zhigongNumber,exchange.zhigongNumber);/*最后复制exchange结点信息到p*/ strcpy(p-》zhigongName,exchange.zhigongName); strcpy(p-》zhigongsex,exchange.zhigongsex); strcpy(p-》zhigongage,exchange.zhigongage); strcpy(p-》zhigongedu,exchange.zhigongedu); strcpy(p-》zhigongposition,exchange.zhigongposition); strcpy(p-》zhigongwage,exchange.zhigongwage); } q=q-》next; } r=r-》next; } OutputInformation(); }
C语言 职工信息管理系统
/*这是我开始做课程设计时写的*/#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 60int saveflag=0; /*是否需要存盘的标志变量*//*定义与职工有关的数据结构*/typedef struct employee /*标记为employee*/{char num; /*职工编号*/char name; /*职工姓名*/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()送格式化输出至文本窗口屏幕中*/}void printheader() /*格式化输出表头*/{ printf(HEADER1); printf(HEADER2); printf(HEADER3);}void printdata(ZGGZ pp) /*格式化输出表中数据*/{ ZGGZ* p; p=&pp printf(FORMAT,DATA);}void Disp(ZGGZ 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++; printf(HEADER3);}getchar();}void Wrong() /*输出按键错误信息*/{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保存按什么在数组中查找;**************************************************************/int Locate(ZGGZ tp){int i=0;if(strcmp(nameornum,"num")==0) /*按职工编号查询*/{ while(i《n) { if(strcmp(tp.num,findmess)==0) /*若找到findmess值的职工编号*/ return i; i++; }}else if(strcmp(nameornum,"name")==0) /*按职工姓名查询*/{ while(i《n) { if(strcmp(tp.name,findmess)==0) /*若找到findmess值的姓名*/ return i; i++; }}return -1; /*若未找到,返回一个整数-1*/}/*输入字符串,并进行长度验证(长度《lens)*/void stringinput(char *t,int lens,char *notice){ char n; 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; 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.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;} } strcpy(tp.num中*/ stringinput(tp.name,15,"Name:"); tp.jbgz=numberinput("jbgz:"); /*输入并检验基本工资*/ tp.jj=numberinput("jiangjin:"); /*输入并检验奖金*/ tp.kk=numberinput("koukuan:"); /*输入并检验扣款*/ tp.kk; /*计算应发工资*/ tp.yfgz*0.12; /*计算税金,这里取应发工资的百分之一十二*/ tp.sk; /*计算实发工资*/ saveflag=1; n++; } return n;}/*按职工编号或姓名,查询记录*/void Qur(ZGGZ tp,int n){int select; /*1:按编号查,2:按姓名查,其他:返回主界面(菜单)*/char searchinput; /*保存用户输入的查询内容*/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:");scanf("%d",&select);if(select==1) /*按编号查询*/ { stringinput(searchinput,10,"input the existing employee number:"); p=Locate(tp,n,searchinput,"num");/*在数组tp中查找编号为searchinput值的元素,并返回该数组元素的下标值*/ if(p!=-1) /*若找到该记录*/ { printheader(); printdata(tp); printf(END); printf("press any key to return"); getchar(); } else Nofind(); getchar();}else if(select==2) /*按姓名查询*/{ stringinput(searchinput,15,"input the existing employee name:"); p=Locate(tp,n,searchinput,"name"); if(p!=-1) { printheader(); printdata(tp); printf(END); printf("press any key to return"); getchar(); } else Nofind(); getchar();}else Wrong(); getchar(); }/*删除记录:先找到保存该记录的数组元素的下标值,然后在数组中删除该数组元素*/int Del(ZGGZ tp,int n){int sel;char findmess;int p=0,i=0;if(n《=0){ system("cls"); printf("\n=====》No employee record!\n"); getchar(); return n;}system("cls");Disp(tp,n);printf("\n =====》1 Delete by number =====》2 Delete by name\n");printf(" please choice:");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;i《n;i++) /*删除此记录,后面记录向前移*/ { strcpy(tp.num); strcpy(tp.name); tp.jbgz; tp.jj; tp.kk; tp.yfgz; tp.sk; tp.sfgz; } printf("\n==》delete 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;i《n;i++) /*删除此记录,后面记录向前移*/ { strcpy(tp.num); strcpy(tp.name); tp.jbgz; tp.jj; tp.kk; tp.yfgz; tp.sk; tp.sfgz; } printf("\n=====》delete success!\n"); n--; getchar(); saveflag=1; } else Nofind(); getchar();} return n;}/*修改记录。先按输入的职工编号查询到该记录,然后提示用户修改编号之外的值,编号不能修改*/void Modify(ZGGZ tp,int n){char findmess;int p=0;if(n《=0){ system("cls"); printf("\n=====》No employee record!\n"); getchar(); return ;}system("cls");printf("modify employee recorder");Disp(tp,n);stringinput(findmess,10,"input the existing employee number:"); /*输入并检验该编号*/p=Locate(tp,n,findmess,"num"); /*查询到该数组元素,并返回下标值*/if(p!=-1) /*若p!=-1,表明已经找到该数组元素*/{ printf("Number:%s,\n",tp.num); printf("Name:%s,",tp.name); stringinput(tp.name,15,"input new name:"); printf("jbgz:%8.2f,",tp.jbgz); tp.jbgz=numberinput("jbgz:"); printf("jiangjin:%8.2f,",tp.jj); tp.jj=numberinput("jiangjin:"); printf("koukuan:%8.2f,",tp.kk); tp.kk=numberinput("koukuan:"); tp.kk; tp.yfgz*0.12; tp.sk; printf("\n=====》modify success!\n"); getchar(); Disp(tp,n); getchar(); saveflag=1;}else {Nofind(); getchar(); }return ;}/*插入记录:按职工编号查询到要插入的数组元素的位置,然后在该编号之后插入一个新数组元素。*/int Insert(ZGGZ tp,int n){ char ch,num保存输入的新记录的编号*/ ZGGZ 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(i《n) /*查询该编号是否存在,flag=1表示该编号存在*/ { if(strcmp(tp.num,s)==0) {kkk=i;flag=1;break;} i++; } if(flag==1) break; /*若编号存在,则进行插入之前的新记录输入操作*/ else { getchar(); printf("\n=====》The number %s is not existing,try again?(y/n):",s); scanf("%c",&ch); if(ch==’y’||ch==’Y’) {continue;} else {return n;} } } /*以下新记录的输入操作与Add()相同*/ while(1) { stringinput(num,10,"input new employee Number:"); i=0;flag=0; while(i《n) /*查询该编号是否存在,flag=1表示该编号存在*/ { if(strcmp(tp.num,num)==0) {flag=1;break;} i++; } if(flag==1) { getchar(); printf("\n=====》Sorry,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中*/ stringinput(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=newinfo.yfgz-newinfo.sk; saveflag=1; /*在main()有对该全局变量的判断,若为1,则进行存盘操作*/ for(i=n-1;i》kkk;i--) /*从最后一个组织元素开始往向移一个元素位置*/ { strcpy(tp.num); strcpy(tp.name); tp.jbgz; tp.jj; tp.kk; tp.yfgz; tp.sk; tp.sfgz; } strcpy(tp.num,newinfo.num); /*在kkk的元素位置后插入新记录*/ strcpy(tp.name,newinfo.name); tp.jbgz=newinfo.jbgz; tp.jj=newinfo.jj; tp.kk=newinfo.kk; tp.yfgz=newinfo.yfgz; tp.sk=newinfo.sk; tp.sfgz=newinfo.sfgz; n++; Disp(tp,n); printf("\n\n"); getchar(); return n;}/*统计公司的员工的工资在各等级的人数*/void Tongji(ZGGZ tp,int n){int count10000=0,count5000=0,count2000=0,count0=0;int i=0;if(n《=0){ system("cls"); printf("\n=====》Not employee record!\n"); getchar(); return ;}system("cls");Disp(tp,n);i=0;while(i《n){ if(tp.sfgz》=10000) {count10000++;i=i+1;continue;} /*实发工资》10000*/ if(tp.sfgz》=5000) {count5000++;i=i+1;continue;} /*5000《=实发工资《10000*/ if(tp.sfgz》=2000) {count2000++;i=i+1;continue;} /*2000《=实发工资《5000*/ if(tp.sfgz《2000) {count0++;i=i+1;continue;} /*实发工资《2000*/}printf("\n------------------------------the TongJi result--------------------------------\n");printf("sfgz》= 10000:%d (ren)\n",count10000);printf("5000《=sfgz《10000:%d (ren)\n",count5000);printf("2000《=sfgz《 5000:%d (ren)\n",count2000);printf("sfgz《 2000:%d (ren)\n",count0);printf("-------------------------------------------------------------------------------\n");printf("\n\npress any key to return");getchar();}/*利用冒泡排序法实现数组的按实发工资字段的降序排序,从高到低*/void Sort(ZGGZ tp,int n){int i=0,j=0,flag=0;ZGGZ newinfo;if(n《=0){ system("cls"); printf("\n=====》Not employee record!\n"); getchar(); return ;}system("cls");Disp(tp,n); /*显示排序前的所有记录*/for(i=0;i《n;i++){ flag=0; for(j=0;j《n-1;j++) if((tp.sfgz)) { flag=1; strcpy(newinfo.num,tp.num); /*利用结构变量newinfo实现数组元素的交换*/ strcpy(newinfo.name,tp.name); newinfo.jbgz=tp.jbgz; newinfo.jj=tp.jj; newinfo.kk=tp.kk; newinfo.yfgz=tp.yfgz; newinfo.sk=tp.sk; newinfo.sfgz=tp.sfgz; strcpy(tp.num); strcpy(tp.name); tp.jbgz; tp.jj; tp.kk; tp.yfgz; tp.sk; tp.sfgz; strcpy(tp.num,newinfo.num); strcpy(tp.name,newinfo.name); tp.jbgz=newinfo.jbgz; tp.jj=newinfo.jj; tp.kk=newinfo.kk; tp.yfgz=newinfo.yfgz; tp.sk=newinfo.sk; tp.sfgz=newinfo.sfgz; } if(flag==0) break;/*若标记flag=0,意味着没有交换了,排序已经完成*/ } Disp(tp,n); /*显示排序后的所有记录*/ saveflag=1; printf("\n =====》sort complete!\n");}/*数据存盘,若用户没有专门进行此操作且对数据有修改,在退出系统时, 会提示用户存盘*/void Save(ZGGZ tp,int n){FILE* fp;int i=0;fp=fopen("c:\\zggz","wb");/*以只写方式打开二进制文件*/if(fp==NULL) /*打开文件失败*/{ printf("\n=====》open file error!\n"); getchar(); return ;}for(i=0;i《n;i++){ if(fwrite(&tp,sizeof(ZGGZ),1,fp)==1)/*每次写一条记录或一个结构数组元素至文件*/ { continue; } else { break; }}if(i》0){ getchar(); printf("\n\n=====》save file complete,total saved’s record number is:%d\n",i); getchar(); saveflag=0;}else{system("cls"); printf("the current link is empty,no employee record is saved!\n"); getchar(); }fclose(fp); /*关闭此文件*/}void main(){ ZGGZ gz; /*定义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(&gz,sizeof(ZGGZ),1,fp)==1) /*一次从文件中读取一条职工工资记录*/ count++;}fclose(fp); /*关闭文件*/printf("\n==》open file sucess,the total records number is : %d.\n",count);getchar();menu();while(1){ system("cls"); menu(); printf("\n Please Enter your choice(0~9):"); /*显示提示信息*/ scanf("%d",&select); if(select==0) { if(saveflag==1) /*若对数组的数据有修改且未进行存盘操作,则此标志为1*/ { getchar(); printf("\n==》Whether save the modified record to file?(y/n):"); scanf("%c",&ch); if(ch==’y’||ch==’Y’) Save(gz,count); } printf("\n===》thank you for useness!"); getchar(); break; } switch(select) { case 1:count=Add(gz,count);break; /*增加职工工资记录*/ case 2:count=Del(gz,count);break; /*删除职工工资记录*/ case 3:Qur(gz,count);break; /*查询职工工资记录*/ case 4:Modify(gz,count);break; /*修改职工工资记录*/ case 5:count=Insert(gz,count);break; /*插入职工工资记录*/ case 6:Tongji(gz,count);break; /*统计职工工资记录*/ case 7:Sort(gz,count);break; /*排序职工工资记录*/ case 8:Save(gz,count);break; /*保存职工工资记录*/ case 9:system("cls");Disp(gz,count);break; /*显示职工工资记录*/ default: Wrong();getchar();break; /*按键有误,必须为数值0-9*/ } }}
c++职工管理信息系统
附1、:使用说明
输入1注册信息:注册职工信息时提示注册员工的个数,且系统会自动给出职工编号,然后输入职工姓名、性别、年龄、学历、工资、地址、联系电话。
输入2浏览信息:操作后可以浏览该公司所有职工的信息。
输入3查询信息:可以根据不同的信息查询公司职工的信息。如按照职工的编号、职工的学历、职工的联系电话。知道职工的其中一个信息就可以查到他的其他信息。实现了掌握少量的信息就可以找到相关的信息。
输入4删除信息:介入这一界面时,先显示全部职工的信息,再输入需要删除职工的名字。操作后可显示删除后的全部职工的信息。
输入5添加信息:进入这一界面后,先显示原来的职工的信息,再提示添加信息的人数,然后输入新的职工的信息。操作完后可自动显示添加完后的全部职工的信息。
输入6修改信息:介入界面后,显示全部职工的信息,再提示输入需要修改的职工的姓名,输入后显示该职工原来的信息且提示是否修改:输入1时修改,输入0时不修改。需要修改时,提示需要修改的选项的序号,然后进行修改。修改后系统自动显示修改后的职工的信息。
附件:职工信息管理系统代码
file.c
此文件主要包含涉及文件读写功能的函数。
/************************************************************/
/* File: file.c */
/************************************************************/
#include 《stdio.h》
#include 《windows.h》
#include 《time.h》
#include 《string.h》
#define N 100 /*宏定义*/
struct employee
{ int num; /*职工编号*/
char name; /*职工姓名*/
char sex; /*职工性别*/
char bir; /*职工出生年月*/
char xueli; /*职工学历*/
int wage; /*职工工资*/
char addr; /*职工地址*/
char tel; *职工电话*/
}em; /*定义一个结构体*/
void menu() /*菜单函数*/
{
printf(" ☆☆☆信息管理与信息系统☆☆☆\n");
printf("\n");
printf(" B0902 李颖\n");
printf("\n");
printf(" ******************职工信息管理****************\n");
printf(" 1.录入职工信息");
printf(" 2.浏览职工信息\n");
printf(" 3.查询职工信息");
printf(" 4.删除职工信息\n");
printf(" 5.添加职工信息");
printf(" 6.修改职工信息\n");
printf(" 7.退出管理系统\n");
printf(" **********************************************\n");
printf("\n");
printf("\n");
}
void main()
{
menu(); /*调用菜单函数*/
int n,flag;
char a;
do
{ printf("请选择你需要操作的步骤(1--7):\n");
scanf("%d",&n);
if(n》=1&&n《=7)
{
flag=1;
break;
}
else
{
flag=0;
printf("您输入有误,请重新选择!");
}
}
while(flag==0);
while(flag==1)
{ switch(n)
{
case 1:printf(" ◆◆◆输入职工信息◆◆◆\n");printf("\n");input();break;
case 2:printf(" ◆◆◆浏览职工信息◆◆◆\n");printf("\n");display();break;
case 3:printf(" ◆◆◆查询职工信息◆◆◆\n");printf("\n");search();break;
case 4:printf(" ◆◆◆删除职工信息◆◆◆\n");printf("\n");del();break;
case 5:printf(" ◆◆◆添加职工信息◆◆◆\n");printf("\n");add();break;
case 6:printf(" ◆◆◆修改职工信息◆◆◆\n");printf("\n");modify();break;
case 7:exit(0);break;
default :break;
}
getchar();
printf("\n");
printf("是否继续进行(y or n):\n");
scanf("%c",&a);
if(a==’y’)
{
flag=1;
system("cls"); /*清屏*/
menu(); /*调用菜单函数*/
printf("请再次选择你需要操作的步骤(1--6):\n");
scanf("%d",&n);
printf("\n");
}
else
exit(0);
}
}
void input() /*录入函数*/
{
int i,m;
printf("请输入需要创建信息的职工人数(1--100):\n");
scanf("%d",&m);
for (i=0;i《m;i++)
{
printf("职工号: ");
srand((int)time(0));
em.num=rand()%10000+20000000;
if(em.num)
printf("%8d ",em.num);
printf("\n");
printf("请输入姓名: ");
scanf("%s",&em.name);
getchar();
printf("请输入性别: ");
scanf("%s",&em.sex);
printf("请输入出生年月: ");
scanf("%s",&em.bir);
printf("请输入学历: ");
scanf("%s",&em.xueli);
printf("请输入工资: ");
scanf("%d",&em.wage);
printf("请输入住址: ");
scanf("%s",&em.addr);
printf("请输入电话: ");
scanf("%s",&em.tel);
printf("\n");
}
printf("\n创建完毕!\n");
save(m);
}
void save(int m) /*保存文件函数*/
{
int i;
FILE*fp;
if ((fp=fopen("employee_list","wb"))==NULL) /*创建文件并判断是否能打开*/
{
printf ("cannot open file\n");
exit(0);
}
for (i=0;i《m;i++) /*将内存中职工的信息输出到磁盘文件中去*/
if (fwrite(&em,sizeof(struct employee),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}
int load() /*导入函数*/
{
FILE*fp;
int i=0;
if((fp=fopen("employee_list","rb"))==NULL)
{
printf ("cannot open file\n");
exit(0);
}
else
{
do
{
fread(&em,sizeof(struct employee),1,fp);
i++;
}
while(feof(fp)==0);
}
fclose(fp);
return(i-1);
}
void display() /*浏览函数*/
{
int i;
int m=load();
printf("\n 职工号\t姓名\t性别\t出生年月\t学历\t工资\t住址\t电话 \n");
for(i=0;i《m;i++) /*m为输入部分的职工人数*/
printf("\n %6d\t%s\t%4s\t%s\t%s\t%d\t%s\t%s\n",em.tel);
}
void del() /*删除函数*/
{ int m=load();
int i,j,n,t,flag;
char name;
printf("\n 原来的职工信息:\n");
display(); /* 调用浏览函数*/
printf("\n");
printf("请输入要删除的职工的姓名:\n");
scanf("%s",name);
for(flag=1,i=0;flag&&i《m;i++)
{
if(strcmp(em.name,name)==0)
{
printf("\n已找到此人,原始记录为:\n");
printf("\n职工号\t姓名\t性别\t出生年月\t学历\t工资\t住址\t电话 \n");
printf("\n%d\t%s\t%s\t%s\t%s\t%d\t%s\t%s\n",em.tel);
printf("\n确实要删除此人信息请按1,不删除请按0\n");
scanf("%d",&n);
if(n==1) /*如果删除,则其他的信息都往上移一行*/
{
for(j=i;j《m-1;j++)
{
strcpy(em.name);
em.num;
strcpy(em.sex);
strcpy(em.bir);
strcpy(em.xueli);
em.wage;
strcpy(em.addr);
strcpy(em.tel);
}
flag=0;
}
}
}
if(!flag)
m=m-1;
else
printf("\n对不起,查无此人!\n");
printf("\n 浏览删除后的所有职工信息:\n");
save(m); /*调用保存函数*/
display(); /*调用浏览函数*/
printf("\n继续删除请按1,不再删除请按0\n");
scanf("%d",&t);
switch(t)
{
case 1:del();break;
case 0:break;
default :break;
}
}
void add() /*添加函数*/
{
FILE*fp;
int n;
int count=0;
int i;
int m=load();
printf("\n 原来的职工信息:\n");
display(); /* 调用浏览函数*/
printf("\n");
fp=fopen("emploee_list","a");
printf("请输入想增加的职工数:\n");
scanf("%d",&n);
for (i=m;i《(m+n);i++)
{
printf("\n 请输入新增加职工的信息:\n");
printf("请输入职工号: ");
srand((int)time(0));
em.num=rand()%10000+20000000;
if(em.num)
printf("%8d ",em.num);
printf("\n");
printf("请输入姓名: ");
scanf("%s",&em.name);
getchar();
printf("请输入性别: ");
scanf("%s",&em.sex);
printf("请输入出生年月: ");
scanf("%s",&em.bir);
printf("请输入学历: ");
scanf("%s",&em.xueli);
printf("请输入工资: ");
scanf("%d",&em.wage);
printf("请输入住址: ");
scanf("%s",&em.addr);
printf("请输入电话: ");
scanf("%s",&em.tel);
printf("\n");
count=count+1;
printf("已增加的人数:\n");
printf("%d\n",count);
}
printf("\n添加完毕!\n");
m=m+count;
printf("\n浏览增加后的所有职工信息:\n");
printf("\n");
save(m);
display();
fclose(fp);
}
void search() /*查询函数*/
{
int t,flag;
do
{
printf("\n按职工号查询请按1 ; 按学历查询请按2 ; 按电话号码查询请按3,进入主函数按4\n");
scanf("%d",&t);
if(t》=1&&t《=4)
{
flag=1;
break;
}
else
{
flag=0;
printf("您输入有误,请重新选择!");
}
}
while(flag==0);
while(flag==1)
{
switch(t)
{
case 1:printf("按职工号查询\n");search_num();break;
case 2:printf("按学历查询\n");search_xueli();break;
case 3:printf("按电话号码查询\n");search_tel();break;
case 4:main();break;
default:break;
}
}
}
void search_num()
{
int num;
int i,t;
int m=load();
printf("请输入要查找的职工号(20001111---20009999):\n");
scanf("%d",&num);
for(i=0;i《m;i++)
if(num==em.num)
{
printf("\n已找到此人,其记录为:\n");
printf("\n职工号\t姓名\t性别\t出生年月\t学历\t工资\t住址\t电话 \n");
printf("\n%d\t%s\t%s\t%s\t%s\t%d\t%s\t%s\n",em.tel);
break;
}
if(i==m)
printf("\n对不起,查无此人\n");
printf("\n");
printf("返回查询函数请按1,继续查询职工号请按2\n");
scanf("%d",&t);
switch(t)
{
case 1:search();break;
case 2: break;
default:break;
}
}
void search_xueli()
{
char xueli;
int i,t;
int m=load();
printf("请输入要查找的学历:\n");
scanf("%s",xueli);
for(i=0;i《m;i++)
if(strcmp(em.xueli,xueli)==0)
{
printf("\n已找到,其记录为:\n");
printf("\n职工号\t姓名\t性别\t出生年月\t学历\t工资\t住址\t电话 \n");
printf("\n%d\t%s\t%s\t%s\t%s\t%d\t%s\t%s\n",em.tel);
}
if(i==m)
printf("\n对不起,查无此人\n");
printf("\n");
printf("返回查询函数请按1,继续查询学历请按2\n");
scanf("%d",&t);
switch(t)
{
case 1:search();break;
case 2:break;
default :break;
}
}
void search_tel()
{
char tel;
int i, t;
int m=load();
printf("请输入要查找的电话号码:\n");
scanf("%ld",&tel);
for(i=0;i《m;i++)
if(strcmp(em.tel,tel)==0)
{
printf("\n已找到此人,其记录为:\n");
printf("\n职工号\t姓名\t性别\t出生年月\t学历\t工资\t住址\t电话 \n");
printf("\n%d\t%s\t%s\t%s\t%s\t%d\t%s\t%s\n",em.tel);
break;
}
if(i==m)
printf("\n对不起,查无此人\n");
printf("\n");
printf("返回查询函数请按1,继续查询电话号码请按2\n");
scanf("%d",&t);
switch(t)
{
case 1:search();break;
case 2:break;
default :break;
}
}
void modify() /*修改函数*/
{
int num;
char name;
char sex;
char bir;
char xueli;
int wage;
char addr;
char tel;
int b,c,i,n,t,flag;
int m=load(); /*导入文件内的信息*/
printf("\n 原来的职工信息:\n");
display(); /* 调用浏览函数*/
printf("\n");
printf("请输入要修改的职工的姓名:\n");
scanf("%s",name);
for(flag=1,i=0;flag&&i《m;i++)
{
if(strcmp(em.name,name)==0)
{
printf("\n已找到此人,原始记录为:\n");
printf("\n职工号\t姓名\t性别\t出生年月\t学历\t工资\t住址\t电话 \n");
printf("\n%d\t%s\t%s\t%s\t%s\t%d\t%s\t%s\n",em.tel);
printf("\n确实要修改此人信息请按1 ; 不修改请按0\n");
scanf("%d",&n);
if(n==1)
{
printf("\n需要进行修改的选项\n 1.职工号 2.姓名 3.性别 4.出生年月 5.学历 6.工资 7.住址 8.电话\n");
printf("请输入你想修改的那一项序号:\n");
scanf("%d",&c);
if(c》8||c《1)
printf("\n选择错误,请重新选择!\n");
}
flag=0;
}
}
if(flag==1)
printf("\n对不起,查无此人!\n");
do
{
switch(c) /*因为当找到第i个职工时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人*/
{
case 1:printf("职工号改为: ");
scanf("%d",&num);
em.num=num;
break;
case 2:printf("姓名改为: ");
scanf("%s",name);
strcpy(em.name,name);
break;
case 3:printf("性别改为: ");
scanf("%s",sex);
strcpy(em.sex,sex);
break;
case 4:printf("出生年月改为: ");
scanf("%s",bir);
strcpy(em.bir,bir);
break;
case 5:printf("学历改为: ");
scanf("%s",xueli);
strcpy(em.xueli,xueli);
break;
case 6:printf("工资改为: ");
scanf("%d",&wage);
break;
case 7:printf("住址改为: ");
scanf("%s",addr);
strcpy(em.addr,addr);
break;
case 8:printf("电话改为: ");
scanf("%s",tel);
strcpy(em.tel,tel);
break;
}
printf("\n");
printf("\n是否确定所修改的信息?\n 是 请按1 ; 不,重新修改 请按2: \n");
scanf("%d",&b);
}
while(b==2);
printf("\n浏览修改后的所有职工信息:\n");
printf("\n");
save(m);
display();
printf("\n继续修改请按1,不再修改请按0\n");
scanf("%d",&t);
switch(t)
{
case 1:modify();break;
case 0:break;
default :break;
}
}
职工信息管理系统
我有一个类似的,你把结构内容修改一下就好啦!别喷我……因为这两个几乎一个意思的。觉得还行就采纳吧,最好给点分,这个太少了……#include《stdio.h》#include《stdlib.h》struct clientData{//定义结构 int record; char s; int amount; float price;};int enterChoice(void);void newRecord(FILE* fPtr);void listRecord(FILE* fPtr);void addRecord(FILE* fPtr);void deleteRecord(FILE* fPtr);//函数声明main(){ int choice;//存储用户输入的数字 FILE* fPtr=NULL; if((fPtr=fopen("hardware.dat","r+"))==NULL)//如果不存在进行提示 { printf("can’t open the file hardware.dat.\nYou should establish one first!\n"); if((fPtr=fopen("hardware.dat","w"))!=NULL)//用w方式打开,创建文件 printf("The file hardware.dat is established now.Please run again\n"); } else//成功打开 { choice=enterChoice();//读入用户的选择 while(choice!=5)//循环进行操作 { switch(choice)//进行选择 { case 1: newRecord(fPtr); break; case 2: listRecord(fPtr); break; case 3: addRecord(fPtr); break; case 4: deleteRecord(fPtr); break; default: printf("A wrong input\n"); } choice=enterChoice(); } fclose(fPtr);//关闭文件 } system("pause"); return 0;}int enterChoice(void)//读取用户选择的函数{ int choice; printf("\nPlease enter your choice\n" "1 - set up a new record\n" "2 - list the record\n" "3 - add account(s) to the list\n" "4 - delete an account in the list\n" "5 - end of run\n?");//打印提示 scanf("%d",&choice); return choice;}void newRecord(FILE* fPtr)//进行初始化的函数{ int i; struct clientData blank={0,"",0,0.0};//建立空结构 rewind(fPtr); for(i=1;i《=100;i++) fwrite(␣,sizeof(struct clientData),1,fPtr); printf("The list is empty now\n"); return;}void listRecord(FILE* fPtr)//打印文件内容的函数{ struct clientData data; rewind(fPtr); printf("Record Name \t\t Amount Price\n");//打印第一行 fread(&data,sizeof(struct clientData),1,fPtr); while(!feof(fPtr)) { if(data.record!=0)//当记录不是空时打印数据 printf("%5d %-20s %5d %7.2f\n", data.record,data.s,data.amount,data.price); fread(&data,sizeof(struct clientData),1,fPtr); } return;}void addRecord(FILE* fPtr)//添加的记录函数{ struct clientData data; printf("\nPlease input the account number 1-100,0 to end\n" "If the account is existential, this will erase former data!\n?"); scanf("%d",&data.record); while(data.record!=0)//循环进行添加 { if(data.record《1||data.record》100) printf("Please input the right number!\n");//错误提示 else { printf("Please input the name,enter to end(no longer than 20)\n?"); getchar();//必须加入,否则会读入回车出错! gets(data.s);//gets函数只用加上地址即可,不用%s!! printf("Pease input amount(an integer), the price:\n?"); scanf("%d,%f",&data.amount,&data.price);//读入数据 fseek(fPtr,(data.record-1)*sizeof(struct clientData),SEEK_SET);//查找位置读入 fwrite(&data,sizeof(struct clientData),1,fPtr); printf("Add successfully!\n\n"); } printf("Please input the account number 1-100,0 to end\n?");//再次读入 getchar(); scanf("%d",&data.record); } return;}void deleteRecord(FILE* fPtr)//删除记录的函数{ struct clientData data; struct clientData blank={0,"",0,0.0};//空结构 printf("Please input the account number you want to delete\n?"); scanf("%d",&data.record); fseek(fPtr,(data.record-1)*sizeof(struct clientData),SEEK_SET);//进行定位 fread(&data,sizeof(struct clientData),1,fPtr); if(data.record==0) printf("Account %d doesn’t exist!\n"); else {//由于查找后读入一次,位置指针已经变化,需要再次定位 fseek(fPtr,(data.record-1)*sizeof(struct clientData),SEEK_SET); fwrite(␣,sizeof(struct clientData),1,fPtr);//写入空记录 printf("The account is removed!\n\n"); } return;}
职工工资信息管理系统(C语言,TC环境下编译)
(C语言)职工信息管理 有任何问题可以到这里留言: #include《string.h》 void menu() { int n,w1; do { printf("\t\t************************************************\n\n"); printf("\t\t************************************************\n\n"); printf("\t\t *** choose function ************\n\n"); printf("\t\t *** 1 Enter new data ************\n\n"); printf("\t\t *** 2 Modify data ************\n\n"); printf("\t\t *** 3 Search by people.xueli and num*****\n\n"); printf("\t\t *** 4 Browse data ************\n\n"); printf("\t\t *** 5 add data ************\n\n"); printf("\t\t *** 6 Exit ************\n\n"); printf("\t\t************************************************\n\n"); printf("\t\t************************************************\n\n"); printf("Choose your number(1-6):\b\b"); scanf("%d",&n); if(n《1||n》6) w1=1; else w1=0; } while(w1==1); switch(n) { case 1:enter();break; case 2:modify();break; case 3:search();break; case 4:browse();break; case 5:add();break; case 6:exit(0); } } main() { system("cls"); menu(); } #define N 100 struct people { char num; char name; char sex; char age; char xueli; char gongzhi; char address; char telephone; }people; # include 《stdio.h》 enter() { int i,n; printf("How many people(0-%d)?:",N-1); scanf("%d",&n); printf("\n Enter data now\n\n"); for(i=0;i《n;i++) { printf("\n Input %dth people record.\n",i+1); input(i); } if(i!=0)save(n); printf_back(); } browse() { int i,j,n; n=load(); printf_face(); for(i=0;i《n;i++) { if((i!=0)&&(i%10==0)) { printf("\n\nPass any key to continue ...."); getch(); puts("\n\n"); } printf_one(i) ; } printf("\tThere are %d record.\n",n); printf("\nPass any key to back ..."); getch(); menu(); } add() { int i,n,m,k; FILE*fp; n=load(); printf("How many people are you want to add(0-%d)?:",N-1-n); scanf("%d",&m); k=m+n; for(i=n;i《k;i++) { printf("\nInput %dth people record.\n",i-n+1 ); input(i); } if((fp=fopen("Pro.txt","ab"))==NULL) { printf("cannot open file\n"); } for(i=n;i《k;i++) if(fwrite(&people,sizeof(struct people),1,fp)!=1) printf("file write error\n"); fclose(fp); printf_back(); } search() { int i,n,k,w1=1,w2,w3,w4,m,a; struct people p; n=load(); do { printf("\n\nWhich way do you want to choose? \n\t1).By xueli 2).By num \b\b"); scanf("%d",&m); switch(m) { case 1: do { k=-1; printf("\n\nEnter xeuli that you want to search! xueli."); scanf("%s",p.xueli); printf_face(); for(i=0;i《n;i++) if(strcmp(p.xueli,people.xueli)==0) { k=i; printf_one(k);break; } if(k==-1) { printf("\n\nNO exist!please"); printf("\n\nAre you again?\n\t1).again 2).NO and back \b\b"); scanf("%d",&w1); if(w1==2) printf_back(); } } while(k==-1&&w1==1);break; case 2: do {k=-1; printf("\n\nEnter num that you want to search! num."); scanf("%s",p.num); printf_face(); for(i=0;i《n;i++) if(strcmp(p.num,people.num)==0) {k=i; printf_one(k);break; } if(k==-1) {printf("\n\nNO exist!please"); printf("\n\nAre you again?\n\t1).again 2).NO and back \b\b"); scanf("%d",&w1); if(w1==2) printf_back(); } } while(k==-1&&w1==1);break; } w4=0;w3=0; if(k!=-1) {printf("\n\nWhat do you want to do?\n\t 1).Search 2).Modify 3).Delete 4).Back menu \b\b"); scanf("%d",&w2); switch(w2) {case 2:w3=modify_data(k,n);break; case 3:{printf("\nAre you sure?\n\t 1).Sure 2).No and back \b\b"); scanf("%d",&w4); if(w4==1) for(a=k;a《n;a++) {strcpy(people.num); strcpy(people.name); strcpy(people.sex); strcpy(people.age); strcpy(people.xueli); strcpy(people.gongzhi); strcpy(people.address); strcpy(people.telephone); } break; } } if(w3==1||w4==1) {save(n); printf("\n\nSuccessful.^_^."); printf("\n\nWhant do you want to do? \n\t 1).Search another 2).Back \b\b" ); scanf("%d",&w2); } } } while(w2==1); menu(); } modify() {struct people p; FILE *fp; int i,n,k,w0=1,w1,w2=0; n=load(); do { k=-1; printf_face(); for(i=0;i《n;i++) {if((i!=0)&&(i%10==0)) {printf("\n\nRemember NO.which needed modify.pass any key to contiune ..."); getch(); puts("\n\n"); } printf_one(i); } do {printf("\n\nEnter NO.that you want to modify! NO.:"); scanf("%s",p.num); for(i=0;i《n;i++) if(strcmp(p.num,people.num)==0) {k=i; p=people; } if(k==-1)printf("\n\nNO exist!please again"); }while(k==-1); printf_face(); printf_one(k); w1=modify_data(k,n); if(w1==1) {printf("\nSuccessful ^_^.\n\nAre you modify another ?\n\n\t 1).Yes 2).Back with save\t\b\b"); scanf("%d",&w0); w2=1; } else {w0=0; if(w2==1) people=p; } if(w0!=1&&w2==1) save(n); }while(w0==1); menu(); } save(int n) {FILE *fp; int i; if((fp=fopen("Pro.txt","wb"))==NULL) {printf("\nCannot open file\n"); return NULL; } for(i=0;i《n;i++) if(people.num!=0) if(fwrite(&people,sizeof(struct people),1,fp)!=1) printf("file write error\n"); fclose(fp); } load() {FILE *fp; int i; if((fp=fopen("Pro.txt","rb"))==NULL) {printf("\nCannot open file\n"); return NULL; } for(i=0;!feof(fp);i++) fread(&people,sizeof(struct people),1,fp); fclose(fp); return(i-1); } input(int i) { no_input(i,i); printf("num:"); scanf("%s",people.num); printf("name:"); scanf("%s", people.name) ; printf("sex:"); scanf("%s",people.sex); printf("age:"); scanf("%s",people.age); printf("xueli:"); scanf("%s",people.xueli); printf("gongzhi:"); scanf("%s",people.gongzhi); printf("address:"); scanf("%s",people.address); printf("telephone:"); scanf("%s",people.telephone); } modify_data(int i) {int c,w1; do {puts("\nmodify by=》\n\n 1).num 2).name 3).sex 4).ages 5).xueli 6)gongzhi 7)address 8)telephone "); printf("Which you needed?:\b\b"); scanf("%d",&c); if(c》8||c《1) {puts("\nChoice error!Please again!"); getchar(); } }while(c》8||c《1); do {switch(c) { case 1:printf("num:");scanf("%s",people.num);break; case 2:printf("name:");scanf("%s",people.name);break; case 3:printf("sex:");scanf("%s",people.sex);break; case 4:printf("age:");scanf("%s",people.age);break; case 5:printf("xueli:");scanf("%s",people.xueli);break; case 6:printf("gongzhi:");scanf("%s",people.gongzhi);break; case 7:printf("address:");scanf("%s",people.address);break; case 8:printf("telephone:");scanf("%s",people.telephone);break; } puts("\nNow:\n"); printf_face(); printf_one(i); printf("\nAre you sure?\n\n\t 1).Sure 2).No and remodify 3).Back without save in this time \b\b"); scanf("%d",&w1); } while(w1==2); return(w1); } no_input(int i,int n) {int j,k,w1; do {w1=0; for(j=0;people!=’\0’;j++) if(people》’9’) {puts("Input error!Only be made up of(0-9).Please reinput!\n"); w1=1;break; } if(w1!=1) for(k=0;k《n;k++) if(k!=i&&strcmp(people.num)==0) {puts("This record is exist.please reinput!\n"); } } while(w1==1); } printf_face() { printf("\nnum name sex ages xueli gongzhi address telephone \n"); } printf_one(int i) { int j; printf("%7s%7s%7s%7s%7s%7s%10s%12s\n",people.age,people .telephone); } printf_back() { int j,w; printf("\n\n\tSuccessful.^_^\n\n"); printf("What do you want you to do?\n\n\t1).Browse all now\t2).Back: \b\b"); scanf("%d",&w); if(w==1) browse(); else menu(); } 参考资料:http://moonrosa.googlepages.com/cyuyan_zgglxt
职工信息管理系统:(c++程序设计)详细如下
//职工信息管理// BCB6下通过#include 《iostream》using namespace std;typedef enum{m=1, f} gender;typedef enum{none, salesman, technician, salesmanager, manager} position;typedef float RMB;class Employee{public: Employee(int n, string nm, int yr, gender sx) :num(n),name(nm),age(yr),sex(sx),salary(0), rank(1),pos(none){ } virtual void Print() { cout《《num《《" "《《name《《" "《《age《《" "《《((sex==1)? "male":"female")《《" "《《rank《《"级 薪水"《《salary《《" 职务 "; ShowPos(); } void SetPos(position ps){pos=ps;} void ShowPos() { switch (pos) { case salesman: cout《《"salesman"; break; case technician: cout《《"technician"; break; case salesmanager: cout《《"salesmanager"; break; case manager: cout《《"manager";break; case none: cout《《"none"; break; } cout《《endl; } virtual RMB Payment(){ return salary=0;};protected: int num; string name; int age; gender sex; position pos; int rank; RMB salary;};class Salesman: virtual public Employee{public: Salesman(int n, string nm, int yr, gender sx) :Employee(n, nm, yr, sx) {Employee::SetPos(salesman); Prompt();} Salesman(Employee &emp):Employee(emp) {Employee::SetPos(salesman); Prompt();} virtual RMB Payment(){ return salary=0.04*sales;} //调用该函数设置薪水salary,并可返回值 void Prompt();protected: RMB sales; //销往额,子类对象特有的属性};void Salesman::Prompt() { cout《《"Num: "《《num《《" "《《name《《endl; cout《《"请输入销售额: "; cin》》 sales; Payment(); cout《《endl; }class Manager:virtual public Employee{public: Manager(int n, string nm, int yr, gender sx) :Employee(n, nm, yr, sx) {SetPos(manager); rank=4; salary=8000;} Manager(Employee &emp):Employee(emp) {Employee::SetPos(manager);rank=4; salary=8000;}};class SalesManager: public Manager, public Salesman{public: SalesManager(int n, string nm, int yr, gender sx) : Employee(n, nm, yr, sx),Manager(n, nm, yr, sx), Salesman(n, nm, yr, sx) {pos=salesmanager; rank=3; Payment();} SalesManager(Employee &emp):Employee(emp),Manager(emp),Salesman(emp){pos=salesmanager; rank=3; Payment();} virtual RMB Payment(){ return salary=5000+ 0.005*sales;} //调用该函数设置薪水salary,并可返回值};class Technician: public Employee{public: Technician(int n, string nm, int yr, gender sx) :Employee(n, nm, yr, sx) {Employee::SetPos(technician); rank=2; Prompt();} Technician(Employee &emp):Employee(emp) { Employee::SetPos(technician); rank=2; Prompt();} virtual RMB Payment(){ return salary=100*work_hours;} //调用该函数设置薪水salary,并可返回值 void Prompt() { cout《《"Num: "《《num《《" "《《name《《endl; cout《《"请输入工作小时数: "; cin》》 work_hours; Payment(); cout《《endl; }private: int work_hours; //工作小时数,子类对象特有的属性};int main(void ){ const int N=4; cout《《"测试一:"《《endl; Salesman wang(101,"wang",30,f); Technician Li(102,"Li", 25,m); SalesManager Sman(105, "Sman", 40, f); wang.Print(); Li.Print(); Sman.Print(); Employee* empl; //基类对象指针的数组 cout《《endl; cout《《"测试二:"《《endl; cout《《"请输入职员信息: 姓名(字母) 年龄 性别(m/f) 回车"《《 endl; for (int i=0; i《N; ++i) { string name; int age; char x; gender sex; cin》》name; cin》》age; cin》》x; if (x==’m’) sex=m; else sex=f; empl=new Employee(1001+i, name, age, sex); //生成基类对象 empl-》Print(); cin.clear(); std::string t; std::getline(cin,t); //将当前行从缓存中取出 } cout《《endl; cout《《"指派职务,1.salesman,2.technician,3.manager,4.salesmanager"《《endl; cout《《"请键入数字."《《 endl; int pos; for (int i=0; i《N; ++i) { empl-》Print(); cout《《"职务: "; cin》》pos; cin.clear(); string t; getline(cin,t); Employee *ptnew; //基类指针 switch (pos) //根据指派的职务产生相应的子类对象 { case 1: ptnew=new Salesman(*empl); break; //基类指针指向子类对象 case 2: ptnew=new Technician(*empl); break; case 3: ptnew=new Manager(*empl); break; case 4: ptnew=new SalesManager(*empl); break; } delete empl; //释放原来的基类对象所用的内存 empl=ptnew; //使原来的基类指针指向新的子类对象 } for (int i=0; i《N; ++i) empl-》Print(); //显示指派职务之后的各子类对象的属性 system("pause"); return 0;}
c语言课程设计——职工信息管理系统
#include《stdio.h》#include《string.h》int main(){void TestOnLineTeacherManage(); //声明教师信息管理函数void TestOnLineSelfManage();//声明个人管理函数int n;printf(“0教师管理,1个人管理”);scanf(“%d”,&n);If (n==0)TestOnLineTeacherManage();elseTestOnLineSelfManage();//选择教师管理或者个人信息管理Return 0;}Void TestOnLineTeacherManage() //教师信息管理函数{Struct TestOnLineTeacher{Int Tnum;Char Tname;Char Tsex;Char Ttel;}Teacher; //定义一个结构体void add(); //定义教师信息添加void del(); //定义教师信息删除Void modify(); //定义教师信息修改int a;Printf(“1添加2删除3修改”); Scanf (“%d”,&a);Switch(a){Case1:add();break;Case2:del();break;Case3:modify();break;Default:break;}//选择功能}Void add() //教师信息添加函数,若添加Teacher{printf(“输入工号”);Scanf(“%d”,&Teacher.Tnum);printf(“输入姓名”);Scanf(“%s”,&Teacher.Tname);printf(“输入性别f女m男”);Scanf(“%c”,&Teacher.Tsex);printf(“输入电话”);Scanf(“%s”,&Teacher.Ttel);}Void del() //教师信息删除函数,若删除Teacher{Teacher;Free(Teacher);}Void modify() //教师信息修改函数,若修改Teacher{Int t;Int num;Char name;Char sex;Char tel;Printf(“修改选项1工号2姓名3性别4电话”);Scanf(“%d”,&t);Switch(t){Case1:scanf(“%d”,#);Teacher.Tnum=num;break;Case2:scanf(“%s”,&name);strcpy(Teacher.Tname,name);break;Case3:scanf(“%c”,&sex);Teacher.Tsex=sex;break;Case4:scanf(“%s”,&tel);strcpy(Teacher.Ttel,tel);break;Default:break;}//选择修改项并修改}Void TestOnLineSelfManage() //个人信息管理{Struct TestOnLineManage{Int Mnum;Char Mname;Char Msex;Char Mtel;}Manage; //定义一个结构体Int b;Int num;Char name;Char sex;Char tel;Printf(“修改选项1工号2姓名3性别4电话”);Scanf(“%d”,&b);Switch(t){Case1:scanf(“%d”,#);Manage.Mnum=num;break;Case2:scanf(“%s”,&name);strcpy(Manage.Mname,name);break;Case3:scanf(“%c”,&sex);Manage.Msex=sex;break;Case4:scanf(“%s”,&tel);strcpy(Manage.Mtel,tel);break;Default:break;}//选择修改项并修改}
HR怎样做员工信息管理更高效的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于HR怎样做员工信息管理更高效、HR怎样做员工信息管理更高效的信息别忘了在本站进行查找哦。更多文章:
笔记本电脑屏幕尺寸大小(12.5寸的笔记本电脑,它显示屏的大小到底是多少厘米×多少厘米)
2024年10月19日 14:30
联想小新700151sk配置(联想笔记本电脑小新700-151sk多少钱)
2022年12月20日 10:15
铁三角ar3bt停产了吗?铁三角ar3bt和ar3is有什么区别
2023年10月30日 09:55
小米手机一直fastboot(小米手机出现fastboot开不了机怎么办)
2023年6月25日 23:41
中国移动最低套餐是多少钱(胶州移动公司办理套餐最低多少钱的)
2024年7月20日 01:45
联想y470开机报警连续的嘟嘟嘟(联想电脑主机开机报警,滴滴一直响)
2023年6月9日 12:20
arm9处理器(最近在关注ARM处理器,有讲ARM9也有讲A9的,这两者区别大吗)
2024年1月9日 04:45
thinkpad p50散热(ThinkPad P51 和旧款P50差距大吗)
2024年6月21日 10:53