学生信息管理.docx

上传人:b****6 文档编号:7070796 上传时间:2023-01-16 格式:DOCX 页数:23 大小:21.01KB
下载 相关 举报
学生信息管理.docx_第1页
第1页 / 共23页
学生信息管理.docx_第2页
第2页 / 共23页
学生信息管理.docx_第3页
第3页 / 共23页
学生信息管理.docx_第4页
第4页 / 共23页
学生信息管理.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

学生信息管理.docx

《学生信息管理.docx》由会员分享,可在线阅读,更多相关《学生信息管理.docx(23页珍藏版)》请在冰豆网上搜索。

学生信息管理.docx

学生信息管理

#include"stdio.h"

#include"stdlib.h"

#include"malloc.h"

#include"string.h"

/*定义结构体*/

typedefstructGRecord/*基本信息*/

{

longintnum;

charname[10];

intage;

structGRecord*G;/*孩子*/

structMRecord*M;/*兄弟*/

}GRecord;

typedefstructMRecord/*成绩信息*/

{

inteng;

intmath;

}MRecord;

typedefstructClass/*班级信息*/

{

intCN;/*班号*/

structGRecord*fchild;/*孩子*/

structClass*nextkid;/*兄弟*/

}Class;

 

/*函数声明*/

voidWrite();/*1.登记班级全部学生基本情况*/

voidInsert(structClass*H);/*2.插入某个学生的基本情况*/

voidDelete(structClass*H);/*3.删除某个学生的基本情况*/

voidRevisegk(structClass*H);/*4.修改某个学生某门功课的成绩*/

voidRevisejb(structClass*H);/*5.修改某个学生的基本情况*/

voidSearchjb(structClass*H);/*6.浏览某个学生的基本信息*/

voidSearchqb(structClass*H);/*7.浏览每个学生的全部信息*/

voidMainmenu();/*主菜单界面*/

voidMenuxz();/*菜单选择*/

/*全局变量*/

GRecord*GR,*T;/*两个独立结点*/

Class*H;/*树的根结点*/

intZ,Z1,Z2;/*总计数器*/

 

voidWrite()/*1.登记班级全部学生基本情况*/

