C语言高校教师人事管理系统

#include
#include
#include
#define LEN sizeof(struct teacher)
typedef struct date
{
int year;
int month;
int day;
}DATE;
typedef struct teacher
{
int num;//编号
char name[20];//姓名
char sex[10];//性别
DATE borntime;//出生日期
DATE worktime;//工作时间
int salary;//工资
char academy[20];//学院
char post[20];//职称
char degree[20];//学位

}TEACHER;
void creat();//创建教师信息
void add();//增加教师信息
void del();//删除教师信息
void modify();//修改教师信息
void search();//查询教师信息
void namesearch();//按姓名
void academicsearch();//按学院
void postsearch();//按职称
void worktimesearch();//按工作时间
void outputteacher(int);//输出
void statistics();//统计教师信息
void statistics1980();
void statisticspost();
void statisticsdegree();
void statisticsave();
void sort();//按照教师姓名排序
void saveTeacher();//保存到文件中
void shuchu();//输出教师信息
int readTeacher(void);//从文件中读取出教师信息
TEACHER Teacher[100];
int x=0;
int main()
{
int a;
x=readTeacher();
if(x==0)
printf(“信息读取错误!\n”);
while(1)
{printf(" ------------------------\n");
printf(" \n");
printf(" 高校教师人事管理系统 \n");
printf(" \n");
printf(" ------------------------\n");
printf(" 创建信息文件,请按1 \n");
printf(" 增加教师信息,请按2 \n");
printf(" 删除教师信息,请按3 \n");
printf(" 修改教师信息,请按4 \n");
printf(" 查询教师信息,请按5 \n");
printf(" 统计教师信息,请按6 \n");
printf(" 输出教师信息,请按7 \n");
printf(" 退出系统, 请按0 \n");
scanf("%d",&a);
getchar();
switch(a)
{case 1:creat();break;
case 2:add();break;
case 3:del();break;
case 4:modify();break;
case 5:search();break;
case 6:statistics();break;
case 7:shuchu();break;
case 0:exit(0);break;
default:printf(“输入错误!\n”);
}

}

}
void creat()
{ int judge=1;
while(judge)
{printf(“编号\n”);
scanf("%d",&Teacher[x].num);
printf(“姓名\n”);
scanf("%s",Teacher[x].name);
printf(“性别\n”);
scanf("%s",Teacher[x].sex);
printf(“出生日期\n”);
scanf("%d%d%d",&Teacher[x].borntime.year,&Teacher[x].borntime.month,&Teacher[x].borntime.day);
printf(“参加工作时间\n”);
scanf("%d%d%d",&Teacher[x].worktime.year,&Teacher[x].worktime.month,&Teacher[x].worktime.day);
printf(“工资\n”);
scanf("%d",&Teacher[x].salary);
printf(“学院\n”);
scanf("%s",Teacher[x].academy);
printf(“职称\n”);
scanf("%s",Teacher[x].post);
printf(“学位\n”);
scanf("%s",Teacher[x].degree);
x++;
printf(“是否继续输入 是 1 否 0\n”);
scanf("%d",&judge);
if(judge!=1&&judge!=0)
{printf(“输入错误!请重新输入:\n”);
scanf("%d",&judge);}
getchar();
}
sort();
saveTeacher();

}
void sort()
{int i,j;
TEACHER temp;
for(i=0;i for(j=0;j if(strcmp(Teacher[j].name,Teacher[j+1].name)>0)
{temp=Teacher[j];
Teacher[j]=Teacher[j+1];
Teacher[j+1]=temp;
}
}
void saveTeacher()
{ FILE *fp;
fp=fopen(“teacher.txt”,“w”);
if((fp=fopen(“teacher.txt”,“w”))==NULL)
{printf(“file can’t open!\n”); return;}
if(fwrite(Teacher,LEN,x,fp)x)
printf(“教师信息保存成功!\n”);
fclose(fp);
}
void outputteacher(int i)
{printf(“编号 %d\n”,Teacher[i].num);
printf(“姓名 %s\n”,Teacher[i].name);
printf(“性别 %s\n”,Teacher[i].sex);
printf(“出生日期 %4d.%d.%2d\n”,Teacher[i].borntime.year,Teacher[i].borntime.month,Teacher[i].borntime.day);
printf(“参加工作时间 %4d.%d.%2d\n”,Teacher[i].worktime.year,Teacher[i].worktime.month,Teacher[i].worktime.day);
printf(“工资 %d\n”,Teacher[i].salary);
printf(“学院 %s\n”,Teacher[i].academy);
printf(“职称 %s\n”,Teacher[i].post);
printf(“学位 %s\n”,Teacher[i].degree);
}
void add()
{creat();
}
void del()
{char name[20];
int judge=1,a,i,j;
while(judge)
{printf(“输入老师姓名\n”);
scanf("%s",name);
for(i=0;i if(strcmp(name,Teacher[i].name)0)
break;
if(x
i)
printf(“输入错误\n”);
else
{outputteacher(i);
printf(“是否确定删除 是 1 否 0\n”);
scanf("%d",&a);
if(a
1)
{for(j=i;j Teacher[j]=Teacher[j+1];
x–;
}
}
printf(“是否继续删除教师信息 是 1 否 0\n”);
scanf("%d",&judge);
}
sort();
saveTeacher;
}
void modify()
{char name[20];
int i,select,judge=1,a=1;
while(judge)
{
printf(“输入修改教师的姓名\n”);
scanf("%s",name);
for(i=0;i if(strcmp(name,Teacher[i].name)0)
break;
if(i
x)
printf(“输入错误!\n”);
else{ outputteacher(i);
while(a){
printf(“1.修改编号\n”);
printf(“2.修改姓名\n”);
printf(“3.修改性别\n”);
printf(“4.修改出生日期\n”);
printf(“5.修改参加工作时间\n”);
printf(“6.修改工资\n”);
printf(“7.修改学院\n”);
printf(“8.修改职称\n”);
printf(“9.修改学位\n”);
scanf("%d",&select);
getchar();
switch(select)
{
case 1:
printf(“新编号:\n”);scanf("%d",&Teacher[i].num);
a=0;break;
case 2:
printf(“新姓名:\n”);scanf("%s",Teacher[i].name);
a=0;break;
case 3:
printf(“新性别:\n”);scanf("%s",Teacher[i].sex);
a=0;break;
case 4:
printf(“新出生日期:\n”);
scanf("%d%d%d",&Teacher[i].borntime .year,&Teacher[i].borntime.month,&Teacher[i].borntime.day);
a=0;break;
case 5:
printf(“新工作时间:\n”);
scanf("%d%d%d",&Teacher[i].worktime.year,&Teacher[i].worktime.month,&Teacher[i].worktime.day);
a=0;break;
case 6:
printf(“新工资:\n”);scanf("%d",&Teacher[i].salary );
a=0;break;
case 7:
printf(“新学院:\n”);scanf("%s",Teacher[i].academy );
a=0;break;
case 8:
printf(“新职称:\n”);scanf("%s",Teacher[i].post );
a=0;break;
case 9:
printf(“新学位:\n”);scanf("%s",Teacher[i].degree );
a=0;break;
default:printf(“按键错误,重新输入\n”);
}
printf(“修改后的教师信息:\n”);
outputteacher(i);
}
}a=1;
printf(“是否继续修改 是 1 否 0\n”);
scanf("%d",&judge);}
sort();
saveTeacher();
}
void search()
{int select,a=1,judge=1;
while(judge)
{
printf(“按姓名查询请输入1\n”);
printf(“按学院查询请输入2\n”);
printf(“按职称查询请输入3\n”);
printf(“按参加工作时间查询请输入4\n”);
printf(“退出查询输入0\n”);
scanf("%d",&select);
getchar();
switch(select)
{case 1:namesearch();
break;
case 2:academicsearch();
break;
case 3:postsearch();
break;
case 4:worktimesearch();
break;
case 0:return;
default:printf(“输入错误\n”);
a=0;
}
if(a=1)
{printf(“是否继续查询 是 1 否 0\n”);
scanf("%d",&judge);
getchar();
}

}
}
void namesearch()
{char name[20];
int i,a;
printf(“精确查询 1 模糊查询 2\n”);
scanf("%d",&a);
if(a1)
{printf(“输入全名:\n”);
scanf("%s",name);
for(i=0;i if(strcmp(name,Teacher[i].name)0)
break;
if(x
i)
printf(“查询无果\n”);
else
outputteacher(i);
}
if(a
2)
{printf(“输入姓氏:\n”);
scanf("%s",name);
for(i=0;i {if(strstr(Teacher[i].name,name)!=NULL)
{outputteacher(i);
printf("\n");
printf("\n");}
if(ix)
{printf(“查询无果\n”);
return;
}}
}
}
void academicsearch()
{ char academy[20];
int i;
printf(“输入教师所在学院名称:\n”);
scanf("%s",academy);
for(i=0;i {if(strcmp(academy,Teacher[i].academy)0)
{outputteacher(i);
printf("\n");
printf("\n");}
if(i
x)
{printf(“查询无果\n”);
return;
}}
}
void postsearch()
{ char post[20];
int i;
printf(“输入教师职称名称:\n”);
scanf("%s",post);
for(i=0;i {if(strcmp(post,Teacher[i].post)0)
{outputteacher(i);
printf("\n");
printf("\n");}
if(i
x)
{printf(“查询无果\n”);
return;
}
}
}
void worktimesearch()
{DATE Worktime;
int i,j=0;
printf(“输入日期:\n”);
scanf("%d%d%d",&Worktime.year,&Worktime.month,&Worktime.day);
for(i=0;i {if(Teacher[i].worktime.year {outputteacher(i);printf("\n");printf("\n");j++;}
else if((Teacher[i].worktime.year
Worktime.year)&&(Teacher[i].worktime.month {outputteacher(i);printf("\n");printf("\n");j++;}
else if((Teacher[i].worktime.monthWorktime.month)&&(Teacher[i].worktime.day {outputteacher(i);printf("\n");printf("\n");j++;}
}
if(j
0)
printf(“查询无果\n”);
return;
}
void statistics()
{ int a;
printf(“1.统计1980年以后出生的教师人数,以及80后教师占教师总数的比例\n”);
printf(“2.统计各职称岗位的教师人数是多少,计算高级职称(包括副教授和教授)的比例\n”);
printf(“3.统计各学位的教师人数是多少,计算拥有博士学位的教师占教师总数的比例\n”);
printf(“4.计算教师的平均工资,并输出\n”);
scanf("%d",&a);
getchar();
switch(a)
{ case 1:statistics1980();break;
case 2:statisticspost();break;
case 3:statisticsdegree();break;
case 4:statisticsave();break;
default :printf(“输入错误\n”);
}
}
void statistics1980()
{ int i,j=0;
float a;
for(i=0;i if(Teacher[i].borntime.year>1980)
j++;
a=(float)j/x;
printf(“1980年以后出生的教师的人数: %d\n”,j);
printf(“80后教师占教师总数的比例:%.2f\n”,a);
}
void statisticspost()
{int a=0,b=0,c=0,d=0,i=0;
float e;
for(i=0;i {if(strcmp(Teacher[i].post,“助教”)==0) a++;
if(strcmp(Teacher[i].post,“讲师”)==0) b++;
if(strcmp(Teacher[i].post,“副教授”)==0) c++;
if(strcmp(Teacher[i].post,“教授”)==0) d++;
}
e=(float)(c+d)/x;
printf(“助教的人数:%d\n”,a);
printf(“讲师的人数:%d\n”,b);
printf(“副教授的人数:%d\n”,c);
printf(“教授的人数:%d\n”,d);
printf(“高级职称的比例:%.2f\n”,e);
}
void statisticsdegree()
{int a=0,b=0,c=0,i=0;
float d;
for(i=0;i {if(strcmp(Teacher[i].degree,“学士”)==0) a++;
if(strcmp(Teacher[i].degree,“硕士”)==0) b++;
if(strcmp(Teacher[i].degree,“博士”)==0) c++;
}
d=(float)c/x;
printf(“学士的人数:%d\n”,a);
printf(“硕士的人数:%d\n”,b);
printf(“博士的人数:%d\n”,c);
printf(“博士占教师总数的比例:%.2f\n”,d);
}
void statisticsave()
{int i,sum=0;
float ave;
for(i=0;i sum=sum+Teacher[i].salary;
ave=(float)sum/x;
printf(“教师的平均工资:%.2f\n”,ave);
}
void shuchu()
{ int i;
printf(“教师信息如下:\n”);
for(i=0;i {
outputteacher(i);
printf("\n");
printf("\n");
}
printf(“任意键键结束:\n”);
getchar();return;
}
int readTeacher(void)
{FILE *fp;
int bn=0;
if((fp=fopen(“teacher.txt”,“rb+”))==NULL)
{printf(“文件打开失败!\n”);
return(bn);
}
while(!feof(fp))
if(fread(&Teacher[bn],LEN,1,fp))
bn++;
fclose(fp);
return(bn);
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部