1、C语言人事管理题目: 某高校主要人员有:在职人员(行政人员,教师,一般员工),退休人员和临时工。现在需要存储这些人员的人事档案信息,内容包括变好,姓名,性别,年龄,职务,职称,政治面貌,最高学历,任职时间,来院时间,人员类别。其中人员编号唯一,不能重复。 (1) 添加删除功能:能根据学院人事的变动情况,添加删除记录 (2) 查询功能: 能根据编号和姓名进行查询 (3) 编辑功能(高级): 根据查询对相应的记录进行修改并存储 (4) 统计功能: 能根据多种参数进行人员的统计(在职人员,党员人数,女工人数,高学历高学历人员(硕士学位以上或者副教授以上),统计要求同时显示被统计者的信息。(5) 排序
2、功能: 按照年龄,来院时间进行排序。(6) 保存功能: 能对输入的数据进行相应的存储。程序代码:#include /*根据实际存放位置修改此路径*/*初始化双链表*/void init() First=(TEACHER *)malloc(sizeof(TEACHER); /*为头结点申请空间*/ Last=First; /*将尾指针指向头结点*/ First-prior=Last; /*设置头结点的前驱指针*/ Last-next=First; /*设置头结点的后继指针*/ p=First; /*设置当前记录指针为头结点*/*创建教师信息循环双链表*/void create() int uni
3、t,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);/*为新增结点申请空间*/ if(!info) /*没有空间出错处理*/ printf(nout of memory); exit(0); printf(No:); /
4、*开始提示输入*/ scanf(%s,info-no); if(info-no0=)/*输入结束输入*/ 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-worklo
5、ad=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; /*新结点的前驱为原来的尾结点*/ L
6、ast-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
7、-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) printf(can not open filen); return; while(First-next!=First) /
8、*如果当前表不空,删除当前表*/ p1=First-next; First-next=p1-next; free(p1); free(First); First=(TEACHER*)malloc(sizeof(TEACHER); /*创建头结点*/ if(!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)
9、 printf(out of memory!n); return; if(1!=fread(p1,sizeof(TEACHER),1,fp) break; /*读数据*/ p1-next=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,
10、wb)=NULL) /*为输出打开一个文本文件,如没有则建立*/ printf(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=L
11、ast) return;/*表为空*/ if(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+75,p-name); outte
12、xtxy(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+360,y1+165,str);/*清除界面显示信息*/void clear() int x1=70,y1=100,m,n; for(m=0;m
13、4;m+) for(n=0;nnext=First|First-next-next=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-workloadp0-workload) p00=p0;/*当新插入结点比当前表结点大时,指针后移*/ p0=p0-next; if( p0=First)/*如果p0移到了头结点*/ p11-next=p00-next; p11-prior=p00;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1