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

📄 administrator.c

📁 学生选课系统
💻 C
📖 第 1 页 / 共 2 页
字号:

/*////////////////////////////////////////////////////

Author:         
Tiem:           2007-10-09
Files Name:     Administer.c
Functions:      主要是教师使用系统功能函数的实现部分

/////////////////////////////////////////////////////*/

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include "Structs.h"
#include "Functions.h"

/////////////////////////////管理员模块之添加功能////////////////////////////

/*修改密码*/

void admAlterSecret()
{
	USER use1,use2;
	FILE *fp;
    int i=0;
	char name[15];

	if ((fp=fopen("admUsers.dat","rb+"))==NULL)
	{
		printf("\t\t不能建立admUsers.dat文件\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;
			i++;
		}
		if (!feof(fp))
		{
			printf("\n\t\t**************用户信息******************\n");
			printf("\t\t用户名 ");
			printf("\t%s",use1.userName);
			printf("\n\n\t\t密码  ");
			printf("\t\t%s",use1.Password);
			printf("\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");
		fclose(fp);
	}	
}


/*添加学生*/

void admAddStudent()
{
	char option;
	FILE *fp;
	STUDENT *p1,*p2;
	p1=malloc(sizeof(STUDENT));
    p2=malloc(sizeof(STUDENT));
	printf("\n\t\t请输入学生学号:");
	scanf("%s",p1->stuNum);

	printf("\n\t\t请输入学生姓名:");
	scanf("%s",p1->stuName);

	printf("\n\t\t请输入学生性别:");
	scanf("%s",p1->stuSex);

	printf("\n\t\t请输入学生年龄(0-100):");
	scanf("%d",&p1->stuAge);

    strcpy(p1->courseNum,"0000");

	printf("\n\t\t请输入学生所在班级:");
	scanf("%s",p1->classNum);
	printf("\n");

	if((p1->stuAge>0)&&(p2->stuAge<100))
	{
		if((fp=fopen("Students.dat","ab+"))==NULL)
		{
			printf("\n\t不能打开Student.dat文件!\n");
		    exit(0);
		}
		rewind(fp);
		while(!feof(fp))
		{
	        fread(p2,sizeof(STUDENT),1,fp);
			if(strcmp(p1->stuNum,p2->stuNum)==0)
			{	
				printf("\t\t-----已有此学号的学生!请重新输入!------\n");
				system("cls");
				fclose(fp);
				return;
			}
		}
	    fwrite(p1,sizeof(STUDENT),1,fp);
		fclose(fp);
		system("cls");
		printf("\tContinue?(y,Y/n,N):");
		scanf("%s",&option);
		switch(option)
		{
			case 'y':
			case 'Y':
				admAddStudent();
				break;
			case 'n':
			case 'N':
				break;
			default: 
				printf("error!\n");
		        break;
		}   
	
	}
	else
		printf("输入数据有误\n学生的年龄应在0-100之间!");

}

/*添加教师*/

void admAddTeacher()
{
	char option;
	FILE *fp;
	TEACHER *p1,*p2;
	p1=malloc(sizeof(TEACHER));
    p2=malloc(sizeof(TEACHER));
	printf("\n\t\t请输入教师工号(less than 9):");
	scanf("%s",p1->teacherNum);

	printf("\n\t\t请输入教师姓名(less than 15):");
	scanf("%s",p1->teacherName);

	printf("\n\t\t请输入教师性别:");
	scanf("%s",p1->teacherSex);
	printf("\n");

	if((p1->teacherNum!=NULL))
	{
		if((fp=fopen("Teachers.dat","ab+"))==NULL)
		{
			printf("不能打开Teachers.dat文件!\n");
		    exit(0);
		}
		rewind(fp);
		while(!feof(fp))
		{
	        fread(p2,sizeof(TEACHER),1,fp);
			if(strcmp(p1->teacherNum,p2->teacherNum)==0)
			{	
				printf("\t\t-----已有此学号的学生!请重新输入!------\n");
				fclose(fp);
				return;
			}
		}
	    fwrite(p1,sizeof(TEACHER),1,fp);
		fclose(fp);
		printf("\tContinue?(y,Y/n,N):");
		scanf("%s",&option);
		switch(option)
		{
			case 'y':
			case 'Y':
				admAddTeacher();
				break;
			case 'n':
			case 'N':
				break;
			default: 
				printf("\terror!\n");
		        break;
		}   
	
	}
	else
		printf("输入数据有误\n教师工号不能为空!");

}

/////////////////////////////管理员模块之删除功能////////////////////////////

/*删除学生*/

void admDelStudent()
{
	int i,j,count;
	char option,num[9];
	FILE *fp;
	STUDENT studentInfor[100],infor,*p;
	p=&infor;

	if((fp=fopen("Students.dat","ab+"))==NULL)
	{
		printf("\t不能打开Students.dat文件!\n");
		exit(0);
	}
	fseek(fp,0,2);
	if(ftell(fp)>0)
	{
	    rewind(fp);
		for(count=0;!feof(fp) && fread(&studentInfor[count],sizeof(STUDENT),1,fp);count++);
		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("\n\t\t$$$$$$$$$$$$$$$$$$$$$$$$学生信息管理$$$$$$$$$$$$$$$$$$$$$$\n\n");
			printf("\t\t学号\t姓名\t性别\t年龄\t课程编号\t班级编号\n");
			printf("\t\t%s\t%s\t%s\t%d\t%s\t\t%s\n",p->stuNum,p->stuName,p->stuSex,p->stuAge,p->courseNum,p->classNum);
			printf("\t\t----------------------------------------------------------\n");
			printf("\t\tSure to delete?y,Y/n,N:");
			scanf("%s",&option);
			switch(option)
			{
				case 'y':
				case 'Y':
					for(i=0;i<=count;i++)
					{
						if(strcmp(studentInfor[i].stuNum,num)==0)
						{ 
							
							for(j=i;j<count;j++)
							{
								studentInfor[j]=studentInfor[j+1];
							}				
							fp=fopen("Students.dat","wb+");
							for(i=0;i<count-1;i++)
							{
								fwrite(&studentInfor[i],sizeof(STUDENT),1,fp);
							}	
						}
					}
					fclose(fp);
					break;
				case 'n':
				case 'N':system("cls");
					break;
			}
		}
		else
		{
            printf("\n\t\t************查无此人!************\n");
		}
	}
	else
	{
		printf("\n\t\t***********没有学生信息的记录!***********\n");
	}

}

