学生信息管理系统C语言版.docx
- 文档编号:28816167
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:30
- 大小:25.23KB
学生信息管理系统C语言版.docx
《学生信息管理系统C语言版.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统C语言版.docx(30页珍藏版)》请在冰豆网上搜索。
学生信息管理系统C语言版
//交流学习
//QQ:
1194758555
#include
#include
#include
#include
#include
intk,n;
structstudent
{
doubleyuwen;
doubleshuxue;
doubleyingyu;
doublezong;
doublepingjun;
charname[20];
charnum[20];
}stu[1000];
voidjiazai(structstudentstu[],int*num1);
voidbaocun(structstudentstu[],intn);
voidfind(structstudentstu[],intn);
intfindnum(structstudentstu[],intn,char*num);//查找学号;
voidshanchu(structstudentstu[],int*num1);
voidshanchuyi(structstudentstu[],int*num1);//删除一条记录;
voidshanchuquanbu(structstudentstu[],int*num1);
voidtianjiayi(structstudentstu[],inti);//添加一记录;
voidtianjia(structstudentstu[],int*num1);//添加记录;
voidxiugai(structstudentstu[],intn);//修改一条记录;
voidoutput(structstudentstu[],intn,intx);//打印信息;
voidpaixu(structstudentstu[],intn);//排序;
intjianchaxuehao(structstudentstu[],char*num);//检查学号的合法性;
intjianchachengji(doublenum);//检查成绩的合法性;
voidoutputone(structstudent*stu,inti,intx);//输出一条信息
voidcaidan();
intmain()
{
intq;
jiazai(stu,&n);
caidan();
scanf("%d",&q);
while(q>6)
{
printf("输入错误请重新输入\n请输入0-6的数字\n");
scanf("%d",&q);
}
Sleep(300);
system("cls");
switch(q)
{
case1:
tianjia(stu,&n);
break;
case2:
xiugai(stu,n);
break;
case3:
paixu(stu,n);
break;
case4:
find(stu,n);
break;
case5:
shanchu(stu,&n);
break;
case6:
output(stu,n,0);
break;
case0:
exit(0);
}
return0;
}
voidcaidan()
{
printf("┌────────────────────────┐\n");
printf("├───────欢迎进入学生信息管理系统─────┤\n");
printf("├────────────────────────┤\n");
printf("│1添加学生成绩│\n");
printf("├────────────────────────┤\n");
printf("│2修改学生成绩│\n");
printf("├────────────────────────┤\n");
printf("│3排序│\n");
printf("├────────────────────────┤\n");
printf("│4查找│\n");
printf("├────────────────────────┤\n");
printf("│5删除│\n");
printf("├────────────────────────┤\n");
printf("│6输出│\n");
printf("├────────────────────────┤\n");
printf("│0退出│\n");
printf("├────────────────────────┤\n");
printf("└────────────────────────┘\n");
printf("请输入选择:
\n");
}
voidjiazai(structstudentstu[],int*num1)
{
FILE*fp;
inti;
if((fp=fopen("d:
\\student.dat","r"))==NULL)
{
*num1=0;
return;
}
for(i=0;fread(&stu[i],sizeof(structstudent),1,fp)!
=0;i++)
*num1=i;
fclose(fp);
}
voidpaixu(structstudentstu[],intn)
{
intxuehao(constvoid*a,constvoid*b);
intyuwen(constvoid*a,constvoid*b);
intshuxue(constvoid*a,constvoid*b);
intyingyu(constvoid*a,constvoid*b);
intzongchengji(constvoid*a,constvoid*b);
int(*cmp[])(constvoid*a,constvoid*b)={xuehao,yuwen,shuxue,yingyu,zongchengji};
inta;
printf("┌───────────────────────┐\n");
printf("│欢迎进入学生信息排序页面│\n");
printf("└───────────────────────┘\n");
printf("┌───────────────────────┐\n");
printf("│0:
按学号降序排序│\n");
printf("├───────────────────────┤\n");
printf("│1:
按语文成绩降序排序│\n");
printf("├───────────────────────┤\n");
printf("│2:
按数学成绩降序排序│\n");
printf("├───────────────────────┤\n");
printf("│3:
按英语成绩降序排序│\n");
printf("├───────────────────────┤\n");
printf("│4:
安总成绩降序排序│\n");
printf("└───────────────────────┘\n");
printf("请输入选择:
\n");
scanf("%d",&a);
Sleep(300);
system("cls");
qsort(stu,n,sizeof(stu[0]),cmp[a]);
output(stu,n,0);
}
intxuehao(constvoid*a,constvoid*b)
{
if(strcmp(((structstudent*)a)->num,((structstudent*)b)->num)>0)
return-1;
else
return1;
}
intyuwen(constvoid*a,constvoid*b)
{
return((structstudent*)a)->yuwen<((structstudent*)b)->yuwen?
1:
-1;
}
intshuxue(constvoid*a,constvoid*b)
{
return((structstudent*)a)->shuxue<((structstudent*)b)->shuxue?
1:
-1;
}
intyingyu(constvoid*a,constvoid*b)
{
return((structstudent*)a)->yingyu<((structstudent*)b)->yingyu?
1:
-1;
}
intzongchengji(constvoid*a,constvoid*b)
{
return((structstudent*)a)->zong<((structstudent*)b)->zong?
1:
-1;
}
voidshanchuyi(structstudentstu[],int*num1)
{
inti,in,c;
chary[20];
FILE*fp;
charstr[20];
printf("┌───────────────────────┐\n");
printf("│欢迎进入学生信息删除页面│\n");
printf("└───────────────────────┘\n");
printf("请输入需要删除的学号\n");
scanf("%s",str);
c=jianchaxuehao(stu,str);
while(c==0)
{
printf("输入的学号不合法请重新输入\n");
scanf("%s",str);
c=jianchaxuehao(stu,str);
}
Sleep(300);
system("cls");
printf("┌───────────────────────┐\n");
printf("│欢迎进入学生信息删除页面│\n");
printf("└───────────────────────┘\n");
in=findnum(stu,*num1,str);
while(in<0)
{
printf("该学生的信息不存在\n");
printf("重新输入(yes--y)返回主菜单(no--n)\n");
scanf("%s",y);
while(strcmp(y,"y")&&strcmp(y,"n"))
{
printf("请输入y或n\n");
scanf("%s",y);
}
if(!
strcmp(y,"n"))
{
Sleep(300);
system("cls");
main();
}
Sleep(300);
system("cls");
printf("┌───────────────────────┐\n");
printf("│欢迎进入学生信息删除页面│\n");
printf("└───────────────────────┘\n");
printf("请输入需要删除的学号\n");
scanf("%s",str);
in=findnum(stu,*num1,str);
}
for(i=in;i<*num1-1;i++)
stu[i]=stu[i+1];
(*num1)--;
if((fp=fopen("d:
\\student.dat","w"))==NULL)
{
printf("打开失败\n");
exit(0);
}
Sleep(300);
system("cls");
printf("┌───────────────────────┐\n");
printf("│欢迎进入学生信息删除页面│\n");
printf("└───────────────────────┘\n");
printf("删除成功\n");
baocun(stu,*num1);
printf("继续删除(yes--y)返回上主菜单(no--n)\n");
getchar();
scanf("%s",y);
while(strcmp(y,"y")&&strcmp(y,"n"))
{
printf("请输入y或n\n");
getchar();
scanf("%s",y);
}
Sleep(300);
system("cls");
if(!
strcmp(y,"n"))
main();
if(!
strcmp(y,"y"))
shanchuyi(stu,num1);
}
voidshanchuquanbu(structstudentstu[],int*num1)
{
chary[20],a[20];
FILE*fp;
printf("┌───────────────────────┐\n");
printf("│欢迎进入学生信息删除页面│\n");
printf("└───────────────────────┘\n");
printf("是否全部删除?
(yes--y)返回主菜单(no--n)\n");
scanf("%s",y);
while(strcmp(y,"y")&&strcmp(y,"n"))
{
printf("请输入y或n\n");
scanf("%s",y);
}
Sleep(300);
system("cls");
printf("┌───────────────────────┐\n");
printf("│欢迎进入学生信息删除页面│\n");
printf("└───────────────────────┘\n");
if(!
strcmp(y,"y"))
{
fp=fopen("d:
\\student.dat","w");
*num1=0;
printf("删除完成\n");
fclose(fp);
printf("返回主菜单(yes--y)结束(no--n)\n");
scanf("%s",a);
while(strcmp(a,"y")&&strcmp(a,"n"))
{
printf("请输入y或n\n");
scanf("%s",a);
}
Sleep(300);
system("cls");
if(!
strcmp(a,"y"))
main();
else
{
Sleep(300);
system("cls");
return;
}
}
else
{
Sleep(300);
system("cls");
main();
}
}
voidshanchu(structstudentstu[],int*num1)
{
intq;
printf("┌─────────────────┐\n");
printf("├───────删除────────┤\n");
printf("├─────────────────┤\n");
printf("├─────1:
删除指定信息─────┤\n");
printf("├─────────────────┤\n");
printf("├─────2:
删除全部信息─────┤\n");
printf("├─────────────────┤\n");
printf("└─────────────────┘\n");
printf("请输入选择:
\n");
getchar();
scanf("%d",&q);
system("cls");
switch(q)
{
case1:
shanchuyi(stu,num1);
break;
case2:
shanchuquanbu(stu,num1);
break;
}
}
intfindnum(structstudentstu[],intn,char*num)
{
inti;
for(i=0;i { if(strcmp(stu[i].num,num)==0) { returni; } } return-1; } voidbaocun(structstudentstu[],intn) { FILE*fp; if((fp=fopen("d: \\student.dat","w"))==NULL) { printf("打开失败\n"); exit(0); } fwrite(stu,(n+1)*sizeof(stu[0]),1,fp); fclose(fp); } voidoutput(structstudentstu[],intn,intx) { inti; chary[20]; if(n>0) { printf("┌─────┬───┬───┬───┬───┬───┬───┐\n"); printf("│%-10s│%-6s│%-6s│%-6s│%-6s│%-6s│%-6s","学号","姓名","语文","数学","英语","平均","总成绩\n"); //printf("└────┘┴\n"); for(i=0;i { outputone(&stu[i],n,x); } printf("└─────┴───┴───┴───┴───┴───┴───┘\n"); if(x) { charq[10]; printf("返回主菜单(yes-y)返回上级菜单(no-n)\n"); scanf("%s",q); while(strcmp(q,"y")&&strcmp(q,"n")) { printf("请输入y或n\n"); scanf("%s",q); } Sleep(300); system("cls"); if(! strcmp(q,"y")) { main(); } while(! strcmp(q,"n")) { paixu(stu,n); } } } else printf("没有任何记录,请先添加信息\n"); printf("返回主菜单(yes--y)结束(no--n)\n"); scanf("%s",y); while(strcmp(y,"y")&&strcmp(y,"n")) { printf("请输入y或n\n"); scanf("%s",y); } Sleep(300); system("cls"); if(! strcmp(y,"y")) { main(); } else return; } voidoutputone(structstudent*stu,intn,intx) { if(! x) { printf("├─────┼───┼───┼───┼───┼───┼───┤\n"); printf("│%-10s│%-6s│%-6.2lf│%-6.2lf│%-6.2lf│%-6.2lf│%-6.2lf│\n",stu->num,stu->name,stu->yuwen,stu->shuxue,stu->yingyu,stu->pingjun,stu->zong); } else { printf("┌────┬───┬───┬───┬───┬───┬───┐\n"); printf("│%-8s│%-6s│%-6s│%-6s│%-6s│%-6s│%-6s","学号","姓名","语文","数学","英语","平均","总成绩\n"); printf("├────┼───┼───┼───┼───┼───┼───┤\n"); printf("│%-8s│%-6s│%-6.1lf│%-6.1lf│%-6.1lf│%-6.1lf│%-6.1lf│\n",stu->num,stu->name,stu->yuwen,stu->shuxue,stu->yingyu,stu->pingjun,stu->zong); printf("└────┴───┴───┴───┴───┴───┴───┘\n"); } } voidtianjiayi(structstudentstu[],inti) { inta,b; printf("请输入学生学号\n"); getchar(); scanf("%s",stu[i].num); a=jianchaxuehao(stu,stu[i].num); while(a==0||a==2) { if(a==0) printf("输入的学号不合法请重新输入\n"); if(a==2) printf("输入的学号与已有的重复请重新输入\n"); scanf("%s",stu[i].num); a=jianchaxuehao(stu,stu[i].num); Sleep(300); system("cls"); printf("┌───────────────────────┐\n"); printf("│欢迎进入学生信息添加页面│\n"); printf("└───────────────────────┘\n"); } printf("请输入该学生姓名\n"); scanf("%s",stu[i].name); printf("请输入语文成绩\n"); scanf("%lf",&stu[i].yuwen); b=jianchachengji(stu[i].yuwen); while(b==0) { printf("输入错误请重新输入\n"); scanf("%lf",&stu[i].yuwen); b=jianchachengji(stu[i].yuwen); } printf("请输入数学成绩\n"); scanf("%lf",&stu[i].shuxue); b=jianchachengji(stu[i].shuxue); while(b==0) { printf("输入错误请重新输入\n"); scanf("%lf",&stu[i].shuxue); b=j
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 信息管理 系统 语言版