高级语言学生成绩排序课程设计_第1页
高级语言学生成绩排序课程设计_第2页
高级语言学生成绩排序课程设计_第3页
高级语言学生成绩排序课程设计_第4页
高级语言学生成绩排序课程设计_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、 得分:信电工程学院高级语言程序设计综合训练报告 题目: 学生成绩排序 班级: 学号: 姓名: 指导教师: 2013年 1 月15日目 录 1程序目标及功能- 1 1.1课题背景-11.2系统功能-11.3设计要求-12程序功能模块组成及流程图-12.1系统功能模块-12.2各模块流程图-23程序主要数据结构及函数列表 -33.1 程序中使用的数据结构-33.2 函数列表-44程序代码及运行结果 -55总结与体会-24 1.程序目标及功能1.1课题背景 学生成绩管理系统是学校日常信息管理的一个重要内容。随着学校规模的扩大,学生成绩管理的工作量也越来越大,如果能对学生成绩做系统的管理,就能更好更

2、方便地快速查询或者修改学生的考试成绩,省去了文件管理的繁琐与麻烦,无疑将给学校的管理部门带来很大的方便。据此,我们设计了一个简单的学生成绩排序系统,可以方便的对数据进行汇总。1.2系统功能 系统以随机函数生成学生成绩,统计学生平均成绩,分别采用冒泡法和选择排序法对成绩排序,并构建平均成绩单链表等。1.3程序要求(1) 编写了一个成绩生成函数,通过该函数可以随机生成成绩。(2) 编写一个平均成绩计算函数,计算每个同学的平均成绩并保存在成绩数组中。(3)用冒泡排序,将每个班的学生按照平均分从高到低进行排序。(4)用选择排序,将每个班的学生按照平均分从高到低进行排序。(5)对已按平均成绩排好序的4个

3、班的同学构造一个按平均成绩递减方式排列,并构建一个新的单链表2.程序功能模块组成及流程图2.1系统功能模块成绩生成模块:通过该函数可以随机生成成绩。冒泡排序模块:根据冒泡排序算法将每个班的学生按照平均分从高到低进行排序。选择排序模块:根据选择排序算法将每个班的学生按照平均分从高到低进行排序。构造新单链表:对已按平均成绩排好序的4个班的同学构造一个按平均成绩递减方式排列,并构建一个新的单链表。2.2各模块流程图生成学生总成绩1、程序总流程图计算平均成绩学生成绩排序系统用冒泡排序排序用选择排序排序构造新的链表2、冒泡排序流程图 开始 i=1ii? 结束nd(j)d(j-1)?交换d(j)与d(j-

4、1)yn j=j-13、选择排序开始 i=1 i=n-1 ni=i+1输出排序结果 min=i;j=i+1结束 jn nj=j+1mini?y d(j)d(min)?nytemp=d(i)d(i)=d(min)d(min)=tempy min=j3程序主要数据结构及函数列表3.1程序主要数据结构#includestruct studentlong no; int noclass; char name10;int class1,class2,class3,class4,class5;double avg;std180;3.2函数列表 int graderand( )生产1-100的随机成绩 vo

5、id csh( )该函数用来计算每一个同学的平均数int maopao( )冒泡排序int xuanze( )选择排序法void print( )该函数用于输出int newlink( )构造一个新的单链表void print2( )用于新链表的输出void main( )主函数4程序代码及运行结果4.1程序代码#includestruct studentlong no; int noclass; char name10;int class1,class2,class3,class4,class5;double avg;std180;struct student1long no;int noc

6、lass;char name10;double avg;struct student1 *next;std1180;/生成学生信息int infono()int i=0;for (i;i180;i+)stdi.no = 2010051000+i;return 1;int infoname() int flag,charlengt; int i,j,k=0; srand(unsigned)time(null); for(i=0;i180;i+)/ for(j=0;j3;j+) flag=rand()%2; if(flag) k+=a+rand()%26; else stdi.n

7、amek+=a+rand()%26; k=0; k=0; return 1;int graderand()int i = 0;srand(unsigned int)time(0); for(i; i 180; i+) if ( i = 0)stdi.noclass = 1;if ( i =45)stdi.noclass = 2;if ( i = 91)stdi.noclass = 3;if ( i = 135)stdi.noclass = 4; stdi.class1 = rand()%100 + 1; stdi.class2 = rand()%100 + 1; stdi.c

8、lass3 = rand()%100 + 1; stdi.class4 = rand()%100 + 1; return 1;void csh()int i=0;for (i;i180;i+)stdi.avg =0.0;int calcavg()int i=0;int sum=0;for (i;i180;i+)sum=0;sum =sum +stdi.class1;sum =sum +stdi.class2;sum =sum +stdi.class3;sum =sum +stdi.class4;stdi.avg = (sum / 4.0);return 1;/冒泡排序int maopao()d

