c语言课程设计学生信息管理系统_第1页
c语言课程设计学生信息管理系统_第2页
c语言课程设计学生信息管理系统_第3页
c语言课程设计学生信息管理系统_第4页
c语言课程设计学生信息管理系统_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、题目名称: 学生信息管理系统算法分析:1用结构体标出信息系统的成员:学生学号,学生姓名, 班级,成绩,排名2利用c语言的文件知识将系统的信息存放在 c盘下的“”的文 件夹下3定义各个子函数(1)定义输入信息函数,将学生信息按一定 格式用seanf函数输入(统计M个学生的信息);(2)定义输出函数,每两个表一页直到最后一个;(3)定义信息查询函数。a,定义按学号查询函数,如果输入的 学号等于学生学号则输出要查询的信息; b,定义按姓名查询函数, 如果输入的姓名字符串等于其中一个学生的姓名字符串则输出信息;e,定义按班级查找函数,如果输入的数字等于其中学生的班级数, 则输出该信息;d,定义按成绩查

2、找函数,如果输入的数字等于其中学 生的成绩数,则输出该信息;e,定义查找总函数,输入一个数选择查 找方式,1-4分别对应调用abed四个函数。(4)定义删除信息函数。输入的数字作为要删除的学生学号, 输出要删除的学生信息后选择是否删除, 删除后将第g+1个的信息赋 给第g个,输出删除后的信息表。(5)定义信息修改函数。输入的数字等于要修改的学生学号,输出要修改的学生信息后选择是否修改,用switch,ease语句选择要修改的项目,输入n,y决定是否继续直到不继续修改,输出学生信 息。(6) 定义信息统计函数。输入一个数字作为成绩,比较M个学生成绩是否等于输入的数字,统计相等的个数n输出。(7)

3、定义成绩排序函数。用冒泡排序法将 M个学生的成绩按从 大到小的顺序排列后输出。4定义主函数。调用读取文件函数,输入数字1-5分别对应调用 修改学生信息函数,删除学生信息函数,查找学生信息函数,统计学生信息函数,学生成绩排行信息函数,0表示退出系统。最后调用保 存文件函数。结束程序。流程设计:学生信息管理系统用结构体说明各个成定义各个子函数定义 删除信息疋 义修改 信息函定义信息查询函数定义 统计函数定义 成绩排序 函数定义按 学号,姓名, 班级,成绩 的函数将第g+1个信息赋给第gswitch,case 语句选择查判断 是否继续 修改直到 不继续,结1数1选择 要修改的 信息1-4选择 要删除

4、的 学号,判断 是否删除比较成 绩数是否等 于输入数计 数,输 岀n-5 -定义主函数,用 switchcase选择要调用的子函数保存 文件退出 系统结束代码设计:#in clude#in clude#in clude#defi ne M 2#defi ne PAGE 2/*学生信息结构体类型*/typedef structint num;/*学号*/char n ame20;/*姓名*/int ban ji;/*班级*/int che ngji; /*成绩*/int paimi ng; /*排名*/STUDENTS;int read_file(STUDENTS students)/*文件的读

5、取 */ FILE *fp;/*定义一个文件指针变量*/int i=0;打开一个文读取文件*/if(fp=fopen(,r)=NULL)/*文件空判断,fopen件*/ printf(nn*库存文件不存在!请创建);return 0;while(feof(fp)!=1)/*文件是否结束 */ fread(& stude ntsi,sizeof(STUDENTS),1,fp);/*if(studentsi.num=0)/* 学号是否为零 */break;elsei+;fclose(fp);/* 关闭文件 */return i;void save_file(STUDENTS students,in

6、t sum)/* 保存文件 */ FILE *fp;int i;if(fp=fopen(,wb)=NULL)/* 判断文件是否为空 */ printf( 读文件错误! n);return;for(i=0;isum;i+)向文最多 %dif(fwrite(&studentsi,sizeof(STUDENTS),1,fp)!=1)/* 件写入的数据块不等于 1*/printf( 写文件错误! n);fclose(fp);/* 输入模块 */int input(STUDENTS students) int i=0;printf(nn 录入学生信息 ( 人)n,M);printf(n);do prin

