📄 administrator.c
字号:
}
}
else
{
printf("\t\t\t***********没有教师信息的记录!***********\n");
}
}
/////////////////////////////管理员模块之修改功能////////////////////////////
/*修改学生信息*/
void admAlterStudent()
{
FILE *fp,*fp1;
STUDENT stud,nstud;
DEGREE stud1,nstud1;
char num[15];
if((fp=fopen("Students.dat","rb+"))==NULL)
{
printf("\n\t\t不能打开Students.dat文件!\n");
exit(0);
}
if((fp1=fopen("Degrees.dat","rb+"))==NULL)
{
printf("\n\t\t--不能打开Degrees.dat文件--\n");
exit(0);
}
fseek(fp,0,2);
fseek(fp1,0,2);
if (ftell(fp)>0&&(ftell(fp1)>0))
{
rewind(fp);
rewind(fp1);
printf("\n\t\t请输入要修改学生的学号:");
scanf("%s",num);
rewind(fp);
rewind(fp1);
while (1)
{
fread(&stud,sizeof(STUDENT),1,fp);
if (feof(fp) || strcmp(stud.stuNum,num)==0) break;
}
while (1)
{
fread(&stud1,sizeof(DEGREE),1,fp1);
if (feof(fp1) || strcmp(stud.stuNum,num)==0) break;
}
if (!feof(fp))
{
if(!feof(fp1))
{
printf("\n\t\t$$$$$$$$$$$$$$$学生信息管理$$$$$$$$$$$$$$$$$\n");
printf("\n");
printf("\t 学号 姓名 性别 年龄 课程 班级 平时成绩 考试成绩\n");
printf("\t%7s%7s%4s%7d%5s%10s%7d%7d\n",stud.stuNum,stud.stuName,stud.stuSex,stud.stuAge,stud.courseNum,stud.classNum,stud1.commonDegr,stud1.examDegr);
printf("\n\t\t请输入修改过的学生姓名: ");
scanf("%s",nstud.stuName);
printf("\n\t\t请输入修改过的性别: ");
scanf("%s",nstud.stuSex);
printf("\n\t\t请输入修改过的学生年龄: ");
scanf("%d",&nstud.stuAge);
printf("\n\t\t请输入修改过的课程: ");
scanf("%s",nstud.courseNum);
printf("\n\t\t请输入修改过的学生班级: ");
scanf("%s",nstud.classNum);
printf("\n\t\t请输入修改过的平时成绩: ");
scanf("%d",&nstud1.commonDegr);
printf("\n\t\t请输入修改过的考试成绩: ");
scanf("%d",&nstud1.examDegr);
}
else
{
printf("\n\t\t-------------或无此人成绩-------------\n");
printf("\n\t\t------------无法正常显示,请检查数据-----------\n");
fclose(fp);
fclose(fp1);
admAlterStudent();
}
}
else
{
printf("\n\t*-------------查无此人!-------------*\n");
printf("\n\t*------------无法正常显示,请检查数据-----------*\n");
fclose(fp);
fclose(fp1);
admAlterStudent();
}
strcpy(nstud.stuNum,stud.stuNum);
fseek(fp,-(long)sizeof(STUDENT),SEEK_CUR); /*指向修改记录开头*/
fwrite(&nstud,sizeof(STUDENT),1,fp);
fseek(fp1,-(long)sizeof(DEGREE),SEEK_CUR); /*指向修改记录开头*/
fwrite(&nstud1,sizeof(DEGREE),1,fp1);
fclose(fp);
fclose(fp1);
}
else
{
printf("\n\t*------------错误!!!-------------*\n");
printf("\n\t*------------无学生记录!或无成绩记录---------*\n");
printf("\n \t*请检查数据!!*\n");
fclose(fp);
fclose(fp1);
}
}
/*修改教师信息*/
void admAlterTeacher()
{
TEACHER *Tea,*nTea;
FILE *fp;
int i;
char num[15];
Tea=malloc(sizeof(TEACHER));
nTea=malloc(sizeof(TEACHER));
if ((fp=fopen("Teachers.dat","r+"))==NULL)
{
printf("\t\t错误!!!\n");
printf("\t\t--不能打开Teachers.dat文件--*\n");
return;
}
fseek(fp,0,2);
if (ftell(fp)>0)
{
rewind(fp);
printf("\n\t\t请输入要修改教师的工号:");
scanf("%d",&num);
rewind(fp);
while (1)
{
fread(Tea,sizeof(TEACHER),1,fp);
if (feof(fp) || Tea->teacherNum==num) break;
i++;
}
if (!feof(fp))
{
printf("\n\t*$$$$$$$$$$$$$$$学生信息管理$$$$$$$$$$$$$$$$$*\n");
printf("\n");
printf("\t工号\t教师名\t性别*\n");
printf("\t%d\t%s\t%s\n",Tea->teacherNum,Tea->teacherName,Tea->teacherSex);
printf("\n\t请输入修改过的教师名: ");
scanf("%s",nTea->teacherName);
printf("\n\t请输入修改过的教师性别: ");
scanf("%d",&nTea->teacherSex);
}
else
{
printf("\n\t\t错误!!!\n");
printf("\n\t\t-------------查无此人!-------------\n");
printf("\n\t\t请检查数据\n");
fclose(fp);
free(Tea);
free(nTea);
admAlterTeacher();
}
strcpy(nTea->teacherNum,Tea->teacherNum);
fseek(fp,-(long)sizeof(TEACHER),SEEK_CUR); /*指向修改记录开头*/
fwrite(nTea,sizeof(TEACHER),1,fp); /*用新记录覆盖当前记录*/
free(Tea);
free(nTea);
fclose(fp);
}
else
{
printf("\n\t\t------------无教师记录!-------------*\n");
fclose(fp);
free(Tea);
free(nTea);
}
}
///////////////////////////管理员模块之输出报表功能//////////////////////////
/*输出班级报表*/
void admOutputClass()
{
int n,i;
STUDENT size[100];
FILE *fp;
if((fp=fopen("Students.dat","rb"))==NULL)
{
printf("\n\t\t不能打开文件\n");
exit(0);
}
fseek(fp,0,2);
if (ftell(fp)>0)
{
rewind(fp);
printf(" \t\t ╭─────────────────╮\n");
printf(" \t\t ∣ 班级报表 ∣\n");
printf(" \t\t ╰─────────────────╯\n");
rewind(fp);
for(n=0;!feof(fp) && fread(&size[n],sizeof(STUDENT),1,fp);n++);
printf("\t\t班级编号有:\n");
for(i=0;i<n;i++)
{
printf("%s\t\t",size[i].classNum);
}
printf("\n");
fclose(fp);
}
else
{
printf("\n\t\t没有任何记录!\n\n");
system("PAUSE");
}
fclose(fp);
return;
}
/*输出成绩报表*/
void admOutputScore()
{
int n,i,j,m,k;
int MAX=1000;
int t;
char ch[5];
int array[1000];
DEGREE score[100];
FILE *fp;
if((fp=fopen("Degrees.dat","rb"))==NULL)
{
printf("没有任何记录\n");
exit(0);
}
fseek(fp,0,2);
if (ftell(fp)>0)
{
rewind(fp);
for(n=0;!feof(fp) && fread(&score[n],sizeof(DEGREE),1,fp);n++);
printf(" \t\t ╭─────────────────╮\n");
printf(" \t\t ∣ 成绩报表 ∣\n");
printf(" \t\t ╰─────────────────╯\n");
printf("请输入您要查询的课程编号:");
scanf("\n%s",ch);
for(i=0;i<n;i++)
{
if(strcmp(score[i].courseNum,ch)==0)
{
k=i;
break;
}
}
if(!feof(fp))
{
for(i=0,j=0,m=0;i<n;i++)
{
if(strcmp(score[i].courseNum,ch)==0)
{
array[j]=score[i].examDegr+score[i].commonDegr;
j++;
m=m+1;
}
}
}
for(i=0;i<m;i++)
{
if(array[i]<array[i+1])
{
t=array[i];
array[i]=array[i+1];
array[i+1]=t;
}
}
if(!feof(fp)) /* 60以下的学生成绩*/
{
for(i=0;i<n;i++)
{
if(array[i]<60)
m=i;
break;
}
}
for(i=0;i<m;i++)
{
printf("%d",array[i]);
}
fclose(fp);
system("PAUSE");
}
else
{
printf("\n\t\t查无此学生记录!!");
system("PAUSE");
}
}
/*输出课程报表*/
void admOutputCourse()
{
int n,i;
COURSE source[100];
FILE *fp;
if((fp=fopen("Courses.dat","rb"))==NULL)
{
printf("\n\t\t不能打开文件\n");
return;
}
fseek(fp,0,2);
if (ftell(fp)>0)
{
rewind(fp);
printf(" \t\t ╭─────────────────╮\n");
printf(" \t\t ∣ 课程报表 ∣\n");
printf(" \t\t ╰─────────────────╯\n");
rewind(fp);
for(n=0;!feof(fp) && fread(&source[n],sizeof(COURSE),1,fp);n++);
printf("课程编号 课程名称 所选人数 授课老师 上课地点 课程学分\n");
for(i=0;i<n;i++)
{
printf("%s %s %d %s %d %d",source[i].courseNum,source[i].courseName,source[i].selectCount,source[i].Teacher,source[i].Classrom,source[i].Credit);
}
fclose(fp);
system("PAUSE");
}
else
{
printf("\n\t\t没有任何记录!!");
system("PAUSE");
}
}
////////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -