C语言程序设计 《招聘信息管理系统》
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言程序设计 《招聘信息管理系统》相关的知识,希望对你有一定的参考价值。
招聘信息管理系统
要求:分为5个模块
1输入招聘者信息(姓名,年龄,性别,学历,工作经验,工资)
2制定淘汰条件:需工作经验1年以上,年龄20以上,学历本科以上,工资800以上
3修改已聘者(通过淘汰条件后所剩人员信息)信息
4查询已聘者信息
5输出已聘者信息
系统以菜单模式操作
运行环境:Turbo C
希望有能力的朋友能给我一个完整的程序,谢谢!
明显抄袭……虽然不知道你是在哪里弄的,可是这个正是我放在空间里的无效程序
#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;
以上是关于C语言程序设计 《招聘信息管理系统》的主要内容,如果未能解决你的问题,请参考以下文章