基于数组的学生信息管理系统实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《C语言程序设计实训1》报告设计题目:基于数组的学生信息管理系统学院名称:信息科学技术学院专业:软件工程班级:x班姓名:xxx学号xxx提交日期:2014年6月一、实验内容编写并调试程序,实现学校各专业班级学生信息的管理。定义学生信息的结构体类型,包括:学号、姓名、专业、班级、3门成绩。N定义为符号常量(学生数)。全局类型的定义如下:二、实验要求(1)main函数:以菜单形式将各项功能提供给用户,根据用户的选择,调用相应的函数。STUstudent[N];//保存输入的N名学生信息(2)定义函数Input:从键盘输入N个学生的信息。(3)定义函数Save:将学生信息存入文件。(4)定义函数Output:将某个学生信息表格化屏幕输出。(5)定义函数Fetch:从文件中随机读取第n个(0=n=N-1)学生的信息。(6)定义函数Max:求所有学生某门课程的最高分和分数最高的学生的姓名。(7)定义函数Sort_select:对所有学生,按平均成绩由低到高进行简单选择排序。(8)定义函数Sort_buble:对某个班级的学生,按平均成绩由高到低进行起泡排序。并调用Output输出。定义局部变量:STUstu_class_ave[N];//按平均成绩排序后的某个班级的学生信息;intcount;//实际元素个数(9)定义函数Sort_insert:对某个专业的学生,按某门课程成绩由低到高进行直接插入排序。并调用Output输出。定义局部变量:STUstu_class_subject[N];//按某门课程成绩排序后的某个专业的学生信息;intcount;//实际元素个数(10)定义函数Search:实现班级和成绩的综合查找(如1班,总分240分以上同学)。#defineN10structStudent{charnum[15];//学号charname[15];//姓名charmajor[10];//专业(computer,software,network)intclassNo;//班级(1-2)intscore[3];//3门课的成绩(0-2)};typedefstructStudentSTU;三、算法流程图函数Sort_select的算法流程图四、程序清单(关键语句和变量加注释)#includestdio.h//预编译的文件包含指令#includestdlib.h//exit()的函数声明#includestring.h//字符串的头文件//------------------------------------------类型定义--------------------------------------------------------------structStudent{charnum[15];//学号charname[15];//姓名charmajor[10];//专业(computer,software,network)intclassNo;//班级(1-2)intscore[3];//3门课的成绩(0-2)};typedefstructStudentSTU;//---------------------------------------------函数声明-----------------------------------------------------------voidinput(STU*p);//从键盘输入N个学生的信息voidsave(STU*p,intn);//将学生信息存入文件voidoutput(STU*p);//将某个学生信息表格化屏幕输出voidfetch();//从文件中随机读取第n个(0=n=N-1)学生的信息voidMax();//求所有学生某门课程的最高分和分数最高的学生的姓名voidsort_buble();//对某个班级的学生,按平均成绩由高到低进行起泡排序。并调用Output输出voidsort_insert();//对某个专业的学生,按某门课程成绩由低到高进行直接插入排序。并调用Output输出voidsort_select();//对所有学生,按平均成绩由低到高进行简单选择排序voidsearch();//实现班级和成绩的综合查找(如1班,总分240分以上同学)//----------------------------------------主函数开始--------------------------------------------------------------#defineN10//数组长度定义为10voidmain()//以菜单形式将各项功能提供给用户,根据用户的选择,调用相应的函数{intj,id;STUstudent[N];//用于保存输入的N名学生信息while(1){printf(\n请输入功能编号,运行系统相应功能\n);printf(1-输入学生信息\n2-信息存盘\n3-从文件中随机读取某个学生的信息\n);printf(4-输出所有学生某门课程的最高分和分数最高的学生的姓名\n5-对所有学生按总平均成绩由低到高排序\n);printf(6-对某个班级学生按总平均成绩由高到低排序\n7-对某个专业的学生按某门课程成绩由低到高排序\n);printf(8-实现班级和成绩的综合查找\n);scanf(%d,&id);//输入功能编号,运行系统相应功能getchar();//吸收回车键switch(id){case1:{for(j=0;jN;j++)//输入信息{printf(第%d个\n,j+1);input(student+j);}break;}case2:{save(student,N);//存储信息break;}case3:{fetch();//随机读取break;}case4:{Max();//最高分break;}case5:{sort_select();//所有总平均成绩排序break;}case6:{sort_buble();//某班级总平均成绩排序break;}case7:{sort_insert();//某专业课程排序break;}case8:{search();//综合查找break;}default://不符合8个常量{break;}}if((id)1||(id)8)break;//breakwhile}}//--------------------------------------------------输入函数---------------------------------------------------voidinput(STU*p){inti;printf(学号(回车结束):);scanf(%s,&((*p).num));//获得字符串1getchar();//吸收回车键printf(姓名(回车结束):);gets(p-name);//获得字符串2printf(专业(回车结束):);gets(p-major);printf(班级(回车结束):);scanf(%d,&((*p).classNo));printf(三门成绩(每门回车结束):);for(i=0;i=2;i++){scanf(%d,&((*p).score[i]));}getchar();}//--------------------------------------------------写文件函数----------------------------------------------voidsave(STU*p,intn){FILE*fp;//定义指向文件额指针变量inti;charfilename[20];//定义文件名长度为20printf(输入要保存的文件名:\n);gets(filename);//获取文件名if((fp=fopen(filename,w))==NULL)//以写的方式在当前目录打开(创建)文件{printf(openerror!\n);exit(0);//如果文件无法打开,关闭已经打开的其他文件,结束程序}for(i=0;in;i++){if(fwrite(p++,sizeof(STU),1,fp)!=1)//向文件中国一次写一个结构体量值printf(writeerror!\n);}fclose(fp);//关闭文件}//--------------------------------------------------输出文件------------------------------------------------------voidoutput(STU*p){printf(%-10s%-10s%-10s%d%d%d%d\n,p-num,p-name,p-major,p-classNo,p-score[0],p-score[1],p-score[2]);}//--------------------------------------------------随机读取-----------------------------------------------------voidfetch(){FILE*fp;STUstudent;inti;charfilename[20];printf(输入要读取的文件名:\n);gets(filename);if((fp=fopen(filename,r))==NULL){printf(openerror!\n);exit(0);}printf(请输入要查找某个的学生号码(0-9):);scanf(%d,&i);fseek(fp,i*sizeof(STU),0);//根据参数n调整文件指针位置if((fread(&student,sizeof(STU),1,fp))!=1)//从文件中一次读1个结构体量值exit(0);printf(学号姓名专业班级成绩0成绩1成绩2\n);//输出结构体output(&student);fclose(fp);}//--------------------------------------------------------最大值---------------------------------------------------voidMax(){inti,j;FILE*fp;STUstudent[N],*max;//最大值的指针变量charfilename[20];printf(输入要读取的文件夹名:\n);gets(filename);if((fp=fopen(filename,r))==NULL){printf(readerror!\n);exit(0);}for(i=0;iN;i++)if((fread(&student[i],sizeof(STU),1,fp))!=1)//从文件一次读一个结构体量值exit(0);printf(请输入要查找的课程(0-2):);scanf(%d,&j);//获取课程编号if(j2||j0)printf(您查找的内容不存在!);max=&student[0];for(i=0;iN-1;i++)//筛选出最大值if(max-score[j]student[i+1].score[j]){max=&student[i+1];}printf(%d课程的最高分是%d,学生姓名为%s\n,j,max-score[j],max-name);//!!fclose(fp);}//-------------------------------------------------所有学生选择排序----------------------------------------voidsort_select(){inti,j,k;doubleave[N];//平均成绩FILE*fp;STUstudent[N],t;charfilename[20

1 / 13
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功