c语言实训学生信息管理系统_第1页
c语言实训学生信息管理系统_第2页
c语言实训学生信息管理系统_第3页
c语言实训学生信息管理系统_第4页
c语言实训学生信息管理系统_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、#include#include#include#define N 8struct Studentchar num10;/学号 char name8;/姓名 char major10;/专业(computer,software,network) int classNo;/班级(1-2) int score3;/3门课的成绩(高数,离散,c语言);typedef struct Student STU;/-函数声明-void input(STU *p);void save(STU *p,int n);void output(STU *p);void load(STU *p,int n);void

2、fetch();void Max();void sort_select();void sort_buble();void search();/-主函数开始-void main()int j,id; STU studentN,temN;/用于保存输入的N名学生信息 while(1)printf(ttt学生信息管理系统tttnn); printf(1-输入信息n); printf(2-文件存盘n); printf(3-打开文件输出n); printf(4-随机读取n); printf(5-单科成绩最高分的学生n); printf(6-选择法对所有学生平均成绩由低到高排序n); printf(7-起

3、泡法对班级学生平均成绩由高到低排序n); printf(8-综合查找班级分数总分n); printf(其他-退出n); scanf(%d,&id); getchar(); switch(id)case 1:for(j=0;jN;j+)printf(%dn,j+1); input(student+j); /输入信息 break; case 2: save(student,N); /文件存盘 break; case 3:load(tem,N); printf(学号 姓名 专业 班级 高数 离散 c语言 平均分 总分n); for(j=0;jN;j+)output(tem+j); break; /读

4、取文件 case 4:fetch(); /随机读取 break; case 5:Max(); /单科成绩最高分的学生 break; case 6:sort_select(); /选择法对所有学生平均成绩由低到高排序 break; case 7:sort_buble(); /起泡法对班级学生平均成绩由高到低排序 break;case 8:search(); /综合查找班级分数总分 break;default:break; /其他键退出if(id8) break;/-输入函数-void input(STU *p)int i;printf(n请输入学号,回车结束:);scanf(%s,&p-num)

5、;getchar();printf(n请输入姓名,回车结束:);gets(p-name);printf(n请输入专业,回车结束:);gets(p-major);printf(n请输入班级,回车结束:);scanf(%d,&p-classNo);printf(n请输入三科成绩,每门成绩以回车结束:n);for(i=0;iscorei);getchar();/-写文件函数-void save(STU *p,int n)FILE *fp;int i;char filename20;printf(n请输入保存的文件名:n);gets(filename);if(fp=fopen(filename,wb)

6、=NULL) /创建二进制文件printf(cannot open filen);return;for(i=0;inum,p-name,p-major,p-classNo,p-score0,p-score1,p-score2,(*p).score0+(*p).score1+(*p).score2)/3.0, (*p).score0+(*p).score1+(*p).score2);/-读文件函数-void load(STU *p,int n)FILE *fp;char filename20;printf(n请输入打开文件名:n);gets(filename);fp=fopen(filename

7、,rb); /打开二进制文件fread(p,sizeof(STU),n,fp); /从文件中一次读n个结构体量值fclose(fp);/-随机读取-void fetch()FILE *fp;STU tem;char filename20;int i; printf(n请输入打开文件名:n);gets(filename);fp=fopen(filename,rb); /打开二进制文件 printf(请输入要查找的学生的编号: );scanf(%d,&i);fseek(fp,i*sizeof(STU),0);fread(&tem,sizeof(STU),1,fp); /从文件中一次读1个结构体量值

8、printf(学号 姓名 专业 班级 高数 离散 c语言 平均分 总分n);output(&tem);fclose(fp);/-单科成绩最高分的学生-void Max()int i,j;FILE *fp;STU temN,*max;char filename20;printf(n请输入打开文件名:n);gets(filename);if(fp=fopen(filename,rb)=NULL)printf(cannot open file!n);for(i=0;iN;i+)fread(&temi,sizeof(STU),1,fp);printf(请输入要查找的课程编号: );scanf(%d,&

9、j); switch(j)case 0: /输出课程printf(n高数n);break;case 1:printf(n离散n);break;case 2:printf(nc语言n); break;default:break; max=&tem0;for(i=0;iscorejscorej,max-name);fclose(fp);/-选择法对所有学生平均成绩由低到高排序-void sort_select()int i,j;FILE *fp;STU temN,m;char filename20;printf(n请输入打开文件名:n);gets(filename); fp=fopen(filen

10、ame,rb);for(i=0;iN;i+)fread(&temi,sizeof(STU),1,fp);for(i=0;iN-1;i+) /选择法开始 for(j=i+1;j(temj.score0+temj.score1+temj.score2)m=temi; temi=temj; temj=m; /较小数放在前面 /选择法结束printf(n所有学生按平均成绩由低到高进行排序,其顺序为:nn);printf(学号 姓名 专业 班级 高数 离散 c语言 平均分 总分n);for(i=0;iN;i+)output(&temi);fclose(fp);/-起泡法对班级学生平均成绩由高到低排序-v

11、oid sort_buble()FILE *fp;STU stu_class_aveN,m,temN;int count=0;int i,j,n;char filename20;printf(n请输入打开文件名:n);gets(filename);if(fp=fopen(filename,rb)=NULL)printf(cannot open file!n);printf(请输入要查询的班级(1or2): n);scanf(%d,&n); for(i=0;iN;i+)fread(&temi,sizeof(STU),1,fp);for(i=0;iN;i+)if(temi.classNo=n)st

12、u_class_avecount=temi;count+; /实际元素数for(i=0;icount-1;i+) /起泡法开始for(j=0;jcount-1-i;j+)if(stu_class_avej.score0+stu_class_avej.score1+stu_class_avej.score2)(stu_class_avej+1.score0+stu_class_avej+1.score1+stu_class_avej+1.score2)m=stu_class_avej+1;stu_class_avej+1=stu_class_avej;stu_class_avej=m; /较大数

13、放在前面 /起泡法结束 printf(n班级学生按平均成绩由高到低进行排序,其顺序为:nn);printf(学号 姓名 专业 班级 高数 离散 c语言 平均分 总分n); for(i=0;icount;i+)output(&stu_class_avei);fclose(fp);/-综合查找班级分数总分-void search()FILE *fp;int i,j;int count=0;int sumN;intk; /定义要查询的总分STU temN; char filename20;printf(n请输入打开文件名:n);gets(filename); fp=fopen(filename,rb);for(i=0;iN;i+)fread(&temi,sizeof(STU),1,fp); for(i=0;iN;i+)sumi=temi.score0+temi.score1+temi.score2;printf(n请输入要查找的班级,总分下限:nn);scanf(%d %d,&j,&k); for(i=0;i=k)

温馨提示

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

评论

0/150

提交评论