#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
typedef struct teacher
{
int num;//工号
char name[10];//姓名
char sex[10];//性别
char edu[10];//学历
char pos[10];//职称
char aca[10];//学院
char date[10];//入职年月
struct teacher *next;
}tea;
int num;//工号
char name[10];//姓名
char sex[10];//性别
char edu[10];//学历
char pos[10];//职称
char aca[10];//学院
char date[10];//入职年月
tea *head=NULL,*p;
int size = sizeof(tea);
void welocome()//登陆界面
{
system("color 0a");
printf("````````````````````````````````````````````````````````````\n");
printf("\n");
printf("\n");
printf("\n");
printf("************** 欢迎使用教师信息管理系统 ******************\n");
printf("\n");
printf("\n");
printf(" 制作人:184804140梁丁方\n 184804151易玉龙\n 184804178时凯峰\n");
printf(" 班 级: 软工三班\n");
printf(" 日 期: 2019年3月23日\n");
printf("````````````````````````````````````````````````````````````\n");
}
void menu()//功能菜单
{
printf(" ________________________________________________ \n");
printf(" | |\n");
printf(" | 教师信息管理系统 |\n");
printf(" | |\n");
printf(" | 0、退出系统 |\n");
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");
printf(" | 10、保存数据到文件 |\n");
printf(" | |\n");
printf(" |________________________________________________|\n");
}
tea *Create()//录入教师信息
{
int size = sizeof(tea);
head = NULL;
printf("提示:当录入工号0时结束录入\n");
printf("请输入教师信息:\n");
printf("工号:");
scanf("%d",&num);
if(num==0)
{
printf("教师信息录入成功!\n") ;
return head;
}
printf("姓名:") ;
scanf("%s",name) ;
printf("性别:");
scanf("%s",sex);
printf("学历:");
scanf("%s",edu);
printf("职称:");
scanf("%s",pos);
printf("学院:");
scanf("%s",aca);
printf("入职年月:");
scanf("%s",date);
while(num!=0){ /* 工号0表示输入结束 */
p = (tea *) malloc(size);
p->num=num;
strcpy(p->name,name);
strcpy(p->sex,sex);
strcpy(p->edu,edu);
strcpy(p->pos,pos);
strcpy(p->aca,aca);
strcpy(p->date,date);
tea *ptr ,*ptr1, *ptr2;
ptr2 = head;
ptr = p;
if(head == NULL){
head = ptr;
head->next = NULL;
}
else{
while((ptr->num > ptr2->num) && (ptr2->next != NULL)){
ptr1 = ptr2;
ptr2 = ptr2->next;
}
if(ptr->num <= ptr2->num){
if(head == ptr2) head = ptr;
else ptr1->next = ptr;
ptr->next = ptr2;
}
else{
ptr2->next = ptr;
ptr->next = NULL;
}
} /* 调用插入函数 */
printf("请输入教师工号:\n");
printf("工号:");
scanf("%d",&num);
if(num==0)
{
printf("教师信息录入成功!\n") ;
return head;
}
printf("姓名:") ;
scanf("%s",name) ;
printf("性别:");
scanf("%s",sex);
printf("学历:");
scanf("%s",edu);
printf("职称:");
scanf("%s",pos);
printf("学院:");
scanf("%s",aca);
printf("入职年月:");
scanf("%s",date);
}
}
void Print()//遍历
{
tea *ptr;
if(head == NULL){
printf("\n无信息\n");
return;
}
printf("\n**********************************************教师信息***********************************************\n");
printf("\n");
for(ptr = head; ptr != NULL; ptr = ptr->next)
printf("工号:%-10d姓名:%-10s性别:%-10s学历:%-10s职称:%-10s学院:%-10s入职年月:%-10s\n",ptr->num,ptr->name,ptr->sex,ptr->edu,ptr->pos,ptr->aca,ptr->date);
printf("\n*****************************************************************************************************\n");
}
void Find1()//按工号查询
{
printf("请输入您想要查找的教师工号:");
scanf("%d",&num);
tea *ptr=NULL;
if(head==NULL)
printf("请录入教师信息!\n");
else
{
for(ptr=head;ptr!=NULL;ptr=ptr->next)
if(ptr->num==num)
break;
if(ptr!=NULL)
{
printf("\n**********************************************教师信息***********************************************\n");
printf("\n");
printf("工号:%-10d姓名:%-10s性别:%-10s学历:%-10s职称:%-10s学院:%-10s入职年月:%-10s\n",ptr->num,ptr->name,ptr->sex,ptr->edu,ptr->pos,ptr->aca,ptr->date);
printf("\n*****************************************************************************************************\n");
}
else
printf("该教师信息未录入本系统!\n",num);
}
}
void Find2()//按学历查询
{
printf("请输入您想要查找的学历:");
scanf("%s",edu);
tea *ptr;
if(head==NULL)
printf("请录入教师信息!\n");
else
{
printf("\n**********************************************教师信息***********************************************\n");
printf("\n");
for(ptr=head;ptr!=NULL;ptr=ptr->next){
if(strcmp(ptr->edu,edu)==0)
printf("工号:%-10d姓名:%-10s性别:%-10s学历:%-10s职称:%-10s学院:%-10s入职年月:%-10s\n",ptr->num,ptr->name,ptr->sex,ptr->edu,ptr->pos,ptr->aca,ptr->date);
} printf("\n*****************************************************************************************************\n");
}
}
void Insert()//插入教师信息
{
printf("请输入教师信息:\n");
printf("工号:");
scanf("%d",&p->num);
printf("姓名:") ;
scanf("%s",p->name) ;
printf("性别:");
scanf("%s",p->sex);
printf("学历:");
scanf("%s",p->edu);
printf("职称:");
scanf("%s",p->pos);
printf("学院:");
scanf("%s",p->aca);
printf("入职年月:");
scanf("%s",p->date);
tea *ptr ,*ptr1, *ptr2;
ptr2 = head;
ptr = p;
if(head == NULL){
head = ptr;
head->next = NULL;
}
else{
while((ptr->num > ptr2->num) && (ptr2->next != NULL)){
ptr1 = ptr2;
ptr2 = ptr2->next;
}
if(ptr->num <= ptr2->num){
if(head == ptr2) head = ptr;
else ptr1->next = ptr;
ptr->next = ptr2;
}
else{
ptr2->next = ptr;
ptr->next = NULL;
}
printf("插入成功!\n");
}
}
void Delete()//删除教师信息
{
printf("请输入您想要删除的教师工号:");
scanf("%d", &num);
tea *ptr1,*ptr2;
if(head == NULL)
printf("请录入教师信息!\n");
else if(head->num == num){
while(head != NULL && head->num == num){
ptr2 = head;
head = head->next;
free(ptr2);
}
printf("删除成功!\n");
}
else{
ptr1 = head;
ptr2 = head->next;
while(ptr2 != NULL){
if(ptr2->num == num){
ptr1->next = ptr2->next;
free(ptr2);
}
else
ptr1 = ptr2;
ptr2 = ptr1->next;
}
printf("删除成功!\n");
}
}
void Up()//职称晋升
{
printf("请输入您想要晋升的教师工号:");
scanf("%d", &num);
printf("该教师将晋升为:\n");
scanf("%s", pos);
tea *ptr;
if(head==NULL)
printf("请录入教师信息!\n");
else
{
for(ptr=head;ptr!=NULL;ptr=ptr->next)
if(ptr->num==num)
{
strcpy(ptr->pos,pos);
break;
}
printf("晋升成功!\n");
}
}
void rate()
{
char x[4][10]={"本科","硕士","博士","博士后"};
int a=0,b=0,c=0,d=0,e=0,num=0;
tea *p;
if(head==NULL)
printf("请录入教师信息!\n");
else
{
for(p=head;p!=NULL;p=p->next)
{
num++;
if(strcmp(p->edu,x[0])==0)
a++;
else if(strcmp(p->edu,x[1])==0)
b++;
else if(strcmp(p->edu,x[2])==0)
c++;
else if(strcmp(p->edu,x[3])==0)
d++;
else
e++;
}
printf("各学历的教师比例如下:\n历本科:%.2f%% 硕士:%.2f%% 博士:%.2f%% 博士后:%.2f%% 本科及以下:%.2f%%\n",a*1.00/num*100,b*1.00/num*100,c*1.00/num*100,d*1.00/num*100,e*1.00/num*100);
}
}
void Read()//从文件读入数据
{
FILE *fp;
if((fp=fopen("teacher.txt","r")) == NULL){
printf("读入错误!\n");
exit(0);
}
tea *tail,*p;
head = tail=NULL;
while(!feof(fp)){
p = (tea *) malloc(size);
fscanf(fp,"%d %s %s %s %s %s %s",&p->num,p->name,p->sex,p->edu,p->pos,p->aca,p->date);
p->next = NULL;
if(head == NULL)
head = p;
else
tail->next = p;
tail = p;
}
if(fclose(fp)){
printf( "读入错误!\n" );
exit(0);
}
printf("教师信息读入成功!\n");
}
void Save()//保存数据到文件
{
FILE *fp;
if((fp=fopen("teacher.txt","w")) == NULL){
printf("保存失败!\n");
exit(0);
}
tea *ptr;
if(head == NULL){
return;
}
for(ptr=head;ptr->next!=NULL;ptr=ptr->next)
fprintf(fp,"%d %s %s %s %s %s %s\n",ptr->num,ptr->name,ptr->sex,ptr->edu,ptr->pos,ptr->aca,ptr->date);
fprintf(fp,"%d %s %s %s %s %s %s",ptr->num,ptr->name,ptr->sex,ptr->edu,ptr->pos,ptr->aca,ptr->date);
if( fclose(fp) ){
printf( "保存失败!\n" );
exit(0);
}
printf("教师信息保存成功!\n");
}
int main(void)
{
int choice;
welocome();
do{
menu();
printf("请选择功能:");
scanf("%d", &choice);
switch(choice){
case 1:
Create();
break;
case 2:
Print();
break;
case 3:
Find1();
break;
case 4:
Find2();
break;
case 5:
Insert();
break;
case 6:
Delete();
break;
case 7:
Up();
break;
case 8:
rate();
break;
case 9:
Read();
break;
case 10:
Save();
break;
}
}while(choice!=0);
return 0;
}
教师信息管理系统
猜你喜欢
转载自blog.csdn.net/weixin_43723935/article/details/89043938
周排行