📄 administrator.c
字号:
/*////////////////////////////////////////////////////
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 + -