9、ouble temp;int i,j; for(i=0;i45;i+)for(j=i+1;j46;j+)if(stdi.avg stdj.avg)temp=stdi.avg;stdi.avg=stdj.avg ;stdj.avg =temp;for(i=45;i90;i+)for(j=i+1;j91;j+)if(stdi.avg stdj.avg)temp=stdi.avg;stdi.avg=stdj.avg ;stdj.avg =temp;for(i=90;i135;i+)for(j=i+1;j136;j+)if(stdi.avg stdj.avg)temp=stdi.avg;stdi.av

10、g=stdj.avg ;stdj.avg =temp;for(i=135;i180;i+)for(j=i+1;j181;j+)if(stdi.avg stdj.avg)temp=stdi.avg;stdi.avg=stdj.avg ;stdj.avg =temp;return 1;/选择排序法int xuanze()int i, j, t, max;for (i=0;i45; i+)max = i;for (j=i+1; j stdmax.avg)max = j;if (i != max)t = stdi.avg;stdi.avg = stdmax.avg;stdmax.avg = t;for

11、 (i=45;i90; i+)max = i;for (j=i+1; j stdmax.avg)max = j;if (i != max)t = stdi.avg;stdi.avg = stdmax.avg;stdmax.avg = t;for (i=90;i135; i+)max = i;for (j=i+1; j stdmax.avg)max = j;if (i != max)t = stdi.avg;stdi.avg = stdmax.avg;stdmax.avg = t;for (i=135;i180; i+)max = i;for (j=i+1; j stdmax.avg)max =

12、 j;if (i != max)t = stdi.avg;stdi.avg = stdmax.avg;stdmax.avg = t;return 1;/该函数用于输出void print()int i;printf(nclass1:n);printf(n姓名tt学号tt平均成绩n);for(i=0;i45;i+)printf(%stt,);printf(%ldtt,stdi.no);printf(%fn,stdi.avg);printf(nclass2:n);printf(n姓名tt学号tt平均成绩n);for(i=45;i90;i+)printf(%stt,stdi.nam

13、e);printf(%ldtt,stdi.no);printf(%fn,stdi.avg);printf(nclass3:n);printf(n姓名tt学号tt平均成绩n);for(i=90;i135;i+)printf(%stt,);printf(%ldtt,stdi.no);printf(%fn,stdi.avg);printf(nclass4:n);printf(n姓名tt学号tt平均成绩n);for(i=135;i180;i+)printf(%stt,);printf(%ldtt,stdi.no);printf(%fn,stdi.avg);/构造一个

14、新的单链表int newlink()int i,j,temp;for(i=0;i180;i+)std1i.no=stdi.no;for(j=0;j6;j+)j =j;std1i.noclass =stdi.noclass;std1i.avg=stdi.avg;std1i.next = &std1i+1.no; for(i=0;i180;i+)for(j=i+1;j181;j+)if(std1i.avg std1j.avg)temp=std1i.avg;std1i.avg=std1j.avg ;std1j.avg =temp;return 1;/用于新链表的

15、输出void print2()int i;printf(四个班的成绩排序情况:n);printf(班级tt姓名tt学号tt平均成绩n);for(i=0;i180;i+)printf(%ldtt,stdi.noclass);printf(%stt,);printf(%ldtt,std1i.no);printf(%fn,std1i.avg);system(pause);void main()int menu;while(1)system(cls);printf(ttt学生成绩排序n);printf(tno.:20100506113 name: 朱晓华 class: 10通信n)

16、;printf(tt 1.生成学生全部成绩n);printf(tt 2.计算平均成绩n);printf(tt 3.冒泡排序n);printf(tt 4.选择排序n);printf(tt 5.构造新的单链表n);printf(tt 6.结束n);printf(tt输入要选择的功能项1-5:);scanf(%d,&menu);switch (menu)case 1:if (graderand()&infono()&infoname()printf(生成学生全部成绩n);system(pause);break;case 2:csh();if (calcavg()printf(计算平均成绩n);sys

17、tem(pause);break;case 3:if (maopao()printf(冒泡排序n);printf(请按任意键输出排序结果n);system(pause);print();system(pause);break;case 4:if (xuanze()printf(选择排序n);printf(请按任意键输出排序结果);system(pause);print();system(pause);break;case 5:if (newlink()printf(构造新的链表);printf(按任意键输出排序结果n);system(pause);print2();system(pause);break;case 6:printf(the endn);exit(0);break;5总结与体会通过本次课程设计,我进一步熟悉了高级语言的基本理论知识,更了解到高级语言设计的思想,这些知识都为我的课程实践和进一步的学习打下了坚实的基础。在这次课程设计中,我体会颇多,学会了很多东西,并加强了对高级语言这门课的认识,学生成绩排序系统是一个很普通也很简单的高级语言程序,它贴近我们的生活跟学习,对我们加强高级语言的认识至关重要。这个课题是一个综合性较强,很实际的一个编程实例。刚接触这个题目的时候,觉得应该没什么大问题,看似挺简单的,因此,我自认

温馨提示

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

评论

0/150

提交评论