课程设计报告(本科)课程:数据结构学号:1310441019/1310441031/1310441064姓名:程徐/章燕芳/江淑芬班级:2013级计算机科学与技术(嵌入式)教师:史君华时间:2014.12.1—2014.12.30计算机科学与技术系结果与分析:1.选择运行后出现如下界面:2.输入1即为对数学成绩的分析3.输入2即为对英语成绩的分析:4.输入3即为对计算机成绩的分析:5.个人平均成绩的分析:6.输入要找的学号和姓名之后:7.输入不存在的学号的分析:附录:程序源代码:#include <stdio.h>#include <string.h>#include <stdlib.h>#define N 7struct student{char no[10];//学号char name[20];//姓名int math;//数学分数int english;//英语分数int computer;//计算机分数int score;//交换用分数int eveave;//个人平均分};struct student st[N]; //定义学生结构体void subject(student st[],int n)//选定某个学科进行分析{int number;int temp;printf(" 请选择要分析的学科: ");scanf("%d",&number);int i=0;switch(number){case 1:printf(" ★★★★★★★★★以下是关于数学的成绩分析:★★★★★★★★★★\n");for(i=0;i<n;i++)st[i].score=st[i].math;break;case 2:printf(" ★★★★★★★★★以下是关于英语的成绩分析:★★★★★★★★★★\n");for(i=0;i<n;i++)st[i].score=st[i].english;break;case 3:printf(" ★★★★★★★★★以下是关于计算机成绩分析:★★★★★★★★★★\n");for(i=0;i<n;i++)st[i].score=st[i].computer;break;}int j;printf(" 按学号每个人的原始数据为:\n");for(i=0;i<n;i++)printf(" %d\n",st[i].score);printf(" 排序后的数据为\n");for(i=0;i<n-1;i++){for(j=0;j<n-i;j++)if(st[j+1].score<st[j].score){temp=st[j].score;st[j].score=st[j+1].score;st[j+1].score=temp;}}for(i=0;i<n;i++)printf(" %d\n",st[i].score);printf(" 该门课的平均成绩为:\n");float sum=0;float courseave;for(i=0;i<n;i++){sum=sum+st[i].score;}courseave=sum/7;printf(" %f\n",courseave);printf(" 该门课的最高分为:\n");int max=st[0].score;for(i=0;i<n;i++){if(st[i].score>max){max=st[i].score;}}printf(" %d\n",max);//最高分printf(" 该门课的最低分为:\n");int min=st[0].score;for(i=0;i<n;i++){if(st[i].score<min){min=st[i].score;}}printf(" %d\n",min);//最低分int bjg=0;int jg=0;int zd=0;int lh=0;int yx=0;for(i=0;i<n;i++){if(st[i].score<60) //计算不及格人数{bjg++;}if(st[i].score>=60&&st[i].score<70)//计算60~69人数{jg++;}if(st[i].score>=70&&st[i].score<80)//计算70~79人数{zd++;}if(st[i].score>=80&&st[i].score<90)//计算80~89人数{lh++;}if(st[i].score>=90)//计算90分以上人数{yx++;}}printf(" 该门课的不及格人数为:\n %d\n 60~69人数:\n %d\n 70~79人数:\n %d\n 80~89人数:\n %d\n 90分以上人数:\n %d\n",bjg,jg,zd,lh,yx);}void studentave(student st[],int n)//计算每个人的平均成绩并排序{int i;for(i=0;i<n;i++){st[i].eveave=(st[i].math+st[i].english+st[i].computer)/4;}printf(" 每个人平均成绩为:\n");for(i=0;i<n;i++)printf(" %d\n",st[i].eveave);for(i=0;i<n-1;i++){for(int j=0;j<n-1-i;j++)if(st[j].eveave>st[j+1].eveave){temp=st[j].eveave;st[j].eveave=st[j+1].eveave;st[j+1].eveave=temp;}}printf(" 平均成绩排序为:\n");for(i=0;i<n;i++)printf(" %d\n",st[i].eveave);}void nosearch(student st[],int n)//按学号查找学生的各门成绩{int i=0;n=7;char no[10];printf(" 请输入要查找的学生号:");scanf("%s",&no);while(strcmp(no,st[i].no)!=0&&i<n)i++;if(i==n){printf(" meizhaodao\n");}elseprintf(" %s\t%s\t%d\t%d\t%d\n",st[i].no,st[i].name,st[i].math,st[i].englis h,st[i].computer);}void namesearch(student st[],int n)//按姓名查找学生的各门成绩{n=7;char name[20];printf(" 请输入要查找的姓名:");scanf("%s",&name);while(strcmp(name,st[i].name)!=0&&i<7)i++;if(i==n){printf(" meizhaodao\n");}elseprintf(" %s\t%s\t%d\t%d\t%d\n",st[i].no,st[i].name,st[i].math,st[i].englis h,st[i].computer);}void cunchu(student st[],int n) //存盘{int i;FILE *fp;fp=fopen("C:\\RJ\\input.dat","wb");//以"写"方式打开一个二进制文件if(fp==NULL){printf("Can't open!\n");exit(0);}for(i=0;i<n;i++){fwrite(&st[i],sizeof(struct student),1,fp);//一次写入一个学生的成绩}fclose(fp);}void duqu(student st[],int n) //读取数据{int i;FILE *fp;fp=fopen("C:\\RJ\\input.dat","rb");//以"读"方式打开一个二进制文件if(fp==NULL){printf("Can't open!\n");exit(0);}for(i=0;i<7;i++){fread(&st[0],sizeof(struct student),1,fp);//一次读取一个学生的成绩printf(" %s\t%s\t%d\t%d\t%d\n",st[i].no,st[i].name,st[i].mat h,st[i].english,st[i].computer);}fclose(fp);}void main(){struct student st[7]={ {"001","王放",78,77,90},{"002","张强",89,67,88},{"003","李浩",56,66,78},{"004","黄鹂兵",89,86,85},{"005","李浩",67,88,76},{"006","陈利风",45,54,67},{"007","尚晓",78,76,70}};printf(" ★★★★★★★★★★★★本题的实验数据为数据:★★★★★★★★★★★★★★\n");cunchu(st,7);//存盘input.datduqu(st,7);//读取数据printf(" ★★★★★★★★★★★★对各科的成绩分析如下:★★★★★★★★★★★★★★\n");printf(" 本实验采取switch()语句,分别1~3中的表示不同的学科\n 输入1表示计算关于数学方面的成绩;\n 输入2表示计算关于英语方面的成绩;\n 输入3表示计算关于计算机方面的成绩;\n");subject(st,7);//按各科成绩排序subject(st,7);//按各科成绩排序subject(st,7);//按各科成绩排序printf(" ★★★★★★★★★★★★关于个人平均成绩分析:★★★★★★★★★★★★★★\n");studentave(st,7);//计算每个人的平均成绩并排序printf(" ★★★★★★★★★★★★按照不同条件查询分析:★★★★★★★★★★★★★★\n");nosearch(st,7);//按学号查找学生的各门成绩namesearch(st,7);//按姓名查找学生的各门成绩}。