if(TB.tecscore>=T[i].tecscore){
flag=i;
}//if
}//for
printf("插入位置:
%d\n",flag);
if(flag==-1)
flag=TeacherNum;//在末尾插入
else{
for(inti=TeacherNum-1;i>=flag;i--){//移动插入位置后面的所有数据
strcpy(T[i+1].name,T[i].name);
T[i+1].num=T[i].num;
strcpy(T[i+1].sex,T[i].sex);
T[i+1].tecscore=T[i].tecscore;
strcpy(T[i+1].position,T[i].position);
for(intj=0;j<3;j++){
strcpy(T[i+1].course[j].courseName,T[i].course[j].courseName);
T[i+1].course[j].semester=T[i].course[j].semester;
strcpy(T[i+1].course[j].type,T[i].course[j].type);
T[i+1].course[j].teceff=TB.course[j].teceff;
}//for
}//for
}//else
strcpy(T[flag].name,TB.name);
T[flag].num=TB.num;
strcpy(T[flag].sex,TB.sex);
T[flag].tecscore=TB.tecscore;
strcpy(T[flag].position,TB.position);//插入记录
for(intj=0;j<3;j++){
strcpy(T[flag].course[j].courseName,TB.course[j].courseName);
T[flag].course[j].semester=TB.course[j].semester;
strcpy(T[flag].course[j].type,TB.course[j].type);
T[flag].course[j].teceff=TB.course[j].teceff;
}//for
TeacherNum++;//教师记录+1
printf("->插入后的结果如下:
\n");
PrintInfor(T);
}//InsertInfor
三、程序源代码(包括注释)
//-------------------------引入头文件----------------------------
#include//使用了system()和exit()函数
#include//使用了printf()、scanf()以及文件读写函数
#include//使用了strcmp()、strcpy()等字符串处理函数
//---------------------------宏定义------------------------------
#defineMAXTEACHERNUM300//一个学院最大教师数,上限可调
//-----------------------自定义数据类型--------------------------
//------------教师和课程的定义--------------------
typedefstructCourse{//课程的定义与描述
charcourseName[40];//课程名称
intsemester;//开课学期
chartype[8];//课程性质
charteceff;//教学效果
}Course;
typedefstructTeacher{//教师的定义与描述
charname[8];//姓名
intnum;//职工号
charsex[2];//性别
inttecscore;//教学效果综合评分
charposition[8];//职称
Coursecourse[3];//3门主讲课程
}Teacher;
//------------------------部分全局变量--------------------------
intTeacherNum;//教师记录条数
//-------------------------基本操作及其子函数----------------------------
//---------------------1.输入教师信息------------------------
voidInputClassInfor(Course&c){//输入教学信息
printf("请输入课程的课程名:
");
scanf("%s",c.courseName);
getchar();//吃掉回车符
printf("请输入课程的学期(输入数字1-8中一个):
");
scanf("%d",&c.semester);
printf("请输入课程的学科性质(输入非学位课或学位课):
");
scanf("%s",c.type);
getchar();//吃掉回车符
fflush(stdin);
printf("请输入课程的教学效果(输入A、B、C、D中任一个):
");
c.teceff=getchar();
getchar();//吃掉回车符
}//InputClassInfor
voidInputInfor(TeacherT[MAXTEACHERNUM]){//输入教师信息
inti=0,flag=1;
TeacherNum=0;
charch,ch1;
while(flag){//不断输入教师信息,直到输入"n"
printf("->请输入教师的职工号(3位数字):
");
scanf("%d",&T[i].num);
printf("->请输入教师的姓名:
");
scanf("%s",T[i].name);
printf("->请输入教师的性别(男或女):
");
scanf("%s",T[i].sex);
printf("->请输入教师的职称:
");
scanf("%s",T[i].position);
for(intj=0;j<3;j++){
printf("->请输入该教师第%d门主讲课程的信息:
\n",j+1);
InputClassInfor(T[i].course[j]);
printf("\n");
}//for
printf("->请输入教师的教学效果综合评分(0-100):
");
scanf("%d",&T[i].tecscore);
TeacherNum++;//教师记录+1
i++;//计数器自增
fflush(stdin);
printf("您还想继续输入吗?
(Y(y)/N(n))");
ch=getchar();
getchar();//吃掉回车符
if(ch=='N'||ch=='n')//确认是否退出
flag=0;//修改标志,结束循环
}//while
}//InputTecInfor
//------------------------2.输出教师信息-----------------------
voidPrintInfor(TeacherT[]){//输出全部教师信息(以卡片形式)
printf("--------------------------------------------------------------------------------");
printf("|所有教师记录|");
printf("-------------------------------------------------------------------------------+");
printf("|全院现有在职教师%d名,全部信息如下|",TeacherNum);
printf("-------------------------------------------------------------------------------+\n\n");
for(inti=0;iprintf("+------+---------------+----+------------+----+------+------+------------------+");
printf("|职工号|%3d|姓名|%8s|性别|%s|职称|%8s|",T[i].num,T[i].name,T[i].sex,T[i].position);
printf("+------+---+-----------+----+------------+----+------+------+------------------+");
printf("|主讲课程1|课程名|%-40s|",T[i].course[0].courseName);
printf("+----------+-----------+----------+------------------+------------+------------+");
printf("|学期|%d|课程性质|%8s