1、MATLAB数学实验报告姓名:王芬学号:指导老师:易昆南专业班级:统计0802一、学生成绩管理系统学号1304080419班级统计0802姓名王芬指导教师易昆南实验题目 学生成绩管理模型评 分1、设计(实习)目的:1 通过范例展现求解实际问题的初步建模过程2 利用书本学过的知识独立解决一些简单的实际问题3 掌握创建元胞数组构建结构数组的方法4 学会使用Switch语句2、实验内容:编写一个学生成绩管理的函数程序:要求输入一个班的学生成绩,显示出总人数,输出平均成绩、各分数段人数(10分为一段)和比例,将不同的分数段分为“优秀”、“良好”、“中等”、“及格”、“不及格”五个等级,并计算各等级的比
2、例。3、详细设计 clearn=input(请输入所需要统计的学生数目:);for i=1:10 ai=89+i; bi=79+i; ci=69+i; di=59+i; ei=49+i; fi=39+i; gi=29+i; hi=19+i; ji=9+i; ki=-1+i;end;Name=cell(1,n); Mark=cell(1,n); Rank=cell(1,10); num=cell(1,10);NR=struct(num,num,Rank,Rank);for i=1:10 NR(i).num=0;endS=struct(Name,Name,Mark,Mark);for i=1:n;
3、 S(i).Name=input(Name:,s); S(i).Mark=input(Mark:);endsum=0;for i=1:n sum=sum+S(i).Mark;endfor i=1:n; switch S(i).Mark case 100 NR(i).Rank=满分;NR(1).num=NR(1).num+1; case a NR(i).Rank=优秀;NR(1).num=NR(1).num+1; case b NR(i).Rank=良好;NR(2).num=NR(2).num+1; case c NR(i).Rank=中等;NR(3).num=NR(3).num+1; case
4、 d NR(i).Rank=及格;NR(4).num=NR(4).num+1; case e NR(i).Rank=不及格;NR(5).num=NR(5).num+1; case f NR(i).Rank=不及格;NR(6).num=NR(6).num+1; case g NR(i).Rank=不及格;NR(7).num=NR(7).num+1; case h NR(i).Rank=不及格;NR(8).num=NR(8).num+1; case j NR(i).Rank=不及格;NR(9).num=NR(9).num+1; case k NR(i).Rank=不及格;NR(10).num=NR
5、(10).num+1; endenddisp(姓名 ,分数 ,等级);disp( )for i=1:n disp(S(i).Name,blanks(8),num2str(S(i).Mark),blanks(10),NR(i).Rank);end;disp(各个分数段人数统计(每十分一段):)disp(90-100:,num2str(NR(1).num) disp(80-89:,num2str(NR(2).num)disp(70-79:,num2str(NR(3).num) disp(60-69:,num2str(NR(4).num)disp(50-59:,num2str(NR(5).num)
6、disp(40-49:,num2str(NR(6).num)disp(30-39:,num2str(NR(7).num) disp(20-29:,num2str(NR(8).num)disp(10-19:,num2str(NR(9).num) disp(0-9:,num2str(NR(10).num)per=cell(1:10);p=struct(per,per);for i=1:10 p(i).per=(NR(i).num)/n;endsyms pp upp;pp=0;for i=1:4 pp=pp+p(i).per;endupp=1-pp;disp(个分数段的人数所占比例:)disp(90
7、-100:,num2str(p(1).per)disp(80-89:,num2str(p(2).per)disp(70-79:,num2str(p(3).per)disp(60-69:,num2str(p(4).per)disp(50-59:,num2str(p(5).per)disp(40-49:,num2str(p(6).per)disp(30-39:,num2str(p(7).per)disp(20-29:,num2str(p(8).per)disp(10-19:,num2str(p(9).per)disp( 0-9:,num2str(p(10).per)disp()disp(平 均 分
8、:,num2str(sum/n)disp(优 秀 率:,num2str(p(1).per)disp(及 格 率:,num2str(pp)disp(不 及 格 率:,num2str(upp)a=num2str(NR(1).num),num2str(NR(2).num),num2str(NR(3).num),num2str(NR(4).num),num2str(NR(5).num),num2str(NR(6).num),num2str(NR(7).num),num2str(NR(8).num),num2str(NR(9).num),num2str(NR(10).num);subplot(1,2,1
9、),pie(a,1 0 1 0 0 1 0 0 1 0 ),legend(分数90-100,分数80-89,分数70-79,分数60-69,分数50-59,分数40-49,分数30-39,分数20-29,分数10-19,分数0-9);colormap(cool)4、实验结果: 请输入所需要统计的学生数目:10Name:qiMark:100Name:diMark:78Name:jiMark:67Name:kiMark:45Name:miMark:34Name:ciMark:12Name:biMark:27Name:piMark:59Name:tiMark:89Name:ziMark:9姓名 分数
10、 等级 qi 100 满分di 78 中等ji 67 及格ki 45 不及格mi 34 不及格ci 12 不及格bi 27 不及格pi 59 不及格ti 89 良好zi 9 不及格各个分数段人数统计(每十分一段):90-100:180-89:170-79:160-69:150-59:140-49:130-39:120-29:110-19:10-9:1个分数段的人数所占比例:90-100:0.180-89:0.170-79:0.160-69:0.150-59:0.140-49:0.130-39:0.120-29:0.110-19:0.1 0-9:0.1平 均 分:52优 秀 率:0.1及 格 率
11、:0.4不 及 格 率:0.65、实验图像:6、实验总结及实验体会:本次试验要求利用所学过的循环语句,根据书本上提供的例题来实现一个简易的学生成绩管理程序的编译。通过自己的思考以及同学之间相互讨论,报告中的程序大致能完成老师要求的功能,比如统计总的人数,实现10分分段制,计算优秀率、及格率、不及格率,统计个分数段人数等。在该实验过程当中,我遇到了许多问题,通过与同学之间的讨论和看书,我基本上都能够解决了。以下是我在实验过程中遇到的一些主要问题:1. 学生的人数是固定的无法改变,只能根据实际输入好的学生定下元胞大小,程序无法重复使用2. 具体的MATLAB自带的函数不熟悉,如求总人数时用的函数3
12、. 在程序运行的时候,姓名和相应的分数以及等级显示出来不在同一个水平位置4. 在编写程序过程中自己看书加上了饼图部分,应用得不是很好,需要改进5. 循环语句使用不熟练6. 不能利用已学过的矩阵方式排练分数,使程序更加一目了然7. 在定义变量时经常出错,或者混淆了或者没有定义8. 系统逻辑思维不强,在编制程序时缺乏完整的概念针对以上问题,我尝试着去解决,比如定义变量以手动输入学生的姓名及成绩;查看书本以更清楚的了解程序自带的函数;定义空格符及字符间距以保证输出结果美观等等。总而言之,通过各种渠道,我学会了许多技巧,并将老师的任务完成。 通过做此实验,让我对MA通过做此实验,让我对MATLAB有更进一步的了解,学会怎样才能正确运用MATLAB求解实际问题,了解如何利用数学模型去解决一些看似复杂的题目。不能把这次试验当作一次任务看待,而是一次检验自己对MATLAB基本知识的掌握情况。我对MATLAB还不是特别熟悉,过程中遇到了很多问题,经过与同学讨论得到了良好的解决,希望以后在学习过程当中自己能够更加刻苦,有问题就问,勤于练习,将其学得更扎实一点。