|
|
|
|
@ -7,28 +7,33 @@ void in();
|
|
|
|
|
void search();
|
|
|
|
|
void ca();
|
|
|
|
|
void def();
|
|
|
|
|
void put();
|
|
|
|
|
void pu();
|
|
|
|
|
void caxu();
|
|
|
|
|
void si();
|
|
|
|
|
void ac();
|
|
|
|
|
void ar();
|
|
|
|
|
struct Student /*学生结构*/
|
|
|
|
|
{
|
|
|
|
|
char num[20]; //学号//
|
|
|
|
|
char name[5]; //姓名//
|
|
|
|
|
char Sex[1]; //性别//
|
|
|
|
|
char iGread[2]; //年龄//
|
|
|
|
|
char Address[15]; //籍贯//
|
|
|
|
|
char xi[10]; //系别//
|
|
|
|
|
char zhu[10]; //专业//
|
|
|
|
|
char num[13]; //学号//
|
|
|
|
|
char name[10]; //姓名//
|
|
|
|
|
char Sex[5]; //性别//
|
|
|
|
|
char iGread[4]; //年龄//
|
|
|
|
|
char Address[20]; //籍贯//
|
|
|
|
|
char xi[20]; //系别//
|
|
|
|
|
char zhu[20]; //专业//
|
|
|
|
|
char clas[5]; //班级//
|
|
|
|
|
char er[4]; //学籍变化//
|
|
|
|
|
}stu[1000]; //最多储存学生的数量//
|
|
|
|
|
char er[10]; //学籍变化//
|
|
|
|
|
}stu[10000];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//最多储存学生的数量//
|
|
|
|
|
int main(void) //定义主调函数//
|
|
|
|
|
{
|
|
|
|
|
int n=-1; //输入操作编号//
|
|
|
|
|
int n=-1;
|
|
|
|
|
while(n)
|
|
|
|
|
{
|
|
|
|
|
menu();
|
|
|
|
|
scanf("%d",&n);
|
|
|
|
|
scanf("%d",&n); //输入操作编号//
|
|
|
|
|
switch(n)
|
|
|
|
|
{
|
|
|
|
|
case 1:
|
|
|
|
|
@ -44,59 +49,105 @@ int main(void) //
|
|
|
|
|
def(); //删除学生信息函数//
|
|
|
|
|
break;
|
|
|
|
|
case 5:
|
|
|
|
|
put(); //输出学生数据表函数//
|
|
|
|
|
pu(); //按学号输出学生数据表函数//
|
|
|
|
|
break;
|
|
|
|
|
case 6:
|
|
|
|
|
caxu(); //查询学生学籍变化函数//
|
|
|
|
|
break;
|
|
|
|
|
case 7:
|
|
|
|
|
ac(); //按专业输出学生数据表//
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
system("cls");
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void menu() //自定义菜单函数//
|
|
|
|
|
{
|
|
|
|
|
printf("\n\n\n\n");
|
|
|
|
|
printf("\t\t|~~~~~~~~~~~~~学生成绩管理系统~~~~~~~~~~~~~|\n");
|
|
|
|
|
printf("\t\t|\t 0.退出 |\n");
|
|
|
|
|
printf("\t\t|\t 1.录入学生信息 |\n");
|
|
|
|
|
printf("\t\t|\t 2.修改学生信息 |\n");
|
|
|
|
|
printf("\t\t|\t 3.查找学生信息 |\n");
|
|
|
|
|
printf("\t\t|\t 4.删除学生信息 |\n");
|
|
|
|
|
printf("\t\t|\t 5.按学号、专业输出学生籍贯表 |\n");
|
|
|
|
|
printf("\t\t|\t 6.查询学生学籍变化 |\n");
|
|
|
|
|
printf("\n\n\t\t 请进行操作<0~6>");
|
|
|
|
|
printf("\t\t\t\t\t (学号由十一位数字组成)\n");
|
|
|
|
|
printf("\t\t\t\t┏———————学生成绩管理系统——————┓\n");
|
|
|
|
|
printf("\t\t\t\t┆\t 0.退出 ┆\n");
|
|
|
|
|
printf("\t\t\t\t┆\t 1.录入学生信息 ┆\n");
|
|
|
|
|
printf("\t\t\t\t┆\t 2.修改学生信息 ┆\n");
|
|
|
|
|
printf("\t\t\t\t┆\t 3.查找学生信息 ┆\n");
|
|
|
|
|
printf("\t\t\t\t┆\t 4.删除学生信息 ┆\n");
|
|
|
|
|
printf("\t\t\t\t┆\t 5.按学号输出学生信息表 ┆\n");
|
|
|
|
|
printf("\t\t\t\t┆\t 6.查询学生学籍变化 ┆\n");
|
|
|
|
|
printf("\t\t\t\t┆\t 7.按专业输出学生信息表 ┆\n");
|
|
|
|
|
printf("\t\t\t\t┗—————————————————————┛\n");
|
|
|
|
|
printf("\n\n\t\t\t\t\t 请进行操作<0~7>:");
|
|
|
|
|
}
|
|
|
|
|
void in()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void in() //录入学生信息//
|
|
|
|
|
{
|
|
|
|
|
FILE *fp;
|
|
|
|
|
int m=0;
|
|
|
|
|
int x,i,j,y;
|
|
|
|
|
int x,i,j,y,n,a;
|
|
|
|
|
system("cls");
|
|
|
|
|
printf("总共能储存1000个学生信息\n");
|
|
|
|
|
printf("\n\t\t\t\t ┏————————————————————┓\n");
|
|
|
|
|
printf("\t\t\t\t ┆ 总共能储存10000个学生信息 ┆\n");
|
|
|
|
|
fp=fopen("学生信息.txt","a+");
|
|
|
|
|
while(!feof(fp))
|
|
|
|
|
while(!feof(fp)) //记录已录入的信息条数//
|
|
|
|
|
{
|
|
|
|
|
if(fscanf(fp,"%s",&stu[m])==1)
|
|
|
|
|
m++;
|
|
|
|
|
if(fread(&stu[m],sizeof(Student),1,fp)==1)
|
|
|
|
|
{
|
|
|
|
|
fgetc(fp);
|
|
|
|
|
m++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
fclose(fp);
|
|
|
|
|
printf("现已经储存%d个学生信息。\n",m);
|
|
|
|
|
printf("此次需要录入信息的学生数量:");
|
|
|
|
|
printf("\t\t\t\t ┆ 现已经储存%d个学生信息 ┆\n",m);
|
|
|
|
|
printf("\t\t\t\t ┗————————————————————┛\n");
|
|
|
|
|
printf("\t\t\t\t 此次需要录入信息的学生数量:");
|
|
|
|
|
scanf("%d",&x);
|
|
|
|
|
n=10000-m;
|
|
|
|
|
if(x<=0||x>n) //判断该次是否为有效输入//
|
|
|
|
|
{
|
|
|
|
|
printf("\n\n\t\t\t\t\t\t┏┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┓\n");
|
|
|
|
|
printf("\t\t\t\t\t\t┆ 该数字无效 ┆\n");
|
|
|
|
|
printf("\t\t\t\t\t\t┗┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┛\n\n\n\n");
|
|
|
|
|
printf("——————————————————————————");
|
|
|
|
|
printf("按任意键返回菜单");
|
|
|
|
|
printf("——————————————————————————");
|
|
|
|
|
getch();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
fp=fopen("学生信息.txt","a+");
|
|
|
|
|
for(i=m;i<x+m;i++)
|
|
|
|
|
{ y=i;
|
|
|
|
|
printf("\n");
|
|
|
|
|
printf("\t学号:");
|
|
|
|
|
scanf("%s",&stu[i].num);
|
|
|
|
|
for(j=0;j<y;)
|
|
|
|
|
for(;;)
|
|
|
|
|
{ printf("\t\t\t\t 学号:");
|
|
|
|
|
scanf("%s",&stu[i].num);
|
|
|
|
|
a=strlen(stu[i].num);
|
|
|
|
|
if(a!=11) //判断输入的学号是否有效//
|
|
|
|
|
{
|
|
|
|
|
printf("\t\t\t\t 该学号为无效学号\n");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
for(j=0;j<y;) //判断该学号是否被占用//
|
|
|
|
|
{
|
|
|
|
|
if(strcmp(stu[i].num,stu[j].num)==0)
|
|
|
|
|
{
|
|
|
|
|
printf("\t这个学号已经储存\n");
|
|
|
|
|
printf("\t学号:");
|
|
|
|
|
scanf("%s",&stu[i].num);
|
|
|
|
|
printf("\t\t\t\t 这个学号已经储存\n");
|
|
|
|
|
for(;;)
|
|
|
|
|
{
|
|
|
|
|
printf("\t\t\t\t 学号:");
|
|
|
|
|
scanf("%s",&stu[i].num);
|
|
|
|
|
a=strlen(stu[i].num);
|
|
|
|
|
if(a!=11) //判断输入的学号是否有效//
|
|
|
|
|
{
|
|
|
|
|
printf("\t\t\t\t 该学号为无效学号\n");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
j=0;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
@ -104,195 +155,468 @@ void in()
|
|
|
|
|
j++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
printf("\t姓名:");
|
|
|
|
|
printf("\t\t\t\t 姓名:");
|
|
|
|
|
scanf("%s",&stu[i].name);
|
|
|
|
|
printf("\t性别:");
|
|
|
|
|
printf("\t\t\t\t 性别:");
|
|
|
|
|
scanf("%s",&stu[i].Sex);
|
|
|
|
|
printf("\t年龄:");
|
|
|
|
|
printf("\t\t\t\t 年龄:");
|
|
|
|
|
scanf("%s",&stu[i].iGread);
|
|
|
|
|
printf("\t籍贯:");
|
|
|
|
|
printf("\t\t\t\t 籍贯:");
|
|
|
|
|
scanf("%s",&stu[i].Address);
|
|
|
|
|
printf("\t系:");
|
|
|
|
|
printf("\t\t\t\t 系:");
|
|
|
|
|
scanf("%s",&stu[i].xi);
|
|
|
|
|
printf("\t专业:");
|
|
|
|
|
printf("\t\t\t\t 专业:");
|
|
|
|
|
scanf("%s",&stu[i].zhu);
|
|
|
|
|
printf("\t班级:");
|
|
|
|
|
printf("\t\t\t\t 班级:");
|
|
|
|
|
scanf("%s",&stu[i].clas);
|
|
|
|
|
printf("\t学籍变化:");
|
|
|
|
|
printf("\t\t\t\t 学籍变化:");
|
|
|
|
|
scanf("%s",&stu[i].er);
|
|
|
|
|
fprintf(fp,"%s\n",stu[i]);
|
|
|
|
|
fwrite(&stu[i],sizeof(Student),1,fp); //将信息写入文件中//
|
|
|
|
|
fprintf(fp,"\n"); //在文件中实现换行//
|
|
|
|
|
}
|
|
|
|
|
fclose(fp);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void si()
|
|
|
|
|
{
|
|
|
|
|
printf("\n");
|
|
|
|
|
printf(" | 学号————姓名————性别——年龄——籍贯——————系别——————专业——————班级—学籍变化 |\n");
|
|
|
|
|
printf(" ┏┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄");
|
|
|
|
|
printf("┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┓\n");
|
|
|
|
|
printf(" ├ 学号————姓名————性别——年龄——籍贯——————系别——————专业——————班级—学籍变化┄┤\n");
|
|
|
|
|
}
|
|
|
|
|
void ca()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void ca() //查询学生信息//
|
|
|
|
|
{
|
|
|
|
|
system("cls");
|
|
|
|
|
FILE *fp;
|
|
|
|
|
int i,m=0;
|
|
|
|
|
int i,m=0,a;
|
|
|
|
|
char x[20];
|
|
|
|
|
char ch[1];
|
|
|
|
|
fp=fopen("学生信息.txt","a+");
|
|
|
|
|
while(!feof(fp))
|
|
|
|
|
fp=fopen("学生信息.txt","r");
|
|
|
|
|
while(!feof(fp)) //记录已录入的信息条数//
|
|
|
|
|
{
|
|
|
|
|
if(fscanf(fp,"%s",&stu[m])==1)
|
|
|
|
|
m++;
|
|
|
|
|
if(fread(&stu[m],sizeof(Student),1,fp)==1)
|
|
|
|
|
{
|
|
|
|
|
fgetc(fp);
|
|
|
|
|
m++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
fclose(fp);
|
|
|
|
|
if(m==0)
|
|
|
|
|
{
|
|
|
|
|
printf("\n\n\t\t\t\t\t\t 没有录入学生信息\n\n\n");
|
|
|
|
|
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
|
|
|
|
|
printf("按任意键返回菜单");
|
|
|
|
|
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
|
|
|
|
|
getch();
|
|
|
|
|
ar();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
printf("输入要查找的学生的学号:");
|
|
|
|
|
scanf("%s",x);
|
|
|
|
|
printf("\n\n\t\t\t\t 输入要查找的学生的学号\n");
|
|
|
|
|
for(;;)
|
|
|
|
|
{
|
|
|
|
|
printf("\t\t\t\t 学号:");
|
|
|
|
|
scanf("%s",x);
|
|
|
|
|
a=strlen(x);
|
|
|
|
|
if(a!=11) //判断输入的学号是否有效//
|
|
|
|
|
{
|
|
|
|
|
printf("\t\t\t\t 该学号为无效学号\n");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
for(i=0;i<m;i++)
|
|
|
|
|
{
|
|
|
|
|
if(strcmp(x,stu[i].num)==0)
|
|
|
|
|
if(strcmp(x,stu[i].num)==0) //判断查询的学生是否已经录入//
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
si();
|
|
|
|
|
printf(" | %s",stu[i].num);
|
|
|
|
|
printf("%s",stu[i].name);
|
|
|
|
|
printf("%s",stu[i].Sex);
|
|
|
|
|
printf("%s",stu[i].iGread);
|
|
|
|
|
printf("%s",stu[i].Address);
|
|
|
|
|
printf("%s",stu[i].xi);
|
|
|
|
|
printf("%s",stu[i].zhu);
|
|
|
|
|
printf("%s",stu[i].clas);
|
|
|
|
|
printf("%s",stu[i].er);
|
|
|
|
|
printf(" ├ %-12s",stu[i].num);
|
|
|
|
|
printf("%-12s",stu[i].name);
|
|
|
|
|
printf("%-8s",stu[i].Sex);
|
|
|
|
|
printf("%-8s",stu[i].iGread);
|
|
|
|
|
printf("%-16s",stu[i].Address);
|
|
|
|
|
printf("%-16s",stu[i].xi);
|
|
|
|
|
printf("%-16s",stu[i].zhu);
|
|
|
|
|
printf("%-6s",stu[i].clas);
|
|
|
|
|
printf("%-9s┤\n",stu[i].er);
|
|
|
|
|
printf(" ┗┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄");
|
|
|
|
|
printf("┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┛\n");
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(i==m)
|
|
|
|
|
{
|
|
|
|
|
printf("\n\n\n\t\t\t\t\t\t 没有该学生的信息");
|
|
|
|
|
printf("\n\n\n\n\t\t\t\t\t ┏┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┓\n");
|
|
|
|
|
printf("\t\t\t\t\t ┆ 暂时没有该学号对应的学生 ┆\n");
|
|
|
|
|
printf("\t\t\t\t\t ┗┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┛");
|
|
|
|
|
}
|
|
|
|
|
printf("\n\n\n");
|
|
|
|
|
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
|
|
|
|
|
printf("——————————————————————————");
|
|
|
|
|
printf("按任意键返回菜单");
|
|
|
|
|
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
|
|
|
|
|
printf("——————————————————————————");
|
|
|
|
|
getch();
|
|
|
|
|
}
|
|
|
|
|
void search()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void search() //修改学生信息//
|
|
|
|
|
{
|
|
|
|
|
system("cls");
|
|
|
|
|
FILE *fp;
|
|
|
|
|
int i,m=0;
|
|
|
|
|
int i,m=0,a;
|
|
|
|
|
char x[20];
|
|
|
|
|
fp=fopen("学生信息.txt","a+");
|
|
|
|
|
while(!feof(fp))
|
|
|
|
|
while(!feof(fp)) //记录已录入的信息条数//
|
|
|
|
|
{
|
|
|
|
|
if(fscanf(fp,"%s",&stu[m])==1)
|
|
|
|
|
m++;
|
|
|
|
|
if(fread(&stu[m],sizeof(Student),1,fp)==1)
|
|
|
|
|
{
|
|
|
|
|
fgetc(fp);
|
|
|
|
|
m++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
fclose(fp);
|
|
|
|
|
if(m==0)
|
|
|
|
|
{
|
|
|
|
|
printf("\n\n\t\t\t\t\t\t 没有录入学生信息\n\n\n");
|
|
|
|
|
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
|
|
|
|
|
printf("按任意键返回菜单");
|
|
|
|
|
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
|
|
|
|
|
getch();
|
|
|
|
|
ar();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
printf("输入你想要修改信息的学生的学号:");
|
|
|
|
|
scanf("%s",x);
|
|
|
|
|
for(i=0;i<m;i++)
|
|
|
|
|
printf("\n\n\t\t\t\t ");
|
|
|
|
|
printf("输入你想要修改信息的学生的学号:\n");
|
|
|
|
|
for(;;)
|
|
|
|
|
{
|
|
|
|
|
printf("\t\t\t\t 学号:");
|
|
|
|
|
scanf("%s",x);
|
|
|
|
|
a=strlen(x);
|
|
|
|
|
if(a!=11) //判断输入的学号是否有效//
|
|
|
|
|
{
|
|
|
|
|
printf("\t\t\t\t 该学号为无效学号\n");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
for(i=0;i<m;i++)
|
|
|
|
|
{
|
|
|
|
|
if(strcmp(x,stu[i].num)==0)
|
|
|
|
|
printf("\n\t\t\t\t\t 发现该学生的信息!你可以进行修改了\n\n");
|
|
|
|
|
printf("\t\t\t\t\t 姓名:");
|
|
|
|
|
scanf("%s",stu[i].name);
|
|
|
|
|
printf("\t\t\t\t\t 性别:");
|
|
|
|
|
scanf("%s",stu[i].Sex);
|
|
|
|
|
printf("\t\t\t\t\t 年龄:");
|
|
|
|
|
scanf("%s",stu[i].iGread);
|
|
|
|
|
printf("\t\t\t\t\t 籍贯:");
|
|
|
|
|
scanf("%s",stu[i].Address);
|
|
|
|
|
printf("\t\t\t\t\t 系:");
|
|
|
|
|
scanf("%s",stu[i].xi);
|
|
|
|
|
printf("\t\t\t\t\t 专业:");
|
|
|
|
|
scanf("%s",stu[i].zhu);
|
|
|
|
|
printf("\t\t\t\t\t 班级:");
|
|
|
|
|
scanf("%s",stu[i].clas);
|
|
|
|
|
printf("\t\t\t\t\t 学籍变化:");
|
|
|
|
|
scanf("%s",stu[i].er);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
if(i<m)
|
|
|
|
|
{
|
|
|
|
|
printf("发现该学生的信息!你可以修改了\n");
|
|
|
|
|
printf("\t姓名:");
|
|
|
|
|
printf("%s",stu[i].name);
|
|
|
|
|
printf("\t性别:");
|
|
|
|
|
printf("%s",stu[i].Sex);
|
|
|
|
|
printf("\t年龄:");
|
|
|
|
|
printf("%s",stu[i].iGread);
|
|
|
|
|
printf("\t籍贯:");
|
|
|
|
|
printf("%s",stu[i].Address);
|
|
|
|
|
printf("\t系:");
|
|
|
|
|
printf("%s",stu[i].xi);
|
|
|
|
|
printf("\t专业:");
|
|
|
|
|
printf("%s",stu[i].zhu);
|
|
|
|
|
printf("\t班级:");
|
|
|
|
|
printf("%s",stu[i].clas);
|
|
|
|
|
printf("\t学籍变化:");
|
|
|
|
|
printf("%s",stu[i].er);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
if(i=m)
|
|
|
|
|
{
|
|
|
|
|
printf("\n\n\t\t\t\t\t\t 没有发现该学生\n\n\n");
|
|
|
|
|
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
|
|
|
|
|
printf("按任意键返回菜单");
|
|
|
|
|
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
|
|
|
|
|
printf("\n\n\n\n\t\t\t\t\t ┏┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┓\n");
|
|
|
|
|
printf("\t\t\t\t\t ┆ 暂时没有该学号对应的学生 ┆\n");
|
|
|
|
|
printf("\t\t\t\t\t ┗┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┛");
|
|
|
|
|
printf("——————————————————————————");
|
|
|
|
|
printf("按任意键返回菜单");
|
|
|
|
|
printf("——————————————————————————");
|
|
|
|
|
getch();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
fp=fopen("学生信息.txt","w+");
|
|
|
|
|
for(i=0;i<m;i++)
|
|
|
|
|
{
|
|
|
|
|
fprintf(fp,"%s\n",stu[i]);
|
|
|
|
|
fwrite(&stu[i],sizeof(Student),1,fp);
|
|
|
|
|
fprintf(fp,"\n");
|
|
|
|
|
}
|
|
|
|
|
fclose(fp);
|
|
|
|
|
printf("\n\n\n");
|
|
|
|
|
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
|
|
|
|
|
printf("——————————————————————————");
|
|
|
|
|
printf("按任意键返回菜单");
|
|
|
|
|
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
|
|
|
|
|
printf("——————————————————————————");
|
|
|
|
|
getch();
|
|
|
|
|
}
|
|
|
|
|
void def()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void def() /*删除学生信息*/
|
|
|
|
|
{
|
|
|
|
|
FILE *fp;
|
|
|
|
|
int i,m=0;
|
|
|
|
|
int i,j,m=0,a;
|
|
|
|
|
char x[20];
|
|
|
|
|
system("cls");
|
|
|
|
|
fp=fopen("学生信息.txt","a+");
|
|
|
|
|
while(!feof(fp))
|
|
|
|
|
fp=fopen("学生信息.txt","r");
|
|
|
|
|
while(!feof(fp)) //记录已录入的信息条数//
|
|
|
|
|
{
|
|
|
|
|
if(fscanf(fp,"%s",&stu[m])==1)
|
|
|
|
|
m++;
|
|
|
|
|
if(fread(&stu[m],sizeof(Student),1,fp)==1)
|
|
|
|
|
{
|
|
|
|
|
fgetc(fp);
|
|
|
|
|
m++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
fclose(fp);
|
|
|
|
|
if(m==0)
|
|
|
|
|
{
|
|
|
|
|
printf("\n\n\t\t\t\t\t\t 没有录入学生信息\n\n\n");
|
|
|
|
|
ar();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
printf("\n\t\t\t\t 请输入你想要删除学生的信息的学号:\n");
|
|
|
|
|
for(;;)
|
|
|
|
|
{
|
|
|
|
|
printf("\t\t\t\t 学号:");
|
|
|
|
|
scanf("%s",x);
|
|
|
|
|
a=strlen(x);
|
|
|
|
|
if(a!=11) //判断输入的学号是否有效//
|
|
|
|
|
{
|
|
|
|
|
printf("\t\t\t\t 该学号为无效学号\n");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
for(i=0;i<m;i++)
|
|
|
|
|
{
|
|
|
|
|
if(strcmp(x,stu[i].num)==0)
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
if(i<m)
|
|
|
|
|
{
|
|
|
|
|
printf("\t\t\t\t 发现该学生信息\n\n\n\n");
|
|
|
|
|
printf("\t\t\t\t ┏┄┄┄┄┄┄┄┄┄┄┄┄┄┄┓\n");
|
|
|
|
|
printf("\t\t\t\t ┆ 已删除 ┆\n");
|
|
|
|
|
printf("\t\t\t\t ┗┄┄┄┄┄┄┄┄┄┄┄┄┄┄┛\n");
|
|
|
|
|
if(i<m-1)
|
|
|
|
|
for(j=i;j<m-1;j++)
|
|
|
|
|
{
|
|
|
|
|
stu[j]=stu[j+1];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
printf("\n\n\t\t\t\t\t\t 没有该学生的信息\n\n\n");
|
|
|
|
|
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
|
|
|
|
|
printf("按任意键返回菜单");
|
|
|
|
|
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
|
|
|
|
|
getch();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
fp=fopen("学生信息.txt","w+");
|
|
|
|
|
for(i=0;i<m-1;i++)
|
|
|
|
|
{
|
|
|
|
|
fwrite(&stu[i],sizeof(Student),1,fp);
|
|
|
|
|
fprintf(fp,"\n");
|
|
|
|
|
}
|
|
|
|
|
fclose(fp);
|
|
|
|
|
printf("\n\n\n");
|
|
|
|
|
printf("——————————————————————————");
|
|
|
|
|
printf("按任意键返回菜单");
|
|
|
|
|
printf("——————————————————————————");
|
|
|
|
|
getch();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void pu() //按学号输出学生信息//
|
|
|
|
|
{
|
|
|
|
|
FILE *fp;
|
|
|
|
|
int i,j,m=0;
|
|
|
|
|
struct Student x;
|
|
|
|
|
system("cls");
|
|
|
|
|
fp=fopen("学生信息.txt","r");
|
|
|
|
|
while(!feof(fp)) //记录已录入的信息条数//
|
|
|
|
|
{
|
|
|
|
|
if(fread(&stu[m],sizeof(Student),1,fp)==1)
|
|
|
|
|
{
|
|
|
|
|
fgetc(fp);
|
|
|
|
|
m++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
fclose(fp);
|
|
|
|
|
if(m==0)
|
|
|
|
|
{
|
|
|
|
|
ar();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
printf("请输入你想要删除学生的信息的学号:");
|
|
|
|
|
scanf("%s",x);
|
|
|
|
|
for(i=0;i<m;i++)
|
|
|
|
|
{
|
|
|
|
|
if(strcmp(x,stu[i].num)==0)
|
|
|
|
|
break;
|
|
|
|
|
for(j=i+1;j<m;j++)
|
|
|
|
|
{
|
|
|
|
|
if(strcmp(stu[i].num,stu[j].num)>0)
|
|
|
|
|
{
|
|
|
|
|
x=stu[j];
|
|
|
|
|
stu[j]=stu[i];
|
|
|
|
|
stu[i]=x;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(i<m);
|
|
|
|
|
si();
|
|
|
|
|
for(i=0;i<m;i++)
|
|
|
|
|
{
|
|
|
|
|
printf("发现该学生");
|
|
|
|
|
printf("正在删除请稍后");
|
|
|
|
|
printf(" ├ %-12s",stu[i].num);
|
|
|
|
|
printf("%-12s",stu[i].name);
|
|
|
|
|
printf("%-8s",stu[i].Sex);
|
|
|
|
|
printf("%-8s",stu[i].iGread);
|
|
|
|
|
printf("%-16s",stu[i].Address);
|
|
|
|
|
printf("%-16s",stu[i].xi);
|
|
|
|
|
printf("%-16s",stu[i].zhu);
|
|
|
|
|
printf("%-6s",stu[i].clas);
|
|
|
|
|
printf("%-9s┤\n",stu[i].er);
|
|
|
|
|
}
|
|
|
|
|
printf(" ┗┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄");
|
|
|
|
|
printf("┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┛\n");
|
|
|
|
|
printf("\n\n\n\t\t\t\t\t\t ┏┄┄┄┄┄┄┄┄┄┄┄┓\n");
|
|
|
|
|
printf("\t\t\t\t\t\t ┆ 输出完毕 ┆\n");
|
|
|
|
|
printf("\t\t\t\t\t\t ┗┄┄┄┄┄┄┄┄┄┄┄┛\n\n\n");
|
|
|
|
|
printf("——————————————————————————");
|
|
|
|
|
printf("按任意键返回菜单");
|
|
|
|
|
printf("——————————————————————————");
|
|
|
|
|
getch();
|
|
|
|
|
}
|
|
|
|
|
void put()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void caxu() //查询学生的学籍状态//
|
|
|
|
|
{
|
|
|
|
|
FILE *fp;
|
|
|
|
|
int i,j,m=0,a;
|
|
|
|
|
char x[12];
|
|
|
|
|
system("cls");
|
|
|
|
|
fp=fopen("学生信息.txt","r");
|
|
|
|
|
while(!feof(fp)) //记录已录入的信息条数//
|
|
|
|
|
{
|
|
|
|
|
if(fread(&stu[m],sizeof(Student),1,fp)==1)
|
|
|
|
|
{
|
|
|
|
|
fgetc(fp);
|
|
|
|
|
m++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
fclose(fp);
|
|
|
|
|
if(m==0)
|
|
|
|
|
{
|
|
|
|
|
ar();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
printf("\t\t\t\t 请输入你想要查询学生的学号\n");
|
|
|
|
|
for(;;)
|
|
|
|
|
{
|
|
|
|
|
printf("\n\t\t\t\t 学号:");
|
|
|
|
|
scanf("%s",x);
|
|
|
|
|
a=strlen(x);
|
|
|
|
|
if(a!=11) //判断输入的学号是否有效//
|
|
|
|
|
{
|
|
|
|
|
printf("\t\t\t\t 该学号为无效学号\n");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
for(i=0;i<m;i++)
|
|
|
|
|
{
|
|
|
|
|
if(strcmp(x,stu[i].num)==0)
|
|
|
|
|
{
|
|
|
|
|
printf("\n\t\t\t\t 学籍状态:");
|
|
|
|
|
printf("%s",stu[i].er);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(i==m)
|
|
|
|
|
{
|
|
|
|
|
printf("\n\n\n\t\t\t\t\t\t 没有该学生的信息");
|
|
|
|
|
}
|
|
|
|
|
printf("\n\n\n");
|
|
|
|
|
printf("——————————————————————————");
|
|
|
|
|
printf("按任意键返回菜单");
|
|
|
|
|
printf("——————————————————————————");
|
|
|
|
|
getch();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
void caxu()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void ac() //按专业输出学生信息//
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
FILE *fp;
|
|
|
|
|
int i,j,n=0,m=0;
|
|
|
|
|
char x[20];
|
|
|
|
|
struct Student y;
|
|
|
|
|
system("cls");
|
|
|
|
|
fp=fopen("学生信息.txt","r");
|
|
|
|
|
while(!feof(fp)) //记录已录入的信息条数//
|
|
|
|
|
{
|
|
|
|
|
if(fread(&stu[m],sizeof(Student),1,fp)==1)
|
|
|
|
|
{
|
|
|
|
|
fgetc(fp);
|
|
|
|
|
m++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
fclose(fp);
|
|
|
|
|
if(m==0)
|
|
|
|
|
{
|
|
|
|
|
ar();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
printf("\t\t\t\t 请输入你想要查询的专业:");
|
|
|
|
|
scanf("%s",x);
|
|
|
|
|
for(i=0;i<m;i++)
|
|
|
|
|
{
|
|
|
|
|
if(strcmp(x,stu[i].zhu)==0)
|
|
|
|
|
{
|
|
|
|
|
n++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(n==0)
|
|
|
|
|
{
|
|
|
|
|
printf("\n\n\n\t\t\t\t\t\t┏┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┓\n");
|
|
|
|
|
printf("\t\t\t\t\t\t┆ 该专业暂无学生信息 ┆\n");
|
|
|
|
|
printf("\t\t\t\t\t\t┗┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┛\n\n\n");
|
|
|
|
|
printf("——————————————————————————");
|
|
|
|
|
printf("按任意键返回菜单");
|
|
|
|
|
printf("——————————————————————————");
|
|
|
|
|
getch();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
for(i=0;i<n;i++)
|
|
|
|
|
{
|
|
|
|
|
for(j=i+1;j<n;j++)
|
|
|
|
|
{
|
|
|
|
|
if(strcmp(stu[i].num,stu[j].num)>0)
|
|
|
|
|
{
|
|
|
|
|
y=stu[j];
|
|
|
|
|
stu[j]=stu[i];
|
|
|
|
|
stu[i]=y;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
si();
|
|
|
|
|
for(i=0;i<n;i++)
|
|
|
|
|
{
|
|
|
|
|
printf(" ├ %-12s",stu[i].num);
|
|
|
|
|
printf("%-12s",stu[i].name);
|
|
|
|
|
printf("%-8s",stu[i].Sex);
|
|
|
|
|
printf("%-8s",stu[i].iGread);
|
|
|
|
|
printf("%-16s",stu[i].Address);
|
|
|
|
|
printf("%-16s",stu[i].xi);
|
|
|
|
|
printf("%-16s",stu[i].zhu);
|
|
|
|
|
printf("%-6s",stu[i].clas);
|
|
|
|
|
printf("%-9s┤\n",stu[i].er);
|
|
|
|
|
}
|
|
|
|
|
printf(" ┗┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄");
|
|
|
|
|
printf("┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┛\n");
|
|
|
|
|
printf("\n\n\n\t\t\t\t\t\t ┏┄┄┄┄┄┄┄┄┄┄┄┄┄┓\n");
|
|
|
|
|
printf("\t\t\t\t\t\t ┆ 输出完毕 ┆\n");
|
|
|
|
|
printf("\t\t\t\t\t\t ┗┄┄┄┄┄┄┄┄┄┄┄┄┄┛\n\n\n");
|
|
|
|
|
printf("——————————————————————————");
|
|
|
|
|
printf("按任意键返回菜单");
|
|
|
|
|
printf("——————————————————————————");
|
|
|
|
|
getch();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void ar()
|
|
|
|
|
{
|
|
|
|
|
printf("\n\n\t\t\t\t\t\t┏┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┓\n");
|
|
|
|
|
printf("\t\t\t\t\t\t┆ 没有录入学生信息 ┆\n");
|
|
|
|
|
printf("\t\t\t\t\t\t┗┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┛\n\n\n\n");
|
|
|
|
|
printf("——————————————————————————");
|
|
|
|
|
printf("按任意键返回菜单");
|
|
|
|
|
printf("——————————————————————————");
|
|
|
|
|
getch();
|
|
|
|
|
}
|
|
|
|
|
|