📄 teachers.c
字号:
/*////////////////////////////////////////////////////
Author:
Tiem: 2007-10-09
Files Name: Teachers.c
Functions: 主要是教师使用系统功能函数的实现部分
/////////////////////////////////////////////////////*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include "Structs.h"
#include "Functions.h"
/*修改密码*/
void teacherAlterSecret()
{
USER use1,use2;
FILE *fp;
int i;
char name[15],password1[15];
if ((fp=fopen("teacherUsers.dat","ab+"))==NULL)
{
printf("\n\t\t不能打开文件!\n");
return;
}
fseek(fp,0,2);
if (ftell(fp)>0)
{
rewind(fp);
printf("\n\t\t请输入教师用户名: ");
scanf("%s",name);
rewind(fp);
while (1)
{
fread(&use1,sizeof(USER),1,fp);
if (feof(fp) || strcmp(use1.userName,name)==0)
break;
if (feof(fp) || strcmp(use1.Password,password1)==0)
break;
i++;
}
if (!feof(fp))
{
printf("\n\t\t**************用户信息******************\n");
printf("\t\t请输入用户名:\t");
printf("\t%s",use1.userName);
printf("\n\n\t\t请输入旧密码:\t");
printf("\t%s",use1.Password);
printf("\n\n\t\t请输入新密码: "); //获得学生的新密码
scanf("%s",use2.Password);
}
else
{
printf("\n\t\t查无此人!\n");
system("pause");
//stuAlterSecret();
}
strcpy(use2.userName,use1.userName);
fseek(fp,-(long)sizeof(USER),SEEK_CUR); //指向修改记录开头
fwrite(&use2,sizeof(USER),1,fp); //用新记录覆盖当前记录
printf("\n\t\t修改密码成功!");
system("pause");
fclose(fp);
}
else
{
printf("\n\t\t无用户记录!\n");
system("pause");
fclose(fp);
}
}
/*添加学生成绩*/
void teacherAddScore()
{
FILE *fp,*fp1;
DEGREE degree[100];
STUDENT stu[100];
int i=0;
char option,num[9];
if((fp=fopen("Students.dat","rb+"))==NULL)
{
printf("不能打开Students.dat文件!");
return;
}
if((fp1=fopen("Degrees.dat","ab+"))==NULL)
{
printf("\n\t不能打开Degrees.dat文件!\n");
return;
}
printf("\n\t\t请输入学生的学号:");
scanf("%s",&num);
rewind(fp);
while((!feof(fp))&&(strcmp(stu[i].stuNum,num)!=0))
{
fread(&stu,sizeof(STUDENT),1,fp);
if(strcmp(stu[i].stuNum,num)==0)
{
rewind(fp1);
printf("\n\t\t请输入该学生的课程编号:");
scanf("%s",degree[i].courseNum);
printf("\n\t\t请输入该学生的考试成绩:");
scanf("%d",°ree[i].examDegr);
printf("\n\t\t请输入该学生的平时成绩:");
scanf("%d",°ree[i].commonDegr);
strcpy(degree[i].stuNum,stu[i].stuNum);
fwrite(°ree[i],sizeof(DEGREE),1,fp1);
printf("\n\t\t你已经成功录取了该学生的成绩!");
fclose(fp);
printf("\n\n\t\t是否继续继续录入学生成绩,继续请按Y或y,否按N或n:");
scanf("%s",&option);
switch(option)
{
case 'Y':
case 'y':
teacherAddScore();
break;
case 'N':
case 'n':
break;
default:
printf("\n\t\t无效的输入,请重新输入!");
}
}
else
{
printf("\n\t\t此学生不存在,不能添加学生成绩!");
system("pause");
return;
}
}
}
/*修改学生成绩*/
void teacherAlterScore()
{
int count;
char *num="000";
FILE *fp;
DEGREE degree,new_degree,*p,*new_p;
p=°ree;
new_p=&new_degree;
if((fp=fopen("Degrees.dat","rb+"))==NULL)
{
printf("\n\t\t不能打开Degrees.dat文件!\n");
exit(0);
}
fseek(fp,0,2);
if(ftell(fp)>0)
{
rewind(fp);
printf("\nt\t请输入要修改学生的学号:");
scanf("%s",num);
rewind(fp);
while(1)
{
fread(p,sizeof(DEGREE),1,fp);
if(feof(fp)||strcmp(p->stuNum,num)==0)
break;
count++;
}
if(!feof(fp))
{
printf("\t\t$$$$$$$$$$$$$$$学生成绩管理$$$$$$$$$$$$$$$\n");
printf("\t\t\t课程编号\t平时成绩\t考试成绩\n");
printf("\t\t\t%s\t%d\t%d\n",p->courseNum,p->commonDegr,p->examDegr);
printf("\t\t------------------------------------------\n");
printf("\t\t********请输入要修改的学生信息!********\n");
strcpy(new_p->stuNum,num);
strcpy(new_p->courseNum,p->courseNum);
printf("\t\t修改过的学生平时成绩:");
scanf("%d",&new_p->commonDegr);
printf("\n\t\t修改过的学生考试成绩:");
scanf("%d",&new_p->examDegr);
}
else
{
printf("\t\t********没有这位同学,请检查输入!********\n");
}
fseek(fp,-(long)sizeof(DEGREE),1); /*指向修改记录开头*/
fwrite(new_p,sizeof(DEGREE),1,fp); /*新纪录覆盖原有记录*/
}
else
{
printf("\n\t\t********没有学生记录!********\n");
}
fclose(fp);
}
/*查询学生信息*/
void teacherSearchInfor()
{
char num[9];
FILE *fp;
STUDENT stu,*p;
p=&stu;
if((fp=fopen("Students.dat","rb+"))==NULL)
{
printf("\n\t\t不能打开Students.dat文件!\n");
exit(0);
}
fseek(fp,0,2);
if(ftell(fp)>0)
{
printf("\n\t\t请输入要查找学生的学号:");
scanf("%s",num);
rewind(fp);
while(1)
{
fread(p,sizeof(STUDENT),1,fp);
if(feof(fp)||strcmp(p->stuNum,num)==0)
break;
}
if(!feof(fp))
{
printf("\t\t---------------------------------------------------------\n");
printf("\n\t\t学生姓名 学生学号 学生性别 学生年龄 课程编号 班级编号\n");
printf("\t\t%2s\t%10s\t%s\t%d\t%2s\t%5s\n",p->stuName,p->stuNum,p->stuSex,p->stuAge,p->courseNum,p->classNum);
printf("\t\t---------------------------------------------------------\n\n");
}
else
{
printf("\n\t\t****************查无此人!****************\n");
return;
}
}
else
{
printf("\t\t***************没有学生记录!***************\n");
return;
}
}
/*查询学生成绩*/
void teacherSearchScore()
{
char num[9];
FILE *fp;
DEGREE deg,*p;
p=°
if((fp=fopen("Degrees.dat","rb+"))==NULL)
{
printf("\n\t\t不能打开Degrees.dat文件!\n");
exit(0);
}
fseek(fp,0,2);
if(ftell(fp)>0)
{
printf("\n\t\t请输入要查找学生的学号:");
scanf("%s",num);
rewind(fp);
while(1)
{
fread(p,sizeof(DEGREE),1,fp);
if(feof(fp)||strcmp(p->stuNum,num)==0)
break;
}
if(!feof(fp))
{
printf("\n\t\t-------------------------------------\n\n");
printf("\t\t课程编号\t考试成绩\t平时成绩\n");
printf("\t\t%s\t\t%3d\t\t%3d\n",p->courseNum,p->examDegr,p->commonDegr);
printf("\t\t-------------------------------------\n\n");
}
else
{
printf("\n\t\t****************查无此人!****************\n");
return;
}
}
else
{
printf("\n\t\t***************没有学生记录!***************\n");
return;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -