(各行流程管理)C语言人事管理(附加流程图)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)

相关文档
最新文档