目录一、概要设计内容--------------------------------------------2二、总体设计分析--------------------------------------------2三、各模块实现方法-----------------------------------------3四、模块的程序设计分析-----------------------------------3五、模块的程序的源代码-----------------------------------4六、程序运行结果及系统使用说明-----------------------13七、结束语及心得体会--------------------------------------151、概要设计内容题目:招聘信息管理系统设计“招聘信息管理系统”,使其可以查找对应的工作与对应的资料的功能。
1)数据包括:学历说明,职位说明,求职个人信息,用人单位信息。
2)可以对求职人员的信息进行记录。
3)可以对用人单位的信息进行记录。
4)可以增加或删除记录。
5)可以显示所有保存的记录。
6)可以按个人需要进行查询。
2、总体设计分析数据结构图如下:3、各模块实现方法(1)能够查询招聘信息系统的程序,以帮助完成招聘查找情况。
◆求职人员信息当查询用人单位招聘用人信息时,将自动告诉单位用人情况。
◆用人单位信息当用人单位预备招聘人手就是,将自动弹出招聘者信息。
(2)统计信息统计出全部的工作信息与提供工作的信息。
给予全部的人来参考提供。
4、模块的程序设计分析(1)、主菜单及头文件设计:我们按照老师所给的示例我们首先编译了一个头文件,在头文件里,编译了主函数需要用到的一些函数,如#include "stdio、h"等,因为需要录入便条的所有信息,所有用一个数据结构来实现信息的储存方式,用数组方式,把每条信息都编译成一个数组,如销售员代号用name[4]记录。
头文件还包括了定义常数记录数typedef struct,主函数原型int menu_select();/*声明函数*/int enter(RECODE t[]);/*声明函数*/void salor(RECODE t[],int n);/*声明函数*/int sum(RECODE t[],int n,int m);/*声明函数*/void list1(RECODE t[],int n);/*声明函数*/void list2(RECODE t[],int n);/*声明函数*/void list3(RECODE t[],int n);/*声明函数*/void save(RECODE t[],int n);/*声明函数*/int load(RECODE t[]);/*声明函数*/这些的都就是主函数需要用到的数据,因此放入头文件当中,在主程序开始之前直接引用#include "pro、h"。
(2)、输入信息:根据要求,招聘信息以文本文件存放在文件中,故需要提供文件的输入、输出等操作;还需要保存记录以进行修改,删除,查找等操作;另外还应提供键盘式选择菜单实现功能选择。
如下为程序设计流程图:5、模块的程序源代码头文件:#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;}}}6、程序运行结果及系统使用说明1、进入主菜单:2、选择“1”,输入供值单位:输入7,可以查询人员编号:3、选择“8”,保存到文件:4、选择“8”,读取文件:7、结束语及心得体会通过为期一周的课程设计,我们对《C语言》这门课程有了更深一步的了解。