c语言课程设计学生信息管理系统.docx
- 文档编号:25488615
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:17
- 大小:100.96KB
c语言课程设计学生信息管理系统.docx
《c语言课程设计学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《c语言课程设计学生信息管理系统.docx(17页珍藏版)》请在冰豆网上搜索。
c语言课程设计学生信息管理系统
题目名称:
学生信息管理系统
算法分析:
1用结构体标出信息系统的成员:
学生学号,学生姓名,班级,成绩,排名
2利用c语言的文件知识将系统的信息存放在c盘下的“”的文件夹下
3定义各个子函数
(1)定义输入信息函数,将学生信息按一定格式用scanf函数输入(统计M个学生的信息);
(2)定义输出函数,每两个表一页直到最后一个;
(3)定义信息查询函数。
a,定义按学号查询函数,如果输入的学号等于学生学号则输出要查询的信息;b,定义按姓名查询函数,如果输入的姓名字符串等于其中一个学生的姓名字符串则输出信息;c,定义按班级查找函数,如果输入的数字等于其中学生的班级数,则输出该信息;d,定义按成绩查找函数,如果输入的数字等于其中学生的成绩数,则输出该信息;e,定义查找总函数,输入一个数选择查找方式,1-4分别对应调用abcd四个函数。
(4)定义删除信息函数。
输入的数字作为要删除的学生学号,输出要删除的学生信息后选择是否删除,删除后将第g+1个的信息赋给第g个,输出删除后的信息表。
(5)定义信息修改函数。
输入的数字等于要修改的学生学号,输出要修改的学生信息后选择是否修改,用switch,case语句选择要修改的项目,输入n,y决定是否继续直到不继续修改,输出学生信息。
(6)定义信息统计函数。
输入一个数字作为成绩,比较M个学生成绩是否等于输入的数字,统计相等的个数n输出。
(7)定义成绩排序函数。
用冒泡排序法将M个学生的成绩按从大到小的顺序排列后输出。
4定义主函数。
调用读取文件函数,输入数字1-5分别对应调用修改学生信息函数,删除学生信息函数,查找学生信息函数,统计学生信息函数,学生成绩排行信息函数,0表示退出系统。
最后调用保存文件函数。
结束程序。
流程设计:
代码设计:
#include<>
#include<>
#include<>
#defineM2
#definePAGE2
/*学生信息结构体类型*/
typedefstruct
{intnum;/*学号*/
charname[20];/*姓名*/
intbanji;/*班级*/
intchengji;/*成绩*/
intpaiming;/*排名*/
}STUDENTS;
intread_file(STUDENTSstudents[])/*文件的读取*/
{FILE*fp;/*定义一个文件指针变量*/
inti=0;
if((fp=fopen("","r"))==NULL)/*文件空判断,fopen打开一个文件*/
{printf("\n\n*****库存文件不存在!
请创建");
return0;
}
while(feof(fp)!
=1)/*文件是否结束*/
{fread(&students[i],sizeof(STUDENTS),1,fp);/*读取文件*/
if(students[i].num==0)/*学号是否为零*/
break;
else
i++;
}
fclose(fp);/*关闭文件*/
returni;
}
voidsave_file(STUDENTSstudents[],intsum)/*保存文件*/
{FILE*fp;
inti;
if((fp=fopen("","wb"))==NULL)/*判断文件是否为空*/
{printf("读文件错误!
\n");
return;
}
for(i=0;i if(fwrite(&students[i],sizeof(STUDENTS),1,fp)! =1)/*向文件写入的数据块不等于1*/ printf("写文件错误! \n"); fclose(fp); } /*输入模块*/ intinput(STUDENTSstudents[]) {inti=0; printf("\n\n录入学生信息(最多%d人)\n",M); printf("----------------------------------------------------\n"); do {printf("\n第%d人",i+1); printf("\n学生学号: "); scanf("%d",&students[i].num);if(students[i].num==0)break; printf("\n学生姓名: "); scanf("%s",students[i].name); printf("\n班级: "); scanf("%d",&students[i].banji); printf("\n成绩: "); scanf("%d",&students[i].chengji); printf("\n排名: "); scanf("%d",&students[i].paiming); i++; }while(i printf("\n--%d个学生信息输入完毕! --\n",i); printf("\n按任意键返回主菜单! "); getchar(); returni; } /*输出模块*/ voidoutput(STUDENTSstudents[]) {inti=0,j=0,page=1; printf("\n\n--学生信息表--第%d页\n\n",page);/*每两个一页*/ printf("学生学号----姓名-----班级-----成绩-----排名\n"); printf("-------------------------------------------------------\n"); do {if(students[i].num! =0) {j++; if(j%PAGE! =0) {printf("%12d%10s%2d%3d%4d\n",students[i].num,students[i].name, students[i].banji,students[i].chengji,students[i].paiming); printf("------------------------------------------------------\n"); } } else {printf("按任意键继续! "); getchar(); printf("\n\n--学生信息表--第%d页\n\n",++page); printf("学生学号----姓名-----班级-----成绩-----排名\n"); printf("------------------------------------------\n"); {printf("%12d%10s%2d%3d%4d\n",students[i].num,students[i].name, students[i].banji,students[i].chengji,students[i].paiming); printf("---------------------------------------------\n"); } } i++; }while(students[i].num printf("按任意键返回主菜单! "); getchar(); } /*学生信息查询*/ voidfind_by_num(STUDENTSstudents[],intsum)/*按学号查找*/ {inti,find_num; printf("\n请输入要查找的学生学号: "); scanf("%d",&find_num); for(i=0;i if(students[i].num==find_num) { printf("这是您所查找到的学生信息: \n"); printf("学生学号----姓名-----班级-----成绩-----排名\n"); printf("------------------------------------------\n"); printf("%12d%10s%2d%3d%4d\n",students[i].num,students[i].name, students[i].banji,students[i].chengji,students[i].paiming); printf("---------------------------------------------\n"); break; } else { printf("\n未找到要查找的学生信息,按任意键返回! "); getchar(); } } voidfind_by_name(STUDENTSstudents[],intsum)/*按姓名查找*/ { inti; charfind_name[20]; printf("\n请输入要查找的学生姓名: "); scanf("%s",find_name); for(i=0;i if(strcmp(students[i].name,find_name)==0)/*字符串比较相等返回0*/ {printf("这是您所查找到属于该学生的信息: "); printf("学生学号----姓名-----班级-----成绩-----排名\n"); printf("------------------------------------------\n"); printf("%12d%10s%2d%3d%4d\n",students[i].num,students[i].name, students[i].banji,students[i].chengji,students[i].paiming); printf("---------------------------------------------\n"); } else {printf("\n未找到要查找的学生信息,按任意键返回! "); getchar(); } } voidfind_by_banji(STUDENTSstudents[],intsum)/*按班级查找*/ { inti; intfind_banji; printf("\n请输入要查找的学生班级: "); scanf("%d",&find_banji); for(i=0;i if(students[i].banji==find_banji) {printf("这是您所查找到属于该班级的学生: "); printf("学生学号----姓名-----班级-----成绩-----排名\n"); printf("------------------------------------------\n"); printf("%12d%10s%2d%3d%4d\n",students[i].num,students[i].name, students[i].banji,students[i].chengji,students[i].paiming); printf("---------------------------------------------\n"); } else {printf("\n未找到要查找的班级信息,按任意键返回! "); getchar(); } } voidfind_by_chengji(STUDENTSstudents[],intsum)/*按成级查找*/ { inti; intfind_chengji; printf("\n请输入要查找的学生成绩: "); scanf("%d",&find_chengji); for(i=0;i { if(students[i].chengji==find_chengji) { printf("这是您所查找到有该成绩的学生: "); printf("学生学号----姓名-----班级-----成绩-----排名\n"); printf("------------------------------------------\n"); printf("%12d%10s%2d%3d%4d\n",students[i].num,students[i].name, students[i].banji,students[i].chengji,students[i].paiming); printf("---------------------------------------------\n"); } else {printf("\n未找到要查找的学生信息,按任意键返回! "); getchar(); } } } voidfind(STUDENTSstudents[],intsum)/*定义查找总函数*/ {intchoice; printf("\n您要按照哪种方式查找\n");/*用switch语句*/ printf("\n1.按学生学号查找\n"); printf("\n2.按学生姓名查找\n"); printf("\n3.按学生班级查找\n"); printf("\n4.按学生成绩查找\n"); printf("\n0.退出\n"); printf("\n请选择(0-4): \n"); scanf("%d",&choice); switch(choice) {case1: find_by_num(students,sum);break; case2: find_by_name(students,sum);break; case3: find_by_banji(students,sum);break; case4: find_by_chengji(students,sum);break; case0: break; } } /*删除信息模块*/ voiddel(STUDENTSstudents[]) {inti,g,sum; intdel_num; printf("\n请输入要删除的学生学号: "); scanf("%d",&del_num); for(i=0;i if(students[i].num==del_num)/*通过学号判断*/ { printf("这是您所要删除学生信息: \n"); printf("学生学号----姓名-----班级-----成绩-----排名\n"); printf("------------------------------------------\n"); printf("%12d%10s%2d%3d%4d\n",students[i].num,students[i].name, students[i].banji,students[i].chengji,students[i].paiming); printf("---------------------------------------------\n"); printf("您确认要删除吗"); printf("按任意键继续! "); getchar(); printf("已成功删除学生信息! "); } for(g=i;g {students[g]=students[g+1]; printf("删除后的信息表: \n"); printf("学生学号----姓名-----班级-----成绩-----排名\n"); printf("------------------------------------------\n"); printf("%12d%10s%2d%3d%4d\n",students[i].num,students[i].name, students[i].banji,students[i].chengji,students[i].paiming); printf("---------------------------------------------\n"); } } /*信息修改模块*/ voidmodify(STUDENTSstudents[],intsum) {inti=0,choice,modify_num,flag; do { printf("请输入要修改的学生学号: "); scanf("%d",&modify_num); for(i=0;i if(students[i].num==modify_num) {printf("\n\n--学生信息--\n\n"); printf("学生学号----姓名-----班级-----成绩-----排名\n"); printf("------------------------------------------\n"); printf("%12d%10s%2d%3d%4d\n",students[i].num,students[i].name, students[i].banji,students[i].chengji,students[i].paiming); printf("---------------------------------------------\n"); printf("\n您要修改哪一项\n"); printf("\n1.学生姓名\n"); printf("\n2.学生班级\n"); printf("\n3.成绩\n"); printf("\n4.排名\n"); printf("\n请选择(1-4): \n"); scanf("%d",&choice); switch(choice) {case1: printf("\n请输入修改后的学生姓名: "); scanf("%s",students[i].name);break; case2: printf("\n请输入修改后的学生班级: "); scanf("%s",students[i].banji);break; case3: printf("\n请输入修改后的成绩: "); scanf("%s",students[i].chengji);break; case4: printf("\n请输入修改后的排名: "); scanf("%d",&students[i].paiming);break; } printf("\n\n--学生信息--\n\n"); printf("学生学号----姓名-----班级-----成绩-----排名\n"); printf("------------------------------------------\n"); printf("%12d%10s%2d%3d%4d\n",students[i].num,students[i].name, students[i].banji,students[i].chengji,students[i].paiming); printf("---------------------------------------------\n"); break; } else { printf("\n该学生不存在! "); } printf("\n修改成功! \n"); printf("您要继续修改吗(Y/N)"); if(choice=='Y'||choice=='y') {flag=1; printf("\n继续! \n"); } elseflag=0; }while(flag==1);/*直到不修改结束循环*/ printf("\n按任意键返回主菜单! "); getchar(); } /*学生信息统计模块*/ voidcount(STUDENTSstudents[],intsum)/*统计某个成绩的学生个数*/ { inti; intcount_chengji; intn=0; printf("请输入一个成绩: \n"); scanf("%d",&count_chengji); for(i=0;i { if(students[i].chengji==count_chengji)/*计数*/ n++; break; } printf("统计出属于该成绩的一共有%d个人\n",n); } /*成绩排序模块*/ voidsort(STUDENTSstudents[],intsum) { STUDENTSt; inti,j; printf("\n\n--学生信息--\n\n"); printf("学生学号----姓名-----班级-----成绩-----排名\n"); printf("------------------------------------------\n"); for(i=1;i {for(j=i+1;j if(students[j].chengji>students[i].chengji)/*冒泡排序法*/ {t=students[j]; students[j]=students[i]; students[i]=t; } } for(i=0;i {printf("%12d%10s%2d%3d%4d\n",students[i].num,students[i].name, students[i].banji,students[i].chengji,students[i].paiming); printf("--------------------------------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 学生 信息管理 系统