c语言课程设计学生信息管理系统教程文件.docx

上传人:b****4 文档编号:24249113 上传时间:2023-05-25 格式:DOCX 页数:17 大小:101.81KB
下载 相关 举报
c语言课程设计学生信息管理系统教程文件.docx_第1页
第1页 / 共17页
c语言课程设计学生信息管理系统教程文件.docx_第2页
第2页 / 共17页
c语言课程设计学生信息管理系统教程文件.docx_第3页
第3页 / 共17页
c语言课程设计学生信息管理系统教程文件.docx_第4页
第4页 / 共17页
c语言课程设计学生信息管理系统教程文件.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

c语言课程设计学生信息管理系统教程文件.docx

《c语言课程设计学生信息管理系统教程文件.docx》由会员分享,可在线阅读,更多相关《c语言课程设计学生信息管理系统教程文件.docx(17页珍藏版)》请在冰豆网上搜索。

c语言课程设计学生信息管理系统教程文件.docx

c语言课程设计学生信息管理系统教程文件

 

c语言课程设计学生信息管理系统

题目名称:

学生信息管理系统

算法分析:

1用结构体标出信息系统的成员:

学生学号,学生姓名,班级,成绩,排名

2利用c语言的文件知识将系统的信息存放在c盘下的“zuoye.txt”的文件夹下

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("zuoye.txt","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("zuoye.txt","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

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

当前位置:首页 > 工程科技 > 城乡园林规划

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

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