⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 administrator.c

📁 学生选课系统
💻 C
📖 第 1 页 / 共 2 页
字号:
		}
	}
	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 + -