7、tf(nprintf(n第 4人,i+1);学生学号: );scanf(%d,&studentsi.num);if(studentsi.num=0) break;printf(nscanf(%s,);printf(nscanf(%d,&studentsi.banji);printf(nscanf(%d,&studentsi.chengji);printf(nscanf(%d,&studentsi.paiming);i+;while(iM);printf(n毕!-n,i);printf(ngetchar();return i;学生姓名: );班级:);成绩:);排名:

8、);-%d 个 学生信息输 入完按任意键返回主菜单 !);/* 输出模块 */void output(STUDENTS students)int i=0,j=0,page=1;printf(nn -学生信息表-第%d页nn,page);/* 每两个一页 */printf( 学生学号-姓名-班级-成绩-排名n);n);printf(do if(studentsi.num!=0) j+;if(j%PAGE!=0) printf(%12dn,studentsi.num,,studentsi.banji,studentsi.chengji,studentsi.paiming

9、);%10s %2d %3d%4dprintf(n);else printf(按任意键继续 !);getchar();printf(nn学生信息表 -第%d页 nn ,+page);printf(学生学号 姓名班级成绩排名n);printf(n);printf(%12d%10s%2d%3d%4dn,studentsi.num,,studentsi.banji,studentsi.chengji,studentsi.paiming);printf(n);i+;while(studentsi.numM); printf( 按任意键返回主菜单 !);- 7 -getcha

10、r( );/* 学生信息查询 */void find_by_num(STUDENTS students,int sum) /* 按学号查找 */ int i,find_num;printf(n 请输入要查找的学生学号 :); scanf(%d,&find_num);for(i=0;isum;i+) if(studentsi.num=find_num)printf( 这是您所查找到的学生信息 :n);printf( 学生学号 姓名 班级 成绩 排名n);printf(n);printf(%12d %10s %2d %3d %4d n,studentsi.num,,st

11、udentsi.banji, studentsi.chengji,studentsi.paiming);printf(n);break;elsevoid find_by_name(STUDENTS students,int sum)/*按姓名查找 */int i;char find_name20;printf(n 请输入要查找的学生姓名 :);scanf(%s,find_name);for(i=0;isum;i+);if(strcmp(,find_name)=0) /* 字符串比较相等返回 0*/printf( 这是您所查找到属于该学生的信息 :);printf(

12、学生学号 姓名 班级 成绩 排名n);printf(n);printf(%12d %10s %2d %3d %4dn,studentsi.num,,studentsi.banji,studentsi.chengji,studentsi.paiming);printf(n);elseprintf(n 未找到要查找的学生信息,按任意键返回!);getchar();- # -void find_by_banji(STUDENTS students,int sum)/* 按班级查 找*/int i;int find_banji;printf(n 请输入要查找的学生班级 :)

13、; scanf(%d,&find_banji);for(i=0;isum;i+) if(studentsi.banji=find_banji) printf( 这是您所查找到属于该班级的学生 :);printf( 学生学号 姓名 班级 成绩 排名n);printf(n);printf(%12d %10s %2d %3d %4d n,studentsi.num,,studentsi.banji,studentsi.chengji,studentsi.paiming);printf(n);elsevoidfind_by_chengji(STUDENTS students

14、,int sum)/*按成级查找*/int i;int find_chengji;printf(n 请输入要查找的学生成绩 :);scanf(%d,&find_chengji);for(i=0;isum;i+)if(studentsi.chengji=find_chengji)排名printf( 这是您所查找到有该成绩的学生 :);printf( 学生学号 姓名 班级 成绩 n);printf(n);%4dprintf(%12d %10s %2d %3dn,studentsi.num,,studentsi.banji,studentsi.chengji,studen

15、tsi.paiming);printf(n);elseprintf(n 未找到要查找的学生信息,按任意键返回!);getchar();- # -voidfind(STUDENTS students,int sum)/* 定义查找总函数 */ int choice; printf(n printf(n 1. printf(n 2. printf(n 3.printf(n 4. printf(n 0. printf(n您要按照哪种方式查找 n);/* 按学生学号查找 n); 按学生姓名查找 n); 按学生班级查找 n);按学生成绩查找 n);退出n);请选择 (0-4): n);用 switch

16、语句 */scanf(%d,&choice); case 1:find_by_num(students,sum); break;case 2:find_by_name(students,sum); break;case 3:find_by_banji(students,sum); break;case 4:find_by_chengji(students,sum); break;case 0:break;switch(choice)/* 删除信息模块 */void del(STUDENTS students) int i,g,sum;int del_num;printf(n请输入要删除的学生学

17、号 :);scanf(%d,&del_num);for(i=0;isum;i+)if(studentsi.num=del_num)/*通过学号判断 */- 17 -%4d排名%4dprintf( 这是您所要删除学生信息 :n);printf( 学生学号 姓名 班级 成绩名 n);printf(n);printf(%12d%10s%2d%3dn,studentsi.num,,studentsi.banji,studentsi.chengji,studentsi.paiming);printf(n);printf( 您确认要删除吗 );printf( 按任意键继续 !)

18、;getchar();printf( 已成功删除学生信息 !);for(g=i;gsum;g+) studentsg=studentsg+1;printf(删除后的信息表 :n);printf( 学生学号 姓名 班级 成绩 -n);printf(n);printf(%12d%10s%2d%3dn,studentsi.num,,studentsi.banji,studentsi.chengji,studentsi.paiming);printf(n);/* 信息修改模块 */void modify(STUDENTS students,int sum)int i=0,c

19、hoice,modify_num,flag;doprintf( 请输入要修改的学生学号: ); scanf(%d,&modify_num);for(i=0;isum;i+)if(studentsi.num=modify_num) printf(nn - 学 生 信 息 nn);printf(学生学号-姓名-班级- 成绩-排名n);n);printf(printf(%12d%10s%2d%3d %4dn,studentsi.num,,studentsi.banji,studentsi.chengji,studentsi.paiming);printf(printf(n

20、printf(n1.printf(n2.printf(n3.printf(n4.printf(nscanf(%d,&choice);-n);您要修改哪一项 n);学生姓名 n); 学生班级 n); 成绩n);排名 n);请选择 (1-4):n);switch(choice)请输入修改后的学生姓名 :); case 1: printf(nscanf(%s,); break;case 2: printf(n请输入修改后的学生班级 :);scanf(%s,studentsi.banji); break;case 3: printf(n请输入修改后的成绩 :);scanf(

21、%s,studentsi.chengji); break;case 4: printf(n请输入修改后的排名 :);scanf(%d,&studentsi.paiming); break;printf(nn - 学 生 信 息 - nn);printf(学生学号-姓名-班级- 成绩-排名n);printf(n);printf(%12d%10s%2d%3d%4dn,studentsi.num,,studentsi.banji, studentsi.chengji,studentsi.paiming);printf(n);break;elseprintf(n该学生不存在

22、 !);printf(n 修改成功 !n);printf(您要继续修改吗 (Y/N);if (choice=Y|choice=y) flag=1;printf(n 继续 !n);else flag=0;while( flag=1); /* 直到不修改结束循环 */ printf(n 按任意键返回主菜单 !);getchar();/* 学生信息统计模块 */void count(STUDENTS students,int sum) /*/int i;int count_chengji;int n=0;printf( 请输入一个成绩 :n);scanf(%d,&count_chengji);for(i=0;isum;i+)if(studentsi.chengji=count_chengji)/* n+;break;统计某个成绩的学生个数计数*/printf(统计出属于该成绩的一共有d个人n,n);/* 成绩排序模块 */void sort(STUDENTS students,int sum)STUDENTS t; int i,j;printf(nn - 学 生 信 息 nn);printf(学生学号-姓名-班级- 成绩-排名n);printf(n);for(i=1;isum;i+) for(j=i+1;jstudentsi.chengji)/*冒泡 排序法*/t=stu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论