/*删除教师*/

void admDelTeacher()
{
    int i,j,count;
	char option,num[9];
	FILE *fp;
	TEACHER	teacherInfor[100],infor,*p;
	p=&infor;

	if((fp=fopen("Teachers.dat","ab+"))==NULL)
	{
		printf("\t不能打开Teachers.dat文件!\n");
		exit(0);
	}
	fseek(fp,0,2);
	if(ftell(fp)>0)
	{
	    rewind(fp);
		for(count=0;!feof(fp) && fread(&teacherInfor[count],sizeof(TEACHER),1,fp);count++);
		printf("\n\t\t请输入要删除老师的工号:");
		scanf("%s",num);
		rewind(fp);
		while(1)
		{
			fread(p,sizeof(TEACHER),1,fp);
			if(feof(fp)||strcmp(p->teacherNum,num)==0) break;
		}		
		if(!feof(fp))
		{
			printf("\n\t\t$$$$$$$$$$$$$$$$$$$$$$老师信息管理$$$$$$$$$$$$$$$$$$$$\n\n");
			printf("\t\t工号\t\t姓名\t\t性别\n");
			printf("\t\t%s\t\t%s\t\t%s\n",p->teacherNum,p->teacherName,p->teacherSex);
			printf("\t\t------------------------------------------------------\n");
			printf("\t\tSure to delete?y,Y/n,N:");
			scanf("%s",&option);
			switch(option)
			{
				case 'y':
				case 'Y':
					for(i=0;i<=count;i++)
					{
						if(strcmp(teacherInfor[i].teacherNum,num)==0)
						{ 
							
							for(j=i;j<count;j++)
							{
								teacherInfor[j]=teacherInfor[j+1];
							}				
							fp=fopen("Teachers.dat","wb+");
							for(i=0;i<count-1;i++)
							{
								fwrite(&teacherInfor[i],sizeof(TEACHER),1,fp);
							}	
						}
					}
					fclose(fp);
					break;
				case 'n':
				case 'N':
					break;
			}
		}
		else
		{
            printf("\n\t\t\t************查无此人!************\n");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -