C语言人事管理(附加流程图)_第1页
C语言人事管理(附加流程图)_第2页
C语言人事管理(附加流程图)_第3页
C语言人事管理(附加流程图)_第4页
C语言人事管理(附加流程图)_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、  题目: 某高校主要人员有:在职人员(行政人员,教师,一般员工),退休人员和临时工。现在需要存储这些人员的人事档案信息,内容包括变好,姓名,性别,年龄,职务,职称,政治面貌,最高学历,任职时间,来院时间,人员类别。其中人员编号唯一,不能重复。   (1) 添加删除功能:能根据学院人事的变动情况,添加删除记录  (2) 查询功能: 能根据编号和姓名进行查询  (3) 编辑功能(高级): 根据查询对相应的记录进行修改并存储  (4) 统计功能:  能根据多种参数进行人员的统计(在职人员,党员人数,女工人数,高学历高学历人员(硕

2、士学位以上或者副教授以上),统计要求同时显示被统计者的信息。(5) 排序功能: 按照年龄,来院时间进行排序。(6) 保存功能: 能对输入的数据进行相应的存储。程序代码:#include <stdio.h> /*根据实际存放位置修改此路径*/*初始化双链表*/void init() First=(TEACHER *)malloc(sizeof(TEACHER); /*为头结点申请空间*/ Last=First; /*将尾指针指向头结点*/ First->prior=Last; /*设置头结点的前驱指针*/ Last->next=First; /*设置头结点的后继指针*/

3、p=First; /*设置当前记录指针为头结点*/*创建教师信息循环双链表*/void create() int unit,flag=0; float temp; TEACHER *info; /*新增结点*/ init(); for(;) if(flag=1)break; /*标志为1,不再输入*/ clrscr(); /*清屏*/ printf("Please enter teacher infomationn"); printf("input end entern"); info=(TEACHER *)malloc(sizeof(TEACHER);

4、/*为新增结点申请空间*/ if(!info) /*没有空间出错处理*/ printf("nout of memory"); exit(0); printf("No:"); /*开始提示输入*/ scanf("%s",info->no); if(info->no0='')/*输入结束输入*/ flag=1;break; printf("Name:"); scanf("%s",info->name); printf("Sex:"); scanf

5、("%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-

6、>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;/*根

7、据职称计算代课费*/ 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 la

8、str() 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 l

9、oad() TEACHER *p1; FILE *fp; if(fp=fopen("data.txt","rb")=NULL) printf("can not open filen"); return; while(First->next!=First) /*如果当前表不空,删除当前表*/ p1=First->next; First->next=p1->next; free(p1); free(First); First=(TEACHER*)malloc(sizeof(TEACHER); /*创建头结点*/ i

10、f(!First) printf("out of memory!n"); return; Last=First; First->prior=Last; Last->next=First; p=First; while(!feof(fp) /*当文件不为空时读数据*/ p1=(TEACHER*)malloc(sizeof(TEACHER); if(!p1) printf("out of memory!n"); return; if(1!=fread(p1,sizeof(TEACHER),1,fp) break; /*读数据*/ p1->n

11、ext=Last->next; /*将新读出的数据链在当前表尾*/ p1->prior=Last; Last->next=p1; Last=Last->next; First->prior=Last; fclose(fp); /*关闭文件*/*保存数据到磁盘文件*/void save() FILE *fp; /*定义指向文件的指针*/ TEACHER *p1; /* 定义移动指针*/ if(fp=fopen("data.txt","wb")=NULL) /*为输出打开一个文本文件,如没有则建立*/ printf("

12、can not open filen"); /*如不能打开文件,显示提示信息,结束程序*/ return; /*返回*/ p1=First; /*移动指针从头指针开始*/ while(p1->next!=First) /*如p1不为空*/ fwrite(p1->next,sizeof(TEACHER),1,fp); /*写入一条记录*/ p1=p1->next; /*指针后移,处理下一条记录*/ fclose(fp); /*关闭文件*/*删除记录*/void delete() TEACHER *p1; if(First=Last) return;/*表为空*/ if

13、(p=First) /*p为头结点*/ p=First->next; if(p=Last)/*p为尾结点*/ Last=p->prior; p1=p; /*一般情况*/ p=p->next; p1->prior->next=p1->next; p1->next->prior=p1->prior; free(p1);/*输出记录*/void print(TEACHER *p) int x1=70,y1=100; char str20; outtextxy(x1+110,y1+75, p->no); outtextxy(x1+360,y1

14、+75,p->name); outtextxy(x1+110,y1+105,p->sex); outtextxy(x1+360,y1+105,p->profess); outtextxy(x1+110,y1+135,p->dept); outtextxy(x1+360,y1+135,p->class); sprintf(str,"%f",p->workload); outtextxy(x1+110,y1+165,str); sprintf(str,"%f",p->lessonf); outtextxy(x1+36

15、0,y1+165,str);/*清除界面显示信息*/void clear() int x1=70,y1=100,m,n; for(m=0;m<4;m+) for(n=0;n<2;n+) setfillstyle(1,WHITE);/*白色覆盖原有信息*/ bar(x1+n*250+100,y1+50+m*30+20,x1+n*250+200,y1+50+m*30+40); /*sort排序函数*/void sort() TEACHER *p0,*p00,*p1,*p11,*templast; if(First->next=First|First->next->ne

16、xt=First)return; p00=First; /*作排好序表的表头和第一个结点*/ p0=First->next; p1=p0->next; First->prior=p0; p0->next=First; templast=p0; while(p1!=First) /*当p1没有转回到表头时*/ p11=p1; /*将p11作为待插入结点*/ p1=p1->next; /*p1指向下一个待排序结点*/ p00=First; /*从头结点开始寻找插入位置*/ p0=p00->next; /*p0是p00的后继*/ while(p0!=First&&p11->workload>p0->workload) p00=p0;/*当新插入结点比当前表结点大时,指针后移*/ p0=p0->next; if( p0=First)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论