{

intflag=1,flag1=1,z=1,cn;charch;

system("cls");

Z1=Z2=0;

T=(structGRecord*)malloc(sizeof(GRecord));

T->M=(structMRecord*)malloc(sizeof(MRecord));

while(z)/*当z为0时,跳出登记学生信息模块*/

{

printf("请输入学生的班号:

");

scanf("%d",&cn);

printf("请按学号由小到大依次输入:

\n");

if(cn==1)

{H->CN=cn;/*输入班号*/

H->fchild=T;

while(flag==1)

{flag1=1;GR=(structGRecord*)malloc(sizeof(GRecord));

GR->M=(structMRecord*)malloc(sizeof(MRecord));T->G=GR;

printf("请输入学生的学号:

");scanf("%d",&GR->num);

printf("请输入学生的姓名:

");scanf("%s",GR->name);

printf("请输入学生的年龄:

");scanf("%d",&GR->age);

printf("请输入学生的外语课成绩:

");scanf("%d",&GR->M->eng);

printf("请输入学生的数学课成绩:

");scanf("%d",&GR->M->math);

Z1++;T=GR;printf("现已%d条学生信息\n",Z1);

printf("按@退出输入...");

ch=getch();

if(ch=='@')flag=0;

printf("\n");

}

T->G=NULL;z=0;break;}

elseif(cn==2)

{H->nextkid->CN=cn;/*输入班号*/

H->nextkid->fchild=T;

while(flag1==1)

{GR=(structGRecord*)malloc(sizeof(GRecord));

GR->M=(structMRecord*)malloc(sizeof(MRecord));T->G=GR;

printf("请输入学生的学号:

");scanf("%d",&GR->num);

printf("请输入学生的姓名:

");scanf("%s",GR->name);

printf("请输入学生的年龄:

");scanf("%d",&GR->age);

printf("请输入学生的外语课成绩:

");scanf("%d",&GR->M->eng);

printf("请输入学生的数学课成绩:

");scanf("%d",&GR->M->math);

Z2++;T=GR;printf("现已%d条学生信息\n",Z2);

printf("按@退出输入...");

ch=getch();

if(ch=='@')flag1=0;

printf("\n");

}

T->G=NULL;z=0;break;

}

else{printf("班号输入错误...\n");z=0;break;}

Z=Z1+Z2;

/*Z1为所录入的1班人数,Z2为所录入的2班人数*/

}

}

voidSearchqb(structClass*H)/*7.浏览每个学生的全部信息*/

{intcn,flag=1;charch;

structGRecord*p;

system("cls");

while(flag)

{printf("请输入学生所在的班级:

");

scanf("%d",&cn);

if(cn==1)

{if(H->fchild->G==NULL){printf("暂无学生信息...\n");break;}

printf("\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");

printf("\t┃%2d班学生信息┃\n",H->CN);

printf("\t┠────────┰─────┰───┰───┰───┨\n");

printf("\t┃学号┃姓名┃年龄┃外语┃数学┃\n");

for(p=H->fchild->G;p!

=NULL;p=p->G)

{

printf("\t┣━━━━━━━━╋━━━━━╋━━━╋━━━╋━----┫\n");

printf("\t┃%15d┃%10s┃%4d┃%4d┃%4d┃\n",p->num,p->name,p->age,p->M->eng,p->M->math);

}

printf("\t┣━━━━━━━━┻━━━━━┻━━━┻━━━┻━━━┫\n");

printf("\t┃共%3d个学生┃\n",Z1);

printf("\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");}

elseif(cn==2){if(H->nextkid->fchild->G==NULL){printf("暂无学生信息...\n");break;}

printf("\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");

printf("\t┃%2d班学生信息┃\n",H->nextkid->CN);

printf("\t┠────────┰─────┰───┰───┰───┨\n");

printf("\t┃学号┃姓名┃年龄┃外语┃数学\n");

for(p=H->nextkid->fchild->G;p!

=NULL;p=p->G)

{

printf("\t┣━━━━━━━━╋━━━━━╋━━━╋━━━╋━━━┫\n");

printf("\t┃%15d┃%10s┃%4d┃%4d┃%4d┃\n",p->num,p->name,p->age,p->M->eng,p->M->math);

}

printf("\t┣━━━━━━━━┻━━━━━┻━━━┻━━━┻━━━┫\n");

printf("\t┃共%3d个学生┃\n",Z2);

printf("\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");

}

else{printf("输入班级序号错误...\n");break;}

printf("按@退出输入...\n");

ch=getch();getchar();

if(ch=='@')flag=0;

elseflag=1;

}

}

 

voidInsert(structClass*H)/*2.插入某个学生的基本情况*/

{

intcn,flag;

structGRecord*p1,*p2,*R;

system("cls");

R=(structGRecord*)malloc(sizeof(GRecord));

R->M=(structMRecord*)malloc(sizeof(MRecord));

while(flag)

{

printf("请输入学生所在的班级:

");

scanf("%d",&cn);

if(cn==1)

{H->CN=cn;

printf("请输入学生的学号:

");scanf("%d",&R->num);

printf("请输入学生的姓名:

");scanf("%s",R->name);

printf("请输入学生的年龄:

");scanf("%d",&R->age);

printf("请输入学生的外语课成绩:

");scanf("%d",&R->M->eng);

printf("请输入学生的数学课成绩:

");scanf("%d",&R->M->math);

if(H->fchild->G==NULL){H->fchild->G=R;R->G=NULL;Z1++;printf("插入成功...按任意键返回...\n");getch();flag=0;break;}

for(p1=H->fchild;p1->G!

=NULL;p1=p1->G)

{p2=p1->G;

if(p1->num<=R->num&&p2->num>R->num)

{p1->G=R;R->G=p2;Z1++;printf("插入成功...按任意键返回...\n");getch();flag=0;break;}

}

if(p1->G==NULL){p1->G=R;R->G=NULL;Z1++;printf("插入成功...按任意键返回...\n");getch();}

flag=0;}

elseif(cn==2){H->nextkid->CN=cn;

printf("请输入学生的学号:

");scanf("%d",&R->num);

printf("请输入学生的姓名:

");scanf("%s",R->name);

printf("请输入学生的年龄:

");scanf("%d",&R->age);

printf("请输入学生的外语课成绩:

");scanf("%d",&R->M->eng);

printf("请输入学生的数学课成绩:

");scanf("%d",&R->M->math);

if(H->nextkid->fchild->G==NULL){H->nextkid->fchild->G=R;R->G=NULL;Z2++;printf("插入成功...按任意键返回...\n");getch();flag=0;break;}

for(p1=H->nextkid->fchild;p1->G!

=NULL;p1=p1->G)

{p2=p1->G;

if(p1->num<=R->num&&p2->num>R->num)

{p1->G=R;R->G=p2;Z2++;printf("插入成功...\n");getch();flag=0;break;}

}if(p1->G==NULL){p1->G=R;R->G=NULL;Z2++;printf("插入成功...按任意键返回...\n");getch();}

flag=0;}

else{printf("输入班级序号错误...\n");flag=1;break;}

}

}

voidDelete(structClass*H)/*3.删除某个学生的基本情况*/

{

intn,nu,cn,flag=1;charna[10],ch;

structGRecord*p1,*p2,*t1;

system("cls");

while(flag)

{

printf("请输入学生所在的班级:

");

scanf("%d",&cn);

switch(cn)

{case1:

if(H->fchild->G==NULL){printf("由于无学生记录,无法删除...\n");break;}

printf("\t\t1.按学号删除学生信息\n");

printf("\t\t2.按姓名删除学生信息\n");

printf("请选择需要的操作:

");

scanf("%d",&n);

if(n==1)

{t1=H->fchild;printf("请输入需要删除的学生的学号:

");scanf("%d",&nu);

p1=t1->G;p2=p1->G;

if(p1->num==nu){H->fchild->G=p2;Z1--;printf("删除成功...\n");flag=0;break;}

while(p1->num!

=nu&&p1->G!

=NULL)

{

p2=p1->G;p1=p1->G;p2=p2->G;

}if(p1->num!

=nu)printf("无该学生记录...\n");

if(p1->num==nu){p1->G=p2->G;Z1--;printf("删除成功...\n");}

free(p2);}

elseif(n==2){t1=H->fchild;printf("请输入需要删除的学生的姓名:

");scanf("%s",na);

p1=t1->G;p2=p1->G;

if(!

strcmp(p1->name,na)){H->fchild->G=p2;Z1--;printf("删除成功...\n");flag=0;break;}

while(strcmp(p1->name,na)&&p1->G!

=NULL)

{

p2=p1->G;p1=p1->G;p2=p2->G;

}if(strcmp(p1->name,na)!

=0)printf("无该学生记录...\n");

if(strcmp(p1->name,na)==0){p1->G=p2->G;Z1--;printf("删除成功...\n");}

free(p2);}

else{printf("输入序号错误...\n");flag=1;break;}

break;

case2:

if(H->nextkid->fchild->G==NULL){printf("由于无学生记录,无法删除...\n");flag=0;break;}

printf("\t\t1.按学号删除学生信息\n");

printf("\t\t2.按姓名删除学生信息\n");

printf("请选择需要的操作:

");

scanf("%d",&n);

if(n==1)

{t1=H->nextkid->fchild;printf("请输入需要删除的学生的学号:

");scanf("%d",&nu);

p1=t1->G;p2=p1->G;

if(p1->num==nu){H->nextkid->fchild->G=p2;Z1--;printf("删除成功...\n");flag=0;break;}

while(p1->num!

=nu&&p1->G!

=NULL)

{

p2=p1->G;p1=p1->G;p2=p2->G;

}if(p1->num!

=nu)printf("无该学生记录...\n");

if(p1->num==nu){p1->G=p2->G;Z2--;printf("删除成功...\n");}

free(p2);}

elseif(n==2){t1=H->nextkid->fchild;printf("请输入需要删除的学生的姓名:

");scanf("%s",na);

p1=t1->G;p2=p1->G;

if(!

strcmp(p1->name,na)){H->nextkid->fchild->G=p2;Z1--;printf("删除成功...\n");flag=0;break;}

while(strcmp(p1->name,na)!

=0&&p1->G!

=NULL)

{

p2=p1->G;p1=p1->G;p2=p2->G;

}if(strcmp(p1->name,na)!

=0)printf("无该学生记录...\n");

if(strcmp(p1->name,na)==0){p1->G=p2->G;Z2--;printf("删除成功...\n");}

free(p2);}

else{printf("输入序号错误...\n");flag=1;break;}

break;

default:

printf("输入序号错误...\n");flag=1;break;

}printf("按@退出输入...\n");

ch=getch();getchar();

if(ch=='@')flag=0;

elseflag=1;

}

}

voidRevisejb(structClass*H)/*5分别按照学号和姓名修改某个学生的基本情况*/

{

structGRecord*p1,*t1;

intn,n1,cn,nu,a,flag=1,flag1=1,flag2=1;charna[10];

while(flag)

{

system("cls");

printf("请输入学生所在的班级:

");

scanf("%d",&cn);

switch(cn)

{case1:

while(flag1){/*第一个班*/

if(H->fchild->G==NULL){printf("由于无学生记录,无法修改...\n按任意键返回...\n");getch();break;}//

printf("\t\t1.按学号修改学生信息\n");

printf("\t\t2.按姓名修改学生信息\n");

printf("请选择需要的操作:

");

scanf("%d",&n);

if(n==1)

{while(flag2){/*按学号*/

system("cls");

printf("\t\t1.修改学生的姓名\n");

printf("\t\t2.修改学生的年龄\n");

printf("请选择需要的操作:

");

scanf("%d",&n1);

if(n1==1)

{t1=H->fchild;p1=t1->G;

printf("请输入需要修改的学生的学号:

");scanf("%d",&nu);

while(p1->num!

=nu&&p1->G!

=NULL)

{p1=p1->G;}

if(p1->num!

=nu){printf("无该学生记录...\n按任意键返回...\n");getch();flag2=0;break;}

printf("请输入新的姓名:

");scanf("%s",na);

if(p1->num==nu)

{strcpy(p1->name,na);printf("修改成功...\n按任意键返回...\n");}

getch();flag2=0;}

elseif(n1==2){t1=H->fchild;p1=t1->G;

printf("请输入需要修改的学生的学号:

");scanf("%d",&nu);

while(p1->num!

=nu&&p1->G!

=NULL)

{p1=p1->G;}

if(p1->num!

=nu){printf("无该学生记录...\n按任意键返回...\n");getch();flag2=0;break;}

printf("请输入新的年龄:

");scanf("%d",&a);

if(p1->num==nu){p1->age=a;printf("修改成功...\n按任意键返回...\

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1