C语言人事管理.doc

上传人:scccc 文档编号:13786599 上传时间:2022-01-23 格式:DOC 页数:14 大小:42KB
返回 下载 相关 举报
C语言人事管理.doc_第1页
第1页 / 共14页
C语言人事管理.doc_第2页
第2页 / 共14页
C语言人事管理.doc_第3页
第3页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C语言人事管理.doc》由会员分享,可在线阅读,更多相关《C语言人事管理.doc(14页珍藏版)》请在三一文库上搜索。

1、题目:某高校主要人员有:在职人员(行政人员,教师,一般员 工),退休人员和临时工。现在需要存储这些人员的人事档案信 息,内容包括变好,姓名,性别,年龄,职务,职称, 政治面貌, 最高学历, 任职时间, 来院时间, 人员类别。其中人员编号唯一, 不能重复。(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()in

3、t 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);/*为新增结点申请空间 */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-workload=t

5、emp; 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-nex

6、t=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!

7、=First) p=p-prior;else p=Last;clear();print(p);/* 显示下一条记录 */ void nextr()if(First=Last) return;if(p=Last) p=First-next;elsep=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)printf(out of memory!n);

9、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,wb)=NULL) /* 开一个

10、文本文件,如没有则建立 */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=Last)return;/*

11、表为空 */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); 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);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1