天津大学仁爱学院短期实训项目C++程序设计学校:天津大学仁爱学院院系:计算机科学与技术系班级:计算机科学与技术1班审核教师:龚文琴姓名:袁欢学号:6019203034年级:大一1.题目:人才管理系统功能:个人简历(包括自己的求职意向,求职地点等)的填写、保存、浏览、搜索。
企业信息的填写、保存、浏览、搜索企业用人信息的发布、保存、浏览个人简历和企业信息的匹配=要求:1、每个同学做一道题,按学号末位模3取余得题号做题。
2、创建win32控制台应用程序即可3、用面向对象的方法实现该系统。
4、实现过程中使用链表数据结构会得到较高的成绩。
5、数据存放在内存或文件中均可。
逻辑图:源代码:/*编译环境:devc++编程题目***人才管理系统功能:个人简历(包括自己的求职意向,求职地点等)的填写、保存、浏览、搜索。
企业信息的填写、保存、浏览、搜索企业用人信息的发布、保存、浏览个人简历和企业信息的匹配*/#include<iostream>#include<cstring>#include<cstdlib>using namespace std;int n;char place[6][20] = { "深圳","北京","上海","重庆","天津","贵州" };char work[5][20] = { "程序员","产品经理","架构师","工程师","运维"}; struct man{ //个人简历char name[20]; //姓名int age; //年龄char sex; //性别(男为m,女为f)int job; //求职意向,与work横坐标对应int pla; //求职地点,与place横坐标对应struct man* next; //指向下一个节点的指针};int mans = 0; //已经记录的个人简历数量struct man* manhead= (struct man*)malloc(sizeof(struct man));struct Co{ //企业char name[20]; //企业名称int num; //企业编号int pers; //企业现有人数int pla; //企业地点,与place横坐标对应struct Co* next;};int Cos = 0; //记录的现有的企业数量struct Co* Cohead= (struct Co*)malloc(sizeof(struct Co));struct need{ //招聘信息int num; //企业编号char sex; //性别要求(男为m,女为f,男女即可为b)int age1; //年龄要求下限int age2; //年龄要求上限int job; //职位struct need* next;//指向下一个节点的指针};int needs = 0; //记录的现有的招聘信息数量struct need* needhead= (struct need*)malloc(sizeof(struct need));void menu1(); //函数声明void menu2(); //函数声明void menu3(); //函数声明void read(){ //读取文件FILE *fp = fopen("man.txt", "r");//readfilechar s3,s1[20];//长度要大一点,否则内存溢出int s2,s4,s5,s6;struct man *p1,*p2;//指针变量while(~fscanf(fp,"%s %d %c %d %d",&s1,&s2,&s3,&s4,&s5))//格式化输入{if(mans==0){strcpy(manhead->name, s1); //复制manhead->age=s2;manhead->sex=s3;manhead->job=s4;manhead->pla=s5;mans++;p1=manhead;}else{p2=(struct man*)malloc(sizeof(struct man));strcpy(p2->name, s1);p2->age=s2;p2->sex=s3;p2->job=s4;p2->pla=s5;mans++;p1->next=p2;p1=p2;p1->next=NULL;}}fclose(fp);fp = fopen("Co.txt", "r");struct Co*p3,*p4;while(~fscanf(fp,"%s %d %d %d",&s1,&s2,&s4,&s5)){if(Cos==0){strcpy(Cohead->name, s1);Cohead->num=s2;Cohead->pers=s4;Cohead->pla=s5;Cos++;p3=Cohead;}else{p4=(struct Co*)malloc(sizeof(struct Co));strcpy(p4->name, s1);p4->num=s2;p4->pers=s4;p4->pla=s5;Cos++;p3->next=p4;p3=p4;p3->next=NULL;}}fclose(fp);//关闭fp指向的文件句柄fp = fopen("need.txt", "r");//read方式打开文本struct need*p5,*p6;while(~fscanf(fp,"%d %c %d %d %d",&s2,&s3,&s4,&s5,&s6)) {if(needs==0){needhead->num=s2;needhead->sex=s3;needhead->age1=s4;needhead->age2=s5;needhead->job=s6;needs++;p5=needhead;}else{p6=(struct need*)malloc(sizeof(struct need));p6->num=s2;p6->sex=s3;p6->age1=s4;p6->age2=s5;p6->job=s6;needs++;p5->next=p6;p5=p6;p5->next=NULL;}}fclose(fp);}void menu(){ //主菜单system("cls");co ut<<endl<<"★★★★★★★★人才管理系统★★★★★★★★"<<endl;cout<<"★ 1.企业信息★"<<endl;cout<<"★ 2.企业用人信息★"<<endl;cout<<"★ 3.个人简历★"<<endl;cout<<"★ 4.职业匹配★"<<endl;cout<<"★0.退出系统★"<<endl;cout<<"★★★★★★★★★★★★★★★★★★★★★★"<<endl<<endl;cout<<" 请选择您需要的服务:";}void fun1_1(){ //新增企业system("cls");cout<<"请开始填写新增的企业信息"<<endl;cout<<"请输入企业名称(退出请输入-1):";char name9[20];int num9,pers9,pla9;cin>>name9;if(strcmp(name9,"-1")!=0)//字符比较{cout<<"请输入企业编号-(110-1000):";cin>>num9;cout<<"请输入企业人数-(1-10000):";cin>>pers9;cout<<"★★★★★请选择企业地址:★★★★★";cout<<"1.深圳 2.北京 3.上海 4.重庆5.天津6.贵州:"<<endl;cin>>pla9;pla9=pla9-1;struct Co* p=Cohead;int i=1;do{p=p->next;i++;}while(i!=Cos);struct Co* neww= (struct Co*)malloc(sizeof(struct Co));strcpy(neww->name,name9);neww->num=num9;neww->pers=pers9;neww->pla=pla9;p->next=neww;Cos++;cout<<endl<<"信息录入完成!"<<endl;system("pause");}menu1();}void fun1_2(){ //保存企业信息system("cls");FILE *fp = fopen("Co.txt", "w+");if(Cos==0){cout<<"未找到任何信息!"<<endl;}else{struct Co* p=Cohead;int i=0;do{fprintf(fp,"%s %d %d %d",p->name,p->num,p->pers,p->pla);if(i!=Cos-1) {fprintf(fp,"\n");}p=p->next;i++;}while(i!=Cos);}cout<<endl<<"信息保存成功!"<<endl;fclose(fp);system("pause");menu1();}void fun1_3(){ //浏览企业system("cls");if(Cos==0){cout<<"未找到任何信息!"<<endl;} else{struct Co* p=Cohead;int i=0;cout<<"企业名称企业编号企业人数企业地址"<<endl<<endl;do{cout<<" "<<p->name<<" "<<p->num<<" "<<p->pers<<"人"<<place[p->pla]<<endl;p=p->next;i++;}while(i!=Cos);cout<<endl<<"共计有"<<Cos<<"家企业!"<<endl;}cout<<endl;system("pause");menu1();}void fun1_4(){ //搜索企业system("cls");int flag=0;if(Cos==0){cout<<"未找到任何信息!"<<endl;}else{struct Co* p=Cohead;int num9,i=0;cout<<"请输入您要搜索的企业编号-(100-1000):";cin>>num9;do{if(p->num==num9) {cout<<"查询到以下信息:"<<endl;cout<<p->name<<" "<<p->num<<" "<<p->pers<<"人"<<place[p->pla]<<endl;flag=1;break;}p=p->next;i++;}while(i!=Cos);}if(flag==0){cout<<endl<<"未查询到相关信息!"<<endl;}cout<<endl;system("pause");menu1();}void menu1(){ //企业菜单system("cls");cout<<endl;cout<<"★★★★★★企业信息★★★★★★"<<endl;cout<<"★1.新增★"<<endl;cout<<"★2.保存★"<<endl;cout<<"★3.浏览★"<<endl;cout<<"★4.搜索★"<<endl;cout<<"★0.退出★"<<endl;cou t<<"★★★★★★★★★★★★★★★★"<<endl<<endl;cout<<" 请选择您需要的服务:";cin>>n;if(n==1){fun1_1();}else if(n==2){fun1_2();}else if(n==3){fun1_3();}else if(n==4){fun1_4();}else if(n==0){return;}else {menu1();}}void fun2_1(){ //新增招聘信息system("cls");cout<<"请开始填写新增的招聘信息"<<endl;cout<<"请输入企业编号(退出请输入-1):";int num9,age19,age29,job9;char sex9;cin>>num9;if(num9!=-1){cout<<"请输入性别要求:";cin>>sex9;cout<<"请输入年龄下限:";cin>>age19;cout<<"请输入年龄上限:";cin>>age29;cout<<"请选择招聘职业(1.程序员 2.产品经理 3.架构师 4.工程师5.运维):";cin>>job9;job9=job9-1;struct need* p=needhead;int i=1;do {p=p->next;i++;} while(i!=needs);struct need* neww= (struct need*)malloc(sizeof(struct need));neww->num=num9;neww->sex=sex9;neww->age1=age19;neww->age2=age29;neww->job=job9;p->next=neww;needs++;cout<<endl<<"信息录入完成!"<<endl;system("pause");}menu2();}void fun2_2(){ //保存招聘信息system("cls");FILE *fp = fopen("need.txt", "w+");if(needs==0){cout<<"未找到任何信息!"<<endl;}else{struct need* p=needhead;int i=0;do{fprintf(fp,"%d %c %d %d %d",p->num,p->sex,p->age1,p->age2,p->job);if(i!=needs-1) {fprintf(fp,"\n");}p=p->next;i++;}while(i!=needs);}cout<<endl<<"信息保存成功!"<<endl;fclose(fp);system("pause");menu2();}void fun2_3(){ //浏览招聘信息system("cls");if(needs==0){cout<<"未找到任何信息!"<<endl;}else{struct need* p=needhead;int i=0;cout<<"企业编号性别要求年龄下限年龄上限职业"<<endl<<endl;do{cout<<" "<<p->num<<" "<<p->sex<<" "<<p->age1<<" "<<p->age2<<" "<<work[p->job]<<endl;p=p->next;i++;}while(i!=needs);cout<<endl<<"共计有"<<needs<<"份招聘信息!"<<endl;}cout<<endl;system("pause");menu2();}void menu2(){ //招聘信息菜单system("cls");cout<<endl<<"★★★★★企业用人信息★★★★★"<<endl;cout<<"★1.发布★"<<endl;cout<<"★2.保存★"<<endl;cout<<"★3.浏览★"<<endl;cout<<"★0.退出★"<<endl;cout<<"★★★★★★★★★★★★★★★★"<<endl<<endl;cout<<" 请选择您需要的服务:";cin>>n;if(n==1){fun2_1();}else if(n==2){fun2_2();}else if(n==3){fun2_3();}else if(n==0){return;}else{menu2();}}void fun3_1(){ //新增个人简历system("cls");cout<<"请开始填写新增的个人简历信息"<<endl;cout<<"请输入姓名(退出请输入-1):";char sex9,name9[20];int age9,job9,pla9;cin>>name9;if(strcmp(name9,"-1")!=0){cout<<"请输入年龄:";cin>>age9;cout<<"请输入性别(男为m,女为f):";cin>>sex9;cout<<"请选择求职意向(1.程序员 2.产品经理 3.架构师 4.工程师5.运维):";cin>>job9;job9=job9-1;cout<<"请选择求职地点:1.深圳 2.北京 3.上海 4.重庆5.天津6.贵州:";cin>>pla9;pla9=pla9-1;struct man* p=manhead;int i=1;do{p=p->next;i++;}while(i!=mans);struct man* neww= (struct man*)malloc(sizeof(struct man));strcpy(neww->name,name9);neww->age=age9;neww->sex=sex9;neww->job=job9;neww->pla=pla9;p->next=neww;mans++;cout<<endl<<"信息录入完成!"<<endl;system("pause");}menu3();}void fun3_2(){ //保存个人简历system("cls");FILE *fp = fopen("man.txt", "w+");//打开文件并读写if(mans==0){cout<<"未找到任何信息!"<<endl;}else{struct man* p=manhead;int i=0;do{fprintf(fp,"%s %d %c %d %d",p->name,p->age,p->sex,p->job,p->pla);if(i!=mans-1) {fprintf(fp,"\n");}p=p->next;i++;}while(i!=mans);}cout<<endl<<"信息保存成功!"<<endl;fclose(fp);system("pause");menu3();}void fun3_3() { //浏览个人简历system("cls");if(mans==0){cout<<"未找到任何信息!"<<endl;}else{struct man* p=manhead;int i=0;cout<<"姓名年龄性别求职意向求职地点"<<endl<<endl;do{cout<<p->name<<" "<<p->age<<" "<<p->sex<<" "<<work[p->job]<<" "<<place[p->pla]<<endl;p=p->next;i++;}while(i!=mans);cout<<endl<<"共计有"<<mans<<"份个人简历!"<<endl;}cout<<endl;system("pause");menu3();}void fun3_4(){ //搜索个人简历system("cls");int flag=0;//状态设定,分为查到和未查到if(mans==0){cout<<"未找到任何信息!"<<endl;}else{struct man* p=manhead;int i=0;char name9[20];cout<<"请输入您要搜索的姓名:";cin>>name9;do{if(strcmp(name9,p->name)==0) {cout<<"查询到以下信息:"<<endl;cout<<p->name<<" "<<p->age<<" "<<p->sex<<" "<<work[p->job]<<" "<<place[p->pla]<<endl;flag=1;break;}p=p->next;i++;}while(i!=mans);}if(flag==0){cout<<endl<<"未查询到相关信息!"<<endl;}cout<<endl;system("pause");menu3();}void menu3(){ //个人简历菜单system("cls");cout<<endl;cout<<"★★★★★个人简历★★★★★★"<<endl;cout<<"★1.新增★"<<endl;cout<<"★2.保存★"<<endl;cout<<"★3.浏览★"<<endl;cout<<"★4.搜索★"<<endl;cout<<"★0.退出★"<<endl;cout<<"★★★★★★★★★★★★★★★"<<endl<<endl;cout<<" 请选择您需要的服务:";cin>>n;if(n==1){fun3_1();}else if(n==2){fun3_2();}else if(n==3){fun3_3();}else if(n==4){fun3_4();}else if(n==0){return;} else{menu3();}}void pipei(){ //职业匹配system("cls");struct need *p=needhead;cout<<"★★★★★匹配信息如下:★★★★★"<<endl;cout<<"企业名称应聘者姓名应聘岗位"<<endl<<endl;int i=0;do{struct man *p1=manhead;int j=0;do{if(p->sex==p1->sex&&p->age1<=p1->age&&p->age2>=p1->age&&p->job==p1->job){struct Co*p2=Cohead;int k=0;do{if(p->num==p2->num){break;}k++;p2=p2->next;}while(k!=Cos);cout<<" "<<p2->name<<" "<<p1->name<<" "<<work[p1->job]<<endl;break;}j++;p1=p1->next;}while(j!=mans);p=p->next;i++;}while(i!=needs);cout<<endl;system("pause");return;}int main(){ //主菜单read();do{menu();cin>>n;if(n==1){menu1();}else if(n==2){menu2();}else if(n==3){menu3();}else if(n==4){pipei();}else if(n==0){break;}}while(1);cout<<endl<<" 感谢您的使用!"<<endl;return 0;}程序主界面:涉及知识点:程序的简要叙述如下:个人简历,企业信息,招聘信息都是用链表存储信息的个人简历包括:姓名,年龄,性别,求职意向,求职地点企业信息包括:企业名称,企业编号,企业现有人数,企业地点招聘信息包括:企业编号,性别要求,年龄下限,年龄上限,招聘职位mans,Cos,needs三个全局变量分别记录个人简历,企业信息,招聘信息的数量选择进行四种信息的操作(个人简历,企业信息,招聘信息,匹配)通过子菜单menu1,menu2,menu3可以新增信息,保存信息在文件中,浏览全部的信息,搜索具体某个信息匹配可以根据招聘信息里的年龄范围,性别要求,招聘职位在个人简历中找到适合的人文件的存储使用了链表,链表的学习询问了热心网友,并生动合理的诠释了链表:链表是什么?你可以理解为一-列火车,它由多节车厢组成,每节车厢都相同大小,但是存储着不同的东西。