问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言程序设计 《招聘信息管理系统》

发布网友 发布时间:2022-04-19 12:54

我来回答

1个回答

热心网友 时间:2023-07-03 04:15

#include<stdio.h>
#include<stdlib.h>
/*对于学历和工作要求都是用数字来替代*/
typedef struct worker
{
int num; //编号
char id[20]; //身份证号,过长,所以所以用字符串
char name[15]; //姓名
int degree; //学历
int job; //需要的工作
worker *next;
worker *pre;
}worker,*Lworker;
/*需求记录*/
typedef struct want
{
int n; //单位的编号
int job; //需求的岗位
int num; //需求的人数
want *next;
want *pre;
}want,*Lwant;
/*输出说明信息的函数*/
void info()
{
printf("输入说明如下:\n");
printf("学历说明:\n1:高中毕业 2:大学毕业 3:研究生 4:更高学历\n");
printf("职位说明如下:\n1:程序员 2:管理人员 3:会计 4:兽医\n");
printf("当输入求职者信息的时候,求职者编号为-1时,输入结束\n");
printf("当输入供职单位信息的时候,当供职的数量为-1的时候,输入结束\n");
}
/*输入人才信息*/
void input_worker(Lworker head)
{
int i=1;
Lworker x=head;
x->pre=NULL;
while(1)
{
printf("输入第%d个求职者的信息,顺序为编号,姓名,身份证号,需要的工作,学历\n",i);
scanf("%d",&x->num);
if(x->num==-1)
break;
getchar();//回车会被读入到gets()函数中,所以必须有一个getchar()把回车收回
gets(x->name);
gets(x->id);
scanf("%d",&x->job);
scanf("%d",&x->degree);
Lworker y=(worker *)malloc(sizeof(worker));
x->next=y;
y->pre=x;
x=y;
i++;
}
x->pre->next=NULL;
free(x);
}
/*输入求职信息*/
void input_want(Lwant head)
{
Lwant x=head;
int i=1;
x->pre=NULL;
while(1)
{
printf("第%d个供职单位的信息,顺序为编号,工作,数量\n",i);
scanf("%d",&x->n);
scanf("%d",&x->job);
scanf("%d",&x->num);
if(x->num==-1)
break;
i++;
Lwant y=(want*)malloc(sizeof(want));
x->next=y;
y->pre=x;
x=y;
}
x->pre->next=NULL;
free(x);
}
/*查询人才信息函数*/
//参数num就是员工的编号,查询是是什么工作
int find_worker(Lworker head,int num)
{
Lworker x=head;
for(;;x=x->next)
{
if(x->num==num)
{
return(x->job);
}
}
return(-1); //表示没有这个人
}
/*查询工作信息函数*/
//num就是编号
int find_want(Lwant head,int num)
{
Lwant x=head;
for(;;x=x->next)
{
if(x->n==num)
return(x->job);
}
return(-1); //表示没有这个单位的信息
}
/*修改求职者的信息*/
//参数num就是员工的编号
void change_worker(Lworker head,int num)
{
int m=0;
Lworker x=head;
for(;;x=x->next)
{
if(x->num==num)
{
break;
}
}
printf("输入要修改的内容:\n1:工作 2:学历 3:身份证号 4:姓名\n");
scanf("&d",&m);
switch(m)
{
case 1:
printf("输入更正后的工作\n");
scanf("%d",&x->job);
break;
case 2:
printf("输入更正后的学历\n");
scanf("%d",&x->degree);
break;
case 3:
printf("输入更正后的身份证号\n");
gets(x->id);
break;
case 4:
printf("输入更正后的姓名\n");
gets(x->name);
break;
}
}
/*更改用人单位信息*/
//num就是编号
void change_want(Lwant head,int num)
{
int n;
Lwant x=head;
for(;;x=x->next)
{
if(x->n==num)
break;
}
printf("输入要修改的内容\n1:工作 2:人数");
scanf("%d",&n);
switch(n)
{
case 1:
printf("输入新的工作\n");
scanf("%d",&x->job);
break;
case 2:
printf("输入新的人数\n");
scanf("%d",&x->num);
break;
}
}
/*删除求职者信息*/
Lworker del_worker(Lworker head,int num)
{
Lworker x=head;
if(head->num==num)
{
x=head->next;
x->pre=NULL;
free(head);
return(x);
}
else
{
for(;;x=x->next)
{
if(x->num==num)
{
break;
}
}
Lworker y=x->pre;
Lworker z=x->next;
if(z==NULL)
{
y->next=NULL;
free(x);
}
else
{
y->next=z;
z->pre=y;
free(x);
}
return(head);
}
}
/*删除用人单位信息*/
Lwant del_want(Lwant head,int num)
{
Lwant x=head;
if(head->n==num)
{
x=x->next;
x->pre=NULL;
free(head);
return(x);
}
else
{
for(;;x=x->next)
{
if(x->n==num)
{
break;
}
}
Lwant y=x->pre;
Lwant z=x->next;
if(z==NULL)
{
y->next=NULL;
free(x);
return(head);
}
else
{
y->next=z;
z->pre=y;
free(x);
return(head);
}
}
}
/*统计需求量最大的工作*/
void tongji_need(Lworker head,int *n)
{
int i,m=0;
for(i=1;i<5;i++)
n[i]=0;
Lworker x=head;
for(;x!=NULL;x=x->next)
{
switch(x->job)
{
case 1:
n[1]++;
break;
case 2:
n[2]++;
break;
case 3:
n[3]++;
break;
case 4:
n[4]++;
break;
}
}
}
/*统计供给量最大的工作*/
void tongji_serve(Lwant head,int *m)
{
int i;
for(i=1;i<5;i++)
m[i]=0;
Lwant x=head;
for(;x!=NULL;x=x->next)
{
switch(x->job)
{
case 1:
m[1]=m[1]+x->num;
break;
case 2:
m[2]=m[2]+x->num;
break;
case 3:
m[3]=m[3]+x->num;
break;
case 4:
m[4]=m[4]+x->num;
break;
}
}
}
void main()
{
int i;
int x,num;
info();
int n[5],m[5];
Lworker head1=(worker *)malloc(sizeof(worker));
Lwant head2=(want *)malloc(sizeof(want));
while(1)
{
printf("输入要进行的操作\n");
printf("1:输入求值人员信息 2:输入用人单位信息 3:删除求值人员信息 4:删除用人单位信息 5:修改求职人员信息 6:修改用人单位信息\n");
printf("7:查询某个求职人员信息 8:查询某个用人单位信息 9:统计需求的工作信息 10:统计提供工作的信息 0:退出\n");
printf("注意:1和2如果重复执行的话,会覆盖以前的而结果,所以不可以重复选择,只可以做一次\n");
scanf("%d",&x);
if(x==0)
break;
switch(x)
{
case 1:
input_worker(head1);
break;
case 2:
input_want(head2);
break;
case 3:
printf("输入要删除的人员的编号\n");
scanf("%d",&num);
head1=del_worker(head1,num);
break;
case 4:
printf("输入要删除的单位的编号\n");
scanf("%d",&num);
head2=del_want(head2,num);
break;
case 5:
printf("输入要修改的人员的编号\n");
scanf("%d",&num);
change_worker(head1,num);
break;
case 6:
printf("输入要修改的单位的编号\n");
scanf("%d",&num);
change_want(head2,num);
break;
case 7:
printf("输入要查询的人员的编号\n");
scanf("%d",&num);
find_worker(head1,num);
break;
case 8:
printf("输入要查询的单位的编号\n");
scanf("%d",&num);
find_want(head2,num);
break;
case 9:
tongji_need(head1,n);
for(i=1;i<5;i++)
{
printf("第%d种工作的需求量是%d\n",i,n[i]);
}
break;
case 10:
tongji_serve(head2,m);
for(i=1;i<5;i++)
{
printf("第%d种工作的提供量是%d\n",i,m[i]);
}
break;
}
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
荣耀v20杀后台严重? 聊天时哪些回复让人感觉不舒服? 货物运输保险案例分析 卞和泣玉注释 求解,卞和泣玉没学过,在线等解。 葛加走之底读什么 在等腰三角形ABC中,AB=AC=5,BC=6,求角B的三角函数值 ...人开走一架战斗机,在一架客机下面飞,好几个飞机来拦截, ...话是三架飞机 机型各不同 在山区飞行发现恐怖分子用驴车运核弹 用AK... ...的成为战斗机飞行员。战争结束回国继续抢银 程序员的招聘要求 学什么计算机语言好找工作啊 C 程序员面试?? 现在还有没有单纯招聘C语言程序员的,如果有具体都是 怎么在word中把字旋转90°(把字倒过来90°) WORD2003中怎么改变数字和字母的方向让文字转90度 如何设置WORD中的字体方向? 如何将字体在Word2003中旋转90度 谁能给我翻译翻译,这什么意思啊,是什么字呢,word打开是这些字,怎么能翻译呢 word怎么让字体翻转 如何将Word文档里的字体倒过来? 在word文档中如何把文字翻转180度 word2003怎么改变文字方向 在word文档中怎样让文字任意旋转、任意倾斜? 在Word中怎样把文字旋转90度,180度 在word文档中怎样让文字旋转 在WORD中如何将文字旋转360度 怎样使用word2003翻转文字方向 在Microsoft Office Word 2003里面文字怎么90度旋转? word中如何将文字旋转180度 什么才算是“高级”c/c++程序员? 客户想雇佣高级程序员,不是公司,怎么找? 70分招聘C语言高手,就9个问题,3道编程,其余小题(在线等) 寻找程序员。程序员进来瞧瞧 C , C++ , C语言 程序员的求职意向怎么写 c语言程序员 招聘计算机编程开发人员需要的知识 C程序员工资多少 用英文写招聘软件程序员广告 如何评价二三线城市的C/C++程序员招聘 想成为一名C程序员 58上的程序员招聘信息可信度高吗 国内招聘C语言程序员的单位一般做什么项目 excel怎么按照某一列排序 EXCEL按条件填充? excel怎么按列排序 EXCEL按条件统计个数 excel按那个键保存 excel如何按要求排序 excel 按多个条件如何引用??