您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 公司员工管理系统(c语言)
#includeiostream.h#includevector.h#includestdio.h#includestring.h#includestdlib.h#includefstream.htemplatetypenameT//采用链表结构此为链表结点structNode{T*info;//DataType为指向T类型的指针Node*link;~Node(){//析构函数结束时释放空间deleteinfo;}};templatetypenameT//链表类classLinkList{public:LinkList(){//构造函数llist=newNodeT;llist-link=0;}~LinkList(){//析构函数NodeT*p=llist-link;NodeT*q;while(p!=0){q=p;p=p-link;deleteq;}deletellist;}public:voidinsert(T*px){//插入链表操作NodeT*q=newNodeT;NodeT*p=llist;if(q==0){coutOutofspace!!!endl;return;}else{q-info=px;while(p-link!=0){p=p-link;}p-link=q;q-link=0;}}voidfind_t(charapp[],inti=1)//遍历链表查找符合条件的元素{//并将符合条件元素指针放入my_vc.clear();//容器my_vc中NodeT*p=llist;while(p-link!=0){if(p-link-info-Equal(app,i)){my_vc.push_back(p-link-info);}p=p-link;}}voiddelete_t(charapp[],inti=1)//遍历链表查找符合条件的元素{//并将符合条件元素删除NodeT*p=llist;NodeT*q;while(p-link!=0){if(p-link-info-Equal(app,i)){q=p-link;p-link=p-link-link;deleteq;}else{p=p-link;}}}voidDo(void(*p)(T*))//对my_vc中的每个元素调用函数p{typenamevectorT*::iteratorit;for(it=my_vc.begin();it!=my_vc.end();++it){p(*it);}}voidsort(inti)//对链表中的元素以某种方式排序{intj=1;if(llist-link==0)return;NodeT*p,*q;T*temp;p=llist;p=p-link;q=p;while(q-link!=0){while(p-link!=0){if(q-info-Lessthan(*p-link-info,i))p=p-link;else{temp=q-info;q-info=p-link-info;p-link-info=temp;p=p-link;}}q=q-link;p=q;}}voidDo_something(void(*p)(T*))//遍历链表对链表中每个元素调用函数p{NodeT*p1=llist;while(p1-link!=0){p(p1-link-info);p1=p1-link;}}private:NodeT*llist;//指向链表表头的指针vectorT*my_vc;//可变大小的数组};typedefstruct//存储员工信息的结构{charname[10];//姓名charsex[6];//性别charborn_year[10];//出生年月charwork_year[10];//工作年月charschool_record[10];//学历charposition[10];//职务charhome[25];//住址chartelephone[20];//电话}staff;structstaff_Node//员工信息的外覆类提供相应的方法{staffpeo;//员工信息对象boolLessthan(staff_Node&node,inti)//小于操作通过第二参数选择{//比较行为switch(i){case1:returnstrcmp(peo.name,node.peo.name)0;break;case2:returnstrcmp(peo.sex,node.peo.sex)0;break;case3:returnstrcmp(peo.born_year,node.peo.born_year)0;break;case4:returnstrcmp(peo.work_year,node.peo.work_year)0;break;case5:returnstrcmp(peo.school_record,node.peo.school_record)0;break;case6:returnstrcmp(peo.position,node.peo.position)0;break;case7:returnstrcmp(peo.home,node.peo.home)0;break;case8:returnstrcmp(peo.telephone,node.peo.telephone)0;break;default:returnfalse;}}boolEqual(charapp[],inti)//相等比较操作通过第二参数选择{//比较行为switch(i){case1:returnstrcmp(app,peo.name)==0;break;case2:returnstrcmp(app,peo.sex)==0;break;case3:returnstrcmp(app,peo.born_year)==0;break;case4:returnstrcmp(app,peo.work_year)==0;break;case5:returnstrcmp(app,peo.school_record)==0;break;case6:returnstrcmp(app,peo.position)==0;break;case7:returnstrcmp(app,peo.home)==0;break;case8:returnstrcmp(app,peo.telephone)==0;break;default:returnfalse;}}};voidReadIn(staff_Node*s)//从屏幕读入信息{//存入s所指向的结构cout\n请输入姓名:endl;cins-peo.name;cout\n请输入性别:endl;cins-peo.sex;cout\n请输入出生年月:endl;cins-peo.born_year;cout\n请输入工作年月:endl;cins-peo.work_year;cout\n请输入学历:endl;cins-peo.school_record;cout\n请输入职务:endl;cins-peo.position;cout\n请输入住址:endl;cins-peo.home;cout\n请输入电话:endl;cins-peo.telephone;}voidwwout(staff_Node*p)//将p所指向的信息输出到屏幕{cout姓名:endl;puts(p-peo.name);cout性别:endl;puts(p-peo.sex);cout出生年月:endl;puts(p-peo.born_year);cout工作年月:endl;puts(p-peo.work_year);cout学历:endl;puts(p-peo.school_record);cout职务:endl;puts(p-peo.position);cout家庭住址:endl;puts(p-peo.home);cout电话号码:endl;puts(p-peo.telephone);}voidIIn(LinkListstaff_Node&mylist){//创建一个新节点staff_Node*p=newstaff_Node;//从屏幕上读入信息ReadIn(p);//将此节点插入链表中mylist.insert(p);}voidfind_m(LinkListstaff_Node&mylist){//查找符合某些条件的员工信息cout姓名查找输入1endl;//并输出到屏幕cout性别查找输入2endl;cout出生年月查找3endl;cout工作年月查找输入4endl;cout学历查找输入5endl;cout职务查找输入6endl;cout家庭住址查找输入7endl;cout电话查找输入8endl;inti;charapp[40];cini;cout查询信息:endl;gets(app);mylist.find_t(app,i);mylist.Do(wwout);}voidread_File(LinkListstaff_Node&mylist)//从文件中读入信息存入链表{ifstreaminfile(F:\\a.txt);charbuffer[200];infile.getline(buffer,200);while(infile){staff_Node*s=newstaff_Node;infiles-peo.name;if(strcmp(s-peo.name,)==0){deletes;return;}infiles-peo.sex;infiles-peo.born_year;infiles-peo.work_year;infiles-peo.school_record;infiles-peo.position;infiles-peo.home;infiles-peo.telephone;couts-peo.nameendl;couts-peo.sexendl;couts-peo.born_yearendl;couts-peo.work_yearendl;couts-peo.school_recordendl;couts-peo.positionendl;couts-peo.homeendl;couts-peo.telephoneendl;coutendl;mylist.insert(s);}infile.close();}voidwrite_File(staff_Node*s)//将s所指向的结点以固定格式{//写入文件charapp[110];inti,j;for(intindex=0;index109;index++){app[index]='';}app[109]='\0';for(i=0;i10;++i){app[i]=s-peo.name[i];if(app[i]=='\0'){app[i]='';i=10;}}for(j=10;j16;++j){app[j]=s-peo.sex[j-10];if(app[j]=='\0'){app[j]='';j=16;}}for(j=16;j26;++j){app[j]=s-peo.born_year[j-16];if(app[j]=='\0'){app[j]='';j=26;}}for(j=2
本文标题:公司员工管理系统(c语言)
链接地址:https://www.777doc.com/doc-5912310 .html