(各行流程管理)C语言人事管理(附加流程图)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目:
某高校主要人员有:在职人员(行政人员,教师,一般员工),退休人员和临时工。现在需要存储这些人员的人事档案信息,内容包括变好,姓名,性别,年龄,职务,职称,政治面貌,最高学历,任职时间,来院时间,人员类别。其中人员编号唯一,不能重复。(1)添加删除功能:能根据学院人事的变动情况,添加删除记录
(2)查询功能:能根据编号和姓名进行查询
(3)编辑功能(高级):根据查询对相应的记录进行修改并存储
(4)统计功能:能根据多种参数进行人员的统计(在职人员,党员人数,女工人数,高学历高学历人员(硕士学位以上或者副教授以上)),统计要求同时显示被统计者的信息。
(5)排序功能:按照年龄,来院时间进行排序。
(6)保存功能:能对输入的数据进行相应的存储。
程序代码:
#include
/*初始化双链表*/
void init()
{
First=(TEACHER *)malloc(sizeof(TEACHER)); /*为头结点申请空间*/
Last=First; /*将尾指针指向头结点*/
First->prior=Last; /*设置头结点的前驱指针*/
Last->next=First; /*设置头结点的后继指针*/
p=First; /*设置当前记录指针为头结点*/
}
/*创建教师信息循环双链表*/
void create()
{
int unit,flag=0;
float temp;
TEACHER *info; /*新增结点*/
init();
for(;;)
{
if(flag==1)break; /*标志为1,不再输入*/
clrscr(); /*清屏*/
printf("Please enter teacher infomation\n");
printf("input @ end enter\n");
info=(TEACHER *)malloc(sizeof(TEACHER));/*为新增结点申请空间*/ if(!info) /*没有空间出错处理*/
{
printf("\nout of memory");
exit(0);
}
printf("No:"); /*开始提示输入*/
scanf("%s",info->no);
if(info->no[0]=='@')/*输入@结束输入*/
{
flag=1;break;}
printf("Name:");
scanf("%s",info->name);
printf("Sex:");
scanf("%s",info->sex);
printf("Profess:");
scanf("%s",info->profess);
printf("Dept:");
scanf("%s",info->dept);
printf("Class:");
scanf("%s",info->class);
printf("Workload:");
scanf("%f",&temp);
info->workload=temp;
if(strcmp(info->profess,"prof"))unit=25; /*教授*/
if(strcmp(info->profess,"aprof"))unit=20;/*副教授*/
if(strcmp(info->profess,"lect"))unit=15;/*讲师*/
if(strcmp(info->profess,"ass"))unit=10;/*助教*/
info->lessonf=unit*info->workload;/*根据职称计算代课费*/
info->next=Last->next;/*新插入结点插在表末尾*/
info->prior=Last; /*新结点的前驱为原来的尾结点*/
Last->next=info; /*原来尾结点的后继为新结点*/
Last=info; /*新的尾结点为新结点*/
First->prior=Last;/*头结点的前驱为尾指针*/
}
return;
}
/*显示第一条记录*/
void firstr()
{
if(First==Last)return;
clear();
p=First->next;
print(p);
}
/*显示最后一条记录*/
void lastr()
{
if(First==Last)return;
clear();
p=Last;
print(p);
}
/*显示前一条记录*/
void priorr()
{
if(First==Last)
return;
if(p->prior!=First)
p=p->prior;
else
p=Last;
clear();
print(p);
}
/*显示下一条记录*/
void nextr()
{
if(First==Last)
return;
if(p==Last)
p=First->next;
else
p=p->next;
clear();
print(p);
}
/*从文件读数据*/
void load()
{
TEACHER *p1;
FILE *fp;
if((fp=fopen("data.txt","rb"))==NULL)